воскресенье, 14 сентября 2014 г.

ATtiny13 LCD HD44780 Program UART BASCOM-AVR


Демонстрация работы программного UART на ATtiny13 с выводом информации на LCD дисплей( на базе контроллера HD44780). Моделирование в Proteus.

Схема выглядит вот так:






Код написан в среде BASCOM-AVR, ATtiny13 работает на частоте 1.2 MHz, скорость UART 9600 baud, LCD дисплей основан на контроллере HD44780.

Вот собственно код:
$regfile = "attiny13.dat"
$crystal = 1200000                                          ' Частота МК в герцах
$hwstack = 16                                               'Установки по умолчанию
$swstack = 16
$framesize = 16
$noramclear

Dim Cmd As String * 15                                      'Увы больше 15 символов запхать в строку не получится
                                                              'Мало оперативки
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.4 , Db6 = Portb.3 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
                                                            'Инициализация дисплея
Cursor Off                                                  'Отключаем мигающий курсор

Do                                                          'Открывает операторную скобку  вечного цыкла

Ddrb = &B111111                                             'Установим все порты как виходы

Lcd "Say my name?"                                          'Выводим цытату из "Breaking Bad"
Waitms 1500                                                 'джём 2000 мсек
Cls                                                         'Очищаем дисплей

Ddrb = &B011111                                             'Установливаем порт PB5, он же Reset, на вход
                                                            'Так же можно перевести  проты PB2 и PB3
                                                            'И на них замерять напряжение
Open "comb.5:9600,8,n,1" For Input As #1                    'PB5 это будет RXD
                                                             'Создадим программный UART, скорость 9600 бод
Input #1 , Cmd                                              'Ппихаем принятые данные в переменную "Cmd"

If Cmd = "Heisenberg" Then                                  'Пока не получим "Heisenberg" ничего не делаем
Lcd Cmd                                                     'Выводим содержымое переменной на LCD дисплей
Waitms 2000
Cls
Lcd "You're goddamn"
Lowerline                                                   'Переход на новую строчку
Lcd "right"
Else                                                        'если же пришли данные но не подходят под условие то...
Lcd "Wrong..."
Lowerline
Lcd "I'll ask again"
End If                                                      ' тут указываем окончание условного оператора If

Waitms 3000
Cls
Loop                                                        'Закрываем операторную скобку  вечного цыкла
End                                                         'Конец программы

Файлы по проекту:
http://vk.com/doc256435878_327375100

За основу был взят этот проект:
http://mdiy.pl/miniaturowy-miernik-do-zasilacza-na-attiny13/?lang=en

Вот ещё видео, снял тупо по приколу на English;



А это обычное:




Комментариев нет:

Отправить комментарий