» » BASCOM AVR – подключаем текстовый ЖК-дисплей (LCD)
Информация к новости
  • Просмотров: 86560
  • Автор: administrator
  • Дата: 10 июля 2008
  • 100
10 июля 2008

BASCOM AVR – подключаем текстовый ЖК-дисплей (LCD)

Категория: BASCOM AVR

Иногда необходимо посмотреть результат вычислений, вывести состояние портов или выполнить прочие задачи, связанные с отображением информации. В этом нам помогут жидкокристаллические дисплеи. Самым простым, недорогим и распространенным вариантом являются текстовые дисплеи. Рассмотрим подключение и работу с жидкокристаллическим  текстовым индикатором 16х2 (отображает две строчки по 16 знакомест в каждой).
 

 

Для подключения ЖК дисплея воспользуемся контроллером MRC40 (ATmega32) с универсальным модулем. На модуле уже разведен разъем для ЖК. Схема подключения проста и не вызовет ни каких сложностей. Для эксперимента мы взяли недорогой дисплей в исполнении для стандартного диапазона температур (это означает, что для питания ЖК не требуется дву-полярное питание, достаточно только +5V). Производитель дисплея – WINSTAR, модель – WH1602B-YYH-CTK. Подключение осуществляется по 4-х битной схеме, таким образом мы экономим 4 вывода порта микроконтроллера.
 

 

Обозначение пинов на ЖК и на разъеме платы модуля в прилагаемой схеме.
 

 

BASCOM AVR – подключаем текстовый ЖК-дисплей (LCD)
 

 

Начнем…

За что мне так полюбился 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 ваше подключение и все.
 

 

Программа….

 

'подключаем текстовый ЖК индикатор.

'RoboZone.SU

$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 "RoboZone.SU"   'выводим надпись

Lowerline           ' переходим на нижнюю строчку

Lcd "LCD test GOOD!!!"       'выводим надпись

'ВСЕ!!!

End

 
Прошивайте контроллер и если ошибок не было, то вы увидите вот такую картину =)
 

 

Прошивайте контроллер и если ошибок не было, то вы увидите вот такую картину =)

 

Из комментариев в программе видно, что вывод информации на ЖК экран с помощью BASCOM AVR проще некуда =)

 

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

 

Команда 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
 

Вот собственно и все =) Надеемся мы дали достаточно информации для успешной работы с текстовыми жидкокристаллическими индикаторами. Повторим, что более полную информацию вы можете получить на официальном сайте BASCOM AVR.
Успехов! Тестовую прошивку вы можете скачать ниже
Вы не можете скачивать файлы с нашего сервера

Метки к статье: BASCOM AVR, начинающим

Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
<
administrator

3 октября 2008 23:08

Информация к комментарию
  • Группа: Администраторы
  • ICQ: {icq}
  • Регистрация: 26.02.2008
  • Статус: Пользователь offline
  • Публикаций: 66
  • Комментариев: 747
smart, на 128-й не пробовал, попробуй не подключать библиотеку - те на встроенных в компилятор средствах, может пойти
<
smart

4 октября 2008 15:18

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
я уже пробовал без библиотеки - нифига, кстати на эмуляторе все работает. Порт тоже ножками дрыгает... странно очень
<
Abelonka

4 октября 2008 16:44

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
Есть контакт, спасибо!
<
Xsenus

29 октября 2008 23:26

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
а эта библиотека подойдёт если я использую не этот жк а МТ-12864А фирмы МЭЛТ МТ-12864А
или её придётся менять? Если придётся менять, то как (я ещё тока учусь =) )??
<
administrator

30 октября 2008 21:13

Информация к комментарию
  • Группа: Администраторы
  • ICQ: {icq}
  • Регистрация: 26.02.2008
  • Статус: Пользователь offline
  • Публикаций: 66
  • Комментариев: 747
Xsenus, нет не подойдет, эта библиотека для работы с символьными дисплеями, а МЭЛТ МТ-12864А - дисплей графический, на контроллере совместимом с KS0108. Для этого контроллера в баскоме то же есть библиотека - смотри в папке samples - LCDGRAPH - KS108.bas
По идее проблем быть не должно (я сам пока дисплеи на этом контроллере не запускал)
<
Pasha

20 ноября 2008 00:48

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
А как переназначить порт В на порт А? Пытаюсь так:

Config Lcdpin = Pin , Rs = Porta.0 , E = Porta.2 , Db4 = Porta.3 , Db5 = Porta.4 , Db6 = Porta.5 , Db7 = Porta.6

Светодиод стоящий на порту В мигает при включении.
<
administrator

20 ноября 2008 01:18

Информация к комментарию
  • Группа: Администраторы
  • ICQ: {icq}
  • Регистрация: 26.02.2008
  • Статус: Пользователь offline
  • Публикаций: 66
  • Комментариев: 747
Pasha, в принципе все правильно, попробуй не подключать билиотеку для дисплея вообще.
<
suman13

8 декабря 2008 22:10

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
Подключил Ampire AC-162E. Не работает. Контроллер совместим с KSU0066U. Должен работать?

Попробовал, JA-CB16203. Тот же результат...
<
administrator

8 декабря 2008 23:18

Информация к комментарию
  • Группа: Администраторы
  • ICQ: {icq}
  • Регистрация: 26.02.2008
  • Статус: Пользователь offline
  • Публикаций: 66
  • Комментариев: 747
suman13, Ampire AC-162E если для стандартного диапазона температур, то должен работать без проблем (проверяй что и куда), если для расширенного то без подачи отрицательной напруги ничего на экране не увидишь. Скажи полное название, к примеру - AC162EYA01H (то что для примера привел как раз для расширенного диапазона и не пойдет без двуполярного питания, о том что это дисплей для расширенного диапазона температур говорит буква "Н" в конце). Про второй ничего не скажу ибо про него инфы не нашел внятной.
<
suman13

8 декабря 2008 23:51

Информация к комментарию
  • Группа: Гости
  • ICQ: {icq}
  • Регистрация: --
  • Статус:
  • Публикаций: 0
  • Комментариев: 0
Оба индикатора стояли в ККМ Астра-200Ф. И они для стандартного диапазона температур...
Посмотрел даташит и не нашел упоминания о 4-хбитном включении...
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.