📄
字号:
C51 COMPILER V8.05a 测电压 12/11/2008 15:07:08 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE 测电压
OBJECT MODULE PLACED IN 测电压.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 测电压.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #define uchar unsigned char
3 #define uint unsigned int
4
5
6
7 #define uchar unsigned char
8 #define uint unsigned int
9
10 uchar a,b,c,d;
11 unsigned char getdata;
12 unsigned int temp;
13 unsigned int j;
14 unsigned char m;
15
16
17
18 uchar code table0[]=" The V Is:";
19 uchar code table2[]="0123456789MV .";
20
21
22
23
24
25 sbit rs=P2^5;
26 sbit rw=P2^6;
27 sbit e =P2^7;
28
29
30 sbit ST=P3^0;
31 sbit OE=P3^1;
32 sbit EOC=P3^2;
33 sbit CLK=P3^3;
34 sbit ALE=P3^7;
35
36
37
38 sbit led1=P2^2;
39 sbit led2=P2^3;
40 sbit led3=P2^4;
41
42 sbit s1=P2^0;
43 sbit s2=P2^1;
44
45
46 #define _v0_2 {s1=0;s2=1;}
47 #define _v2 {s1=1;s2=0;}
48 #define _v20 {s1=0;s2=0;}
49
50
51 void TimeInitial();
52
53
54 void TimeInitial()
55 { TMOD=0x10;
C51 COMPILER V8.05a 测电压 12/11/2008 15:07:08 PAGE 2
56 1 TH1=(65536-200)/256;
57 1 TL1=(65536-200)%256;
58 1 EA=1;
59 1 ET1=1;
60 1 TR1=1;
61 1 }
62
63
64 void delay(unsigned char x)
65 {
66 1 unsigned char a,b;
67 1 for(a=x;a!=0;a--)
68 1 for(b=20;b!=0;b--);
69 1 }
70
71
72 void writecomm(uchar comm)
73 {
74 1 P0=comm;
75 1 rs=0;
76 1 rw=0;
77 1 e=0;
78 1 delay(5);
79 1 e=1;
80 1 delay(5);
81 1 e=0;
82 1 }
83
84
85 void writedat(uchar dat)
86 {
87 1 P0=dat;
88 1 rs=1;
89 1 rw=0;
90 1 e=0;
91 1 delay(5);
92 1 e=1;
93 1 delay(5);
94 1 e=0;
95 1 }
96
97
98 void writesmh(uchar add,uchar date)
99 {
100 1 uchar count;
101 1 count=date;
102 1 writecomm(0xc0+add);
103 1 delay(5);
104 1 writedat(table2[count]);
105 1 delay(5);
106 1 }
107
108
109 void init()
110 {
111 1 uchar i;
112 1 delay(50);
113 1 writecomm(0x38);
114 1 delay(50);
115 1 writecomm(0x0c);
116 1 delay(50);
117 1 writecomm(0x06);
C51 COMPILER V8.05a 测电压 12/11/2008 15:07:08 PAGE 3
118 1 delay(50);
119 1 writecomm(0x01);
120 1 delay(50);
121 1 writecomm(0x80);
122 1 delay(5);
123 1 for(i=0;i<10;i++ )
124 1 {
125 2 writedat(table0[i]);
126 2
127 2 delay(5);
128 2 }
129 1 writesmh(4,a);
130 1 delay(5);
131 1 writesmh(5,b);
132 1 delay(5);
133 1 writesmh(7,c);
134 1 delay(5);
135 1 writesmh(8,d);
136 1 delay(5);
137 1
138 1 }
139
140 void main()
141 { init();
142 1
143 1 _v20;
144 1 m=1;
145 1 TimeInitial();
146 1 while(1)
147 1 {
148 2
149 2
150 2 ST=1;
151 2 ST=0;
152 2 while(EOC==0);
153 2 OE=1;
154 2 getdata=P1;
155 2 OE=0;
156 2 if ((s1==0) && (s2==0) && (temp<200))
157 2 {
158 3 _v2;
159 3 m=2;
160 3
161 3 }
162 2 else if ((s1==1)&&(s2==0) && (getdata<26))
163 2 {
164 3
165 3 _v0_2;
166 3
167 3 m=3;
168 3 }
169 2 else if((s1==0)&&(s2==1) && (getdata>254))
170 2 {
171 3
172 3 _v2;
173 3 m=2;
174 3 }
175 2 else if ((s1==1)&&(s2==0) && (getdata>254))
176 2 {
177 3
178 3 _v20;
179 3 m=1;
C51 COMPILER V8.05a 测电压 12/11/2008 15:07:08 PAGE 4
180 3 }
181 2 temp=(getdata*1.0/255)*2000;
182 2 a=temp/1000;
183 2 b=temp/100%10;
184 2 c=temp/10%10;
185 2 d=temp%10;
186 2
187 2 if(m==1)
188 2 {
189 3
190 3 writesmh(4,a);
191 3 delay(5);
192 3 writesmh(5,b);
193 3 delay(5);
194 3 writesmh(6,13);
195 3 delay(5);
196 3 writesmh(7,c);
197 3 delay(5);
198 3 writesmh(8,d);
199 3 delay(5);
200 3 writesmh(9,12);
201 3 delay(5);
202 3 writesmh(10,11);
203 3 delay(5);
204 3
205 3 led2=1;
206 3 led1=0;
207 3 led3=1;
208 3 }
209 2 if (m==2)
210 2 {
211 3 writesmh(4,a);
212 3 delay(5);
213 3 writesmh(5,b);
214 3 delay(5);
215 3 writesmh(6,c);
216 3 delay(5);
217 3 writesmh(7,d);
218 3 delay(5);
219 3 writesmh(8,12);
220 3 delay(5);
221 3 writesmh(9,10);
222 3 delay(5);
223 3 writesmh(10,11);
224 3 delay(5);
225 3 led2=0;
226 3 led1=1;
227 3 led3=1;
228 3 }
229 2 if (m==3)
230 2 {
231 3
232 3 writesmh(4,a);
233 3 delay(5);
234 3 writesmh(5,b);
235 3 delay(5);
236 3 writesmh(6,c);
237 3 delay(5);
238 3 writesmh(7,13);
239 3 delay(5);
240 3 writesmh(8,d);
241 3 delay(5);
C51 COMPILER V8.05a 测电压 12/11/2008 15:07:08 PAGE 5
242 3 writesmh(9,10);
243 3 delay(5);
244 3 writesmh(10,11);
245 3 delay(5);
246 3 led2=1;
247 3 led1=1;
248 3 led3=0;
249 3 }
250 2 for(j=0;j<40;j++)
251 2 delay(250);
252 2 }
253 1 }
254
255 void t1(void) interrupt 3 using 0
256 {
257 1 TH1=(65536-200)/256;
258 1 TL1=(65536-200)%256;
259 1 CLK=~CLK;
260 1 }
261
262
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 612 ----
CONSTANT SIZE = 26 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 10 ----
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 + -