📄 key_lcd.lst
字号:
C51 COMPILER V8.05a KEY_LCD 05/23/2008 20:23:31 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE KEY_LCD
OBJECT MODULE PLACED IN key_lcd.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE key_lcd.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3 #define uchar unsigned char
4 #define uint unsigned int
5 #define shuju P0
6 #define bus P1
7 //#define lcdbus P3
8 sbit rs=P2^7;
9 sbit rw=P2^6;
10 sbit e=P2^5;
11 sbit sda=P2^0; //IO口定义
12 sbit scl=P2^1;
13 uchar r;
14 void delayms(int i)
15 {
16 1 int j;
17 1 for(j=0;j<i;j++);
18 1 }
19 void enable()
20 {
21 1 rs=0;
22 1 rw=0;
23 1 e=0;
24 1 delayms(65000);
25 1 e=1;
26 1 }
27 void write()
28 {
29 1 rs=1;
30 1 rw=0;
31 1 e=0;
32 1 delayms(65000);
33 1 e=1;
34 1 }
35 void chushi()
36 {
37 1 sda=0;
38 1 scl=0;
39 1 shuju=0x01;
40 1 enable();
41 1 shuju=0x38;
42 1 enable();
43 1 shuju=0x0f;
44 1 enable();
45 1 shuju=0x06;
46 1 enable();
47 1 shuju=0x80;
48 1 enable();
49 1 }
50 void display(uchar i)
51 {
52 1 shuju=i;
53 1 write();
54 1 }
55 void jianpan()
C51 COMPILER V8.05a KEY_LCD 05/23/2008 20:23:31 PAGE 2
56 {
57 1 uchar a;
58 1 uchar k;
59 1 bus=0xff;
60 1 bus=0xef; //扫描第一行
61 1 delayms(6000);
62 1 a=bus;
63 1 a=a&0x0f;
64 1 if(a!=0x0f)
65 1 {
66 2 delayms(2000);
67 2 if(a!=0x0f)
68 2 {
69 3 switch(a)
70 3 {
71 4 case 0x0e:
72 4 k=0x41;
73 4
74 4 break;
75 4 case 0x0d:
76 4 k=0x42;
77 4
78 4 break;
79 4 case 0x0b:
80 4 k=0x43;
81 4
82 4 break;
83 4 case 0x07:
84 4 k=0x44;
85 4
86 4 break;
87 4 }
88 3 display(k);
89 3 r=r-1;
90 3 while(a!=0x0f)
91 3 {
92 4 bus=0x0f;
93 4 delayms(2000);
94 4 a=bus;
95 4 }
96 3 }
97 2 }
98 1 bus=0xdf; //扫描第二行
99 1 delayms(6000);
100 1 a=bus;
101 1 a=a&0x0f;
102 1 if(a!=0x0f)
103 1 {
104 2 delayms(2000);
105 2 if(a!=0x0f)
106 2 {
107 3 switch(a)
108 3 {
109 4 case 0x0e:
110 4 k=0x45;
111 4 break;
112 4 case 0x0d:
113 4 k=0x46;
114 4 break;
115 4 case 0x0b:
116 4 k=0x47;
117 4 shuju=0x07;
C51 COMPILER V8.05a KEY_LCD 05/23/2008 20:23:31 PAGE 3
118 4 break;
119 4 case 0x07:
120 4 k=0x48;
121 4 break;
122 4 }
123 3 display(k);
124 3 r=r-1;
125 3 while(a!=0x0f)
126 3 {
127 4 bus=0x0f;
128 4 delayms(2000);
129 4 a=bus;
130 4
131 4 }
132 3 }
133 2 }
134 1 bus=0xbf; //扫描第3行
135 1
136 1 delayms(6000);
137 1 a=bus;
138 1 a=a&0x0f;
139 1 if(a!=0x0f)
140 1 {
141 2 delayms(2000);
142 2 if(a!=0x0f)
143 2 {
144 3 switch(a)
145 3 {
146 4 case 0x0e:
147 4 k=0x49;
148 4
149 4 break;
150 4 case 0x0d:
151 4 k=0x4a;
152 4
153 4 break;
154 4 case 0x0b:
155 4 k=0x4b;
156 4 break;
157 4 case 0x07:
158 4 k=0x4c;
159 4 break;
160 4 }
161 3 display(k);
162 3 r=r-1;
163 3 while(a!=0x0f)
164 3 {
165 4 bus=0x0f;
166 4 delayms(2000);
167 4 a=bus;
168 4
169 4 }
170 3 }
171 2 }
172 1 bus=0x7f; //扫描第4行
173 1 delayms(6000);
174 1 a=bus;
175 1 a=a&0x0f;
176 1 if(a!=0x0f)
177 1 {
178 2 delayms(2000);
179 2 if(a!=0x0f)
C51 COMPILER V8.05a KEY_LCD 05/23/2008 20:23:31 PAGE 4
180 2 {
181 3 switch(a)
182 3 {
183 4 case 0x0e:
184 4 k=0x4d;
185 4 break;
186 4 case 0x0d:
187 4 k=0x4e;
188 4 break;
189 4 case 0x0b:
190 4 k=0x4f;
191 4 break;
192 4 case 0x07:
193 4 k=0x50;
194 4 break;
195 4 }
196 3 display(k);
197 3 r=r-1;
198 3 while(a!=0x0f)
199 3 {
200 4 bus=0x0f;
201 4 delayms(2000);
202 4 a=bus;
203 4 }
204 3 }
205 2 }
206 1 }
207 void main()
208 {
209 1 while(1)
210 1 {
211 2 chushi();
212 2 r=0x10;
213 2 while(r>0)
214 2 {
215 3 jianpan();
216 3 }
217 2 shuju=0xc0;
218 2 enable();
219 2 r=0x10;
220 2 while(r>0)
221 2 {
222 3 jianpan();
223 3 }
224 2 }
225 1 }
226
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 456 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 1 ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -