利用STC89C52单片机控制LCD1602(不带中文字库)显示的中文
使用STC89C52单片机控制1602LCD(不带中文字库的);利用1602LCD(不带中文字库的)中的存储器(64个字节00H-3FH)自建立8个5×8点阵的字符从而显示中文字符。
二、LCD1602的指令集:
1、清屏
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
00 | 00000001 |
运行时间(250Khz):1.64ms;
功能:清DDRAM和AC值。
2、归位
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
00 | 0000001* |
运行时间(250Khz):1.64ms;
功能:AC=0,光标、画面回HOME位。
3、输入方式设置
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
00 | 000001I/DS |
运行时间(250Khz):40us;
功能:设置光标、画面移动方式。
其中:I/D=1:数据读、写操作后,AC自动增一;
I/D=0:数据读、写操作后,AC自动减一;
S=1:数据读、写操作,画面平移;
S=0:数据读、写操作,画面不动;
4、显示开关控制
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
00 | 00001DCB |
运行时间(250Khz):40us;
功能:设置显示、光标及闪烁开、关。
其中:D表示显示开关:D=1为开,D=0为关;
C表示光标开关:C=1为开,C=0为关;
B表示闪烁开关:B=1为开,B=0为关。
5、光标、画面位移
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
00 | 0001S/CR/L** |
运行时间(250Khz):40us;
功能:光标、画面移动,不影响DDRAM。
其中:S/C=1:画面平移一个字符位;
S/C=0:光标平移一个字符位;
R/L=1:右移;R/L=0:左移。
6、功能设置
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
00 | 001DLNF** |
运行时间(250Khz):40us;
功能:工作方式设置(初始化指令)。
其中:DL=1,8位数据接口;DL=0,四位数据接口;
N=1,两行显示;N=0,一行显示;
F=1,5´10点阵字符;F=0,5´7点阵字符。
7、CGRAM地址设置
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
00 | 01A5A4A3A2A1A0 |
运行时间(250Khz):40us;
功能:设置CGRAM地址。A5~A0=0~3FH。
8、DDRAM地址设置
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
00 | 1A6A5A4A3A2A1A0 |
运行时间(250Khz):40us;
功能:设置DDRAM地址。
N=0,一行显示A6~A0=0~4FH;
N=1,两行显示,首行A6~A0=00H~2FH,
次行A6~A0=40H~67H。
9、读BF及AC值
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
01 | BFAC6AC5AC4AC3AC2AC1AC0 |
功能:读忙BF值和地址计数器AC值。
其中:BF=1:忙;BF=0:准备好。
此时,AC值意义为最近一次地址设置(CGRAM或DDRAM)定义。
10、写数据
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
10 | 数据 |
运行时间(250Khz):40us;
功能:根据最近设置的地址性质,数据写入DDRAM或CGRAM内。
11、读数据
RSR/W | DB7DB6DB5DB4DB3DB2DB1DB0 |
11 | 数据 |
运行时间(250Khz):40us;
功能:根据最近设置的地址性质,从DDRRAM或CGRAM数据读出。
三、程序:
//液晶显示中文-版本0.0
//作者:pcdian
//定义液晶的一些功能位
//RS 为数据、指令寄存器选择位
//RW 为读写选择位
//E 为使能位
RS BIT p2.5
RW BIT P2.6
E BIT P2.7
ORG 0000H
SJMP START
ORG 000BH
LJMP Timer_IT
ORG 0030H
START:MOV SP,#60H
MOV TMOD,#01H
MOV TH0,#0A6H
MOV TL0,#00H
SETB EA
SETB ET0
CLR TR0
MAIN:MOV P0,#01H //清屏
ACALL ENABLE
MOV P0,#38H //显示模式设置为16字*2行
ACALL ENABLE
MOV P0,#0CH //不显示光标
ACALL ENABLE
MOV P0,#06H //显示方向正向且屏不移动
ACALL ENABLE
DISPLAY:ACALL DISPLAY_C0
//我
MOV P0,#80H
ACALL ENABLE
MOV P0,#00H
ACALL WRITE
MOV P0,#81H
ACALL ENABLE
MOV P0,#01H
ACALL WRITE
MOV P0,#82H
ACALL ENABLE
MOV P0,#02H
ACALL WRITE
MOV P0,#0C0H
ACALL ENABLE
MOV P0,#03H
ACALL WRITE
MOV P0,#0C1H
ACALL ENABLE
MOV P0,#04H
ACALL WRITE
MOV P0,#0C2H
ACALL ENABLE
MOV P0,#05H
ACALL WRITE
LCALL DELAY1S
MOV P0,#01H
ACALL ENABLE
ACALL DISPLAY_C1
//们
MOV P0,#83H
ACALL ENABLE
MOV P0,#00H
ACALL WRITE
MOV P0,#84H
ACALL ENABLE
MOV P0,#01H
ACALL WRITE
MOV P0,#85H
ACALL ENABLE
MOV P0,#02H
ACALL WRITE
MOV P0,#0C3H
ACALL ENABLE
MOV P0,#03H
ACALL WRITE
MOV P0,#0C4H
ACALL ENABLE
MOV P0,#04H
ACALL WRITE
MOV P0,#0C5H
ACALL ENABLE
MOV P0,#05H
ACALL WRITE
LCALL DELAY1S
MOV P0,#01H
ACALL ENABLE
ACALL DISPLAY_C2
//的
MOV P0,#86H
ACALL ENABLE
MOV P0,#00H
ACALL WRITE
MOV P0,#87H
ACALL ENABLE
MOV P0,#01H
ACALL WRITE
MOV P0,#88H
ACALL ENABLE
MOV P0,#02H
ACALL WRITE
MOV P0,#0C6H
ACALL ENABLE
MOV P0,#03H
ACALL WRITE
MOV P0,#0C7H
ACALL ENABLE
MOV P0,#04H
ACALL WRITE
MOV P0,#0C8H
ACALL ENABLE
MOV P0,#05H
ACALL WRITE
LC
STC89C52单片机控制LCD160 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)