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