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