MOV A,#08H
MOVC A,@A+DPTR
MOV R7,A
ACALL LCD_WriteData
MOV A,#09H
MOVC A,@A+DPTR
MOV R7,A
ACALL LCD_WriteData
MOV A,#00AH
MOVC A,@A+DPTR
MOV R7,A
ACALL LCD_WriteData
MOV A,#0BH
MOVC A,@A+DPTR
MOV R7,A
ACALL LCD_WriteData
MOV A,#0CH
MOVC A,@A+DPTR
MOV R7,A
ACALL LCD_WriteData
MOV A,#0DH
MOVC A,@A+DPTR
MOV R7,A
ACALL LCD_WriteData
AJMP $ ;原地跳轉
;*********************;
; 1602初始化程序 ;
;*********************;
LCD1602_Init:
MOV R7,#038H ;傳遞給LCD_WriteCom函數的值放在R7
ACALL LCD_WriteCom;設置顯示模式
MOV R7,#00CH ;設置顯示開,光標關閉。
ACALL LCD_WriteCom
MOV R7,#006H ;設置地址指針寫后加1,而且整屏不移動
ACALL LCD_WriteCom
MOV R7,#001H ;顯示清屏
ACALL LCD_WriteCom
MOV R7,#081H ;設置起始指針
ACALL LCD_WriteCom
RET ;子函數返回
;*********************;
; 1602寫命令程序 ;
;*********************;
LCD_WriteCom: ;用R7接收傳遞一個8位數據
CLR LCDE
CLR RS
CLR RW
MOV GPIO_LCD,R7
ACALL DELAY
SETB LCDE
ACALL DELAY
CLR LCDE
RET
;*********************;
; 1602寫數據程序 ;
;*********************;
LCD_WriteData: ;用R7接收傳遞一個8位數據
CLR LCDE
SETB RS
CLR RW
MOV GPIO_LCD,R7
ACALL DELAY
SETB LCDE
ACALL DELAY
CLR LCDE
RET
;*************;
; 延時程序 ;
;*************;
DELAY:
MOV R6,#0FFH
DJNZ R6,$
RET
END
|