Выводим текст на LCD 1602 - BASCOM AVR - Микроконтроллеры - Каталог статей - Собери свою радиосхему! Сайт радиолюбителей.
Собери свою радиосхему!
Воскресенье, 04.12.2016, 02:48 Приветствую Вас Гость

Чебоксары

Главная | Регистрация | Вход | RSS

Каталог статей

Главная » Статьи » Микроконтроллеры » BASCOM AVR

Выводим текст на LCD 1602
.

Для подключения ЖК дисплея воспользуемся контроллером ATmega32. Для эксперимента возьмем недорогой дисплей WH1602 . Производитель дисплея – WINSTAR, модель – WH1602B-YYH-CTK. Подключение осуществляется по 4-х битной схеме, таким образом мы экономим 4 вывода порта микроконтроллера.

Схема подключения:


Программа написана и откомпилирована в среде BASCOM AVR, для начала кратко перечислим основные команды BASCOM AVR для работы c текстовыми дисплеями…

CONFIG Lcdpin – конфигурируем подключение дисплея к выводам портов микроконтроллера

CONFIG Lcd – указываем какой именно дисплей подключен (количество строк и символов в строках)

CLS – очистить всю информацию с экрана

LOWERLINE – переместить курсор на нижестоящую строчку

UPPERLINE – переместить курсор на вышестоящую строчку

CURSOR – состояние курсора (включен или выключен, мигающий или не мигающий)

DISPLAY – включить или выключить дисплей

LOCATE – переместить курсор в конкретную позицию на экране дисплея (выбрать линию, выбрать знакоместо)

SHIFTCURSOR – переместить курсор влево или вправо на одну позицию.

SHIFTLCD – переместить всю отображенную информацию влево или вправо на одну позицию.

LCD – отобразить на экране (это может быть текст, значения переменных или констант)

С более подробной информацией и дополнительными командами, вы можете ознакомиться в мануале на официальном сайте по BASCOM AVR. 

 
Теперь напишем самую простую программу для отображения двух строчек текстовой информации. Для этого используем дополнительную библиотеку  lcd4.lbx из дистрибутива BASCOM AVR. Так как именно под нее разведено подключение на нашем универсальном модуле. Если вы используете какое либо другой вариант подключения к портам МК, то эту библиотеку использовать не надо – просто опишите в CONFIG Lcdpin ваше подключение и все.


Исходный код программы:

'подключаем текстовый ЖК индикатор.
'cxema21.ucoz.ru
$regfile = "m32def.dat"       ' используем ATmega32 (MRC40 с универсальным модулем)
$crystal = 16000000 ' частота установленного кварца 16 mHz
$lib "lcd4.lbx"     'используем 4-х битное подключение дисплея с помощью альтернативной библиотеки
'
'Библиотека lcd4.lbx использует следующее подключение -
'
'LCD = ATmega32
'---------------
'Rs  = PortB.0
'RW  = PortB.1
' E  = PortB.2
'E2  = PortB.3  данный вывод используется для подключения некоторых дисплеев с двумя чипами (здесь не используется)
'Db4 = PortB.4
'Db5 = PortB.5
'Db6 = PortB.6
'Db7 = PortB.7
' указываем конфигурацию подключения дисплея к портам МК
Config Lcdpin = Pin , Rs = Portb.0 , E = Portb.2 , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7
Config Lcd = 16 * 2 'используем дисплей на 2 строчки по 16 знакомест в каждой
Cls                 'команда очистки дисплея
Lcd "KTO TYT? =)"   'выводим надпись
Lowerline           ' переходим на нижнюю строчку
Lcd "KAK BAM CTATb9?"       'выводим надпись
'ВСЕ!!!
End


Ниже в архиве имеется два варианта прошивок, а так же проект протеуса, так что вы легко сможете просимулировать схему у себя на ПК.

Первый вариант прошивки:



Второй вариант:




Можно использовать другой микроконтроллер, например ATmega8, порты те же, в коде программы придется сделать несколько изменений, например нужно поменять строку m32def.dat на m8def.dat, можете сравнить варианты исходных кодов прошивок, в конце статьи прикреплен исходник для ATmega8.


Схема для Atmega8:


Индикация:




Для закрепления материала рекомендуем поэкспериментировать с ранее перечисленными командами. Опишем немного подробнее как некоторые из их использовать.


Команда CURSOR
Синтаксис команды -  CURSOR ON / OFF  BLINK / NOBLINK


Пример:

Cls                 'команда очистки дисплея
Cursor off      'выключаем отображение курсора
Lcd "RoboZone.SU"   'выводим надпись


 
Команда DISPLAY
Синтаксис команды -  DISPLAY ON / OFF 


Пример:

Cls                 'команда очистки дисплея
Lcd "RoboZone.SU"   'выводим надпись
Wait 3 'пауза 3 секунды
Display off  'выключаем дисплей
Wait 3 'пауза 3 секунды
Display on  'включаем дисплей
Lcd "Display ON!"   'выводим надпись


 
Команда LOCATE
Синтаксис команды -  LOCATE Y,X (где Y – строка, X – номер знакоместа)


Пример:

Cls                 'команда очистки дисплея
Lcd "*"   'выводим надпись
Locate 2,4
Lcd "*"   'выводим надпись
Locate 1,7
Lcd "*"   'выводим надпись
Locate 2,10
Lcd "*"   'выводим надпись
Locate 1,13
Lcd "*"   'выводим надпись
Locate 2,16
Lcd "*"   'выводим надпись

 

Команда SHIFTCURSOR
Синтаксис команды – SHIFTCURSOR LEFT/RIGHT


Пример:


Cls                 'команда очистки дисплея
Lcd "*"   'выводим надпись
Shiftcursor right  'перемещаем курсор на одно знакоместо вправо
Lcd "HELLO!"   'выводим надпись



Команда SHIFTLCD
Синтаксис команды – SHIFTLCD LEFT/RIGHT


Пример:

Cls                 'команда очистки дисплея
Lcd "HELLO!"   'выводим надпись
Waitms 500  'пауза 0,5 секунды
For A = 1 To 10 'цикл от 1 до 10
   Shiftlcd Right   'сдвигаем текст вправо
Waitms 500  'пауза 0,5 секунды
Next
For A = 1 To 10 'цикл от 1 до 10
      Shiftlcd left  'сдвигаем текст влево
Waitms 500  'пауза 0,5 секунды
Next



Скачать проект протеуса на ATmega32
Скачать проект протеуса на ATmega8
Скачать проект протеуса на ATtiny2313

По материалам сайта robozone.su

Категория: BASCOM AVR | Добавил: Advanced (30.05.2012)
Просмотров: 13252 | Теги: attiny2313, 1602, LCD, ATmega8, ATmega32 | Рейтинг: 4.3/3
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа
Логин:
Пароль:
Категории раздела
Источники питания и приборы
Охрана и контроль доступа
Измерительные устройства
Часы, таймеры, счетчики
Световые эффекты
Защита и контроль
Для начинающих
Разное
BASCOM AVR
Информация по МК, FAQ
Поиск
Наш опрос
Из скольких диодов состоит диодный мост?
Всего ответов: 80

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
у нас тут все на bascom)

Подавляющее количество часов на Atmega8 выполнены с использо...

В чем тогда может быть причина, что у меня показывает лишь в...

Рейтинг@Mail.ru