📄 cehngxu.lst
字号:
C51 COMPILER V8.02 CEHNGXU 04/28/2012 11:25:16 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE CEHNGXU
OBJECT MODULE PLACED IN cehngxu.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE cehngxu.c BROWSE DEBUG OBJECTEXTEND
line level source
1 #include<reg52.h>
2 #include<intrins.h>
3 sbit rd=P3^7;
4 sbit wr=P3^6; //adc0804
5 sbit cs=P3^0;
6
7 sbit en=P3^2; //液晶
8 sbit lcdrs=P3^3;
9
10 sbit ledh=P2^4; //二极管
11 sbit ledl=P2^5;
12
13
14 sbit keyv1=P2^3; //按键
15 sbit key0=P2^0;
16 sbit keyv2=P2^2;
17 sbit keyv3=P2^1;
18
19 #define uchar unsigned char
20 #define uint unsigned long int
21
22 uchar a1,b1,c1,d1,a2,b2,c2,d2,a0,b0,c0,d0,e0,a3,b3,c3,d3,e3,num;
23 uint shu,R,k,m;
24
25 uint adread();
26 void adstart();
27
28 uchar code table1[]="Voltmeter";
29 uchar code table2[]="00000V/K ";
30
31 void delay(uint z);
32 void init() ;
33 void write_com(uchar com);
34 void write_data(uchar date);
35 void display();
36 void displayV5(uchar zhengs, uchar shifw, uchar baifw,uchar qianfw);
37 void displayV15(uchar zhengs1,uchar zhengs2, uchar shifw, uchar baifw,uchar qianfw);
38 void displayO(uchar wan, uchar qian, uchar bai,uchar shi,uchar ge);
39 void main()
40 {
41 1 init();
42 1 display();
43 1 while(1)
44 1 {
45 2
46 2 adstart();
47 2 shu=adread();
48 2 k=adread();
49 2 m=adread();
50 2 delay(1);
51 2 if(shu<254)
52 2 {
53 3
54 3
55 3 ledl=0; //绿灯亮,表示ad已读数据
C51 COMPILER V8.02 CEHNGXU 04/28/2012 11:25:16 PAGE 2
56 3 }
57 2
58 2 R=1000*(shu*0.0196)/(5-shu*0.0196);
59 2 a0=R/10000;
60 2 b0=R%10000/1000;
61 2 c0=R%1000/100; //dianzu xianshi
62 2 d0=R%100/10;
63 2 e0=R%10;
64 2
65 2
66 2
67 2 shu=shu*196;
68 2 a1=shu/10000;
69 2 b1=shu%10000/1000;
70 2 c1=shu%1000/100; //电压显现 0-5
71 2 d1=shu%100/10;
72 2 delay(1);
73 2
74 2 k=k*196;
75 2 k=k*2;
76 2 a2=k/10000;
77 2 b2=k%10000/1000;
78 2 c2=k%1000/100; //电压显现 0-10
79 2 d2=k%100/10;
80 2 delay(1);
81 2
82 2 m=m*196;
83 2 m=m*3;
84 2 a3=m/100000;
85 2 b3=m%100000/10000;
86 2 c3=m%10000/1000; //电压显现 0-15
87 2 d3=m%1000/100;
88 2 e3=m%100/10;
89 2 delay(1);
90 2
91 2 if(keyv1==0)
92 2 {
93 3 delay(10);
94 3 if(keyv1==0)
95 3 {
96 4 displayV5(a1,b1,c1,d1); //按键按下测0到5伏
97 4 while(!keyv1);
98 4 }
99 3 }
100 2
101 2 if(keyv2==0)
102 2 {
103 3 delay(10);
104 3 if(keyv2==0) // 按键按下测0到10伏
105 3 {
106 4 displayV5(a2,b2,c2,d2);
107 4 while(!keyv2);
108 4 }
109 3 }
110 2
111 2 if(keyv3==0)
112 2 {
113 3 delay(10);
114 3 if(keyv3==0) // 按键按下测0到15伏
115 3 {
116 4 displayV15(a3,b3,c3,d3,e3);
117 4 while(!keyv3);
C51 COMPILER V8.02 CEHNGXU 04/28/2012 11:25:16 PAGE 3
118 4 }
119 3 }
120 2
121 2 if(key0==0)
122 2 {
123 3 delay(10);
124 3 if(key0==0)
125 3 { // 按键按下测电阻
126 4
127 4 displayO(a0,b0,c0,d0,e0);
128 4 while(!key0);
129 4 }
130 3 }
131 2 }
132 1
133 1
134 1 }
135 //**************************************************************************
136 //******************** adc0804 *********************************
137 // *************************************************************************
138 void adstart()
139 {
140 1
141 1 P1=0XFF;
142 1 wr=1;
143 1 _nop_(); //启动ad转换
144 1 wr=0;
145 1 _nop_();
146 1 wr=1;
147 1 _nop_();
148 1
149 1 }
150
151 uint adread() //ad read
152 {
153 1 uint temp;
154 1 rd=1;
155 1 _nop_();
156 1 rd=0;
157 1 _nop_();
158 1 rd=1;
159 1 temp=P1;
160 1 return(temp);
161 1
162 1 }
163 //**************************************************************************
164 //***********************液晶1602*******************************************
165 //***************************************************************************
166 void write_com(uchar com) //液晶写命令
167 {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -