1602显示中文
2010-08-16 14:21 李龙江 阅读(1753) 评论(0) 编辑 收藏 举报因1602每个字符用5*8点阵所以只能显示简单的字符,以下程序为了简洁只显示一个中文“年”
1 /*
2 RS =数据/命令选择端(H/L)
3 R/W=读/写选择端(H/L)因TX-1X开发板此脚接地所以只能写不能读取,故本程序不读只写
4 此试验板1602液晶接P0口故此数据通过P0传送
5 lilongjiang@live.com 8/16/2010
6 */
7
8 #include<reg52.h>
9 #define uchar unsigned char
10 #define uint unsigned int
11 sbit EN=P3^4;
12 sbit RS=P3^5;
13 sbit dula=P2^6; //断选
14 sbit wela=P2^7; //位选 因这两个芯片也接在P0口故使用液晶避免造成电压低故关闭这两个芯片
15 uchar code year[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02};
16 void delay(uint);
17 uchar i;
18 void write_com(uchar com) //写命令
19 {
20 RS=0;
21 P0=com;
22 delay(1);
23 EN=1;
24 EN=0;
25 }
26 void write_data(uchar date) //写数据
27 {
28 RS=1;
29 P0=date;
30 delay(1);
31 EN=1;
32 EN=0;
33 }
34 void init()
35 {
36 EN=0;
37 dula=0; //关闭断选
38 wela=0; //关闭位选
39 write_com(0x38); //开显示
40 write_com(0x0F); //光标
41 write_com(0x06); //指针
42 }
43 void main()
44 {
45 init();
46 write_com(0x40); //将自定义字符写入CGRAM
47 for(i=0;i<9;i++) //循环8次写入
48 {
49 write_data(year[i]);
50 }
51 write_com(0x80); //写入初始地址
52 write_data(0x00);
53 while(1);
54 }
55 void delay(uint x)
56 {
57 uint i;
58 while(x--)
59 for(i=0;i<110;i++);
60 }
2 RS =数据/命令选择端(H/L)
3 R/W=读/写选择端(H/L)因TX-1X开发板此脚接地所以只能写不能读取,故本程序不读只写
4 此试验板1602液晶接P0口故此数据通过P0传送
5 lilongjiang@live.com 8/16/2010
6 */
7
8 #include<reg52.h>
9 #define uchar unsigned char
10 #define uint unsigned int
11 sbit EN=P3^4;
12 sbit RS=P3^5;
13 sbit dula=P2^6; //断选
14 sbit wela=P2^7; //位选 因这两个芯片也接在P0口故使用液晶避免造成电压低故关闭这两个芯片
15 uchar code year[]={0x08,0x0F,0x12,0x0F,0x0A,0x1F,0x02,0x02};
16 void delay(uint);
17 uchar i;
18 void write_com(uchar com) //写命令
19 {
20 RS=0;
21 P0=com;
22 delay(1);
23 EN=1;
24 EN=0;
25 }
26 void write_data(uchar date) //写数据
27 {
28 RS=1;
29 P0=date;
30 delay(1);
31 EN=1;
32 EN=0;
33 }
34 void init()
35 {
36 EN=0;
37 dula=0; //关闭断选
38 wela=0; //关闭位选
39 write_com(0x38); //开显示
40 write_com(0x0F); //光标
41 write_com(0x06); //指针
42 }
43 void main()
44 {
45 init();
46 write_com(0x40); //将自定义字符写入CGRAM
47 for(i=0;i<9;i++) //循环8次写入
48 {
49 write_data(year[i]);
50 }
51 write_com(0x80); //写入初始地址
52 write_data(0x00);
53 while(1);
54 }
55 void delay(uint x)
56 {
57 uint i;
58 while(x--)
59 for(i=0;i<110;i++);
60 }