Если при проверки работы программы будут выявлены неправильные ее действия, то необходимо подключить средства отладки программ в Proteus, методика применения которых рассмотрена в п. 3.3.9.
Задание 1 для самостоятельной работы. Используя схему МКУ, приведенную на рис. 3, разработайте программу, выполняющую следующий алгоритм. После включения питания микроконтроллера светодиод горит. При нажатии на кнопку (даже кратковременного) диод гаснет на 5 с, а затем вновь загорается. Текст программы сохраните в файле с именем but2.asm в папке с вашими проектами. Проверьте правильность работы программы на открытом проекте but.dsn.
3.5. Разработка проекта управления от микроконтроллера
семисегментным светодиодным индикатором
3.5.1. Теперь разработаем МКУ, в котором микроконтроллер выводит данные на семисегментный светодиодный индикатор. Принципиальная схема такого МКУ может иметь вид, приведенный на рис. 4. В этой схеме используется индикатор с общими катодами. Сегменты индикатора подключены к выводам порта В, а общий вывод индикатора (катоды светодиодов) – к общему проводу схемы. Сегмент индикатора будет светиться при высоком уровне на соответствующем выводе порта В. На изображении индикатора выводы сегментов располагаются с левой стороны сверху вниз по порядку: a, b, c, d, e, f, g.
3.5.2. Создайте новый проект, используя пункт меню File > New Design.
3.5.3. Откройте библиотеку компонентов и выберите из нее микроконтроллер PIC16F84A. Затем выберите в окне Category пункт Optoelectronics (оптоэлектронные приборы) и выделите в окне Results строку 7SEG-COM-CATODE. Это 7-ми сегментный индикатор красного цвета с общими катодами светодиодов. Щелкните два раза по строке, а затем закройте библиотеку.
3.5.4. Теперь разместите элементы МКУ в окне редактирования. Вначале поместите микроконтроллер. Постарайтесь, чтобы вывод RB0/INT оказался на линии точек сетки. Это в дальнейшем упростит рисование соединений в схеме. Затем поместите в окно редактирования индикатор. Постарайтесь, чтобы верхний вывод индикатора (сегмент a) оказался на одной горизонтальной линии с выводом RB0/INT микроконтроллера. Для удобства размещения увеличьте масштаб отображения элементов. Затем перейдите в режим Terminals Mode и выберите из списка клемму Ground. Поместите ее ниже общего вывода индикатора.
3.5.5. Выполните соединение элементов между собой согласно принципиальной схеме, приведенной на рис. 4.
Рис. 4. Схема МКУ для управления индикатором
После завершения разводки необходимо сохранить проект. Для этого выберите пункт меню File > Save Design As… Раскройте вашу папку и сохраните проект под именем ind.dsn.
3.5.7. Следующим этапом проектирования МКУ является разработка программы для МК. Пусть после включения питания на индикатор постоянно выводится определенный код символа.
Текст программы, реализующий заданный алгоритм, может иметь следующий вид.
list p=16f84a
#include<p16f84a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
Number equ 0x06 ; символ для вывода – цифра 6
org 0x000
clrf PORTB ; очистить триггеры-защелки порта В
bsf STATUS,RP0 ; выбрать банк 1
clrf TRISB ; настроить все линии порта В на вывод
bcf STATUS,RP0 ; выбрать банк 0
again
movlw Number ; переслать в регистр W символ
call crosscode ; перекодировка в семисегментный код,
; в регистре W – семисегментный код
movwf PORTB ; вывод на индикатор
goto again ; зацикливание программы
#include”cross.asm” ; файл подпрограммы перекодировки
end
Задание 1. Наберите текст программы управления индикатором и сохраните в папке с вашим проектом под именем ind.asm.
Для работы программы необходима подпрограмма перекодировки из позиционного двоичного кода в семисегментный. Текст подпрограммы имеет следующий вид.
; crosscode – подпрограмма перекодировки (получения
; семисегментного кода)
; входной параметр: регистр W – число в HEX-коде;
; выходной параметр: регистр W – семисегментный код числа
crosscode
andlw 0x0F ; обнулить старшую тетраду регистра W
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.