Автор работы: Пользователь скрыл имя, 28 Ноября 2013 в 21:27, курсовая работа
Задание. Разработать Частотомер на микроконтроллере PIC16F84, программное обеспечения для него на языке ассемблер, рассмотреть вопросы программирования микроконтроллера.
Последние годы отмечены массовым наполнением рынка всевозможной автоматизированной аппаратурой самого различного назначения и самой различной сложности от пластиковой платежной карточки до холодильника, автомобиля и сложнейших установок. Это стало возможным благодаря микроконтроллерам (МК) Микроконтроллеры входят во все сферы жизнедеятельности человека, их насыщенность в нашем окружении растет из года в год.
Введение
1.Разработка структурной схемы устройства
2.Выбор элементной базы
3.Разработка схемы электрической принципиальной
4.Разработка программного обеспечения
5.Программирование микроконтроллера
Заключение
Список литературы
nop ; |
bsf status,5 ; |
clrf trisb ;- портB - выпуск, счет не возможен
bcf status,5
call prescaler ;положить посчитанное число в высокий или нижний байт
call refresh ;мы должны перезагрузить дисплей между периодом измерения и длинными вычислениямичто бы уменьшить мигание
clrf M ;очистка регистров дисплея
clrf H
clrf D
clrf U
call bin2bcd ;конвертировать двойной высокий байт:низкий байт M:H:D:U, 4 цифры
call adjust ;регулировать десятичный механизм после конвертировки
movlw .125
movwf count_r
loopr call refresh ;вызвать перезагрузку 125 раз-это где то 0,5 сек
decfsz count_r
goto loopr
goto work ;Работать всегда! (или пока не выключат...)
;
; *****************************
delay
movlw .100 ; -
movwf count1 ; |
d1 nop ; |
nop ; |
nop ; |
nop ; |-задержка в 1 миллисекунду, нам не нужно точное время
nop ; |
nop ; |
nop ; |
decfsz count1 ; |
goto d1 ; |
return ; -
; ******************************
segments addwf pc ; W + PC -> PC
retlw b'00111111' ; ..FEDCBA = '0'
retlw b'00000110' ; .....CB. = '1'
retlw b'01011011' ; .G.ED.BA = '2'
retlw b'01001111' ; .G..DCBA = '3'
retlw b'01100110' ; .GF..CB. = '4'
retlw b'01101101' ; .GF.DC.A = '5'
retlw b'01111101' ; .GFEDC.A = '6'
retlw b'00000111' ; .....CBA = '7'
retlw b'01111111' ; .GFEDCBA = '8'
retlw b'01101111' ; .GF.DCBA = '9'
; ***************************** подпрограмма перезгрузки индикатора: 250 мсек
refresh movfw M ;на дисплее тысячи
call segments
movwf portb
bsf porta,0
call delay
bcf porta,0
movfw H ;на дисплее сотни
call segments
movwf portb
bsf porta,1
call delay
bcf porta,1
movfw D ;на дисплее десятки
call segments
movwf portb
bsf porta,2
call delay
bcf porta,2
movfw U ;на дисплее единицы
call segments
movwf portb
bsf porta,3
call delay
bcf porta,3
return
; ************** подпрограмма
извлекаеи определенное
prescaler movfw tmr
movwf H_byte ;сохранить счетчик в высоком байте
clrf N
p1 bcf portb,7
bsf portb,7
bcf portb,7 ;задать конечный результат на вход контроллера
incf N
movfw H_byte ;Сделать копию высокого байта в W
xorwf tmr,0 ;Проверить, если tmr изменится
btfsc status,2
goto p1 ;если нет, повторить
movlw 0xFF
movwf L_byte
movfw N ; N = как много импульсов которым необходимо завершить деление частоты к 256
subwf L_byte ;-|__ L_byte=256-N
incf L_byte ;-|
return
; ****************************** BIN -> BCD преобразователь H_byte:L_byte -> M:H:D:U
bin2bcd btfss H_byte,5 ;проверить bit5 высокого байта
goto b1
movlw 0x08
addwf M
movlw 0x01
addwf H
movlw 0x09
addwf D
movlw 0x02
addwf U ;если bit5=1 то добавить 8192
b1 btfss H_byte,4 ;проверить bit4 H_byte
goto b2
movlw 0x04
addwf M
movlw 0x09
addwf D
movlw 0x06
addwf U ;если bit4=1 то добавить 4096
b2 btfss H_byte,3 ;проверить bit3 H_byte
goto b3
movlw 0x02
addwf M
movlw 0x04
addwf D
movlw 0x08
addwf U ;если bit3=1 то добавить 2048
b3 btfss H_byte,2 ;проверить bit2 of H_byte
goto b4
movlw 0x01
addwf M
movlw 0x02
addwf D
movlw 0x04
addwf U ;если bit2=1 то добавить 1024
b4 btfss H_byte,1 ;проверить bit1 H_byte
goto b5
movlw 0x05
addwf H
movlw 0x01
addwf D
movlw 0x02
addwf U ;если bit1=1 то добавить 512
b5 btfss H_byte,0 ;проверить bit0 H_byte
goto b6
movlw 0x02
addwf H
movlw 0x05
addwf D
movlw 0x06
addwf U ;если bit0=1 то добавить 256
b6 btfss L_byte,7 ;проверить bit7 L_byte
goto b7
movlw 0x01
addwf H
movlw 0x02
addwf D
movlw 0x08
addwf U ;если bit7=1 то добавить 128
b7 btfss L_byte,6 ;проверить bit6 L_byte
goto b8
movlw 0x06
addwf D
movlw 0x04
addwf U ;если bit6=1 то добавить 64
b8 btfss L_byte,5 ;проверить bit5 L_byte
goto b9
movlw 0x03
addwf D
movlw 0x02
addwf U ;если bit5=1 то добавить 32
b9 btfss L_byte,4 ;проверить bit4 L_byte
goto b10
movlw 0x01
addwf D
movlw 0x06
addwf U ;если bit4=1 то добавить 16
b10 btfss L_byte,3 ;проверить bit3 L_byte
goto b11
movlw 0x08
addwf U ;если bit3=1 то добавить 8
b11 btfss L_byte,2 ;проверить bit2 L_byte
goto b12
movlw 0x04
addwf U ;если bit2=1 то добавить 4
b12 btfss L_byte,1 ;проверить bit1 L_byte
goto b13
movlw 0x02
addwf U ;если bit1=1 то добавить 2
b13 btfss L_byte,0 ;проверить bit0 L_byte
goto b14
movlw 0x01
addwf U ;если bit0=1 то добавить 1
b14 return
; ****************************** BCD механизм после конвертировки
adjust movfw U
movwf N ;сделать копию U в N
movlw 0x0A
subwf N,1 ;проверить, если U<10
btfss status,0
goto a1 ;если U<10, тогда регулировать не надо, следует до следующей единицы
movlw 0x0A ;если U>10 тогда U=U-10 и D=D+1
subwf U,1
incf D,1
goto adjust ;повторить
a1 movfw D
movwf N ;сделать копию из D в N
movlw 0x0A
subwf N,1 ;проверить, если D<10
btfss status,0
goto a2 ;если D<10, тогда регулировка не нужна следует до следующей цифры
subwf D,1 ;если D>10 тогда D=D-10 и H=H+1
incf H,1
goto a1 ;повторить
a2 movfw H
movwf N ;сделать копию из H в N
movlw 0x0A
subwf N,1 ;проверить если H<10
btfss status,0
goto a3 ;если H<10 тогда регулировка не нужна следует до следующей цифры
subwf H,1 ;если H>10 тогда H=H-10 и M=M+1
incf M,1
goto a2 ;повторить
a3 return
END
5.Программирование
Конструкция представляет из себя очень простое и дешевое устройство для программирования и последующего чтения внутренней памяти PIC контроллеров типа PIC16C84 /83, PIC16F84 /83, PIC16CE625 /624/623. В отличие от многих аналогичных конструкций, программатор допускает внутрисхемное программирование. При разработке за основу была взята схема , рекомендуемая фирмой "Microchip" .
Программатор питается от источника напряжением 12…13v с током до 100ma и подключается к порту LPT1 персонального компьютера. Управляющая программа разрабатывалась для MS DOS, поэтому при работе в среде «Windows» для соблюдения необходимых временных соотношений при программировании ее необходимо запускать в режиме эмуляции MS DOS. Хотя сама программа прекрасно работает и в оконном режиме, попытка программирования в этом случае ни к чему хорошему не приведет. Алгоритм программирования большинства PIC контроллеров одинаков, поэтому не составит труда расширить их номенклатуру. Интерфейс программы прост и интуитивно понятен. Схема электрическая принципиальная приведена на чертеже. Протокол работы микросхемы при программировании рассмотрен в диаграммах на рисунке 9, вывод данных из микроконтроллера и рисунке 10 ввод данных в микроконтроллер.
PIC16F84 может быть запрограммирован в готовом изделии по последовательному каналу. Это реализовано с помощью двух линий тактового сигнала и данных, как также трех других линий: питание, земля, напряжение программирование. Это позволяет производить платы с незапрограммированными устройствами и программировать микроконтроллер непосредственно перед поставкой продукции. Это также позволяет снабжать устройство самым свежим программным обеспечением или настраивать программное обеспечение для кристалла.
Устройство входит в режим программирования Удержанием низкого уровня на выводах RB6, RB7 во время перехода сигнала на выводе MCLR/Vpp из нижнего уровня в высокий. После этого RB6 становится тактовым сигналом, а RB7-данными программирования.
После входа в режим
программирования можно послать 6-ти
битную команду. В зависимости от нее можно записать или
считать 14-битные данные.
Заключение
По полученному заданию была проделана работа в полном объеме, разработаны электронные часы на микроконтроллере, написана программа для него рассмотрены вопросы программирования МК. При выполнении данной работы был получен ценный опыт разработки подобных устройств получены навыки в разработке программ на языке ассемблер также был закреплены знания полученные на занятиях.
Список литературы
1. Радио №1 2001г. с.21
"Частотомер на PIC-
2. Угрюмов Е.П. Цифровая
схемотехника.-СПб.:БХВ-Санкт-
3. Микроконтроллеры. Выпуск 2:Однокристальные микроконтроллеры PIC12c5x, PIC16x8x, PIC14000, M16C/61/62. Перевод с англ.Б.Я..8 Прокопенко/ Под ред.Б. Я. Прокопенко.- М.: ДОДЭКА, 2000.- 336 с.
Internet - Ресурсы
http://www.microchip.ru:8101/
http://www.paguo.ru/
http://www.disall.narod.ru/
http://www.chipnews.ru/html.
Микроконтроллеры. Выпуск 2:
Однокристальные микроконтроллеры PIC12c5x, PIC16x8x, PIC14000,
Информация о работе Цифровые устройства и микропроцессоры. Частотомер