1602LCD分兩行顯示文字
1602LCD分兩行顯示文字(不能顯示中文)
1 /*
2 RS =數(shù)據(jù)/命令選擇端(H/L)
3 R/W=讀/寫(xiě)選擇端(H/L)因TX-1X開(kāi)發(fā)板此腳接地所以只能寫(xiě)不能讀取,故本程序不讀只寫(xiě)
4 此試驗(yàn)板1602液晶接P0口故此數(shù)據(jù)通過(guò)P0傳送
5 lilongjiang@live.com 8/16/2010
6 */
7
8 #include
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; //位選 因這兩個(gè)芯片也接在P0口故使用液晶避免造成電壓低故關(guān)閉這兩個(gè)芯片
15 uchar code tab1[]="0123456789ABCDEF"; //第一樣顯示的數(shù)據(jù)
16 uchar code tab2[]="GHIJKLMNOPQRSTUV"; //第二行顯示的數(shù)據(jù)
17 void delay(uint);
18 uchar i;
19 void write_com(uchar com) //寫(xiě)命令
20 {
21 RS=0;
22 P0=com;
23 delay(1);
24 EN=1;
25 EN=0;
26 }
27 void write_data(uchar date) //寫(xiě)數(shù)據(jù)
28 {
29 RS=1;
30 P0=date;
31 delay(1);
32 EN=1;
33 EN=0;
34 }
35 void init()
36 {
37 EN=0;
38 dula=0; //關(guān)閉斷選
39 wela=0; //關(guān)閉位選
40 write_com(0x38); //開(kāi)顯示
41 write_com(0x0F); //光標(biāo)
42 write_com(0x06); //指針
43 write_com(0x01); //清屏
44 }
45 void main()
46 {
47 init();
48 write_com(0x80); //第一行顯示地址設(shè)為80H
49 for(i=0;i<16;i++)
50 {
51 write_data(tab1[i]);
52 }
53 write_com(0xC0); //第二行顯示地址設(shè)為80H+40H
54 for(i=0;i<16;i++)
55 {
56 write_data(tab2[i]);
57 }
58 while(1);
59 }
60 void delay(uint x)
61 {
62 uint i;
63 while(x--)
64 for(i=0;i<110;i++);
65 }