| |
Программы для работы с символьными индикаторами на драйвере
HD44780.
Тексты программ на ассемблере для
PIC16 и PIC18 для работы с
символьными индикаторами.
Использовались индикаторы фирмы
AMPIRE
Характеристики
LCD модулей |
Дисплей
символ * строк
|
Модель
|
Тип подсветки
|
Размер точки
( W * H )
|
Dot pitch
(W*H)
|
Символ
(W*H)
|
Видимая
область
( W * H )
|
Размер модуля
( W * H * T Max )
|
08*2
|
|
None |
0.545*0.645 |
0.60*0.70 |
2.945*5.545 |
35.0*15.0 |
58.0*32.0*10.0 |
LED |
0.545*0.645 |
0.60*0.70
|
2.945*5.545 |
35.0*15.0 |
58.0*32.0*13.8 |
16*1
|
|
None / EL
|
0.55*0.75
|
0.63*0.83
|
3.07*6.56
|
65.0*14.0
|
80.0*36.0*10.0
|
LED
|
0.55*0.75
|
0.63*0.83
|
3.07*6.56
|
65.0*14.0
|
80.0*36.0*10.0
|
|
None
|
0.92*1.10
|
0.98*1.16
|
4.84*8.06
|
99.0*13.0
|
122.0*33.0*10.5
|
LED
|
0.92*1.10
|
0.98*1.16
|
4.84*8.06
|
99.0*13.0
|
122.0*33.0*10.5
|
|
LED
|
1.152*1.176
|
1.212*1.825
|
6.0*14.54
|
120.0*23.0
|
151.0*40.0*14.7
|
16*2
|
|
None/ EL |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*10.0 |
Edge LED |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*11.0 |
LED |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*14.5 |
AC162B |
None / EL |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*10.0 |
Edge LED |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*11.0 |
LED |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*14.5 |
AC162C |
None/ EL |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*10.0 |
Edge LED |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*11.0 |
LED |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*14.5 |
AC162D |
None / EL |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*10.0 |
Edge LED |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*11.0 |
LED |
0.55*0.65 |
0.60*0.70 |
2.95*5.55 |
64.0*17.2 |
85.0*29.5*14.5 |
AC162E |
None / EL |
0.92*1.10 |
0.98*1.16 |
4.84*8.06 |
99.0*24.0 |
122.0*44.0*10.5 |
LED |
0.92*1.10 |
0.98*1.16 |
4.84*8.06 |
99.0*24.0 |
122.0*44.0*14.5 |
16*4 |
AC164A |
None / EL |
0.55*0.55 |
0.60*0.60 |
2.95*4.75 |
61.4*25.0 |
87.0*60.0*11.0 |
LED |
0.55*0.55 |
0.60*0.60 |
2.95*4.75 |
61.4*25.0 |
87.0*60.0*14.0 |
20*2 |
AC202A |
None / EL |
0.60*0.65 |
0.65*0.70 |
3.20*5.55 |
83.0*18.5 |
116.0*37.0*10.0 |
LED |
0.60*0.65 |
0.65*0.70 |
3.20*5.55 |
83.0*18.5 |
116.0*37.0*14.5 |
AC202B |
None / EL |
1.12*1.12 |
1.22*1.22 |
6.00*9.66 |
149.0*23.0 |
180.0*40.0*9.5 |
LED |
1.12*1.12 |
1.22*1.22 |
6.00*9.66 |
149.0*23.0 |
180.0*40.0*15.0 |
AC202D |
LED |
1.10*1.50 |
1.20*1.60 |
5.9*12.7 |
147.0*35.2 |
182.0*60.0*14.0 |
20*4 |
AC204A |
None / EL |
0.55*0.55 |
2.95*4.75 |
76.0*25.2 |
76.0*25.2 |
98.0*60.0*10.5 |
LED |
0.55*0.55 |
2.95*4.75 |
76.0*25.2 |
76.0*25.2 |
98.0*60.0*14.5 |
AC204B |
None |
0.92*1.10 |
4.84*9.22 |
123.0*42.5 |
123.0*42.5 |
146.0*62.5*10.5 |
LED |
0.92*1.10 |
4.84*9.22 |
123.0*42.5 |
123.0*42.5 |
146.0*62.5 *14.5 |
24*2 |
AC242A |
None / EL |
0.60*0.65 |
0.65*0.70 |
3.20*5.55 |
94.5*18.0 |
118.0*36.0*9.5 |
LED |
0.60*0.65 |
0.65*0.70 |
3.20*5.55 |
94.5*18.0 |
118.0*36.0*14.7 |
40*2
|
|
None / EL |
0.60*0.65 |
0.65*0.70 |
3.20*5.55 |
154.0*16.5 |
182.0*33.5*10.5 |
LED |
0.60*0.65 |
0.65*0.70 |
3.20*5.55 |
154.0*16.5 |
182.0*33.5*14.0 |
40*4
|
|
None / EL |
0.50*0.55 |
0.57*0.62 |
2.78*4.89 |
147.0*29.5 |
190.0*54.0*10.5 |
LED |
0.50*0.55 |
0.57*0.62 |
2.78*4.89 |
147.0*29.5 |
190.0*54.0*14.0 |
|
|
Описание портов подключения индикатора
#define
RS PORTD,4 ;
бит
R/S дисплея
#define
RW PORTD,5 ;
бит
W/R дисплея
#define
E PORTD,6 ;
бит
Е
дисплея
#define
PODSV PORTD,7 ;
бит
подсветки
дисплея
#define
PORT_LCD PORTD ; порт соединяющий с дисплеем (используется 4 младших
разряда данные, старшие - управление)
;===========================Программы для работы с LCD
дисплеем==============================
;============================================================================================
EN_STROBE MACRO
; макрокоманда формирования импульса
bsf E
; достоверности данных для дисплея
nop
;
nop
;
;nop
;
;nop
;
bcf
E
;
ENDM
;
;============================================================================================
;============================================================================================
;
инициализация дисплея для работы
по 4 проводному интерфейсу
LcdInit
bcf RW
;
режим
записи
в
дисплей
bcf RS
;
режим
команд
movlw 0x50
;
задержка
на
подачу
питания
на
дисплей
call msZader
;
movlw 0x50
;
call msZader
;
movlw 0x50
;
call msZader
;
movlw 0x50
;
call msZader
;
; инициализация
дисплея
после
сброса
movlw 0xF0
;
andwf PORT_LCD,f
; очиста
младщего
полубайта
movlw 3
;
код
0х3
три
раза
iorwf PORT_LCD,f
; загрузка
данных
в
порт
EN_STROBE
;
movlw 10
;
call msZader
;
EN_STROBE
;
movlw 10
;
call msZader
;
EN_STROBE
;
movlw 10
;
call msZader
;
movlw 0xF0
;
andwf PORT_LCD,f
; очиста
младщего
полубайта
movlw 2
;
код
0х2
один
раз
iorwf PORT_LCD,f
; загрузка
данных
в
порт
EN_STROBE
;
movlw 10
;
call msZader
;
; Настройка
шины
на
протокол
4 бита
ком.
(001***--) 1*-8/4 бит; 2*-2/1 строка; 3*-5х11/5х8 шрифт
movlw b'00101100'
; две строки
call ZapCommand
;
; Установка сдвига курсора и экрана ком. (000001**) 1* -?; 2*- разрешение/запрет
сдвига экрана
movlw b'00000110'
; сдвиг в право курсора, сдвиг дисплея отключен
call ZapCommand
;
; Настройка дисплея ком. (00001***) 1*-дисплей включен/выключен; 2*-курсор
включен/выключен; 3*-мигание знакоместа включен/выключен
movlw b'00001100'
; дисплей включен
;movlw 0x07
;
call ZapCommand
;
; Очистка дисплея
movlw 0x01
;
goto
ZapCommand
;call
ZapCommand
;return
;============================================================================================
; задержка в 0,25 мс для 16 мГц
;============================================================================================
msZader
movwf ChetZad2
; счетчик милисикунд
clrf ChetZad1
; счетчик длительности в 1 милисикунду
odnMcek
nop
;
nop
;
nop
;
nop
;
nop
;
decfsz
ChetZad1,F
;
goto
odnMcek
;
nop
;
decfsz
ChetZad2,F
;
goto
odnMcek
;
return
;
;============================================================================================
; Инициализация дисплея после сброса
; работа с 4 битным интерфейсом
; 2 строки
; дисплей включен, курсор выключен, мигание знакоместа выключено
; очистка дисплея
;============================================================================================
; Очистка дисплея
;============================================================================================
LcdClear
movlw
0x01
call
ZapCommand
movlw 10
call
msZader
movlw 0x80
;установка курсора на первое знакоместо
goto
ZapCommand
;call
ZapCommand
;return
;============================================================================================
;Управление положение курсора
; W
= D7-D4
строка - диапазон 0-3,
D3-D0
столбец - диапазон 0-…. 16….20….40 в зависимости от типа дисплея
;============================================================================================
PolCursor
movwf
LcdBufer1
movlw 0x80
movwf
LcdBufer2
movf
LcdBufer1,W
andlw 0x0F
iorwf
LcdBufer2,F
btfsc
LcdBufer1,4
bsf
LcdBufer2,6
movf
LcdBufer2,W
goto
ZapCommand
;call
ZapCommand
;return
;============================================================================================
; Загрузка данных в индикатор (загрузка символов)
;============================================================================================
ZapSim
bsf
RS
bcf
RW
goto
ZapByte
;call
ZapByte
;return
;============================================================================================
; Загрузка команды в индикатор
;============================================================================================
ZapCommand
bcf
RS
bcf
RW
goto
ZapByte
;call
ZapByte
;return
;============================================================================================
; Загрузка в индикатор байта данных двумя посылками по 4 бита
;============================================================================================
ZapByte
movwf
LcdBufer
; Загрузка буфера с аккумулятора
movwf
LcdBufer1
; Загрузка буфера с аккумулятора
movlw
0xF0
;
andwf
PORT_LCD,f
; очиста младщего полубайта
andwf
LcdBufer1,f
; очиста младщего полубайта порта
swapf
LcdBufer1,w
; загрузка старшего полубайта
iorwf
PORT_LCD,f
; в порт ( в младший полубайт)
EN_STROBE
;
movlw
10
;
;call
msZader
;
movwf
ChetZad2
; счетчик милисикунд
clrf
ChetZad1
; счетчик длительности в 1 милисикунду
odnMcek1
nop
decfsz
ChetZad1,F
;
goto
odnMcek1
;
nop
decfsz
ChetZad2,F
;
goto
odnMcek1
;
movlw
0xF0
;
andwf
PORT_LCD,f
; очиста младщего полубайта порта
movlw
0x0F
;
andwf
LcdBufer,w
; загрузка младшего полубайта
iorwf
PORT_LCD,f
; загрузка данных в порт
EN_STROBE
;
movlw
10
;
;call
msZader ;
movwf
ChetZad2
; счетчик милисикунд
clrf
ChetZad1
; счетчик длительности в 1 милисикунду
odnMcek2
nop
decfsz
ChetZad1,F
;
goto
odnMcek2
;
nop
decfsz
ChetZad2,F
;
goto
odnMcek2
;
return
;============================================================================================
;============================================================================================
clear_s2
;очистка строки 2
clrf
perem1
movlw
0x10
call
PolCursor
movlw
0x20
call
ZapSim
incf
perem1,f
movlw
.16
subwf
perem1,w
btfss
STATUS,Z
goto
$-12
return
;============================================================================================
;============================================================================================
clear_s1
;очистка
строки
1
clrf perem1
movlw 0x00
call PolCursor
movlw 0x20
call ZapSim
incf perem1,f
movlw .16
subwf perem1,w
btfss STATUS,Z
goto $-12
return
;============================================================================================
;============================================================================================
;============================================================================================
Для получения дополнительной информации используйте:
MAGETEX
Ukraine
Телефон: +380-50-575-98-63
Факс: +380-50-575-98-63
Интернет:
invent-systems@ya.ru
|