因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 }