LCD1602 programavimas naudojantis 2 MV išvadais  (0)

Kartais programuojant mikrovaldiklį nelieka išvadų į LCD160x informacijai išvesti. Siūlomas nuoseklus duomenų siuntimo būdas šiai problemai išspręsti.


Prisijunk prie technologijos.lt komandos!

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

Sudomino? Užpildyk šią anketą!

Dažnai programuojant informacijai išvesti naudojamas LCD indikatorius (jeigu tai sudėtingesnė informacija). Neišvengiamai sunaudojame nemažai mikrovaldiklio išvadų, kuris ir taip jų mažai turi. Siūlomas nuoseklus duomenų siuntimas į LCD indikatorių. Čia blogiausiu atveju reikalinga tik vienas laisvas mikrovaldiklio išvadas taktavimo signalas (CLK), kitas išvadas „duomenų siuntimo“ gali būti dubliuojamas.

Veikimo principas: LCD indikatoriaus duomenų siuntimas naudojamas 4 bitų. Iš mikrovaldiklio nuosekliai siunčiami duomenys per slinkties registrą surikiuojami lygiagrečiai ir tik tada duomenys siunčiami į LCD indikatorių.

 Principinė schema

LCD valdymui naudojamas E (Enable) signalas. Čia šis signalas taktuos tik tada, kai bus aukštas lygis bus Q7 ir duomenų siuntimo išvaduose. Kodėl naudojamas toks pajungimas LCD indikatoriaus Enable grandinėje? Paprasta tam, kad būtų reguliuojamas Enable taktavimo signalas. Jeigu būtų paprastai prijungtas LCD būtų taktuojamas visuomet, kai Q7 išėjime bus aukštas lygis(o jis bus visuomet kai norėsime duomenis pakeisti duomenų siuntimo išvaduose) tokiu jungimu gaunamas loginis „IR“ elementas. Jei bent vienas iš signalų žemas lygis (Q7 ir duomenų siuntimo išvade) į LCD indikatoriaus išvadą bus paduodamas žemas lygis, nes pavyzdžiui: esant aukštam lygiui tik Q7 išvade, signalą blokuos diodas esant atvirkščiai signalas kris ant diodo ir bus apie 0.6 voltus, pasižiūrėjus į LCD indikatoriui aprašymą jam yra žemas lygis.

Laikinė diagrama

Laikinėje diagramoje galime matyti kaip duomenys yra išskirstomi per slinkties registrą (iš nuoseklaus į lygiagretų duomenų siuntimą). Kaip tai vyksta? Nustatomas norimas lygis duomenų siuntimo išvade ir taktuojamas CLK išvadas, taktavus antrą kartą jis pereis jau Q2 ir taip toliau.

Programa

Pirmiausiai reikalingas poslinkio registro išvalymas. Išvalymas vyksta duomenų išvade nustačius žema lygį ir taktuojant CLK įėjimą kol visur nusistatys žemas lygis. Jai duomenų neišvalytume, o siųstume iškarto kitus galimas duomenų sutapimas, kai Q7 ir duomenų siuntimo išvade bus aukštas lygis ir įvyktų atsitiktinis LCD taktavimas. 

Valyti
            bcf data_lcd                   ;zemo lygio nustatymas
            bcf clock                       ;taktavimas (nustato zema lygi)
            movlw .8                        ;nustatomas isvalomu bitu kiekis
            movwf sk                       ; irasomas skaitliukas
gy         call vel                          ;taktavimas
            decfsz sk,f                    ;tikrina kada isvalys bitus
            goto gy                         ;grizimas i zyme
            return

Duomenų siuntimas: pirmiausiai siunčiamas Enable signalas, po to nustatomas kokio tipo signalas (komandos ar duomenų siuntimas) ir tik po to siunčiami kaip ir 4 bitų duomenys tik per viena išvadą. Po tiekvieno nustatyto loginio lygio atliekamas taktavimas.  


transmit_data
            movlw .3                        ;nustatomas tetrados dydis
            movwf sk1                     ;irasomas skaitliukas
            call valyti                       ;duomenu isvalymas is trigerio
            bsf data_lcd                   ;Eneble siuntimas
            call vel                          ;taktavimas
            btfsc TT,1                      ;duomenu signalo atrintimas
            bsf data_lcd                   ;paruosimas duomenu siuntimui
            btfss TT,1                      ;duomenu signalo atrintimas                  
            bcf data_lcd                   ;paruosimas komandos siuntimui
            call vel
            movlw .4                        ;skaitliuko nustatymas
            movwf sk1
cicle
            rlf data_l,f                      ;vyriausio bito isstumimas (7)
            btfsc STATUS,C            ;duomenu signalo atrintimas                  
            bsf data_lcd                   ;auksto lygio nustatymas
            btfss STATUS,C            ;duomenu signalo atrintimas      
            bcf data_lcd                   ;zemo lygio nustatymas
            call vel                          ;taktavimas
            decfsz sk1,f                   ;ciklo skaitliukas
            goto cicle                      ;sugrizimas i zyme
            call vel                          ;duomenu perstumimas
            call vel                          ;duomenu perstumima
            bsf data_lcd                   ;duomenu siuntimas i LCD
            bcf data_lcd                   ;duomenu siuntimas i LCD                     
            return
 

Asembleris [.asm]

 

Heksas [.hex]

 

Testavimo failiukas (Proteus)[.dsn]

 

SĖKMĖS!!!

 

 

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

Komentarai (0)

Susijusios žymos: