localcrack
Active Member
Muted
Offline
Posts: 173
Thank You
-Given: 64
-Receive: 21
|
|
« Reply #6 on: November 18, 2007, 05:24:02 17:24 » |
|
I have code for 8051, It is well commented so you can easily modify for PIC
; This program is to test lcd display using 8051 prototype board ; Demo Program Scrolling continues ;P1=data pin ;P2.0 connected to RS pin ;P2.1 connected to R/W pin ;P2.2 connected to E pin
;call delay1 MOV A,#38H ;init. LCD 2 lines,5x7 matrix ACALL COMMAND ;issue command MOV A,#0EH ;LCD on, cursor on ACALL COMMAND ;issue command MOV A,#01H ;clear LCD command ACALL COMMAND ;issue command MOV A,#06H ;shift cursor right ACALL COMMAND ;issue command MOV A,#0C0H ;cursor: line 1, pos. 6 ACALL COMMAND ;command subroutine MOV A,#'8' ;display letter N ACALL DATA_DISPLAY MOV A,#'0' ;display letter O ACALL DATA_DISPLAY MOV A,#'5' ;display letter O ACALL DATA_DISPLAY MOV A,#'1' ;display letter O ACALL DATA_DISPLAY MOV A,#'D' ;display letter O ACALL DATA_DISPLAY MOV A,#'E' ;display letter O ACALL DATA_DISPLAY MOV A,#'M' ;display letter O ACALL DATA_DISPLAY MOV A,#'O' ;display letter O ACALL DATA_DISPLAY
MOV A,#083H ;cursor: line 1, pos. 6 ACALL COMMAND ;command subroutine MOV A,#'4' ;display letter N ACALL DATA_DISPLAY CALL DELAY MOV A,#083H ;cursor: line 1, pos. 6 ACALL COMMAND ;command subroutine MOV A,#'3' ;display letter N ACALL DATA_DISPLAY CALL DELAY MOV A,#083H ;cursor: line 1, pos. 6 ACALL COMMAND ;command subroutine MOV A,#'2' ;display letter N ACALL DATA_DISPLAY CALL DELAY MOV A,#083H ;cursor: line 1, pos. 6 ACALL COMMAND ;command subroutine MOV A,#'1' ;display letter N ACALL DATA_DISPLAY CALL DELAY MOV A,#083H ;cursor: line 1, pos. 6 ACALL COMMAND ;command subroutine MOV A,#'0' ;display letter N ACALL DATA_DISPLAY CALL DELAY
MOV A,#01H ;clear LCD command ACALL COMMAND ;issue command ;---------------------------------------------------------------------------------------------- MOV A,#0C0H ;cursor: line 1, pos. 6 ACALL COMMAND ;command subroutine MOV A,#'8' ;display letter N ACALL DATA_DISPLAY MOV A,#'0' ;display letter O ACALL DATA_DISPLAY MOV A,#'5' ;display letter O ACALL DATA_DISPLAY MOV A,#'1' ;display letter O ACALL DATA_DISPLAY MOV A,#' ' ;display letter O ACALL DATA_DISPLAY MOV A,#'L' ;display letter O ACALL DATA_DISPLAY MOV A,#'C' ;display letter O ACALL DATA_DISPLAY MOV A,#'D' ;display letter O ACALL DATA_DISPLAY MOV A,#' ' ;display letter O ACALL DATA_DISPLAY MOV A,#'D' ;display letter O ACALL DATA_DISPLAY MOV A,#'I' ;display letter O ACALL DATA_DISPLAY MOV A,#'S' ;display letter O ACALL DATA_DISPLAY MOV A,#'P' ;display letter O ACALL DATA_DISPLAY MOV A,#'L' ;display letter O ACALL DATA_DISPLAY MOV A,#'A' ;display letter O ACALL DATA_DISPLAY MOV A,#'Y' ;display letter O ACALL DATA_DISPLAY MOV A,#' ' ;display letter O ACALL DATA_DISPLAY MOV A,#'8' ;display letter O ACALL DATA_DISPLAY MOV A,#'0' ;display letter O ACALL DATA_DISPLAY MOV A,#'5' ;display letter O ACALL DATA_DISPLAY MOV A,#'1' ;display letter O ACALL DATA_DISPLAY MOV A,#' ' ;display letter O ACALL DATA_DISPLAY MOV A,#'D' ;display letter O ACALL DATA_DISPLAY MOV A,#'E' ;display letter O ACALL DATA_DISPLAY MOV A,#'V' ;display letter O ACALL DATA_DISPLAY MOV A,#'O' ;display letter O ACALL DATA_DISPLAY MOV A,#'L' ;display letter O ACALL DATA_DISPLAY MOV A,#'O' ;display letter O ACALL DATA_DISPLAY MOV A,#'P' ;display letter O ACALL DATA_DISPLAY MOV A,#'M' ;display letter O ACALL DATA_DISPLAY MOV A,#'E' ;display letter O ACALL DATA_DISPLAY MOV A,#'N' ;display letter O ACALL DATA_DISPLAY MOV A,#'T' ;display letter O ACALL DATA_DISPLAY MOV A,#'-' ;display letter O ACALL DATA_DISPLAY MOV A,#'B' ;display letter O ACALL DATA_DISPLAY MOV A,#'O' ;display letter O ACALL DATA_DISPLAY MOV A,#'A' ;display letter O ACALL DATA_DISPLAY MOV A,#'R' ;display letter O ACALL DATA_DISPLAY MOV A,#'D' ;display letter O ACALL DATA_DISPLAY ;----------------------------------------------------------------------------
MOV A,#85H ;cursor: line 1, pos. 6 ACALL COMMAND ;command subroutine MOV A,#'N' ;display letter N ACALL DATA_DISPLAY MOV A,#'S' ;display letter O ACALL DATA_DISPLAY MOV A,#'K' ;display letter O ACALL DATA_DISPLAY MOV A,#' ' ;display letter O ACALL DATA_DISPLAY MOV A,#'E' ;display letter O ACALL DATA_DISPLAY MOV A,#'L' ;display letter O ACALL DATA_DISPLAY MOV A,#'E' ;display letter O ACALL DATA_DISPLAY MOV A,#'C' ;display letter O ACALL DATA_DISPLAY MOV A,#'T' ;display letter O ACALL DATA_DISPLAY MOV A,#'R' ;display letter O ACALL DATA_DISPLAY MOV A,#'0' ;display letter O ACALL DATA_DISPLAY MOV A,#'N' ;display letter O ACALL DATA_DISPLAY MOV A,#'1' ;display letter O ACALL DATA_DISPLAY MOV A,#'C' ;display letter O ACALL DATA_DISPLAY MOV A,#'S' ;display letter O ACALL DATA_DISPLAY
HERE: MOV A,#18H ;cursor: line 1, pos. 6 ACALL COMMAND CALL DELAY1 lJMP HERE ;STAY HERE COMMAND: ACALL READY ;is LCD ready? MOV P1,A ;issue command code CLR P2.0 ;RS=0 for command CLR P2.1 ;R/W=0 to write to LCD SETB P2.2 ;E=1 for H-to-L pulse CLR P2.2 ;E=0 ,latch in RET DATA_DISPLAY: ACALL READY ;is LCD ready? MOV P1,A ;issue data SETB P2.0 ;RS=1 for data CLR P2.1 ;R/W=0 to write to LCD SETB P2.2 ;E=1 for H-to-L pulse CLR P2.2 ;E=0, latch in RET
READY: SETB P1.7 ;make P1.7 input port CLR P2.0 ;RS=0 access command reg SETB P2.1 ;R/W=1 read command reg BACK:CLR P2.2 ;E=1 for H-to-L pulse SETB P2.2 ;E=0 H-to-L pulse JB P1.7,BACK ;stay until busy flag=0 RET
delay: mov r7, #0fh up4: mov r6, #060h up3: mov r5, #00h djnz r5, $ djnz r6, up3 djnz r7, up4 ret
;-------------------delay program------------------------ DELAY1: MOV TMOD,#010H MOV R3,#04H ;95 TES: MOV TL1,#00H ;00 MOV TH1,#00H ;00 SETB TR1 T : JNB TF1,T CLR TR1 CLR TF1 DJNZ R3,TES RET ;---------------------end-------------------------------------
END
|