LCD1602 programavimas naudojantis 4 bitų duomenų siuntimą  (0)

Neretai programuojant pritrūksta mikrovaldiklio išvadų norint papildomai atvaizduoti LCD indikatoriuje informacija. Čia siūloma išbandyti ekonomiškesnį variantą MV išvadų atžvilgiu.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

Norint pilnai užvaldyti ir komunikuoti su LCD indikatoriumi reikalinga 11 mikrovaldiklio išvadų. Turint galvoje, kad PIC16F84A turi tik 13 išvadų kuriais gali siųsti ir priimti duomenis. Taigi mes beveik visus išvadus išnaudojame LCD indikatoriui užvaldyti ir pritrūksta išvadų užvaldyti kitus įrenginius. Taigi siūlomas su 6 mikrovaldiklio išvadais užvaldyti LCD indikatorių (4 duomenų siuntimo, taktavimo signalo siuntimas (E), komandos ir duomenų siuntimo signalas (RS)), atsisakomas R/W LCD indikatoriaus pajungimo išvadas (pasinaudojus juo galima sekti duomenų ir komandos siuntimo signalus ir nereiktų atlikinėti vėlinimo tarp duomenų ir komandų siuntimo. Taip pat prarandame galimybę sukurti naujus simbolius, kuriais būtų galima papildyti LCD indikatoriaus biblioteka ir juos atvaizduoti.

 Schema

Programa:

Panaudota ta pati programa, kaip ir 10 išvadų panaudojus paleisti programa (buvo aprašyta). Todėl programa analizuosiu tik ten kur keičiasi programa t.y. ten, kur yra atliekamas LCD incilizavimas, bei komandų ir duomenų siuntimas.

Inicilizavimas (nustatymas):

Pirmiausiai yra siunčiamas korekcijos bitas ir tik po to siunčiami nustatymo duomenys. Toliau, kaip ir su 8 duomenų siuntimo bitais atliekamas, indikatoriaus nustatymas nuo kurio priklauso tolesnis LCD veikimo principas.

LCD_inicil                                ;LCD inicilizavimas
            MOVLW          B'00000010'    ;korekcijos bitas
            call KOMANDA                      ;komandos siuntimas
            MOVLW          B'00101000'    ;nustatymas: 4 BIT DATA; 2 LINE DISPLAY; 5x7 DOTS, FIRST LINE
            call KOMANDA                      ;siunciamas nustatymas
            MOVLW          B'00001110'    ;DISPLAY ON/OFF: DISPLAY ON; CURSOR ON; CURSOR BLINK
            call KOMANDA                      ;siunciamas nustatymas
            MOVLW          B'00101000'    ;nustatymas: 4 BIT DATA; 2 LINE DISPLAY; 5x7 DOTS, SECANT LINE
            call KOMANDA                      ;siunciamas nustatymas
            MOVLW          B'00000001'    ;Dislejaus išvalymas
            call KOMANDA                      ;siunciamas nustatymas
            call wait100                  ;velinama
            call wait100                  ;velinama       
            MOVLW          B'00000110'    ;duomenų rasymo eiliškumas: didėjimo tvarka
            call KOMANDA                      ;siunciamas nustatymas
            MOVLW          B'00001110'    ; nustatomas i atvaizdavimo busena
            call KOMANDA                      ;siunciamas nustatymas
            return
 

Toliau atliekamas komandos siuntimas. Čia pirmiausiai siunčiami 4-7 bitas į indikatorių, po to yra apsukamas baitas (sukeičiamos tetradomis t.y. pusbaičiais) ir vėl yra siunčiami į indikatorių, tik dabar gaunasi, kad siunčiame 0-3 bitus. Atlikus tokius veiksmus indikatorius priima, kaip paprastai siunčiama pilna baitą, tik šiuo atveju yra sutaupomi 4 mikrovaldiklio išvadai.

KOMANDA
            movwf TARP               ;Tarpinis registras
            bcf TT,0                       ;nustatomas, kad neissoktu is paprogrames
            goto dd1                      ; perejimas i dd1 adresa
gg1      bsf TT,0                       ;nustatymas, kad iseitu is paprogrames
            swapf TARP,f  ;tetradu sukaitimas
dd1      movfw TARP               ;duomenu paemimas is tarpinio registro
            bcf       PORTA,RS     ;duomenu rasymas
            movwf PORTB            ;komandos išsiuntimas
            bsf PORTA,E              ;leidimo signalas i LCD
            bcf       PORTA,E        ;graudimo signalas LCD
            call wait20                    ;Velinimas
            btfss TT,0                    ;tikrima at baigti paprograme
            goto gg1                      ;grizimas i gg1 adresa
            return

            Duomenų siuntimo paprogramė taip pat pertvarkoma.

DUOMENYS
            movwf TARP               ;Tarpinis registras
            bcf TT,0                       ;nustatomas, kad neissoktu is paprogrames
            goto dd                        ; perejimas i dd adresa
gg        bsf TT,0                       ;nustatymas, kad iseitu is paprogrames
            swapf TARP,f  ;tetradu sukaitimas
dd        movfw TARP               ;duomenu paemimas is tarpinio registro
            bsf       PORTA,RS     ;duomenu rasymas
            movwf  PORTB           ;komandos išsiuntimas
            bsf PORTA,E              ;leidimo signalas i LCD
            bcf       PORTA,E        ;graudimo signalas LCD
            call wait20                    ;Velinimas
            btfss TT,0                    ;tikrima at baigti paprograme
            goto gg                        ;grizimas i gg adresa
            return

 

Asembleris [.asm]

Heksas [.hex]

Testavimo failiukas (Proteus)[.dsn]

SĖKMĖS!!!

Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
(2)
(0)
(2)

Komentarai (0)

Susijusios žymos: