📄 main.lst
字号:
267 3 min++;NewTime[3]=min/10+0x30;NewTime[4]=min%10+0x30;//小时值放入显示缓冲
268 3 Display(3);Display(6);
269 3 if(min>=60)//分钟加
270 3 {
271 4 min=0;NewTime[3]=0x30;NewTime[4]=0x30;//分钟值放入显示缓冲
272 4 Display(3);Display(6);
273 4 }
274 3 }
275 2 if(K1==0) // 调时结束
276 2 {
277 3 Buzzer();Buzzer();DelayMs(5);while(K1==0);
278 3 ET0=0;TR0=0;mark=0;//调时结束,开定时器0
279 3 }
280 2 }while(mark);
281 1 }
282
283 /*****************************************************
284 函 数 名:void Integral_point_time(void)
285 功 能:整点报时:K2-进出
286 说 明:在正常工作情况下按K2键,进入此函数
287 入口参数:无
288 返 回 值:无
289 *****************************************************/
290 void Integral_point_time(void)
291 {
292 1 if(sec==0)
293 1 {
294 2 if(min==0)
295 2 {
296 3 Buzzer();
297 3 }
298 2 }
299 1 }
300
301 /*****************************************************
302 函 数 名:void Ctrl_on_or_off(void)
C51 COMPILER V7.20 MAIN 01/12/2008 17:07:08 PAGE 6
303 功 能:闹铃控制开关
304 说 明:在正常工作情况下按K3键,进入此函数
305 入口参数:
306 返 回 值:无
307 *****************************************************/
308 void Ctrl_on_or_off(void)
309 {
310 1 CLED=~CLED;
311 1 if(CLED==0){Buzzer();Buzzer();} //闹铃开响两声
312 1 else Buzzer();//闹铃关响一声
313 1 }
314
315 /*****************************************************
316 函 数 名:void Set_ctrltime(void)
317 功 能:设置闹铃时间:K2-小时加1;K3-分钟加1;K4-推出
318 说 明:在正常工作情况下按K4键,进入此函数
319 入口参数:无
320 返 回 值:无
321 *****************************************************/
322 void Set_ctrltime(void)
323 {
324 1 bit mark=1;
325 1 do
326 1 {
327 2 Display(4);Display(7);
328 2 if(K2==0) // 小时加
329 2 {
330 3 Buzzer();DelayMs(5);while(K2==0);//消抖,等按键K2释放
331 3 armhour++;CtrlTime[0]=armhour/10+0x30;CtrlTime[1]=armhour%10+0x30;//小时清零
332 3 Display(4);Display(7);
333 3 if(armhour>=24)
334 3 {
335 4 armhour=0;CtrlTime[0]=0x30;CtrlTime[1]=0x30;
336 4 Display(4);Display(7);
337 4 }
338 3 }
339 2 if(K3==0) // 分钟加
340 2 {
341 3 Buzzer();DelayMs(5);while(K3==0);//消抖,等按键K3释放
342 3 armmin++;CtrlTime[3]=armmin/10+0x30;CtrlTime[4]=armmin%10+0x30;
343 3 Display(4);Display(7);
344 3 if(armmin>=60)//分钟加
345 3 {
346 4 armmin=0;CtrlTime[3]=0x30;CtrlTime[4]=0x30;//分钟清零
347 4 Display(4);Display(7);
348 4 }
349 3 }
350 2 if(K4==0) // 调时结束
351 2 {
352 3 Buzzer();Buzzer();DelayMs(5);while(K4==0);// 消抖
353 3 mark=0; // 调时结束,开定时器0
354 3 CLED=0; // 控制指示灯亮
355 3 }
356 2 }while(mark);
357 1 }
358
359 /*****************************************************
360 函 数 名:void Manual(void)
361 功 能:手动控制继电器开关
362 说 明:在正常工作情况下按K5键,进入此函数
363 入口参数:
364 返 回 值:无
C51 COMPILER V7.20 MAIN 01/12/2008 17:07:08 PAGE 7
365 *****************************************************/
366 /*void Manual(void)
367 {
368 Buzzer();
369 RELAY=~RELAY;// 继电器取反
370 YLED=~YLED; // 指示灯指示
371 }*/
372
373 /****************** 手动控制部分结束 ****************************
-********/
374
375 /*****************************************************
376 函 数 名:void Display(uchar num)
377 功 能:显示设置
378 说 明:对LCD要显示的数据进行选择
379 入口参数:num为对应显示数据
380 返 回 值:无
381 *****************************************************/
382 void Display(uchar num)
383 {
384 1 switch(num)
385 1 {
386 2 // 第一行要显示的数据
387 2 case 1: Tp[0]=0x02;Read_Temperature();Transport(0,Tp);break;// 显示温度数据,无闹铃
388 2 case 2: Tp[0]=0x00;Read_Temperature();Transport(0,Tp);break;// 显示温度数据,有闹铃
389 2 case 3: DisplayListChar(0,0,"SET_TIME");break; // 显示当前时间设置提示"SET_TIME"
390 2 case 4: DisplayListChar(0,0,"SET_CTRL");break; // 显示控制时间设置提示"SET_CTRL"
391 2 case 5: DisplayListChar(0,0,"CTRLTIME");break; // 查看控制时间提示"CTRLTIME"
392 2 // 第二行要显示的数据
393 2 case 6: Transport(1,NewTime);break; // 显示当前时间
394 2 case 7: Conversion();Transport(1,CtrlTime);break; // 显示控制时间
395 2 // 清零
396 2 default:break;
397 2 }
398 1 }
399
400 /*****************************************************
401 函 数 名:Transport(bit line,uchar arr[])
402 功 能:传送显示数据
403 说 明:项目需要显示的各种数据都是通过此函数传送的
404 入口参数:line为行选择;arr[]显示数据
405 返 回 值:无
406 *****************************************************/
407 void Transport(bit mark,uchar arr[])
408 {
409 1 uchar i;
410 1 for(i=0;i<8;i++)
411 1 {
412 2 DisplayOneChar(i,mark,arr[i]); // 写入数据
413 2 }
414 1 }
415
416 /*****************************************************
417 函 数 名:void Conversion(void)
418 功 能:将闹铃数据转换到显示数据中
419 说 明:
420 入口参数:
421 返 回 值:无
422 *****************************************************/
423 void Conversion(void)
424 {
425 1 CtrlTime[0]=armhour/10+0x30;CtrlTime[1]=armhour%10+0x30;
C51 COMPILER V7.20 MAIN 01/12/2008 17:07:08 PAGE 8
426 1 CtrlTime[3]=armmin/10+0x30;CtrlTime[4]=armmin%10+0x30;//小时值放入显示缓冲
427 1
428 1 }
429
430 /*****************************************************
431 函 数 名:void time_intt0(void) interrupt 1
432 功 能:T0时钟中断函数
433 说 明:秒计数0
434 入口参数:无
435 返 回 值:无
436 *****************************************************/
437 void time_intt0(void) interrupt 1 using 1
438 {
439 1 ET0=0;TR0=0; //关T0定时器
440 1 ET1=0;TR1=0; //关T1定时器,停止时间闪烁标志
441 1 TH0=0x3C;TL0=0xB7;//赋初值
442 1 TR0=1;TR1=1; //开T0定时器
443 1 con_1s++; //1s计数器计数
444 1 if(con_1s==20) //1s到,时间加1
445 1 {
446 2 con_1s=0; //1s计数器值0
447 2 sec++;
448 2 if(sec>=60)
449 2 {
450 3 sec=0;min++;
451 3 if(min>=60)
452 3 {
453 4 min=0;hour++;
454 4 if(hour>=24)
455 4 {
456 5 hour=0;
457 5 }
458 4 }
459 3 }
460 2 NewTime[0]=hour/10+0x30;NewTime[1]=hour%10+0x30;//小时值放入显示缓冲
461 2 NewTime[3]=min/10+0x30;NewTime[4]=min%10+0x30;//分钟值放入显示缓冲
462 2 NewTime[6]=sec/10+0x30;NewTime[7]=sec%10+0x30;//秒钟值放入显示缓冲
463 2 }
464 1 ET0=1; ET1=1;
465 1 }
466
467 /*****************************************************
468 函 数 名:void time_intt1(void) interrupt 3 using 2
469 功 能:T1时钟中断函数
470 说 明:秒计数闪烁
471 入口参数:无
472 返 回 值:无
473 *****************************************************/
474 void time_intt1(void) interrupt 3 using 2
475 {
476 1 ET1=0;TR1=0; //关T0定时器
477 1 TH1=0x3C;TL1=0xB7;//赋初值
478 1 TR1=1; //开T0定时器
479 1 con_500ms++; //1s计数器计数
480 1 if(con_500ms==10)
481 1 {
482 2 con_500ms=0;
483 2 flag=~flag;WLED=~WLED;
484 2 if(flag==0)//闪烁标志
485 2 {NewTime[2]=0x3a;NewTime[5]=0x3a;}
486 2 else
487 2 {NewTime[2]=0x20;NewTime[5]=0x20;}
C51 COMPILER V7.20 MAIN 01/12/2008 17:07:08 PAGE 9
488 2 }
489 1 ET1=1;
490 1 }
491
492
493 //======================================= 指示函数部分 ===============================================
494
495 /*****************************************************
496 函 数 名:void Led_hint(void)
497 功 能:LED工作指示程序
498 说 明:对按键及密码的输入结果进行指示
499 入口参数:无
500 返 回 值:无
501 *****************************************************/
502 void Led_hint(void)
503 {
504 1 WLED=0;
505 1 DelayMs(50);
506 1 WLED=1;
507 1 DelayMs(50);
508 1 }
509 /*****************************************************
510 函 数 名:void Delay400Ms()
511 功 能:400ms延时
512 说 明:对显示进行延时
513 入口参数:无
514 返 回 值:无
515 *****************************************************/
516 //400ms延时
517 void Delay400Ms(void)
518 {
519 1 uchar TempCycA = 5;
520 1 uint TempCycB;
521 1 while(TempCycA--)
522 1 {
523 2 TempCycB=7269;
524 2 while(TempCycB--);
525 2 };
526 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 2441 ----
CONSTANT SIZE = 27 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 38 11
IDATA SIZE = ---- ----
BIT SIZE = 1 5
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -