📄 index.lst
字号:
C51 COMPILER V7.50 INDEX 10/02/2008 21:03:27 PAGE 1
C51 COMPILER V7.50, COMPILATION OF MODULE INDEX
OBJECT MODULE PLACED IN index.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE index.c BROWSE DEBUG OBJECTEXTEND
line level source
1 /////////////////////////////////////////////////////////////////////////////////////////////////////
2 ///// /////
3 ///// 电子温度计c语言程序 /////
4 ///// /////
5 ///// /////
6 /////////////////////////////////////////////////////////////////////////////////////////////////////
7
8
9 #include "reg52.h"
10 #include "string.h"
11 #include "ds1302.h"
12 #include "ds18b20.h"
13 #include "lcd1602.h"
14
15 sbit RED=P1^3; //高温报警灯
16 sbit BLUE=P1^4; //低温报警灯
17 sbit SPEAKER=P3^7;//蜂鸣器
18 sbit SET=P3^0; //以下按钮设置
19 sbit SET2=P3^1;
20 sbit SET3=P2^0;
21 sbit NEXT=P2^1;
22 sbit REDUCE=P2^2;
23 sbit ADD=P2^3;
24
25 int tH=-1,tL=-1;//报警状态,1为关闭
26 int m,keyon,keytype,out=0,out2=0;//设置报警温度时使用的中间变量
27 float temperatureH=35,temperatureL=18; //报警温度
28
29 void delay(unsigned int time)
30 {
31 1 unsigned int n;
32 1 n=0;
33 1 while(n<time) n++;
34 1 return;
35 1 }
36
37 void ds_codechange()
38 {
39 1 dis1[0]=code_switch(((int)month)/10);
40 1 dis1[1]=code_switch(((int)month)%10);
41 1
42 1 dis1[3]=code_switch(((int)date)/10);
43 1 dis1[4]=code_switch(((int)date)%10);
44 1
45 1 dis1[6]=code_switch(((int)hour)/10);
46 1 dis1[7]=code_switch(((int)hour)%10);
47 1
48 1 dis1[9]=code_switch(((int)minute)/10);
49 1 dis1[10]=code_switch(((int)minute)%10);
50 1
51 1 dis1[12]=code_switch(((int)second)/10);
52 1 dis1[13]=code_switch(((int)second)%10);
53 1
54 1 dis1[15]=code_switch((int)week);
55 1 }
C51 COMPILER V7.50 INDEX 10/02/2008 21:03:27 PAGE 2
56 void t_codechange()//主界面温度显示float转换成字符
57 {
58 1 if(temperature>=0)
59 1 {
60 2 dis2[10]=code_switch((int)(temperature/100));
61 2 dis2[11]=code_switch(((int)(temperature)%100)/10);
62 2 dis2[12]=code_switch(((int)temperature)%10);
63 2 dis2[13]='.';
64 2 dis2[14]=code_switch(((int)(temperature*10))%10);
65 2 }
66 1 else
67 1 {
68 2 dis2[10]='-';
69 2 dis2[11]=code_switch(((int)(-temperature)%100)/10);
70 2 dis2[12]=code_switch(((int)(-temperature))%10);
71 2 dis2[13]='.';
72 2 dis2[14]=code_switch(((int)((-temperature)*10))%10);
73 2 }
74 1 }
75
76 ///////////////////////////温度报警设置显示/////////////////////////
77
78 void Display2()
79 {
80 1 unsigned char i;
81 1 if(tH==1)//高温开关值设置
82 1 {
83 2 dis1[9]='O';
84 2 dis1[10]='F';
85 2 dis1[11]='F';
86 2 }
87 1 else
88 1 {
89 2 dis1[9]='O';
90 2 dis1[10]='N';
91 2 dis1[11]=' ';
92 2 }
93 1 if(temperatureH>=0)//高温温度值设置
94 1 {
95 2 dis1[13]=code_switch(((int)(temperatureH)%100)/10);
96 2 dis1[14]=code_switch(((int)temperatureH)%10);
97 2 }
98 1 else
99 1 {
100 2 dis1[13]='-';
101 2 dis1[14]=code_switch(((int)(-temperatureH))%10);
102 2 }
103 1 if(tL==1)//低温开关值设置
104 1 {
105 2 dis2[9]='O';
106 2 dis2[10]='F';
107 2 dis2[11]='F';
108 2 }
109 1 else
110 1 {
111 2 dis2[9]='O';
112 2 dis2[10]='N';
113 2 dis2[11]=' ';
114 2 }
115 1 if(temperatureL>=0)//低温温度值设置
116 1 {
117 2 dis2[13]=code_switch(((int)(temperatureL)%100)/10);
C51 COMPILER V7.50 INDEX 10/02/2008 21:03:27 PAGE 3
118 2 dis2[14]=code_switch(((int)temperatureL)%10);
119 2 }
120 1 else
121 1 {
122 2 dis2[13]='-';
123 2 dis2[14]=code_switch(((int)(-temperatureL))%10);
124 2 }
125 1 lcd_pos(0);
126 1 i=0;
127 1 while(dis1[i]!='\0')
128 1 {
129 2 lcd_wdat(dis1[i]);
130 2 i++;
131 2 }
132 1 lcd_pos(0x40);
133 1 i=0;
134 1 while(dis2[i]!='\0')
135 1 {
136 2 lcd_wdat(dis2[i]);
137 2 i++;
138 2 }
139 1 switch (m)
140 1 {
141 2 case 0: lcd_pos(0x0a);break;
142 2 case 1: lcd_pos(0x0E);break;
143 2 case 2: lcd_pos(0x4a);break;
144 2 case 3: lcd_pos(0x4E);break;
145 2 }
146 1 }
147 /////////////////////////////报警设置显示结束///////////////////////////////////
148
149
150 ////////////////////////////////报警设置/////////////////////////////////////////
151 void seting()
152 {
153 1 if(SET==1&&NEXT==1&&REDUCE==1&&ADD==1); //无键盘按下
154 1 else /////有键盘按下时
155 1 {
156 2 keyon=1;
157 2 if(SET==0)keytype=0;
158 2 if(NEXT==0)keytype=1;
159 2 if(REDUCE==0)keytype=2;
160 2 if(ADD==0)keytype=3;
161 2 }
162 1 if(keyon==1&&SET==1&&NEXT==1&&REDUCE==1&&ADD==1) //键盘松开后判断键盘状态
163 1 {
164 2 if(keytype==1)////////////////菜单下翻
165 2 {
166 3 if(m>=3)m=0;
167 3 else m++;
168 3 }
169 2 if(keytype==2) ////////////////加操作
170 2 {
171 3 if(m==0)tH=-tH;
172 3 if(m==1)
173 3 {
174 4 if(temperatureH>(temperatureL+1)) temperatureH--;
175 4 else temperatureH=99;
176 4 }
177 3 if(m==2)tL=-tL;
178 3 if(m==3)
179 3 {
C51 COMPILER V7.50 INDEX 10/02/2008 21:03:27 PAGE 4
180 4 if(temperatureL>-9) temperatureL--;
181 4 else temperatureL=(temperatureH-1);
182 4 }
183 3 }
184 2 if(keytype==3) ////////////////减操作
185 2 {
186 3 if(m==0)tH=-tH;
187 3 if(m==1)
188 3 {
189 4 if(temperatureH<99) temperatureH++;
190 4 else temperatureH=(temperatureL+1);
191 4 }
192 3 if(m==2)tL=-tL;
193 3 if(m==3)
194 3 {
195 4 if(temperatureL<(temperatureH-1)) temperatureL++;
196 4 else temperatureL=-9;
197 4 }
198 3 }
199 2 if(keytype==0) ///////////跳出温度设置
200 2 {
201 3 keyon=0;
202 3 keytype=4;
203 3 out=1;
204 3 }
205 2 keyon=0;
206 2 keytype=4;
207 2 }
208 1 }
209 /////////////////////////////报警设置结束/////////////////////////////////////////
210 void Too_hot ()
211 { unsigned char i;
212 1 unsigned char m;
213 1 lcd_init();
214 1 delay(100); //初始化LCD
215 1 lcd_pos(0); //设置显示位置为第一行的第1个字符
216 1 m = 0;
217 1 while(cdis3[m] != '\0')
218 1 { //显示字符
219 2 lcd_wdat(cdis3[m]);
220 2 m++;
221 2 }
222 1
223 1 lcd_pos(0x40); //设置显示位置为第二行第1个字符
224 1 m = 0;
225 1 while(cdis4[m] != '\0')
226 1 {
227 2 lcd_wdat(cdis4[m]); //显示字符
228 2 m++;
229 2 }
230 1 for(m=0;m<5;m++)
231 1 {
232 2 RED=0;
233 2 SPEAKER=0;
234 2 delay(10000);
235 2 SPEAKER=1;
236 2 RED=1;
237 2 delay(10000);
238 2 SPEAKER=0;
239 2 }
240 1 if(SET==0) /////////////////////////进入报警温度设定
241 1 {
C51 COMPILER V7.50 INDEX 10/02/2008 21:03:27 PAGE 5
242 2 out=0;
243 2 delay(300);
244 2 while(SET==0);
245 2 strcpy(dis1,"ALARM-H: ON 35 \0");
246 2 strcpy(dis2,"ALARM-L: ON 18 \0");
247 2 lcd_init2();
248 2 lcd_pos(0);
249 2 i=0;
250 2 while(dis1[i]!='\0')
251 2 {
252 3 lcd_wdat(dis1[i]);
253 3 i++;
254 3 }
255 2 lcd_pos(0x40);
256 2 i=0;
257 2 while(dis2[i]!='\0')
258 2 {
259 3 lcd_wdat(dis2[i]);
260 3 i++;
261 3 }
262 2 lcd_pos(0x0a);//光标显示在高温开关位置
263 2 if(SET==0)
264 2 {
265 3 lcd_pos(0);
266 3 i=0;
267 3 while(dis1[i]!='\0')
268 3 {
269 4 lcd_wdat(dis1[i]);
270 4 i++;
271 4 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -