Amicus18

Amicus18 и графический индикатор

glcd_thumbПлатформа Amicus18 имеет необходимые инструменты для работы с графическими жидкокристаллическими индикаторами (Graphic LCD). Поддерживаются два типа графических индикаторов, построенных на микросхемах Samsung KS0108, или Toshiba T6963. В языке программирования ProtonBASIC реализованы все необходимые функции, позволяющие выводить графические примитивы и текстовую информацию.

Установка линий ввода/вывода и настроек индикатора

Перед использованием индикатора производят описание подключенных линий контроллера и некоторых настроек индикатора. Ниже приведен вариант для работы с ЖКИ на базе KS0108. В качестве последнего испольован Graphic LCD GDM12864B, используемый в отладочных платах EasyPIC5. Разрешение индикатора 128х64 пикселя.

  • Declare LCD_DTPort - определяет порд, к которому подключаются линии данных.
  • Declare LCD_CS1Pin – выход выбора кристалла CS1
  • Declare LCD_CS2Pin – выход выбора кристалла CS2
  • Declare GLCD_CS_Invert – выбор логического уровня для работы линиями CS1,CS2
  • Declare LCD_RSPin – выход сброса индикатора
  • Declare LCD_RWPin – выход чтение/запись
  • Declare LCD_ENPin – выход разрешения работы
  • Declare LCD_Type = Samsung  - тип индикатора.

Команды для рабты с графическим индикатором

При работе синдикатором используются команды, выводящие простейшие графические примитивы - точки, линии, прямоугольники, окружности. Также грфический индикатор позволяет обращаться к своей памяти с целью записи или чтения состояния отдельных пикселей или целых байтов. Ниже приведены основные команды для работы с Graphic LCD.

  • Cls – очистка дисплея
  • Line С,X1,Y1,X2,Y2 – отрисовка линии с началом в X1,Y1 и концом в X2,Y2 при С=1 или стирание линии при С=0
  • LineTO С,X2,Y2 – отрисовка линии  из текущей точки до X2,Y2 при С=1 или стирание линии при С=0
  • Box  С,X1,Y1,S – квадрат с центром в X1,Y1 и размером S. Для индикаторов Samsung, размер по Y искажается  в 1.5 раза, и фигура выглядит как прямоугольник. С=1 – рисование квадрата, С=0 стирание.
  • Circle С,X1,Y1,R – круг с центром в X1,Y1 и радиусом R. Для индикаторов Samsung, размер по Y искажается  в 1.5 раза, и фигура выглядит как эллипс. С=1 – рисование квадрата, С=0 стирание.
  • Plot X1,Y1 – точка с координатами X1,Y1.
  • UnPlot X1,Y1 – стирание точки с координатами X1,Y1.
  • Pixel X1,Y1 – функция возвращающая состояние точки с координатами X1,Y1.
  • LCDWrite Y, X,Data – запись байта в индикатор. Запись выполняется в виде вертикальной линии из 8 пикселей, отображение отдельных точек которой определяется байтом Data. При этом необходимо учитывать, что координата Y изменяется построчно, от 0 до 7. Координата X может изменяться в пределах разрешения индикатора от 0 до 127.
  • LCDRead Y, X - функция, возвращающая состояние байта индикатора.

Отображение текстовой информации

Отображение текста на графическом индикаторе производится командой Print. Использование последней несколько отличается от варианта символьного ЖК-дисплея.  с модификатором AT. Последний может иметь четыре поля:

  • Font – тип шрифта, если определено несколько наборов символов
  • Inverse – отображение символов в инверсном виде.
  • Or – выполнение операции OR, с уже имеющимся изображением.
  • Xor - выполнение операции XOR, с уже имеющимся изображением.

После модификатора указывается начальная точка вывода информации в формате [строка],[позиция]. Параметр [строка] может принимать значение от 0 до 7, а  [позиция] от 0 до 127. Для вывода на экран символьной информации, все символы необходимо сначала определить. Делается это в специальном файле, или непосредственно в коде программы. Также Amicus18 может работать с внешней микросхемой памяти, содержащей таблицу знакогенератора. Данная микросхема должна быть подключена по интерфейсу I2C.

Пример использования команды Print:

Print At 1, 1, "Privet"
Print At 0, 1, "Hello, WORLD!"

Пример программы, работающей с Graphic LCD

Для работы данной программы, графический индикатор подключается по следующей схеме:

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

Результат работы программы

glcd

Текст программы

' Настройка параметров индикатора
Declare LCD_DTPort = PORTB
Declare LCD_CS1Pin = PORTC.4
Declare LCD_CS2Pin = PORTC.5
Declare LCD_RSPin = PORTC.3
Declare LCD_RWPin = PORTC.2
Declare LCD_ENPin = PORTC.1
Declare LCD_Type = Samsung
Declare Internal_Font On
Declare GLCD_CS_Invert 1

' Основная часть программы
Main:
DelayMS 100 ' Задержка на время инициализации индикатора
Cls ' Очистка дисплея
Line 1,1,50,126,50 ' Отрисовка линии
Box 1,30,30,10 ' Отрисовка прямоугольника
Circle 1,30,30,10 ' Отрисовка окружности

Print At 0, 1, "Hello, WORLD!" ' Вывод фразы
Stop

' Таблица знакогенератора
$ifndef __FONT__
$define __FONT__
Font:- CData $00,$00,$00,$00,$00,$00,_ 'Graphic character 0
$FF,$FF,$FF,$FF,$FF,$FF,_ 'Graphic character 1
$07,$07,$07,$00,$00,$00,_ 'Graphic character 2
$00,$00,$00,$07,$07,$07,_ 'Graphic character 3
$E0,$E0,$E0,$00,$00,$00,_ 'Graphic character 4
$00,$00,$00,$E0,$E0,$E0,_ 'Graphic character 5
$FF,$FF,$FF,$00,$00,$00,_ 'Graphic character 6
$00,$00,$00,$FF,$FF,$FF,_ 'Graphic character 7
$07,$07,$07,$07,$07,$07,_ 'Graphic character 8
$E0,$E0,$E0,$E0,$E0,$E0,_ 'Graphic character 9
$E0,$E0,$E0,$07,$07,$07,_ 'Graphic character 10
$07,$07,$07,$E0,$E0,$E0,_ 'Graphic character 11
$FF,$FF,$FF,$E0,$E0,$E0,_ 'Graphic character 12
$E0,$E0,$E0,$FF,$FF,$FF,_ 'Graphic character 13
$07,$07,$07,$FF,$FF,$FF,_ 'Graphic character 14
$FF,$FF,$FF,$07,$07,$07,_ 'Graphic character 15
$55,$AA,$55,$AA,$55,$AA,_ 'Graphic character 16
$AA,$55,$AA,$55,$AA,$55,_ 'Graphic character 17
$01,$01,$01,$01,$01,$01,_ 'Graphic character 18
$80,$80,$80,$80,$80,$80,_ 'Graphic character 19
$FF,$00,$00,$00,$00,$00,_ 'Graphic character 20
$00,$00,$00,$00,$00,$FF,_ 'Graphic character 21
$FF,$01,$01,$01,$01,$01,_ 'Graphic character 22
$01,$01,$01,$01,$01,$FF,_ 'Graphic character 23
$FF,$80,$80,$80,$80,$80,_ 'Graphic character 24
$80,$80,$80,$80,$80,$FF,_ 'Graphic character 25
$00,$00,$00,$00,$F0,$F0,_ 'User defined character 26
$00,$00,$00,$00,$0F,$0F,_ 'User defined character 27
$00,$00,$00,$00,$00,$00,_ 'User defined character 28
$00,$00,$00,$00,$00,$00,_ 'User defined character 29
$00,$00,$00,$00,$00,$00,_ 'User defined character 30
$00,$00,$00,$00,$00,$00,_ 'User defined character 31
$00,$00,$00,$00,$00,$00,_ '32 - - 20
$00,$00,$4F,$00,$00,$00,_ '33 - ! - 21
$00,$07,$00,$07,$00,$00,_ '34 - " - 22
$14,$7F,$14,$7F,$14,$00,_ '35 - # - 23
$24,$2A,$7F,$2A,$12,$00,_ '36 - $ - 24
$23,$13,$08,$64,$62,$00,_ '37 - % - 25
$36,$49,$55,$22,$50,$00,_ '38 - & - 26
$00,$05,$03,$00,$00,$00,_ '39 - ' - 27
$1C,$22,$41,$00,$00,$00,_ '40 - ( - 28
$00,$00,$41,$22,$1C,$00,_ '41 - ) - 29
$14,$08,$3E,$08,$14,$00,_ '42 - * - 2A
$08,$08,$3E,$08,$08,$00,_ '43 - + - 2B
$00,$50,$30,$00,$00,$00,_ '44 - , - 2C
$08,$08,$08,$08,$08,$00,_ '45 - - - 2D
$00,$60,$60,$00,$00,$00,_ '46 - . - 2E
$20,$10,$08,$04,$02,$00,_ '47 - / - 2F
$3E,$51,$49,$45,$3E,$00,_ '48 - 0 - 30
$00,$42,$7F,$40,$00,$00,_ '49 - 1 - 31
$42,$61,$51,$49,$46,$00,_ '50 - 2 - 32
$21,$41,$45,$4B,$31,$00,_ '51 - 3 - 33
$18,$14,$12,$7F,$10,$00,_ '52 - 4 - 34
$27,$45,$45,$45,$39,$00,_ '53 - 5 - 35
$3C,$4A,$49,$49,$30,$00,_ '54 - 6 - 36
$01,$71,$09,$05,$03,$00,_ '55 - 7 - 37
$36,$49,$49,$49,$36,$00,_ '56 - 8 - 38
$06,$49,$49,$49,$3E,$00,_ '57 - 9 - 39
$00,$36,$36,$00,$00,$00,_ '58 - : - 3A
$00,$56,$36,$00,$00,$00,_ '59 - ; - 3B
$08,$14,$22,$41,$00,$00,_ '60 - < - 3C
$14,$14,$14,$14,$14,$00,_ '61 - = - 3D
$00,$41,$22,$14,$08,$00,_ '62 - > - 3E
$02,$01,$51,$09,$06,$00,_ '63 - ? - 3F
$32,$49,$79,$41,$3E,$00,_ '64 - @ - 40
$7E,$11,$11,$11,$7E,$00,_ '65 - A - 41
$7F,$49,$49,$49,$36,$00,_ '66 - B - 42
$3E,$41,$41,$41,$22,$00,_ '67 - C - 43
$7F,$41,$41,$22,$1C,$00,_ '68 - D - 44
$7F,$49,$49,$49,$41,$00,_ '69 - E - 45
$7F,$09,$09,$09,$01,$00,_ '70 - F - 46
$3E,$41,$49,$49,$7A,$00,_ '71 - G - 47
$7F,$08,$08,$08,$7F,$00,_ '72 - H - 48
$00,$41,$7F,$41,$00,$00,_ '73 - I - 49
$20,$40,$41,$3F,$01,$00,_ '74 - J - 4A
$7F,$08,$14,$22,$41,$00,_ '75 - K - 4B
$7F,$40,$40,$40,$40,$00,_ '76 - L - 4C
$7F,$02,$0C,$02,$7F,$00,_ '77 - M - 4D
$7F,$04,$08,$10,$7F,$00,_ '78 - N - 4E
$3E,$41,$41,$41,$3E,$00,_ '79 - O - 4F
$7F,$09,$09,$09,$06,$00,_ '80 - P - 50
$3E,$41,$51,$21,$5E,$00,_ '81 - Q - 51
$7F,$09,$19,$29,$46,$00,_ '82 - R - 52
$46,$49,$49,$49,$31,$00,_ '83 - S - 53
$01,$01,$7F,$01,$01,$00,_ '84 - T - 54
$3F,$40,$40,$40,$3F,$00,_ '85 - U - 55
$1F,$20,$40,$20,$1F,$00,_ '86 - V - 56
$3F,$40,$38,$40,$3F,$00,_ '87 - W - 57
$63,$14,$08,$14,$63,$00,_ '88 - X - 58
$07,$08,$70,$08,$07,$00,_ '89 - Y - 59
$61,$51,$49,$45,$43,$00,_ '90 - Z - 5A
$7F,$41,$41,$00,$00,$00,_ '91 - [ - 5B
$02,$04,$08,$10,$20,$00,_ '92 - \ - 5C
$00,$00,$41,$41,$7F,$00,_ '93 - ] - 5D
$04,$02,$01,$02,$04,$00,_ '94 - ^ - 5E
$40,$40,$40,$40,$40,$00,_ '95 - _ - 5F
$00,$01,$02,$04,$00,$00,_ '96 - ` - 60
$20,$54,$54,$54,$78,$00,_ '97 - a - 61
$7F,$48,$44,$44,$38,$00,_ '98 - b - 62
$38,$44,$44,$44,$20,$00,_ '99 - c - 63
$38,$44,$44,$48,$7F,$00,_ '100 d - 64
$38,$54,$54,$54,$18,$00,_ '101 e - 65
$08,$7E,$09,$01,$02,$00,_ '102 f - 66
$0C,$52,$52,$52,$3E,$00,_ '103 g - 67
$7F,$08,$04,$04,$78,$00,_ '104 h - 68
$00,$44,$7D,$40,$00,$00,_ '105 i - 69
$00,$20,$40,$44,$3D,$00,_ '106 j - 6A
$7F,$10,$28,$44,$00,$00,_ '107 k - 6B
$00,$41,$7F,$40,$00,$00,_ '108 l - 6C
$7C,$04,$18,$04,$78,$00,_ '109 m - 6D
$7C,$08,$04,$04,$78,$00,_ '110 n - 6E
$38,$44,$44,$44,$38,$00,_ '111 o - 6F
$7C,$14,$14,$14,$08,$00,_ '112 p - 70
$08,$14,$14,$18,$7C,$00,_ '113 q - 71
$7C,$08,$04,$04,$08,$00,_ '114 r - 72
$48,$54,$54,$54,$20,$00,_ '115 s - 73
$04,$3F,$44,$40,$20,$00,_ '116 t - 74
$3C,$40,$40,$20,$7C,$00,_ '117 u - 75
$1C,$20,$40,$20,$1C,$00,_ '118 v - 76
$3C,$40,$30,$40,$3C,$00,_ '119 w - 77
$44,$28,$10,$28,$44,$00,_ '120 x - 78
$0C,$50,$50,$50,$3C,$00,_ '121 y - 79
$44,$64,$54,$4C,$44,$00,_ '122 z - 7A
$08,$36,$41,$00,$00,$00,_ '123 { - 7B
$00,$00,$7F,$00,$00,$00,_ '124 | - 7C
$00,$00,$41,$36,$08,$00,_ '125 } - 7D
$00,$08,$04,$08,$04,$00 '126 ~ - 7E
$endif

You have no rights to post comments