📄 main.lst
字号:
196 /*函数功能:温度显示
197 /*输入参数:无
198 /*输出参数:无
199 /*调用模块:data_clr(),LPH7366_write_str(),LPH7366_write_doc()
200
201 /************************************************************/
202 void temp_display()
203 {
204 1 if(T_sign==0) //正数
205 1 {
206 2 if(sign_cross==1)
207 2 {
208 3 data_clr();
209 3 sign_cross=0;
210 3 }
211 2 if(t_bai!=0)
212 2 {
213 3 LPH7366_write_str(4,5,(t_bai+16));
214 3 LPH7366_write_str(4,6,(t_shi+16));
215 3 LPH7366_write_str(4,7,(t_ge+16));
216 3
217 3 LPH7366_write_doc(4,46,0x01); //C
218 3 LPH7366_write_doc(4,47,0x3c);
219 3 LPH7366_write_doc(4,48,0x42);
220 3 LPH7366_write_doc(4,49,0x42);
221 3 LPH7366_write_doc(4,50,0x42);
222 3 }
223 2
224 2 else
225 2 {
226 3 LPH7366_write_str(4,5,(t_shi+16));
227 3 LPH7366_write_str(4,6,(t_ge+16));
228 3 LPH7366_write_doc(4,39,0x80); //小数点
229 3 LPH7366_write_str(4,7,(t_feng+16));
230 3
231 3 LPH7366_write_doc(4,46,0x01); //C
232 3 LPH7366_write_doc(4,47,0x3c);
233 3 LPH7366_write_doc(4,48,0x42);
234 3 LPH7366_write_doc(4,49,0x42);
235 3 LPH7366_write_doc(4,50,0x42);
236 3 }
237 2 }
C51 COMPILER V8.05a MAIN 04/15/2009 22:04:17 PAGE 5
238 1
239 1 else //是负数
240 1 {
241 2 if(sign_cross==0)
242 2 {
243 3 data_clr();
244 3 sign_cross=1;
245 3 }
246 2 if(t_bai!=0)
247 2 {
248 3
249 3 LPH7366_write_str(4,5,13); //负号
250 3 LPH7366_write_str(4,6,(t_bai+16));
251 3 LPH7366_write_str(4,7,(t_shi+16));
252 3 LPH7366_write_str(4,8,(t_ge+16));
253 3
254 3
255 3 LPH7366_write_doc(4,52,0x01); //C
256 3 LPH7366_write_doc(4,53,0x3c);
257 3 LPH7366_write_doc(4,54,0x42);
258 3 LPH7366_write_doc(4,55,0x42);
259 3 LPH7366_write_doc(4,56,0x42);
260 3 }
261 2
262 2 else
263 2 {
264 3
265 3 LPH7366_write_str(4,5,13); //负号
266 3 LPH7366_write_str(4,6,(t_shi+16));
267 3 LPH7366_write_str(4,7,(t_ge+16));
268 3 LPH7366_write_doc(4,45,0x80); //小数点
269 3 LPH7366_write_str(4,8,(t_feng+16));
270 3
271 3 LPH7366_write_doc(4,52,0x01); //C
272 3 LPH7366_write_doc(4,53,0x3c);
273 3 LPH7366_write_doc(4,54,0x42);
274 3 LPH7366_write_doc(4,55,0x42);
275 3 LPH7366_write_doc(4,56,0x42);
276 3 }
277 2 }
278 1 }
279
280 /***********************温度条部分动画函数*******************/
281 /*函数原型:void temp_bar_move()
282 /*函数功能:温度部分动画
283 /*输入参数:无
284 /*输出参数:无
285 /*调用模块:LPH7366_write_doc()
286
287 /************************************************************/
288 void temp_bar_move()
289 {
290 1 unsigned char k,i,n,j,l;
291 1 k=(unsigned char)temp;
292 1 i=k/8; //几行
293 1 n=k%8; //几小行
294 1
295 1 if(i>=0&&i<=5)
296 1 { if(i>0)
297 2 {for(j=5;j>(5-i);j--)
298 3 {
299 4 LPH7366_write_doc(j,80,temp_bar[7]); //正行全显
C51 COMPILER V8.05a MAIN 04/15/2009 22:04:17 PAGE 6
300 4 for(l=1;l<=(5-i);l++) //清除上面不显示的,主要是为了清楚以前残留显示
301 4 LPH7366_write_doc(l,80,0x00);
302 4 }
303 3 }
304 2 if(n>0) //一行显示都不到
305 2 LPH7366_write_doc((5-i),80,temp_bar[n-1]);
306 2 }
307 1
308 1 LPH7366_write_doc(1,80,0x04); //确保温度条图形完整
309 1 }
310
311 /***********************行33-58清零函数**********************/
312 /*函数原型:void data_clr()
313 /*函数功能:行33-58清零函数
314 /*输入参数:无
315 /*输出参数:无
316 /*调用模块:LPH7366_write_doc()
317
318 /************************************************************/
319 void data_clr()
320 {
321 1 unsigned char i;
322 1 for(i=33;i<59;i++)
323 1 {
324 2 LPH7366_write_doc(4,i,0x00);
325 2 }
326 1 }
327
328 /***********************检查设置参数函数**********************/
329 /*函数原型:void tick_time_temp()
330 /*函数功能:检查设置参数
331 /*输入参数:无
332 /*输出参数:无
333 /*调用模块:delay()
334
335 /************************************************************/
336 void tick_time_temp()
337 {
338 1 if(ring_flag==1)
339 1 { if(alarm_time.hour==local_time.hour) //定时时间到
340 2 {
341 3 if(alarm_time.minute==local_time.minute)
342 3 {
343 4 if(local_time.second<30)
344 4 {
345 5 SPK=~SPK;
346 5 face_flag=4; //讲话
347 5 }
348 4 else
349 4 SPK=0;
350 4 }
351 3 }
352 2 }
353 1
354 1 if(temp_time.hour==local_time.hour) //定时采集温度数值
355 1 {
356 2 if(temp_time.minute==local_time.minute)
357 2 {
358 3 temp_move(); //温度部分动画
359 3 face_flag=7; //沉默
360 3 }
361 2 }
C51 COMPILER V8.05a MAIN 04/15/2009 22:04:17 PAGE 7
362 1
363 1 if(temp>(temp_TH+0.5)) //超过温度上限数值
364 1 {
365 2 alarm_tick_time++;
366 2 if(alarm_tick_time==10) //如果连续10次都检测到同一报警值,则动作.
367 2 {
368 3 alarm_tick_time=0;
369 3 LED=0;
370 3 face_flag=6; //惊讶
371 3 }
372 2 }
373 1
374 1 if(temp<(temp_TL-0.5)) //超过温度下限数值
375 1 {
376 2 alarm_tick_time++;
377 2 if(alarm_tick_time==10)
378 2 {
379 3 alarm_tick_time=0;
380 3 LED=~LED;
381 3 face_flag=3; //苦恼
382 3 delay(2000);
383 3 }
384 2 }
385 1
386 1 }
387
388
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 919 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 9 5
IDATA SIZE = ---- ----
BIT SIZE = 2 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -