• Главная • Назад •








Counter

 


Программы для работы с символьными индикаторами на драйвере 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
 

Главная | Назад
 
Отправить сообщение для: gchernov@mail.ru с вопросами и замечаниями об этом веб-узле.
© 2007 MAGETEX
Дата изменения: 23.08.2013