利用STC89C52单片机控制LCD1602(不带中文字库)显示的中文
ALL DELAY1S
MOV P0,#01H
ACALL ENABLE
ACALL DISPLAY_C3
//0
MOV P0,#89H
ACALL ENABLE
MOV P0,#00H
ACALL WRITE
MOV P0,#8AH
ACALL ENABLE
MOV P0,#01H
ACALL WRITE
MOV P0,#0C9H
ACALL ENABLE
MOV P0,#02H
ACALL WRITE
MOV P0,#0CAH
ACALL ENABLE
MOV P0,#03H
ACALL WRITE
LCALL DELAY1S
MOV P0,#01H
ACALL ENABLE
ACALL DISPLAY_C4
//7
MOV P0,#8BH
ACALL ENABLE
MOV P0,#00H
ACALL WRITE
MOV P0,#8CH
ACALL ENABLE
MOV P0,#01H
ACALL WRITE
MOV P0,#0CBH
ACALL ENABLE
MOV P0,#02H
ACALL WRITE
MOV P0,#0CCH
ACALL ENABLE
MOV P0,#03H
ACALL WRITE
//3
MOV P0,#8DH
ACALL ENABLE
MOV P0,#04H
ACALL WRITE
MOV P0,#8EH
ACALL ENABLE
MOV P0,#05H
ACALL WRITE
MOV P0,#0CDH
ACALL ENABLE
MOV P0,#06H
ACALL WRITE
MOV P0,#0CEH
ACALL ENABLE
MOV P0,#07H
ACALL WRITE
LCALL DELAY1S
MOV P0,#01H
ACALL ENABLE
LJMP DISPLAY
DISPLAY_C0:MOV DPTR,#TAB0
MOV R2,#48
ACALL DISPLAY_C
RET
DISPLAY_C1:MOV DPTR,#TAB1
MOV R2,#48
ACALL DISPLAY_C
RET
DISPLAY_C2:MOV DPTR,#TAB2
MOV R2,#48
ACALL DISPLAY_C
RET
DISPLAY_C3:MOV DPTR,#TAB3
MOV R2,#32
ACALL DISPLAY_C
RET
DISPLAY_C4:MOV DPTR,#TAB4
MOV R2,#64
ACALL DISPLAY_C
RET
DISPLAY_C:MOV P0,#40H
ACALL ENABLE
MOV R3,#0
DISPLAY_CC:MOV A,R3
MOVC A,@A+DPTR
MOV P0,A
LCALL WRITE
INC R3
DJNZ R2,DISPLAY_CC
RET
ENABLE:
CLR RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
WRITE:
SETB RS
CLR RW
CLR E
ACALL DELAY
SETB E
RET
DELAY1S:SETB TR0
CJNE R0,#20,DELAY1S
CLR TR0
MOV R0,#0
RET
DELAY:MOV R5,#08H
L1:MOV R4,#0FAH
L0:DJNZ R4,L0
DJNZ R5,L1
RET
Timer_IT:MOV TH0,#0A6H
MOV TL0,#00H
INC R0
RETI
TAB0: //我
DB 0x00,0x07,0x01,0x01,0x01,0x1F,0x01,0x01
DB 0x19,0x01,0x01,0x01,0x01,0x1F,0x01,0x01
DB 0x00,0x08,0x04,0x04,0x00,0x1F,0x00,0x04
DB 0x01,0x07,0x19,0x01,0x01,0x01,0x05,0x02
DB 0x18,0x00,0x00,0x01,0x06,0x00,0x00,0x00
DB 0x14,0x18,0x10,0x08,0x09,0x05,0x03,0x01
TAB1: //们
DB 0x01,0x01,0x02,0x02,0x06,0x04,0x0c,0x14
DB 0x08,0x04,0x06,0x04,0x10,0x10,0x10,0x10
DB 0x00,0x00,0x1e,0x02,0x02,0x02,0x02,0x02
DB 0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00
DB 0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x00
DB 0x02,0x02,0x02,0x02,0x02,0x0a,0x04,0x00
TAB2: //的
DB 0x02,0x02,0x04,0x0f,0x08,0x08,0x08,0x0f
DB 0x02,0x02,0x02,0x13,0x14,0x14,0x18,0x12
DB 0x00,0x00,0x00,0x1e,0x02,0x02,0x02,0x02
DB 0x08,0x08,0x08,0x08,0x0f,0x08,0x08,0x00
DB 0x11,0x11,0x10,0x10,0x10,0x10,0x00,0x00
DB 0x02,0x12,0x12,0x02,0x02,0x14,0x08,0x00
TAB3: //0
DB 0x00,0x00,0x03,0x04,0x08,0x08,0x08,0x08
DB 0x00,0x00,0x18,0x04,0x02,0x02,0x02,0X02
DB 0x08,0x08,0x08,0x08,0x04,0x03,0x00,0x00
DB 0x02,0x02,0x02,0x02,0x04,0x18,0x00,0x00
TAB4: //7
DB 0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x00
DB 0x00,0x00,0x1E,0x1E,0x06,0x06,0x06,0X06
DB 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
DB 0x06,0x06,0x06,0x06,0x06,0x06,0x00,0x00
//3
DB 0x00,0x00,0x0F,0x0F,0x00,0x00,0x00,0x0F
DB 0x00,0x00,0x1E,0x1E,0x06,0x06,0x06,0X1E
DB 0x0F,0x00,0x00,0x00,0x0F,0x0F,0x00,0x00
DB 0x1E,0x06,0x06,0x06,0x1E,0x1E,0x00,0x00
END
四、总结:
虽然LCD1602可以利用自建字符显示中文,但最多不能超过8个字符位。所以实际应用中,无法同时显示“我们的073”。该段程序没来得及优化,没有充分利用单片机做重复的事情的优点;并且使代码量增大,可读较差(重复的,看起来头晕);注释少也致使可读性差!
STC89C52单片机控制LCD160 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)