📄 main.lst
字号:
268
269 ///////////////////////////////////////////////////////////
270 void ds1820disp2() //温度值显示
271 {
272 1 /****************时间设定值**************/
273 1
274 1 inputdata[4]=xiaoshi/10+0x30;
275 1 inputdata[5]=xiaoshi%10+0x30;
276 1 inputdata[6]=fenzhong/10+0x30;
277 1 inputdata[7]=fenzhong%10+0x30;
278 1
279 1 /**************温度设定值***************/
280 1
281 1 inputdata[0]=0 +0x30;
282 1 inputdata[1]=wendu/10 +0x30;
283 1 inputdata[2]=wendu%10 +0x30;
284 1 inputdata[3]=0 +0x30; //小数位
285 1
286 1
287 1 if(inputdata[0]==0x30)
288 1 {
289 2 inputdata[0]=0x20;//如果百位为0,不显示
290 2 if(disdata[1]==0x30)
291 2 {disdata[1]=0x20;//如果百位为0,十位为0也不显示
292 3 }
293 2 }
294 1
295 1 wr_com(0x80|(2-0x40)); //第二行 第 0x80|(x-0x40) 列
296 1 wr_dat(inputdata[4]);
297 1
298 1 wr_com(0x80|(3-0x40)); //第二行 第 0x80|(x-0x40) 列
299 1 wr_dat(inputdata[5]);
300 1
301 1 wr_com(0x80|(5-0x40));
C51 COMPILER V7.50 MAIN 07/20/2008 11:31:54 PAGE 6
302 1 wr_dat(inputdata[6]);
303 1
304 1 wr_com(0x80|(6-0x40));
305 1 wr_dat(inputdata[7]);
306 1
307 1
308 1
309 1 /*******************************/
310 1 wr_com(0x80|(11-0x40)); //第二行 第 0x80|(x-0x40) 列
311 1 wr_dat(inputdata[1]);
312 1
313 1 wr_com(0x80|(12-0x40)); //第二行 第 0x80|(x-0x40) 列
314 1 wr_dat(inputdata[2]);
315 1
316 1 wr_com(0x80|(14-0x40));
317 1 wr_dat(inputdata[3]);
318 1
319 1 // wr_com(0x80|(13-0x40)); // dian
320 1 // wr_dat(0x2e);
321 1
322 1 // wr_com(0x80|(14-0x40));
323 1 // wr_dat(inputdata[3]);
324 1
325 1 wr_com(0x80|(15-0x40)); //du
326 1 wr_dat(0xdf);
327 1 }
328
329 //////////////////////////////////////////////////////////////////////////////////////////////
330 //////////////////////////////////////////////////////////////////////////////////////////////////////////
-///////
331 ///////////********************************************************************
332
333
334
335
336
337
338 ////////////////////////////////////////////////////
339 ////////////////////////////////////////////////////
340 ///// 函数名: 时间闪烁子函数 //////
341 ///// 函数功能: 选择确定闪烁位等待调整 //////
342 ///// 调用: Add(); //////
343 ///// 函数参数: 无 //////
344 ///// 返回值: 无 //////
345 ////////////////////////////////////////////////////
346 /************************************************************/
347 void FlashKey(void) //闪烁子函数//
348 {
349 1 if(P3_5==0)
350 1 {
351 2 delay1ms(10);
352 2 if(p3_5==0)
353 2 {
354 3 {
355 4 Refresh();
356 4 set++;
357 4 }
358 3 }
359 2 while(!P3_5);
360 2 }
361 1
362 1 if(set==6) set=0;
C51 COMPILER V7.50 MAIN 07/20/2008 11:31:54 PAGE 7
363 1 if(set!=1) K1=1;
364 1 if(set!=2) K2=1;
365 1 if(set!=3) K3=1;
366 1 if(set!=4) k4=1;
367 1 if(set!=5) k5=1;
368 1
369 1 switch(set)
370 1 {
371 2 case 0:KT=0;break;
372 2 case 1:K1=flash;KT=1;break; //hms为调时临时变量,需要调整某位时则先把其初始值放到hms中//
373 2 case 2:K2=flash;KT=1;break;
374 2 case 3:K3=flash;KT=1;break;
375 2 case 4:k4=flash;KT=1;break;
376 2 case 5:k5=flash;KT=1;break;
377 2 }
378 1 Add();
379 1 }
380
381 void Add(void)
382 {
383 1 if(P3_4==0)
384 1 {
385 2 delay1ms(10);
386 2 if(p3_4==0)
387 2 {
388 3 Refresh();
389 3 if(KT==1) //检验可调标志位KT//
390 3 {
391 4 switch(set)
392 4 {
393 5 case 1:hour++;if(hour>=24)hour=0;break;
394 5 case 2:minite++;if(minite>=60)minite=0;break;
395 5 case 3:xiaoshi++;if(xiaoshi>=24)xiaoshi=0;break;
396 5 case 4:fenzhong++;if(fenzhong>=60)fenzhong=0;break;
397 5 case 5:wendu++;if(wendu>=100)wendu=0;break;
398 5 }
399 4
400 4 disdata[4]=hour/10+0x30;//小时高位
401 4 disdata[5]=hour%10+0x30;//小时低位
402 4 disdata[6]=minite/10+0x30;//分钟高位
403 4 disdata[7]=minite%10+0x30;//分钟低位
404 4
405 4 inputdata[4] = xiaoshi/10+0x30;
406 4 inputdata[5] = xiaoshi%10+0x30;
407 4 inputdata[6] = fenzhong/10+0x30;
408 4 inputdata[7] = fenzhong%10+0x30;
409 4 inputdata[1] = wendu/10+0x30;
410 4 inputdata[2] = wendu%10+0x30;
411 4 inputdata[3] = 0+0x30;
412 4 }
413 3 }
414 2 while(!P3_4);
415 2 }
416 1 }
417
418 /************************************************************/
419
420 void Refresh(void)
421 {
422 1 ds1820disp1(); //显示1
423 1 ds1820disp2(); //温度值显示
424 1
C51 COMPILER V7.50 MAIN 07/20/2008 11:31:54 PAGE 8
425 1 }
426
427
428 /*-----------------------------状态判断于提示------------------------*/
429 void State(void)
430 {
431 1 if(KT==1)
432 1 {
433 2 wr_com(0x80|(7-0x40));
434 2 wr_dat(0xef);
435 2
436 2 }
437 1
438 1 else
439 1 {wr_com(0x80|(7-0x40));
440 2 wr_dat(0x00);
441 2 }
442 1
443 1 }
444
445 ///////////////////////////////***************************************////////kaiji hua mian
446 intstart()//初始化显示
447 { lcd_init();
448 1 wr_com(0x80);
449 1 display(str3);
450 1 wr_com(0xc0);
451 1 display(str4);
452 1 }
453
454
455 ///////////////////////***************************************************
456 /************************比较判断函数***********************/
457 /////////////////////////////////////
458 void b_j()
459 {
460 1 Relay_add=1; LED_RED=1; LED_BLUE=0; ////条件加热,降热
461 1 temp=wendu*10;
462 1
463 1 if(((xiaoshi==hour)&&(fenzhong==minite))||temp>(tvalue+15))
464 1 {
465 2 Relay_add=0; LED_RED=0; LED_BLUE=1;
466 2 }
467 1 else
468 1 {
469 2 Relay_add=1; LED_RED=1; LED_BLUE=0;
470 2 }
471 1 }
472 /***********************************************************/
473
474 //////////////////////////////////////////////////////////////////////////////////////////////////////////
-///////
475 /********************主程序***********************************/
476 void main()
477 {
478 1 TMOD=0X01;
479 1 TH0=0X3C;TL0=0XB0;
480 1 ET0=1;TR0=1;
481 1 EA=1;
482 1
483 1 intstart(); //开机画面 *************************************
484 1 delay1ms(2500);
485 1
C51 COMPILER V7.50 MAIN 07/20/2008 11:31:54 PAGE 9
486 1 init_play();//初始化显示
487 1 while(1)
488 1 {
489 2 read_temp();//读取温度
490 2
491 2 ds1820disp1(); //显示1
492 2 ds1820disp2(); //温度值显示
493 2
494 2 //////////////////////////////////////////////////////////////
495 2 ////////////////////////////////////////////////
496 2 FlashKey();
497 2 State();
498 2 delay1ms(400);
499 2 b_j();
500 2 } ///while
501 1
502 1
503 1 //////////////////////////////////////////////////////////////
504 1
505 1
506 1
507 1 }
508
509 /****************定时中断服务子函数******************/
510 void TIME_INT() interrupt 1 using 1
511 {
512 1 TH0=0X3C;TL0=0XB0;
513 1 ms50++;
514 1 if(ms50==20)
515 1 {
516 2 ms50=0;second++;
517 2 if(second==60)
518 2 {
519 3 second=0;minite++;
520 3 if(minite==60)
521 3 {
522 4 minite=0;hour++;
523 4 if(hour==24)
524 4 hour=0;
525 4 }
526 3 }
527 2 }
528 1 }
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1426 ----
CONSTANT SIZE = 63 ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = 28 5
IDATA SIZE = ---- ----
BIT SIZE = 7 ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -