Формат | Зона | Поз | Обозначение | Наименование | кол | Примечание |
Резистор | ||||||
R1,R2,R6,R4 | МЛТ0,125 2 Ком +/- 10% | 4 | ||||
R7 | МЛТ0,125 780 ом +/- 10% | 1 | ||||
R3,R5 | МЛТ0,125 10 Ком +/- 10% | 2 | ||||
Конденсатор | ||||||
С1,С4 | К50-16100 Мкф +\- 10% | 2 | ||||
С2,С3 | КМ3-160.2 Мкф +\- 10% | 2 | ||||
Транзисторы | ||||||
VT2,VT3 | КТ315Г | 2 | ||||
VT1 | КТ361Г | 3 | ||||
Микросхемы | ||||||
DD1 | К1533АП5 | 1 | ||||
DD2 | К142ЕН5А | 1 | ||||
Диод | ||||||
VD1 | КД522 | 1 | ||||
Формат | Зона | Поз | Обозначение | Наименование | кол | Примечание |
Резистор | ||||||
R1,R2 | МЛТ0,125 10 Ком +/- 10% | 2 | ||||
R3-R10 | МЛТ0,125 180 ом +/- 10% | 8 | ||||
Конденсатор | ||||||
С1,С2 | К5-1630 пф +\- 10% | 2 | ||||
Микросхемы | ||||||
DD1 | PIC16F84A-04i\p | 1 | ||||
Индикатор | ||||||
HG1-HG4 | АЛС324А1 | 4 | ||||
Кварцевыйрезонатор | ||||||
Qz1 | РК-8534.000 Мгц | 1 | ||||
МинистерствообразованияРоссийскойФедерации
СеверокавказскийГосударственныйТехническийУниверситет
На тему"Разработкачасов на микроконтроллереPIC16F84 "
Принял: ЯкушевВ.М.
Ставрополь2002
Задание
Разработатьчасы реальноговремени намикроконтроллереPIC16F84, программноеобеспечения для него наязыке ассемблер,рассмотретьвопросы программированиямикроконтроллера.
Напряжениепипания устройства5В +/-1В
ЧастотатактовогогенератораМК 4 Мгц
Количествоотображаемыхцифр на идикаторе 4
Количествокнопок управления 2
Единицыизмерениявремени Часы
Минуты
Секунды
Содержание
Введение
1.Разработкаструктурнойсхемы устройства
2.Выборэлементнойбазы
3.Разработкасхемы электрическойпринципиальной
4.Разработкапрограммногообеспечения
5.Программированиемикроконтроллера
Заключение
Списоклитературы
Введение
Последниегоды отмеченымассовым наполнениемрынка всевозможнойавтоматизированнойаппаратуройсамого различногоназначенияи самой различнойсложности отпластиковойплатежнойкарточки дохолодильника,автомобиляи сложнейшихустановок. Этостало возможнымблагодарямикроконтроллерам(МК) Микроконтроллерывходят во всесферы жизнедеятельностичеловека, ихнасыщенностьв нашем окружениирастет из годав год. То чтоказалось нам 5 лет назад сказкой сейчас вполневозможно благодарястремительномуразвитию технологиипроизводстваэлектронныхкомпонентов.Да пять летназад мы ужезнали просуперкомпьютерысуперпроцессорысуперАЦП и т.д.Ну а что же сейчаса сейчас "ВСЕВ ОДНОМ КОРПУСЕ"и это жестокаяправда. Раньше, изобретателюэлектронныхсхем приходилосьиметь дело с"кучей" электронныхкомпонентов, размещая согромным трудомвсе на печатнойплате размеромметр на метри при испытаниикипятить чайникна тойже плате(это про расходуемуюэнергию), в нашевремя разработчикуэлектроннойаппаратурыне грозят вышеуказанныесложности, точнее чембольше денегтем меньшесложностей.Но появляютсяновые неудобстваинформационного общества такиекак :
Фирмы производящиемикроконтроллерыATMEL,INTEL,ZILOG,MICROCHIP,"и с радостьюдля патриотов"АНГСТРЕМ,scenix,кажетсяможно продолжатьбесконечно.Каждая изперечисленныхфирм кромеАНГСТРЕМ имеетболее 100 видовразличных поназначениюмикроконтроллеров,а каждый микроконтроллерне менее 200 страництехническихописаний ихарактеристикплюс к этомуна английскомязыке, кромеАНГСТРЕМ. Выберисвой девизсовременногообщества.
Средстваразработкипрограммногообеспечениядля микроконтроллерову каждой фирмысвое, а что касаетсяязыков программированияконечно ассемблерсамый старый,добрый, всемпонятный, нуа что через годперечислимнекоторые, "C,PASCAL,JAVA,DELPHI,C++,+TURBO,+VISUAL"опять можнопродолжатьбесконечно.
Вернемсяк теме "в одномкорпусе" раньшеК155ХХ 50 штук асейчас PIC16F84и простов подарок ПЗУ,ОЗУ, таймер,система прерываний,аналогово-цифравойпреобразователь,встроенныйгенератор,корпус с 20 ножкамии т.д.
Ну хватито грустном заработу!
В даннойпроекте будетразработаноустройствона современноммикроконтроллере,написана программаи рассмотреныинструментальныесредства.Такжебудит примененызнания полученныена занятиях.
1.Разработкаструктурнойсхемы устройства
Структурнаясхема электронныхчасов на микропроцессореприведена нарисунке 1. Онасостоит из 4основных блоков.Тактовый генераторпредназначендля генерациипрямоугольныхимпульсовчастотой 4 Мгцдля тактированиямикропроцессораи программируемоготаймера . Микропроцес-
Рисунок 1.Структурнаясхема устройства
сорный блок состоит измикропроцессора,постоянногои оперативногозапоминающегоустройств предназначендля управлениявсеми другимиблоками часов.Он осуществляетобработкупрерыванияполученногоот таймерапредварительноделает егоустановку нанужное значение,готовит данныеполученныеот таймера, выводит значениена индикатори считываетзначение склавиатуры.Контроллерклавиатурыи дисплея предназначендля дешифрациизначений полученныхот микропроцессораи усилениясигналов дляиндикаторатакже осуществляетпредварительнуюобработкусигналов полученныхот клавиатуры.Дисплей предназначендля выводареальноговремени в графическомвиде понятномдля человека.Клавиатураэлектронныхчасов служитдля ввода управляющихсигналов такихкак установкарежима индикациидисплея и установкавремени.
2.Выбор элементнойбазы
Данное устройствоможет бытьвыполнено наразной элементнойбазе включаямикросхемысерии 155,176,561 такжеразличныемикропроцессорныекомплекты580,1816,1830 и на специализированных микросхемахнапример 1901 чтопредпочтительнейс экономическойточки зреният.к в их составвходят контроллерклавиатурыи дисплея тактовыйгенератор,устройствоуправления,таймер и многоедругое необходимоедля электронныхчасов. В даннойработе в учебныхцелях это устройствобудет разработанона микроконтроллерефирмы Microchip.inc.
PIC16F84относится ксемейству КМОПмикроконтроллеров.Отличаетсятем, что имеетвнутреннее1K x 14 бит EEPROM для программ,8-битовые данныеи 64байт EEPROM памятиданных. Приэтом отличаютсянизкой стоимостьюи высокойпроизводительностью.Все командысостоят изодного слова(14 бит шириной)и исполняютсяза один цикл(400 нс при 10 МГц),кроме командперехода, которыевыполняютсяза два цикла(800 нс). PIC16F84имеет прерывание,срабатывающееот четырехисточников,и восьмиуровневыйаппаратныйстек. Перифериявключает в себя8-битный таймер/счетчикс 8-битным программируемымпредварительнымделителем(фактически16 - битный таймер)и 13 линий двунаправленноговвода/вывода.Высокая нагрузочнаяспособность(25 мА макс. втекающийток, 20 мА макс.вытекающийток) линийввода/выводаупрощают внешниедрайверы и, темсамым, уменьшаетсяобщая стоимостьсистемы. Разработкина базе контроллеровPIC16F84поддерживаетсяассемблером,программнымсимулятором,внутрисхемнымэмулятором(только фирмыMicrochip) и программатором.
Серия PIC16F84подходит дляширокого спектраприложенийот схем высокоскоростногоуправленияавтомобильнымии электрическимидвигателямидо экономичныхудаленныхприемопередатчиков,показывающихприборов исвязных процессоров.Наличие ПЗУпозволяетподстраиватьпараметры вприкладныхпрограммах(коды передатчика,скорости двигателя,частоты приемникаи т.д.). Малыеразмеры корпусов,как для обычного,так и для поверхностногомонтажа, делаетэту сериюмикроконтроллеровпригодной дляпортативныхприложений.Низкая цена,экономичность,быстродействие,простотаиспользованияи гибкостьввода/выводаделает PIC16F84привлекательнымдаже в тех областях,где ранее неприменялисьмикроконтроллеры.Например, таймеры,замена жесткойлогики в большихсистемах,сопроцессоры.Cледует добавить,что встроенныйавтомат программированияEEPROM кристаллаPIC16F84позволяет легкоподстраиватьпрограмму иданные подконкретныетребованиядаже послезавершенияассемблированияи тестирования.Эта возможностьможет бытьиспользованакак для тиражирования,так и для занесениякалибровочныхданных ужепосле окончательноготестирования.
Структурнаясхема микроконтроллераприведена нарисунке 2.
Рисунок 2.Структурнаясхема микроконтроллераPIC16F84
Архитектураоснована наконцепциираздельныхшин и областейпамяти дляданных и длякоманд (Гарвардскаяархитектура).Шина данныхи память данных(ОЗУ) - имеют ширину8 бит, а программнаяшина и программнаяпамять (ПЗУ)имеют ширину14 бит. Такаяконцепцияобеспечиваетпростую, номощную системукоманд, разработаннуютак, что битовые,байтовые ирегистровыеоперации работаютс высокой скоростьюи с перекрытиемпо временивыборок команди циклов выполнения.14- битовая ширинапрограммнойпамяти обеспечиваетвыборку 14-битовойкоманды в одинцикл. Двухступенчатыйконвейер обеспечиваетодновременнуювыборку и исполнениекоманды. Всекоманды выполняютсяза один цикл,исключая командыпереходов. ВPIC16F84программнаяпамять объемом1К х 14 расположенавнутри кристалла.Исполняемаяпрограмма можетнаходитьсятолько во встроенномПЗУ.
Условнографическоеобозначениемикроконтроллераприведено нарисунке 3.
Программныйкод, которыйзаписан в кристалл,может бытьзащищен отсчитыванияпри помощиустановки битазащиты (CP) в словеконфигурациив ноль. Содержимоепрограммы неможет бытьпрочитано так,что с ним можнобыло бы работать.Кроме того, приустановленномбите защитыстановитсяневозможнымизменять программу.То-же относитсяи к содержимомупамяти данныхEEPROM.
Если установленазащита, то битCP можно стеретьтолько вместес содержимымкристалла.Сначала будетстерта EEPROM программнаяпамять и памятьданных и в последнююочередь битзащиты кодаCP.
КристаллPIC16C84 имеет четыреслова, расположенныепо адресу(2000h-2003h) Они предназначеныдля храненияидентификационногокода (ID) пользователя,контрольнойсуммы или другойинформации.Как и словоконфигурации,они могут бытьпрочитаны илизаписаны толькос помощьюпрограмматора.Доступа попрограмме кним нет.
Есликристалл защищен,пользователюрекомендуетсяиспользоватьдля идентификациитолько младшиесемь бит каждогоID слова, а в старшийбит записывать`0`. Тогда ID словаможно будетпрочитать дажев защищенномварианте.
Входв режим SLEEP осуществляетсякомандой SLEEP. Поэтой команде,если WDT разрешен,то он сбрасываетсяи начинает счетвремени, бит"PD" в регистрестатуса (f3) сбрасывается,бит "TO" устанавливается,а встроенныйгенераторвыключается.Порты ввода/выводасохраняютсостояние,которое ониимели до входав режим SLEEP. Длясниженияпотребляемоготока в этомрежиме, ножкина вывод должныиметь такиезначения, чтобыне протекалток между кристалломи внешнимицепями. Ножкина ввод должныбыть соединенывнешними резисторамис высоким илинизким уровнем,чтобы избежатьтоков переключения,вызываемыхплавающимивысокоомнымивходами. То жеи про RTCC. Ножка/MCLR должна бытьпод напряжениемVihmc.
Обозначение | Нормальныйрежим | Режимзаписи EEPROM |
RA0 - RA3 | Двунаправленныелинии ввода/вывода.Входныеуровни ТТЛ. | - |
RA4/RTCC | Входчерез триггерШмитта. Ножкапорта ввода/выводас открытымстоком иливход частотыдля таймера/счетчикаRTCC | - |
RB0/INT | Двунаправленнаялиния портаввода/выводаили внешнийвход прерывания.Уровни ТТЛ. | - |
RB1 - RB5 | Двунаправленныелинии ввода/вывода.Уровни ТТЛ. | - |
RB6 | Двунаправленныелинии ввода/вывода.Уровни ТТЛ. | Входтактовой частотыдля EEPROM |
RB7 | Двунаправленныелинии ввода/вывода.Уровни ТТЛ. | Вход/выходEEPROM данных. |
/MCLR/Vpp/ | Низкийуровень наэтом входегенерируетсигнал сбросадля контроллера.Активный низкий.Сброс контроллера. | Длярежима EEPROM - податьVpp. |
OSC1 /CLKIN | Дляподключениякварца, RC иливход внешнейтактовой частоты. | - |
OSC2 /CLKOUT | Генератор,выход тактовойчастоты в режимеRC генератора,в остальныхслучаях - дляподкл.кварц | - |
Vdd | Напряжениепитания | Напряжениепитания |
Vss | Общий(земля) | Общий(земля) |
Выход параметровза данные пределыможет привестик повреждениюмикросхемы.Работа кристаллана предельнодопустимыхзначениях втечение длительноговремени повлияетна его надежность.
Интервалрабочих температур | -55 ... +125С |
Температурахранения | -65 ... +150С |
Напряжениена любой ножкеотносительноVss (земли) (исключаяVdd и /MCLR) | -0.6...Vdd +0.6 В |
НапряжениеVdd относительноVss | 0 ... +7.5 В |
Напряжениена /MCLR относительноVss | 0...+14 В(Прим.2) |
Общаярассеиваемаямощность | 800 мВт(Прим.1) |
Макс.ток в ножкуVss | 150 мА |
Макс.ток в ножкуVdd | 100 мА |
Макс.ток в любуюножку ввода | +- 500 мкА |
Макс.втекающийток (любая ножкаВывода) | 25 мА |
Макс.вытекающийток (любая ножкаВывода) | 20 мА |
Макс.сумарныйвытекающийток для всехножек порта_А | 80 мА |
Макс.сумарныйвытекающийток для всехножек порта_В | 50 мА |
Макс.сумарныйвтекающийток для всехножек порта_А | 50 мА |
Макс.сумарныйвтекающийток для всехножек порта_В | 100 мА |
Область ОЗУорганизованакак 128 х 8. К ячейкамОЗУ можноадресоватьсяпрямо или косвенно,через региструказатель FSR(04h).
Это такжеотносится ик EEPROM памятиданных-констант.
В регистрестатуса (03h) естьбиты выборастраниц, которыепозволяютобращатьсяк четырем страницамбудущих модификацийэтого кристалла.Однако дляPIC16F84память данныхсуществуеттолько до адреса02Fh. Первые 12 адресовиспользуютсядля размещениярегистровспециальногоназначения.Регистры садресами 0Ch-2Fhмогут бытьиспользованы,как регистрыобщего назначения,которые представляютсобой статическоеОЗУ. Некоторыерегистры специальногоназначенияпродублированына обеих страницах,а некотрыерасположенына странице1 отдельно. Когдаустановленастраница 1, тообращение кадресам 8Ch-AFh фактическиадресует страницу0. К регистрамможно адресоватьсяпрямо или косвенно.В обоих случаяхможно адресоватьдо 512 регистров.
Watchdog таймерпредставляетсобой полностьюнезависимыйвстроенныйRC генератор,который нетребует никакихвнешних цепей.Он будет работать,даже если основнойгенераторостановлен,как это бываетпри исполнениикоманды SLEEP. Таймервырабатываетсигнал сброса.Выработка такихсбросов можетбыть запрещенапутем записинуля в специальныйбит конфигурацииWDTE. Эту операциюпроизводятна этапе программирования микросхем.
Номинальнаявыдержка WDTсоставляет18 мс (без использованияделителя). Оназависит оттемпературы,напряженияпитания, отособенностейтипов микросхем.Если требуютсябольшие задержки,то к WDT может бытьподключенвстроенныйделитель скоэффициентомделения до1:128; которыйпрограммируетсяпутем записив регистр OPTION.Здесь могутбыть реализованывыдержки до2.5 секунд.
Команды"CLRWDT" и "SLEEP" обнуляютWDT и делитель,если он подключенк WDT. Это запускаетвыдержку временисначала ипредотвращаетна некотороевремя выработкусигнала сброс.Если сигналсброса от WDT всеже произошел,то одновременнообнуляетсябит "TO" в регистрестатуса (f3). Вприложенияхс высоким уровнемпомех, содержимоерегистра OPTIONподверженосбою. Поэтомурегистр OPTION долженобновлятьсячерез равныепромежуткивремени. Следуетучесть, чтонаихудшейкомбинациейявляется: Vdd=min,температура=maxи max коэффициентделения делителя,-это приводитк самой большойвыдержке времени,она может достигатьнесколькихсекунд.
Также в устройствебудет использованцифро-буквенныйиндикатор свысотой цифр7,5 мм из семисегментов сдецимальнойточкой АЛС324А,его графическоеизображениеприведено нарисунке 4.
3.Разработкасхемы электрическойпринципиальной
ПрименениемикроконтроллеровPIC16F84 приводитк резкому уменьшениюразмеров устройствапотребляемоймощности иколичестваиспользуемыхэлементов. Приразработкеустройств намикроконтроллерах разработчикуэлектроннойсхемы необходимовыбрать частотутактовогогенераторадля поставленнойзадачи и следитьчтобы максимальнаянагрузка напорты вводавывода не превышаладопустимую.
КристаллыPIC16F84могут работатьс четырьмятипами встроенныхгенераторов.Пользовательможет запрограммироватьдва конфигурационныхбита (FOSC1 и FOSC0) длявыбора одногоиз четырехрежимов: RC, LP, XT, HS.КристаллыPIC16... могут такжетактироватьсяи от внешнихисточников.Генератор,построенныйна кварцевыхили керамическихрезонаторах,требует периодастабилизациипосле включенияпитания. Дляэтого, встроенныйтаймер запускагенераторадержит устройствов состояниисброса примерно18 мс после того,как сигнал на/MCLR ножке кристалладостигнетуровня логическойединицы. Такимобразом, внешняяцепочка RC , связаннаяс ножкой /MCLR вомногих случаяхне требуется.
Встроенныегенераторыработоспособныпри определенныхноминалахпитающегонапряжения:
Vdd | OSCmode | MaxFreq |
2..3V | RC | 2 MHz |
LP | 200 kHz | |
3..6V | RC, XT | 4 MHz |
LP | 200 kHz | |
4,5..5,5 | HS | 10 MHz |
При частотахниже 500 кГц, внутреннийгенератор можетгенерироватьсбойный импульсна гармониках,когда переключаетсябит 0 порта A. Этогоне происходитпри использованиивнешнего генератораили при встроенномRC генераторе.PIC16F84-XT,-HS или -LP требуютподключениякварцевогоили керамическогорезонаторак выводам OSC1 иOSC2. Маркировкаследующая: XT -стандартныйкварцевыйгенератор, HS -высокочастотныйкварцевыйгенератор, LP -низкочастотныйгенератор дляэкономичныхприложений.Резистор Rs можетпотребоватьсядля генератора"HS", особеннопри частотахниже 20 МГц длягашения гармоник.Он также можетпотребоватьсяв режиме XT срезонаторомтипа AT strip-cut. Необходимыезначенияконденсаторовдля разныхчастот приведеныв таблице.
Болеевысокая емкостьбудет увеличиватьстабильностьгенератора,но также будетувеличиватьвремя запуска.Значения приведеныдля ориентировки.В режимах HS иXT, чтобы избежатьгармоник можетпотребоватьсяпоследовательныйрезистор Rs.
Т
Типгенератора | Частота | КонденсаторС1 | КонденсаторС2 |
LP | 32 КГц | 30 пФ | 30 - 50пф |
100 КГц | 15 пф | 15 пФ | |
200 КГц | 0- 15пФ | 0 - 15пФ | |
XT | 100 КГц | 15 - 30пФ | 200 -300 пФ |
200 КГц | 15- 30пФ | 100 -200 пФ | |
455 КГц | 15 - 30пФ | 15 -100пФ | |
1 МГц | 15 - 30пФ | 15 - 30пФ | |
2 МГц | 15 пФ | 15 пФ | |
4МГц | 15 пФ | 15 пФ | |
HS | 4 МГц | 15 пФ | 15 пФ |
10 МГц | 15пФ | 15 пФ |
Ввод информациидля управленияэлектроннымичасами осуществляетсячерез 2 кнопкиподключенныхк портам RB0иRA0 микроконтроллера.Схема подключенияпоказана нарисунке 6. Мерыпо предотвращениюдребезга контактовмогут реализоватсяпрограмнымметадом. Сопротивлениерезистороввыбирается из расчетапротиканиянаименьшего тока необходимогодля фиксациилогической1 на входахмикрокантроллерапри неактивныхпозициях кнопоки в данном случаесоставляют10 Ком.
Рисунок 6 .Подключениеклавиатурыуправления
Рисунок 7.Схема подключенияустройстваиндикации
Также в устройствеприсутствуетблок индикациисостоящий из4-х индикаторовАЛС324А которыеуправляютсямикропроцессоромчерез токоограничивающиерезисторыR4...R10 номеналом180 ом. Индикацияосуществляетсядинамическимспособом т.евывод осуществляетсяпо порядку1,2,3,4 - индикаторпо 10мс на каждыйиндикатор.Схема подключенияиндикаторовпоказана нарисунке 7.
Электрическаяпринципиальнаясхема устройстваприведена начертеже 1.
4.Разработкапрограммногообеспечения
Приразработкеи отладке программыбыла использованабесплатнаяпрограмма MplabпредоставляемаяфирмойMicrochip.
MPLAB- это интегрированнаясреда разработки(IDE) для семействамикроконтроллеровPICmicro фирмы Microchip TechnologyIncorporated. MPLAB позволяетписать, отлаживатьи оптимизироватьпрограммы дляВаших разработок.MPLAB включаеттекстовыйредактор, симулятор(виртуальныйотладчик), менеджерпроектов иподдерживаетэмуляторы(внутрисхемныеотладчики)MPLAB-ICE и PICMASTER , программаторыPICSTART Plus и PRO MATE II и другиесредства иинструментыразработокфирмы Microchip и другихфирм.
Инструментальныесредства MPLAB,организованныекак ниспадающиеменю и определяемыебыстрые клавиши,позволяют:-ассемблировать,компилироватьисходный текст;-отлаживатьлогику работы,наблюдая спомощью симулятораили, в реальномвремени, с эмуляторомMPLAB-ICE ;- просматриватьпеременныев окнах просмотра;-программироватькристаллы спомощью программаторовPICSTART Plus или PRO MATE II- и многоедругое.
Рисунок 8.Блок схемапрограммы
MPLAB работаетпод Microsoft Windows 3.1x, Windows 95, 98, NT,2000 (начиная сверсии 5.00.00). Правдане все дополнительноеоборудование,такое каквнутрисхемныеэмуляторы ипрограмматорыбудет функционироватьпод всемиоперационнымисистемами. Дляболее подробногоописания обращайтеськ специализированнойлитературеи техническимописаниям фирмыMicrochip.
Описаниепрограммы можнонайти на интернетсайте фирмыMicrochip
Блок схемаразрабатываемойпрограммыприведена нарисунке 8.Онасостоит изблока началиныхустановок вкоторый входятпроцедурыобнуленияпеременныхиспользуемыхв программе,установки направленияпортов, установкинужного коэффициентапредделителя,тест работоспособностииндикаторов.Блока выводана идикациюв каторомосуществляетсяпреодразованиедвоичного кодав код семисегментныхиндикаторов,формируютсянеобходимыезадержки временидля динамическойиндикации,также контрольвывода выбронногопользователемрежима индикации (режим часы :минуты и минуты: секунды ). Участокпрограммысканированияклавиатурыотвечает завыбор режимаиндикации иустановкувремени вводимыхс клавиатуры,в следующейпоследовательностив режиме (часы: минуты ) кропкойустановкивремени можетбыть измененотолько значениераздела часова в режиме (минуты: секунды) толькоминут.
Самаяответственнаячасть программыэто обработкапрерыванияполученногоот встроенноготаймера микроконтроллераот неё зависитточность ходачасов т.е ошибкив этой частипрограммыприводят кзначительномуотстованиюили опережениюхода часовтамже можетбыть осуществленаточная подстройка.Рассмотримполучениеинтервала в1 секунду с помощьютаймера, приконфигурациитаймера егонадо подключитьк внутреннемугенераторукоторый позаданию вырабатываетчастоту 4,00 Мгцпосле такогоподключенияв данном микроконтроллерена таймер будетподаватсячастота генератора(Fг)/4и будет равна1000000 гц с помощьювстроенногопредделителяона делитсяна 64 и на таймерприходит уже15625 гц. После этогонам необходиморазделить эточисло на такоежечтобы получитьчастоту колебанийв 1гц. Из за небольшойразрядноститаймера (8) этапроцедураделается в дваэтапа длем на125 и еще раз настолько же.Сразу послеэтого прибавляем1 к региструсекунд (в программеsek).Результатприведен ниже:
1. F(г)=4мГц/4=1000000
2. 1000000/64=15625
3. 15625/125=125
4. 125/125=1 Гц
LIST p=16F84A ; указательпроцессора
include
org0x00;Вектор сброса
GotoStart
;***************************************************************
org004;Началопроцедурыобработкипрерывания
movwftemp ; Сохранениерабочего регистраW в регистреtemp
clrwdt;Очисткасторожевоготаймера дляпредотврашения
callInt1;сброса процессоракаждый 18мс
movlw b'10100000'; Разрешаем прерыванияот таймера
movwf INTCON;
movftemp,w;Востанавливаемзначение рабочегорегистра
clrwdt;Очисткасторожевоготаймера
return;Выходиз процедурыобработкипрерывания
;****************************************************************
org0x10
segment;Таблица преобразованияDEC -> семисегментныйкод.
CLRF PCLATH
ADDWF PCL, F
dt07E,b'00001100', 0B6, 09E, 0CC, 0DA, 0FA, 00E, 0FE, 0DE
Data1;*************десятки
CLRF PCLATH
ADDWF PCL, F
;0 1 2 3 4 5 6 7 8 9
dt0,0,0,0,0,0,0,0,0,0
dt1,1,1,1,1,1,1,1,1,1
dt2,2,2,2,2,2,2,2,2,2
dt3,3,3,3,3,3,3,3,3,3
dt4,4,4,4,4,4,4,4,4,4
dt5,5,5,5,5,5,5,5,5,5
Data2;***********единицы
CLRF PCLATH
ADDWF PCL, F
;0 1 2 3 4 5 6 7 8 9
dt0,1,2,3,4,5,6,7,8,9;0
dt0,1,2,3,4,5,6,7,8,9;10
dt0,1,2,3,4,5,6,7,8,9;20
dt0,1,2,3,4,5,6,7,8,9;30
dt0,1,2,3,4,5,6,7,8,9;40
dt0,1,2,3,4,5,6,7,8,9;50
;Программныерегистры:
skan1equ20;регхранения RB1,2
clok1equ21;хранение часов
sekequ22;регистрхранения секунд
minequ23;регистрхранения минут
cl_kequ24
Dig_xequ25;Значение X0:00 дляиндикации.
Dig_yequ26;Значение 0X:00 дляиндикации.
Dig_zequ27;Значение 00:X0 дляиндикации.
Dig_expequ28;Значение 00:0X дляиндикации.
cnt1 equ29;переменнаяисп для задержкивремени
cnt2 equ2A;переменнаяисп для задержкивремени
cnt_requ2B;переменнаяисп для задержкивремени
tempequ2C
clok2equ2D
temp1equ2E
n1equ2f
n2equ30
Start;Начальнаяинициализация.
clrw
bsf STATUS,RP0; Обращениек банку 1.
clrf PORTA; Обнулитьпорт А.
clrf PORTB; Обнулитьпорт В.
movlw b'00010000'
movwf TRISA; RA0 - RA3 выходы, RA4вход.
movlw b'00000001'
movwf TRISB; RB1 - RB7 выходы.RB0вход
movlw b'00000101';коэффициенпредделителя64
movwf OPTION_REG
bcf STATUS,RP0; Обращениек банку 0.
movlw b'10100000'
movwf INTCON
clrfmin
clrfsek
clrfcl_k
movlw0
movwfTMR0
movlw01;Для контролядисплея
movwfDig_x
movlw02;загрузить вовсе регистрыиндикации 8.
movwfDig_y
movlw03
movwfDig_z
movlw04
movwfDig_exp
movlw .131
movwf clok1
movwf TMR0
movlw .1
movwf temp1
Start1;Основной циклпрограммы.
movlw 19; Установитьсчетчик цикловиндикации.
movwf cnt_r
loop1 clrwdt
call refresh;индикаторы.
decfsz cnt_r, f
goto loop1
;***присвоениезначения регистраминдикации взависимостиот режима;индикации******
clrwdt
btfsstemp1,0
callTemp_min
btfsctemp1,0
callTemp_clk
;******присвоениезначения регистраминдикации
movfn1,0
callData1
movwfDig_x
movfn1,0
callData2
movwfDig_y
movfn2,0
callData1
movwfDig_z
clrwdt
movfn2,0
callData2
movwfDig_exp
;********клавишыустановкирежима индикациии времени*******
callDelay
btfssPORTA,4;сканируемклавишу установкирежима RA4 вывод3
incftemp1,1;прибавляемк темпу 1
btfssPORTB,0;клавишаустановкивремени RB0 вывод6
callMin_clk
gotoStart1
;************************************************************
Temp_min
movfmin,0
movwfn1
movfsek,0
movwfn2
return
;************************************************************
Temp_clk
movfcl_k,0
movwfn1
movfmin,0
movwfn2
return
;****************выборприбавитьминуты(0) иличасы(1)***********
Min_clk
clrwdt
btfsstemp1,0
incfmin,1
btfsctemp1,0
incfcl_k
;*******проверка60 мин 24 часа*****************
movfmin,0
sublw.60
btfscSTATUS,Z
clrfmin
movfcl_k,0
sublw.24
btfscSTATUS,Z
clrfcl_k
clrwdt
return
Sek;*****************делениена125
movlw .131;записываем131 т.к 256-125=131
movwf clok1
incfszsek
movfsek,0
sublw.60
btfscSTATUS,Z
callMin
return
Min
clrfsek
incfszmin
movfmin,0
sublw.60
btfscSTATUS,Z
callClok
retfie
Clok
clrfmin
incfszcl_k
movfcl_k,0
sublw.24
btfscSTATUS,Z
clrfcl_k
retfie
Int1;процедураобработкипрерывания
movlw .131;записываем131 т.к 256-125=131
addwfTMR0,1;256(максимальноезначение таймера)
incfszclok1;125(нужныйкоэффициенделения)
return
callSek
return
;***********************Выводна индикатор*************
refresh;Процедурасканированияиндикации.
movf Dig_x, W; Значениедеситых.часовдля индикации.
call segment; ПреобразованиеDEC -> семисегментныйкод.
movwf PORTB ; Вывод цифрына индикатор.
bcf PORTA, 0; Активизироватьиндикатор.
call Delay; Задержкавремени длясканирования.
bsf PORTA, 0; Отключитьиндикатор.
movf Dig_y, W; Значениеед.часов дляиндикации.
call segment; ПреобразованиеDEC -> семисегментныйкод.
movwf PORTB ; Вывод цифрына индикатор.
bcf PORTA,1; Активизироватьиндикатор.
call Delay; Задержкавремени длясканирования.
bsf PORTA,1; Отключитьиндикатор.
movf Dig_z, W; Значениедесят.минутдля индикации.
call segment; ПреобразованиеDEC -> семисегментныйкод.
movwf PORTB ; Вывод цифрына индикатор.
bcf PORTA,2; Активизироватьиндикатор.
call Delay; Задержкавремени длясканирования.
bsf PORTA,2; Отключитьиндикатор.
movf Dig_exp, W; Значениеед.минут.
callsegment; ПреобразованиеDEC -> семисегментныйкод.
movwf PORTB ; Вывод цифрына индикатор.
bcf PORTA,3; Активизироватьиндикатор.
call Delay; Задержкавремени длясканирования.
bsf PORTA,3; Отключитьиндикатор.
return
;************************************************************
Delay;Подпрограммазадержки времени
clrwdt
movlw .5; для сканированияиндикации.
movwf cnt1
nop
beta movlw .150
movwf cnt2
Alfanop
nop
decfsz cnt2, f
goto Alfa
nop
nop
decfsz cnt1, f
goto beta
nop
return
;*******************************************************
end
5.Программированиемикроконтроллера
Конструкцияпредставляетиз себя оченьпростое и дешевоеустройстводля программированияи последующегочтения внутреннейпамяти PIC контроллеровтипа PIC16C84 /83, PIC16F84 /83,PIC16CE625 /624/623. В отличиеот многиханалогичныхконструкций,программатордопускаетвнутрисхемноепрограммирование.При разработкеза основу былавзята схема, рекомендуемаяфирмой "Microchip" . Программаторпитается отисточниканапряжением12…13v с током до100ma и подключаетсяк порту LPT1 персональногокомпьютера.Управляющаяпрограммаразрабатываласьдля MS DOS, поэтомупри работе всреде «Windows» длясоблюдениянеобходимыхвременныхсоотношенийпри программированииее необходимозапускать врежиме эмуляцииMS DOS. Хотя самапрограммапрекрасноработает и воконном режиме,попытка программированияв этом случаени к чему хорошемуне приведет.АлгоритмпрограммированиябольшинстваPIC контроллероводинаков, поэтомуне составиттруда расширитьих номенклатуру.Интерфейспрограммыпрост и интуитивнопонятен. |
Схемаэлектрическаяпринципиальнаяприведена начертеже.Протоколработы микросхемыпри программированиирассмотренв диаграммыхна рисунке 9,вывод данныхиз микроконтроллераи рисунке 10 вводданных в микроконтроллер.
Устройствовходит в режимпрограммированияУдержаниемнизкого уровняна выводах RB6,RB7 во время переходасигнала навыводе MCLR/Vppиз нижнегоуровня в высокий.После этогоRB6 становитсятактовым сигналом,а RB7-даннымипрограммирования.
Послевхода в режимпрограммированияможно послать6-ти битную команду.В зависимостииот нее можнозаписать илисчитать 14-битныеданные.
Заключение
По полученномузаданию былапроделанаработа в полномобъеме, разработаныэлектронныечасы на микроконтроллере,написана программадля него рассмотренывопросы программированияМК. При выполненииданной работыбыл полученценный опыт разработкиподобных устройствполучены навыкив разработкепрограм наязыке ассемблертакже был закреплены знания полученныена занятиях.
Список литературы
1. Радио №1 2001г.с.21 "Частотомерна PIC-контроллере"
2. УгрюмовЕ.П. Цифроваясхемотехника.-СПб.:БХВ-Санкт-Петербург,2000.-528с.: ил.
3.Микроконтроллеры.Выпуск 2:ОднокристальныемикроконтроллерыPIC12c5x, PIC16x8x, PIC14000, M16C/61/62. Переводс англ.Б.Я.. Прокопенко/Под ред.Б. Я.Прокопенко.-М.: ДОДЭКА, 2000.- 336 с.
Internet - Ресурсы
http://www.microchip.ru:8101/
http://www.paguo.ru/
http://www.disall.narod.ru/picpro.htm
http://www.chipnews.ru/html.cgi/arhiv/index.htm
Микроконтроллеры.Выпуск 2:
ОднокристальныемикроконтроллерыPIC12c5x, PIC16x8x, PIC14000,