📄 lcd.lst
字号:
C51 COMPILER V7.50 LCD 08/17/2007 14:21:05 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN .\LCD.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE D:\LCD\LCD.c BROWSE DEBUG OBJECTEXTEND PRINT(.\LCD.lst) OBJECT(.\LCD.obj)
line level source
1 #include<reg51.h>
2 #include<absacc.h>
3 #include<INTRINS.H>
4 #define uint unsigned int
5 sbit P1_0=P1^0;
6 sbit P1_1=P1^1;
7 sbit P1_2=P1^2;
8 sbit P2_0=P2^3;
9 sbit P2_1=P2^4;
10 sbit P2_2=P2^5;
11 sbit P2_3=P2^0;
12 sbit P2_4=P2^1;
13 sbit P2_5=P2^2;
14 #define Lcdbusy 0x80 //LCD忙判断位
15 #define uchar unsigned char
16 #define key XBYTE[0x2fff]
17 uchar (*PP)[32],*Q,rr,(*QQ)[16];
18 uchar I,X,Y,KK=0,LL=0,KK2=0,LL2=0,KK0=0,LL0=0;
19 unsigned long F=0;
20 uint flag2=0,flag3=0;
21 uchar code HZI11[5][32]={ //汉字(16*16)
22 {0x00,0x02,0x02,0xC2,0x02,0x02,0x02,0x02,0xFE,0x82,0x82,0x82,0x82,0x82,0x02,0x00,
23 0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x00},
24 {0x02,0xF2,0x12,0x12,0x3E,0x00,0x04,0x84,0x44,0xB5,0x86,0x84,0xE4,0x44,0x04,0x00,
25 0x01,0x23,0x41,0x81,0x7F,0x00,0x21,0x71,0x29,0x25,0x22,0x21,0x28,0x70,0x20,0x00},
26 {0x10,0x60,0x01,0xE6,0x00,0xF8,0x88,0x88,0x88,0xFF,0x88,0x88,0x88,0x18,0x08,0x00,
27 0x04,0x04,0xFF,0x40,0x30,0x8F,0x80,0x41,0x26,0x18,0x18,0x26,0x61,0xC0,0x40,0x00},
28 {0x20,0x3C,0x20,0x20,0xBF,0x24,0x24,0x00,0xF2,0x1A,0xD6,0x12,0x12,0xF2,0x02,0x00,
29 0x44,0x43,0x20,0x10,0x0B,0x04,0x43,0x40,0x27,0x18,0x07,0x08,0x10,0x27,0x60,0x00},
30 {0x00,0x0C,0x14,0xA4,0x04,0x64,0x35,0xAE,0x64,0x24,0x14,0xA4,0x14,0x04,0x04,0x00,
31 0x08,0x0A,0x09,0x08,0x08,0x0A,0x0B,0xFE,0x0A,0x0B,0x0C,0x08,0x09,0x0A,0x08,0x00}};
32 uchar code HZI22[]={ //正弦波(64*32)
33 0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0xE0,0x70,0x38,0x1C,0x0C,0x06,0x07,0x03,0x03,
34 0x03,0x03,0x03,0x03,0x07,0x06,0x1C,0x38,0x70,0xE0,0xC0,0x00,0x00,0x00,0x00,0x00,
35 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
36 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
37 0xC0,0xF0,0x78,0x1C,0x0F,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
38 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x0F,0x1E,0x78,0xE0,0x80,
39 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
40 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
41 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
42 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x07,
43 0x0F,0x3C,0x70,0xE0,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
44 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,0x70,0x38,0x1C,0x0E,0x07,
45 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
46 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
47 0x00,0x00,0x00,0x01,0x03,0x07,0x0E,0x1C,0x38,0x30,0x60,0x60,0x60,0x40,0x60,0x60,
48 0x60,0x60,0x30,0x30,0x18,0x1C,0x0C,0x06,0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x00};
49 uchar code HZI0[2][16]={ //":0"(8*8)
50 {0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00},
51 {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00}};
52 uchar code HZI1[3][16]={ //"100"(每个字符8*8)
53 {0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00},
54 {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},
55 {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00}};
C51 COMPILER V7.50 LCD 08/17/2007 14:21:05 PAGE 2
56 uchar code HZI2[3][16]={ //"200"(每个字符8*8)
57 {0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00},
58 {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},
59 {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00}};
60 uchar code HZI3[3][16]={ //"300"(每个字符8*8)
61 {0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00},
62 {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00},
63 {0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00}};
64 void delay1(void) //延时10us
65 {
66 1 uchar i;
67 1 for(i=5;i>0;i--);
68 1 }
69 void delay2(void) //延时2s
70 {
71 1 uchar i,j,k;
72 1 for(i=2;i>0;i--)
73 1 for(j=255;j>0;j--)
74 1 for(k=255;k>0;k--);
75 1 }
76 void delay3(void) //延时1s
77 {
78 1 uchar i,j,k;
79 1 for(i=1;i>0;i--)
80 1 for(j=175;j>0;j--)
81 1 for(k=255;k>0;k--);
82 1 }
83 void lcdbusy(void) //判忙子程序
84 {
85 1 P2_0=0;
86 1 P2_1=1;
87 1 P0=0xFF;
88 1 P2_2=1;_nop_();
89 1 while(P0&Lcdbusy!=0x00);
90 1 P2_2=0;
91 1 }
92 void WRI(uchar r) //写指令子程序
93 {
94 1 lcdbusy(); //判忙
95 1 P2_2=0;
96 1 P2_1=0;
97 1 P2_0=0;
98 1 P0=r;
99 1 P2_2=1;
100 1 delay1();
101 1 P2_2=0;
102 1 }
103 void WRD(uchar r1) //写数据子程序
104 {
105 1 lcdbusy(); //判忙
106 1 P2_2=0;
107 1 P2_1=0;
108 1 P2_0=1;
109 1 P0=r1;
110 1 P2_2=1;
111 1 delay1();
112 1 P2_2=0;
113 1 }
114 void clear(void) //清屏子程序
115 {
116 1 uchar RR,RR1,RR2,page;
117 1 page=0xB8; //设置页地址
C51 COMPILER V7.50 LCD 08/17/2007 14:21:05 PAGE 3
118 1 for(RR2=8;RR2>0;RR2--) //8页
119 1 {
120 2 RR1=page;
121 2 WRI(RR1);
122 2 RR1=0x40;
123 2 WRI(RR1);
124 2 for(RR=128;RR>0;RR--) //128列
125 2 {
126 3 RR1=0x00; //送0,清显示
127 3 WRD(RR1);
128 3 }
129 2 page++;
130 2 }
131 1 }
132 void outhz0(uchar(*p0)[16],uchar x0,uchar y0) //取数送显示(":0")
133 {
134 1 uchar rr00,rr01,rr05;
135 1 for(rr00=2;rr00>0;rr00--) //共两页
136 1 {
137 2 rr01=y0+0x40; //设置列地址
138 2 WRI(rr01);
139 2 rr01=x0+0xB9; //设置页地址
140 2 WRI(rr01);
141 2 while(KK0<2) //共两个字符
142 2 {
143 3 for(rr05=8;rr05>0;rr05--) //一个字符8列显示
144 3 {
145 4 rr01=*(*(p0+KK0)+LL0); //取数
146 4 WRD(rr01);
147 4 delay1();
148 4 LL0++;
149 4 }
150 3 break;
151 3 }
152 2 x0++;
153 2 }
154 1 LL0=0;KK0++;
155 1 rr01=0xC0; //设置显示起始行
156 1 WRI(rr01);
157 1 rr01=0x3F; //开显示
158 1 WRI(rr01);
159 1 rr00=5; //延时显示
160 1 for(rr00=5;rr00>0;rr00--)
161 1 {
162 2 delay3();
163 2 }
164 1 }
165 void outhz11(uchar(*p)[32],uchar x,uchar y) //取数送显示(汉字)
166 {
167 1 uchar rr0,rr1,rr5;
168 1 for(rr0=2;rr0>0;rr0--)
169 1 {
170 2 rr1=y+0x40;
171 2 WRI(rr1);
172 2 rr1=x+0xB9;
173 2 WRI(rr1);
174 2 while(KK<5)
175 2 {
176 3 for(rr5=16;rr5>0;rr5--)
177 3 {
178 4 rr1=*(*(p+KK)+LL);
179 4 WRD(rr1);
C51 COMPILER V7.50 LCD 08/17/2007 14:21:05 PAGE 4
180 4 delay1();
181 4 LL++;
182 4 }
183 3 break;
184 3 }
185 2 x++;
186 2 }
187 1 LL=0;KK++;
188 1 rr1=0xC0;
189 1 WRI(rr1);
190 1 rr1=0x3F;
191 1 WRI(rr1);
192 1 rr0=5;
193 1 for(rr0=5;rr0>0;rr0--)
194 1 {
195 2 delay3();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -