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ų.
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ė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
Testavimo failiukas (Proteus)[.dsn]
SĖKMĖS!!!