Статья №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.

  Рис. 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).

 

  Рис. 2

     Щёлкнем  по  маленькому   белому  квадратику, и  он  станет  чёрным. Щёлкнем  снова, и  он  снова  станет  белым. Нарисуем  крестик  как  на  Рис.3.

 

  Рис. 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).

 

  Рис. 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  учётом  изложенного  выше  материала, например, прыгающего  человечка.

 

   Рис. 5

Программы находятся в приложении 1.