LCD indikatoriaus programavimas su PIC16F84 mikrovaldikliu (0)
Pirmas žingsnis užprogramuojant procesorių (LCD1602). Išsiaiškinę programavimo principą galėsite užprogramuoti ir kitus LCD displėjus.
Prisijunk prie technologijos.lt komandos!
Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.
Sudomino? Užpildyk šią anketą!
LCD programavimui naudojamas PIC16F84A mikrovaldiklis su 4 MHz kvarciniu generatoriaus dažniu. Naudojamas LCD indikatorius, kuris yra prijungtas ant PORTB mikrovaldiklio išėjimų. Šis schemos programavimas puikus tobulinimo įrankis procesorių užprogramavimui.
LCD parašymas indikatorius tai displėjus galintis atvaizduoti simbolius sudarytus iš taškų, kurie sudaro indikatoriaus vieną simbolį.
LCD indikatoriaus išvadų aprašymas:
Išvadas |
Simbolis |
Funkcija |
1 |
VSS |
Minusas |
2 |
VDD |
+5V |
3 |
VO |
Nustatomas ryškumas |
4 |
RS |
0-instrukcijos, 1-duomenų siuntimas |
5 |
R/W |
0-duomenų rašymas, 1-duomenų skaitymas |
6 |
E |
Leidimo signalas |
7 |
D0 |
Duomenų magistralė |
8 |
D1 |
Duomenų magistralė |
9 |
D2 |
Duomenų magistralė |
10 |
D3 |
Duomenų magistralė |
11 |
D4 |
Duomenų magistralė |
12 |
D5 |
Duomenų magistralė |
13 |
D6 |
Duomenų magistralė |
14 |
D7 |
Duomenų magistralė |
LCD indikatoriuje yra valdiklis su atmintimi, kuriame yra nupiešti simboliai ir juos galima išsikviesti nusiuntus LCD indikatoriui simbolio adresą. LCD160x, GDM160x standartinė simbolių lentelė
LCD indikatoriui valdyti reikalingi E (Enable) ir RS (Register Select) taktavimas. Jie reikalingi tam, kad indikatorius atslirtų duomenų nuo komandų siuntimo indikatoriui. Enable naudojamas, kai siunčiami duomenys, RS komandos. Valdymo signalų laikinės diagramos pateiktos paveikslėlyje.
Programavimo metu naudojamas LCD indikatoriaus jungimo schema
Programos tekstas:
Pradžioje reikalingi mikrovaldiklio nustatymai. Plačiau galite rasti teorinės dalies aprašymuose.
#include <p16F84a.inc> ;mikrovaldiklio bibliotekos itraukimas
;KONFIGURACINIU BITU NUSTATYMAS:
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC org 0x00
;Programos resetavimas
Apsibrėžiamas kintamųjų blokas, kad tekste būtų galima lengviau orientuotis
RS EQU 0x03 ;;PORTE A LCD VALDYMO SIGNALAS RS-isejimas
E EQU 0x02 ;;PORTE A LCD VALDYMO SIGNALAS E-isejimas
;kintemuju priskyrimas
cblock 0x11
TEMP ;uzvelinimo laiko registras
TARP ; tarpinis registras 1
TT ; tarpinis registras 2
ENDC
Atliekami mikrovaldiklio išvadų nustatymai. Plačiau apie tai galite rasti teorinės dalies aprašymuose.
bsf STATUS,RP0 ;Pirmojo banko ijungimas
clrf TRISA ;PortoA iejimu ir isejimu nurodymas. 0-ISEJIMAI
clrf TRISB ;PortoB iejimu ir isejimu nurodymas. 0-ISEJIMAI
bcf STATUS,RP0 ;Pirmojo banko isjungimas
Pagrindinis tekstas, kuriame nurodoma kokius duomenis išvesti į LCD displėjų:
;Duomenu atvaivdavimas:
pradzia
call LCD_inicil ;LCD inicilizavimas
MOVLW 'S' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'v' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'e' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'i' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'k' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'i' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'n' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'a' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'm' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'e' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW ' ' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'j' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 'u' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
MOVLW 's' ; simbolio isvedimas i displeju
call DUOMENYS ;duomanu siuntimas
Duomenų atvaizdavimas sekančioje eilutėje reikalingas toks komandos siuntimas:
MOVLW B'11000000' ;kursoriaus nustatymas i 2 eilute
CALL KOMANDA ;nustatymu siuntimas
Čia ir būtų galima nutraukti mikrovaldiklio darbą, mes atliekame nuolatinį užrašo kartojimą. LCD indikatoriuje atvaizduoti simboliai išlieka tol kol LCD displėjus nėra ištrinamas ar nebus atjungta įtampa.
Vėlinimas atliekamas tam, kad būtų galima pamatyti atvaizduojamus simbolius indikatoriuje, kol neištrynė mikrovaldiklis atlikdamas LCD inicilizavimą.
;atliekamas velinimas
movlw .200 ;skaitliuko nustatymas
movwf TARP ; duomenu irasymas
call wait100 ; velinimas
decfsz TARP,f ;skaiciuoja ir tikrina ar 0
goto $-2
goto pradzia
Vėlinimo paprogramės reikalingos sudaryti tarp signalų tam tikrus tarpus kuriuos reikalauja LCD indikatorius.
;velinimo paprogrames
wait100
movlw .255 ;skaitliuko nustatymas
goto pauze2
wait20
movlw .12 ;skaitliuko nustatymas
pauze2
movwf TEMP ; duomenu irasymas
pauze1
decfsz TEMP,f ;skaiciuoja ir tikrina ar 0
goto pauze1 ;persoka i zyme pauze 1
return ; sugristais paprogrames
LCD incilizavimo paprogramė jame nustatomi pagrindiniai LCD parametrai:
LCD_inicil ;LCD inicilizavimas
MOVLW B'00111000'
;nustatymas: 8 BIT DATA; 2 LINIJU DISPLEJUS
; TASKUS, PIRMA EILUTĖ
call KOMANDA ;siunciamas nustatymas
MOVLW B'00001110'
;DISPLAY ON/OFF: DISPLAY ON; KURSORIUS IJUNGTAS
; KURSORIAUS TIPAS MIRKSINTIS
call KOMANDA ;siunciamas nustatymas
MOVLW B'00111000'
;nustatymas: 8 BIT DATA; 2 LINIJU DISPLEJUS
; TASKUS, ANTRA EILUTĖ
call KOMANDA ;siunciamas nustatymas
MOVLW B'00000001' ;IŠVALYTI DISPLĖJU
call KOMANDA ;siunciamas nustatymas
call wait100 ;velinama
call wait100 ;velinama
MOVLW B'00000110'
;KURSORIAUS KRYPTIS:DIDINTI VIENETU ADRESA
call KOMANDA ;siunciamas nustatymas
return
Duomenų ir komandų siuntimas į LCD indikatorių
;***Komandos siuntimas
KOMANDA
bcf PORTA,RS ;INSTRUKCIJOS RASYMAS
movwf PORTB ;KOMANDOS ISSIUNTIMAS
bsf PORTA,E ;ENABLE LCD – taktavimas
bcf PORTA,E ;DISABLE LCD – taktavimas
call wait20 ;velinama
return
;Duomen siuntimas
DUOMENYS
bsf PORTA,RS ;DUOMENU RASYMAS
movwf PORTB ;KOMANDOS ISSIUNTIMAS
bsf PORTA,E ;ENABLE LCD
bcf PORTA,E ;DISABLE LCD
call wait20 ;velinama
return
end
Programa nėra parašyta optimaliausias variantas. Ji parašyta taip, kad būtų kuo patogiau suvokti LCD indikatoriaus veikimo principą.
SĖKMĖS!!!