分享一个51单片机的LCD1602显示程序
单片机源程序如下:
- RS EQU P1.1
- RW EQU P1.2
- E EQU P1.3
- ORG 0000H
- AJMP MAIN
- ORG 0030H
- MAIN:
- CLR RS
- CLR E
- CLR RW
- MOV SP,#60H
- MOV P0,#01H ;清屏
- CLR RS ;送命令
- CLR RW
- CLR E
- LCALL DELAY
- SETB E
- MOV P0,#38H ;显示功能
- LCALL ENABLE
- MOV P0,#0FH ;显示开关控制
- LCALL ENABLE
- MOV P0,#06H ;显示光标右移加1
- LCALL ENABLE
- MOV DPTR,#TABLE1
- ACALL DD2;DD2是LCD第一行显示TABLE1
- ACALL PPP ;PPP是LCD第二行显示TAB
- SJMP $
- DD2: MOV P0,#80H;第一行的开始位置
- LCALL ENABLE
- LCALL WRITE1;到TABLE1取码?
- RET
- ENABLE:
- CLR RS ;送命令
- CLR RW
- CLR E
- LCALL DELAY
- SETB E
- RET
- WRITE1: MOV R1,#00H ;显示table中的值
- A1: MOV A,R1;到table取码
- MOVC A,@A+DPTR
- LCALL WRITE2 ;显示到lcd
- INC R1
- CJNE A,#00H,A1 ;是否到00h
- RET
- WRITE2:MOV P0,A ;显示
- SETB RS
- CLR RW
- CLR E
- CALL DELAY
- SETB E
- RET
- DELAY:
- MOV R4,#10
- D1:MOV R5,#0F8H
- D2:DJNZ R5,D2
- DJNZ R4,D1
- RET
- PPP:
- MOV P0,#0C0H;第二行的位置
- LCALL ENABLE
- MOV DPTR,#TAB;显示
- LCALL WRITE3;到TAB取码
- RET
- WRITE3: MOV R1,#00H ;显示table中的值
- A2: MOV A,R1;到table取码
- MOVC A,@A+DPTR
- LCALL WRITE2 ;显示到lcd
- INC R1
- CJNE A,#00H,A2 ;是否到00h
- RET
- ORG 0C000H
- TABLE1: db"NAME: amy ",00H
- TAB: db"Tel:13218892322 ",00H
复制代码
所有资料51hei提供下载:
正确代码.zip
(4.35 KB, 下载次数: 56)
|