Статья №18
Данная статья посвящена вопросам редактирования информации, отображаемой на жидкокристаллическом индикаторе (ЖКИ), а также создания элементарной графики, поскольку эти вопросы были упущены или недостаточно освещены в предыдущих статьях.
Одним из таких вопросов является управление курсором. В Bascom существует несколько команд управления курсором:
Cursor on - включение курсора;
Cursor off - выключение курсора;
Cursor on, blink - мигание курсора;
Cursor on, noblink - отключение мигания курсора.
Точное положение курсора на ЖКИ можно указать следующей командой:
Locate номер строки, знакоместо
Например:
Locate 1, 5
Lcd “F”
Этот код переместит курсор на пятое знакоместо первой строки. Буква «F» будет размещена на этой позиции. Команда Home помещает курсор в начальное положение – первый символ строки, т.е. соответствует команде Locate 1, 1. Тоже самое делает команда Home upper.
Команда Home lower перемещает курсор на первое знакоместо второй линии и соответствует команде Locate 2, 1.
Команда Shiftcursor left | right - будет сдвигать курсор влево | вправо на одно знакоместо относительно текущего положения. Всё содержимое на дисплее можно аналогичным образом сдвигать с помощью команды Shiftlcd left | right. Рассмотрим это на примере программы “sdwig”, которая приведена ниже:
$regfile = "attiny2313a.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
$sim ’игнорирование задержек при симуляции
Dim Plat As Byte 'объявление переменной
Do 'основной цикл
Cls 'очистка экрана
Upperline 'верхняя линия
Lcd "Vanija1234Vanija" 'отображение на ЖКИ
Lowerline 'нижняя линия
Lcd "Senija----Senija" 'отображение на ЖКИ
For Plat = 0 To 16 Step 1 'цикл по сдвигу на одно знакоместо
Wait 1 'задержка 1 сек
Shiftlcd Left 'свиг надписей влево
Next Plat
Loop
End 'end program
Результаты симуляции программы приведены на Рис.1.
Контроллеры HD44780, на основе которых построены ЖКИ (см. статью №6), имеют дополнительное место для восьми собственных символов, что позволяет создавать собственные символы. Например, можно создать простенькую анимацию, показывающую, что контроллер работает.
Для этого необходимо использовать специальный редактор ЖКИ (LCD Designer). Наберём следующую программу:
$regfile = "attiny2313a.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
$sim
Config Portd = Output 'конфигурирование порта D
Dim Plat As Byte 'объявление переменной
Cursor Off 'выключение курсора
Do 'основной цикл
For Plat = 0 To 10 Step 1
Portd = 255 'включить порт D
Waitms 200 'задержка 200 мс
Portd = 0 'выключить порт D
Waitms 200
Cls 'очистка дисплея
Locate 1 , 16 'местоположение курсора (1-й ряд, 16-е знакоместо)
Lcd Chr(plat) 'ввод нестандартного символа
Next Plat
Loop
End 'end program
Поместим курсор на вторую пустую строку после слов “Cursor Off”. Нажмём кнопку “Lcd” и получим следующее изображение (см. Рис.2).
Щёлкнем по маленькому белому квадратику, и он станет чёрным. Щёлкнем снова, и он снова станет белым. Нарисуем крестик как на Рис.3.
Нажмём «OK». На том месте, где мы оставили курсор, появиться надпись:
Deflcdchar [x], 32, 4, 4, 31,4, 4, 32, 32 ’replace ? with number (0 – 7)
Заменим “[x]” на цифру 0 и удалим комментарий:
Deflcdchar 0, 32, 4, 4, 31, 4, 4,32, 32
Поместим курсор на следующую свободную строку и повторим все действия, нарисовав следующую фигуру (см. Рис.4).
Снова нажмём «ОК», снова появиться надпись:
Deflcdchar [x], 32, 4, 4, 31,4, 4, 32, 32 ’replace ? with number (0 – 7)
Делаем тоже самое, только заменяем [x] цифрой 1:
Deflcdchar 1, 32, 4, 4, 31, 4, 4,32, 32
Повторим этот процесс ещё два раза и получим следующую программу “symbol”:
$regfile = "attiny2313a.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32
$sim
Config Portd = Output 'конфигурирование порта D
Dim Plat As Byte 'объявление переменной
Cursor Off 'выключение курсора
Deflcdchar 0 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32 'работа в редакторе ЖКИ
Deflcdchar 1 , 32 , 2 , 20 , 14 , 5 , 8 , 32 , 32
Deflcdchar 2 , 32 , 8 , 5 , 14 , 20 , 2 , 32 , 32
Deflcdchar 3 , 32 , 4 , 4 , 31 , 4 , 4 , 32 , 32
Do 'основной цикл
For Plat = 0 To 10 Step 1
Portd = 255 'включить порт D
Waitms 200 'задержка 200 мс
Portd = 0 'выключить порт D
Waitms 200
Cls 'очистка дисплея
Locate 1 , 16 'местоположение курсора (1-й ряд, 16-е знакоместо)
Lcd Chr(plat) 'ввод нестандартного символа
Next Plat
Loop
End 'end program
Результаты симуляции программы приведены на Рис.5, мы получили вращающуюся фигурку на 16 знакоместе 1 строки. В принципе вы можете создавать любые собственные символы в Bascom c учётом изложенного выше материала, например, прыгающего человечка.
Программы находятся в приложении 1.