Структура
индикатора представлена на рис.3.2, и назначение выводов описано таблицей 3.2.
Рис 3.2 Назначение выводов индикатора 7SEG-MPX4-СС.
Таблица 3.2
Цифра, знак
|
Выводы
|
анод
|
катод
|
0
1
2
3
4
5
6
7
8
9
точка
|
1,6,7,8,13,14
8,13
2,6,7,13,14
2,6,7,8,13,14
1,2,8,13
1,2,7,8,14
1,2,6,7,8,14
8,13,14
1,2,6,7,8,9,13,14
1,2,7,8,9,13,14
9
|
4, 12
|
На контроллер
непосредственно подводится питание (+5В) на выводы: VDD – положительное напряжение, VSS – общий вывод. Для использования
схемы внутреннего аппаратного сброса на вход сброса/напряжения прогроммирования
(MCLR) через резистор
сопротивлением 10 кОм подводится высокий уровень (VDD).
Входную тактовую
частоту зададим при помощи внутреннего генератора в режиме ХТ малого
энергопотребления, настроенного на частоту 4 МГц. Для этого используем
резонатор с параллельным резонансом. Резистор RS использовать не будем, считаем что резонатор не будет
самовозбуждаться. Конденсаторы С1 и С2 возьмем по 20 пФ (пределы 15..33пФ),
т.к. более высокая емкость, увеличивая стабильность частоты генератора,
увеличивает и время запуска, что не желательно. Схем подключения резонатора
приведена на рис.3.3.
Рис.3.3
Схем подключения резонатора в режиме ХТ
Кнопку S1
«старт/стоп/сброс» подключаем непосредственно ко входу PIC контроллера. При помощи кнопки S2 подаем питание на микроконтроллер. Кнопка
S1 подключена через резистор R1 = 10кОм, к порту RB7 (резистор задает уровень логической
единицы на входе микроконтроллера).
Чтобы обеспечить
хорошее питание схемы, применим сглаживающие фильтры С3=100мкФ, С4=1пФ, которые
сглаживают пульсацию напряжения на входе микроконтроллера.
Звуковая
индикация происходит при помощи динамика, подключаемого к порту RA4. Резистор R1=5кОм стабилизирует ток через
динамик.
При подаче
напряжения на микроконтроллер, начинает выполняться программа, записанная в
микроконтроллере. Вначале производится инициализация всех портов
микроконтроллера (порт RB7 настраивается на ввод, а
остальные порты настраиваются на вывод), обнуление рабочих регистров, занесение
необходимых констант в соответствующие регистры, а затем программа ожидает
нажатия кнопки. Т.к. подсчет секунд не производился, то на индикаторы выводятся
нули.
При
нажатии кнопки, происходит звуковая индикация, программа формирует нужные
задержки, инкрементируя при этом значения регистров в соответствии с
необходимой отображаемой информацией. Через ограничительные резисторы R4-R10
подаются сигналы для управления сегментами индикатора.
При очередном
нажатии клавиши происходит остановка выполнения программы, секундомер ожидает
обнуления, а на индикатор выводится последняя подсчитанная последовательность
цифр.
Электрическая
принципиальная схема, спецификация элементов секундомера, приведены в
приложении.
4.Разработка
алгоритма работы управляющей программы
Для обеспечения работы
проектируемого устройства с заданными техническими требованиями необходимо
запрограммировать наш микроконтроллер на определенную обработку данных и выдачу
определенных сигналов. Управляющая программа должна обеспечить работу
секундомера. Обеспечив цикл с задержкой в 0.1 с., а затем, подсчитав количество
импульсов, пришедших в конце каждого цикла, мы и производим подсчет секунд.
Счёт начинается при нажатии кнопки. Для составления программы необходимо
сначала составить алгоритм работы устройства, т.е. конечный набор правил для
выполнения некоторых процедур.
Схема алгоритма – одна
из важнейших частей задачи, она состоит из отдельных операторов. Различают
четыре вида операторов, каждый из которых имеет вход и выход рис.4.1 Стрелками
обозначаются направление хода вычислений.
(1) (2) (3) (4) (5)
(1) – оператор описание процесса
обработки;
(2) – оператор проверки условий;
(3) – оператор начала (конца);
(4) – оператор разрыва схемы;
(5) – оператор ввода/вывода
данных.
Рис.4.1 Виды операторов
Применим в нашем
случае разветвленный алгоритм (см. приложение A).
Работа нашей
программы начинается с инициализации используемых регистров. Затем производится
настройка портов, очистка ячеек памяти, задаются временные циклы, используемые
для формирования требуемых величин задержек при работе. Происходит звуковая
индикация, время задержки, в течении которой подается сигнал на динамик, равно
829мкс., т.е. с частотой около 1,2кГц, слышимой человеком. Подключаются подпрограммы INDIKATOR и KOD, необходимые для вывода подсчитанных
секунд на семисегментные индикаторы.
5.Разработка
управляющей программы
Программа, обеспечивающая работу нашего секундомера, написана на языке Assembler и построена в виде основной
программы и подпрограмм.
Основная программа выполняет начальные установки режимов работы и
регистров. Порты RA0-RA3 и RB0-RB6 настроены на вывод информации, порты RB0-RB6 отвечают за соответствующие
сегменты индикатора. Порт RB7
считывает значение с кнопки. Порт RA4 производит вывод логической единицы, для звуковой индикации, которая
осуществляется с помощью подпрограммы ZVUK, по первому нажатию кнопки. Подпрограммы INDIKATOR и KOD, необходимы для выработки сигналов,
которые управляют семисегментными индикаторами. Подпрограмма DELAY формирует
основную задержку на 0,1 с., задержка формируется одним внутренним и одним
внешним циклами. Подпрограмма INCTIM меняем, в соответствии с отображаемыми
цифрами, значения регистров temp0- temp3, для индикации.
Работа программы осуществляется по циклу. Вначале производится
инициализация портов, очистка рабочих регистров. Запуск программы
осуществляется нажатием кнопки “Пуск/Стоп/Сброс”. Внутри цикла осуществляется
проверка на переполнение секундомера (если оно произошло, то происходит
обнуление всех регистров и программа ожидает нажатия кнопки “Пуск/Стоп/Сброс”).
При нажатии кнопки “Пуск/Стоп/Сброс” происходит остановка подсчета секунд, и
программа ожидает обнуления. Текст программы приведен ниже.
LIST P=16F628
#include <P16F628.INC>
temp0 EQU H'20'
temp1 EQU H'21'
temp2 EQU H'22'
temp3 EQU H'23'
temp4 EQU H'24'
temp5 EQU H'25'
temp6 EQU H'26'
temp7 EQU H'27'
temp8 EQU H'28'
i EQU H'29'
t EQU H'30'
k EQU H'31'
N0 EQU H'32'
N1 EQU H'33'
org 0
goto Start
Start
clrf PORTA
bsf STATUS,RP0
movlw B'10000000'
movwf TRISB
;Настроить RB7 на ввод, RB0-RB6 на вывод
clrf TRISA
bcf STATUS,RP0
clrf PORTB
k1
clrf temp0
clrf temp1
clrf temp2
clrf temp3
clrf temp4
clrf temp5
clrf temp6
clrf temp7
clrf temp8
clrf i
clrf t
call INDIKATOR
btfss PORTB,7
goto k1
MOVLW 1
MOVWF i
MOVLW 1
MOVWF temp0
call ZVUK
goto c1
k2
call DELAY
c1
call INDIKATOR
btfsc PORTB,7
goto k3
c2
btfss
i,0
goto
c1
k7
call INCTIM
goto k2
k3
btfsc PORTB,7
goto k3
movf i,0
movwf t
incf
i
btfss t,0
goto k1
goto
c2
INCTIM
movlw 0xe6
;230 раз
movwf temp4
k8 decfsz temp4,1
goto k8
;увеличение до 0,9 сек
incf temp0
movf temp0,0 ;инкрементировать на 0,1
сек
sublw 9 ;проверка:
если >9, то перейти
btfsc STATUS,0 ;был заем - да, то clrf temp0 и на следующее увеличение
goto I0 ;иначе на IO
clrf temp0 ;очистка значения
последнего разряда
;увеличение до 9 сек
incf temp1
movf temp1,0
sublw 9
btfsc STATUS,0
goto I1
clrf temp1
;увеличение до 59 сек
incf temp2
movf
temp2,0
sublw 5
btfsc STATUS,0
goto I2
clrf temp2
;увеличение 10 мин
incf temp3
movf temp3,0
sublw 9
btfsc STATUS,0
goto I3
clrf temp3
return
I0
nop
nop
nop
nop
nop
I1
nop
nop
nop
nop
nop
I2 nop
nop
nop
nop
nop
I3 nop
nop
nop
nop
nop
return
INDIKATOR
movf temp0,0
call KOD
movwf PORTB
bsf PORTA,0
;общий катод
nop
nop
nop
nop
bcf PORTA,0
movf temp1,0
call KOD
movwf PORTB
bsf PORTA,1
nop
nop
nop
nop
bcf PORTA,1
movf temp2,0
call KOD
movwf PORTB
bsf PORTA,2
nop
nop
nop
nop
bcf PORTA,2
movf temp3,0
call KOD
movwf PORTB
bsf PORTA,3
nop
nop
nop
nop
bcf PORTA,3
return
KOD
addwf PCL
retlw B'00111111' ;код 0
retlw B'00000110' ;код 1
retlw B'01011011' ;код 2
retlw B'01001111' ;код 3
retlw B'01100110' ;код 4
retlw B'01101101' ;код 5
retlw B'01111101' ;код 6
retlw B'00000111' ;код 7
retlw B'01111111' ;код 8
retlw B'01101111' ;код 9
ZVUK
movlw 100
movwf temp4
k6
btfsc PORTB,7
goto k6
bsf PORTA,4
k5
decfsz temp4,1
goto k5
bcf PORTA,4
call DELAY
call INDIKATOR
return
DELAY
movlw 0x81
;128
MOVWF k ;k=ff=255
Cycl_1
movlw 0xff
movwf N0
Cycl_0
decfsz N0,1
goto
Cycl_0
decfsz k,1
goto Cycl_1
return
end
Заключение.
Результатом
курсового проекта является разработанная принципиальная электрическая схема
цифровой секундомер на базе микроконтроллера PIC16F628 в соответствии с техническими требованиями. Разработан
алгоритм и написана программа на языке assembler, на основании которой работает микроконтроллер.
Данное устройство
очень просто в реализации. Оно содержит минимум элементом, что обеспечивает его
дешевизну, и минимизацию затрат на питание. Благодаря простому управлению и
индикации пользователь может легко им пользоваться.
В ходе
проектирования приобретен опыт работы и умение проектировать цифровые и
микропроцессорные устройства.
В ходе
проектирования передатчика использовались программы: Microsoft Word, Microsoft
Visio, Mplab IDE v7.20.
Список
использованной литературы
1.PIC16F62X.
Однокристальные 8-разрядные FLASH CMOS с микроконтроллеры компании Microchip
technology incorporated: Пер. с англ. –М.: ООО «Микрочип», 2001. – 148 c. www.microchip.ru
2. Бурак А.И.,
Левкович В.Н. Интегрированная среда MPLab IDE разработки программ для
микроконтроллеров PICmicro фирмы Microchip: Метод. пособие к лабораторным
работам по курсу «Цифровые и микропроцессорные устройства». – Мн: БГУИР, 2003.
– 31 с.
3.Левкович В.Н.
Цифровые и микропроцессорные устройства: Лабораторный практикум для студ. спец.
I-39 01 02 «Радиоэлектронные системы», I-39 01 03
«Радиоинформатика», I-39 01 04 «Радиоэлектронная защита информации».
В 2 ч. Ч. 1. –Мн: БГУИР, 2005. - 38 с.: ил
4.Левкович В.Н.,
Кащеев А.А. Цифровые и микропроцессорные устройства: Лабораторный практикум для
студ. спец. I-39 01 02 «Радиоэлектронные системы»,
I-39 01 03 «Радиоинформатика», I-39 01 04 «Радиоэлектронная
защита информации».
В 2 ч. Ч. 2.
–Мн: БГУИР, 2006. - 36 с.: ил.
Страницы: 1, 2
|