LCD-kode ikke fungerer ...

K

kvrajasekar

Guest
Hej,

Jeg bruger CDM16216B LCD at interface med 16f72.But jeg
gjorde ikke få noget på LCD.Please venligt svar mig, min kode er her.liste p = 16f72; PIC16f72 er målet processor
Inkluder "P16f72.INC"
;------------------------------------------------- -----------------------------------
; PORTA kontrol bits__CONFIG _PWRTE_ON & _XT_OSC & _WDT_OFF; Konfiguration afbrydere
#
Define LCD_RS PORTA, 0; RA0 er RS linje af LCD
#
Define LCD_E PORTA, 1; RA1 er E linje LCD
; RC0-RC3 er D4-D7 af LCD
Temp EQU 0x20
delay1 EQU 0x21

org 0x00
goto start;------------------------------------------------- -----------------------------------
start
BSF STATUS, RP0; Bank1
errorlevel 1, -302; Må ikke advare mig om bank 1

movlw b'00000000 '; Definering input-og output-ben
movwf TRISA; skriftligt til TRISA register
movlw b'00000000 '; Definering input-og output-ben
movwf TRISB; skriftligt til TRISB register 1-input ,0-output
movlw b'00000000 '
movwf TRISC
movlw b'10000110 '; TMR0, prescaler-128
movwf OPTION_REG
movlw 0x07
movwf ADCON1
BCF STATUS, RP0; Bank0
clrf PORTA; potra, portb oprindeligt var sat til at lave
clrf PORTB
clrf PORTCopkald lcd_init
BSF PORTA, 5; buzzer
opkald delay_0.5s
BCF PORTA, 5

opkald disp_main
movlw 0xC1
opkald disp_cmd
btfsc PORTB, 4; UPS RDY
opkald disp_upslcd_init

movlw 0x28 4 bit, 2 Line, 5x7 font
opkald disp_cmd
opkald forsinkelse
; Movlw 0x10; displayet skifte ud
, Indkaldelse disp_cmd
; Opkald forsinkelse
movlw 0x0E; tilvækst markøren
opkald disp_cmd
opkald forsinkelse
movlw 0x01; rydde displayet RAM
opkald disp_cmd
opkald forsinkelse; Bemærk, kan tage op til 4,1 msecs

movlw 0x06; flytte markøren til begyndelsen
opkald disp_cmd
opkald forsinkelse
; Movlw 0x0C; displayet på cursor off
, Indkaldelse disp_cmd
; Opkald forsinkelse
tilbagevenden
forsinkelse
movlw d'236 '; 2.5ms forsinkelse
movwf TMR0
loop1 btfss INTCON, 2
goto loop1
clrf INTCON; hvis overflow forekomme, klare INTCON
tilbagevenden
d
;------------------------------------------------- -----------------------------------
; Display kommando i 4 bit LCD

disp_cmd; Send instruktionen til LCD
movwf Temp; Gem Midlertidige Værdi
swapf Temp, w; Send High Nybble
BCF LCD_RS; RS = 0
opkald nibbleout
movf Temp, w; Send Low Nybble
BCF LCD_RS
opkald nibbleout
tilbagevenden
;------------------------------------------------- -----------------------------------
; sende ASCII tegn til LCD
disp_write
; Addlw'0 '; Send NBR som ASCII-tegn; Send tegnet til LCD
movwf Temp; Gem Midlertidige Værdi
swapf Temp, w; High Nybble
BSF LCD_RS; RS = 1
opkald nibbleout
movf Temp, w; Send Low Nybble
BSF LCD_RS
opkald nibbleout
tilbagevenden
;------------------------------------------------- -----------------------------------
; sende nedre og øvre gnaske
nibbleout; Send en nippe til LCD
movwf PORTC
BSF LCD_E
opkald forsinkelse
BCF LCD_E
NOP
NOP
tilbagevenden

disp_mainmovlw 'M'; output 'MAIN'
opkald disp_write
movlw 'A'
opkald disp_write
movlw 'jeg'
opkald disp_write
movlw 'N'
opkald disp_write

movlw '
opkald disp_write
movlw 'N'
opkald disp_write
movlw 'O'
opkald disp_write
movlw 'R'
opkald disp_write

tilbagevenden

ende

 
kunne du se de mørke lcd tegn, hvis ikke du kontrollere dine ledninger.
og hvis din controller af dine lcd er overophedning stop strømforsyningen, da det kan skade din LCD.

 
Tak for svaret.

Jeg
gjorde ikke får nogen tegn som De nævnte (mørk tegn), kun baggrundsbelysningen er tændt (det ser lys).

Jeg vil give dig pin-forbindelser hvad jeg gjorde, jeg har brugt 2.5ms straks at sende command.will denne forsinkelse er tilstrækkeligt, eller jeg er nødt til at øge delay.and kontrast spænding er tilstrækkelig?

Please svar mig.

1 - GND
2 - -
5 v
3 kontrast -
3 v
4-reset (RA0)
5 - GND
6 - Aktiver (RA1)
7,8,9,10 - intet forbindelse
11,12,13,14 - data (RC0-RC3)
15 - GND

 
Hej,
1.Prøv og justere LCD spænding (kontrast)
ved hjælp af en pot., Et meget almindeligt problem.
2.Check indledningen af timeren omhyggeligt igen.
3.Hvor koden gå til fra:

"Opkald disp_ups"

Hilsen,
Laktronics

 
2.5ms er ikke nok,
så prøv at kode for LCD initilalization tid (ca. 100ms) og derefter pls check hvis ledninger er ikke omvendt
jeg mener nogle lcd starter fra 14.ground til 1 og så videre ...
men de fleste af dem har baggrundslys på 15 og 16

 
Tak for dit spørgsmål.

Jeg vil ændre forsinkelsen og LCD kontrast, så får du back.Is det nødvendigt at ringe til LCD initialisering, når nogensinde vil vise en ny karakter? eller kan jeg bare kalde displayet RAM adresse?

Kan jeg bruge afbryder for LCD rutine.Jeg har tvivl bruger interrrupt for LCD rutine,
fordi det tager lang tid at komme ud af afbryder loop.correct mig hvis jeg tager fejl?

 
hai,

Hvis du bruger pic række derefter u kan os compilers med fuldt udbygget mikroE software i tre 1.ved hjælp af grundlæggende sprog 2.bruger python 3.ved hjælp af C-program (anbefales) henter for webstedet mikroC software via søgning google.com

 
Hej,
Lange forsinkelser er kun for oprindelige poweron afvikling og for de første par kommandoer for init.Som pr en af brugermanualer de fleste af de kommandoer kræver kun 40usec.straks efter init.Kun to kommandoer CLR Display og Hjemme tager 1,64 msek.Aktiver impulsbredde er under en mikro sec.and forsinkelse cyklustid for to byte lastning er kun én USEC.Det er bedre at henvise Brugervejledning af din skærm og trim forsinkelser efter behov.
Init kræves kun én gang på Poweron.

Hilsen,
Laktronics

 
Når jeg brugt 8 bit, min kode fungerer korrekt, men mit 4 bit kode ikke fungerer.

Jeg brugte kommandoen for 4 bit grænseflade,

movlw 0x28
opkald disp_cmd

er enhver kommando er nødvendig, før denne kommando? Please help me.

 

Welcome to EDABoard.com

Sponsor

Back
Top