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į.

 Dviejų eilučių LCD indikatoriaus bendras vaizdas

       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ė

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.

 Laikinė diagrama

Programavimo metu naudojamas LCD indikatoriaus jungimo schema

 

 

Principinę 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ą.

Asembleris .asm

Hexas .hex

Proteus failas (testavimui)

SĖKMĖS!!!

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

Komentarai (0)

Susijusios žymos: