Рефераты. Электронный секундомер

В настоящее время выпускается ряд серий однокристальных микро-ЭВМ, предназначенных для использования в бытовой радиоэлектронной аппаратуре. Применение однокристальных микро-ЭВМ, реализующих на одной БИС функции ввода-вывода, хранения и обработки данных, позволяет достигать максимальной простоты и дешевизны систем управления.

С целью экономии энергии источника питания, для отображения измеряемого времени применим четырехразрядный цифробуквенный индикатора из семи сегментов в каждом разряде типа 7SEG-MPX4-СС, подключаемого по схеме с общим катодом. Сегменты индикаторов присоединяем непосредственно к выводам 6-12 микроконтроллера, через ограничительные резисторы R4-R10, каждый номиналом 220 Ом.

Структура индикатора представлена на рис.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



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.