找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 5359|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)LCD1602顯示的溫度控制系統(tǒng)設(shè)計(jì) 包括時(shí)間顯示 校時(shí)、設(shè)置最值溫度報(bào)警功能

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:858846 發(fā)表于 2020-12-18 23:02 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |正序?yàn)g覽 |閱讀模式
1、將DS18B20溫度傳感器的溫度讀出來(lái),并在LCD1602上顯示出來(lái)。
2、在LCD上分別切換顯示,軟件設(shè)計(jì)時(shí)鐘(時(shí)、分、秒),和當(dāng)前溫度值,和溫度上下控制值。并可以通過(guò)按鍵進(jìn)行修改設(shè)置,溫度高于上限,或下線都由蜂鳴器發(fā)出報(bào)警聲。 T-LCD - 副本.rar (225.17 KB, 下載次數(shù): 108)

3、實(shí)現(xiàn)校時(shí)、校分、校秒功能。
附件里附帶所有程序、工程以及仿真圖,仿真圖為T-LCD2,程序工程為T-LCD,主程序是main.c
實(shí)驗(yàn)原理圖:

單片機(jī)效果圖:
模式0為顯示溫度 時(shí)間 模式123分別為調(diào)個(gè)位、十位、十分位 按對(duì)應(yīng)的按鍵就能實(shí)現(xiàn)調(diào)最高或最低 模式45顯示最高、最低溫度

程序部分:
570行主程序+100溫度傳感器+70行1602顯示 實(shí)現(xiàn)單片機(jī)溫度時(shí)間顯示 精確到十分位 并且有校時(shí)、設(shè)置最值溫度報(bào)警功能 精確到十分位

具體的代碼功能在附件程序里都有標(biāo)注
  1. #include<reg52.h>  //調(diào)用52單片機(jī)庫(kù)
  2. #include"1602.h"   //調(diào)用LCD1602庫(kù)
  3. #include"ds18b20.h"   //調(diào)用ds18b20溫度傳感器
  4. #define uint unsigned int
  5. #define uchar unsigned char
  6. uchar hour,min,sec,count,hour1,hour2,  //定義小時(shí) 分鐘 秒 對(duì)應(yīng)的十位個(gè)位 以及 count計(jì)數(shù)
  7. sec1,sec2,min1,min2;

  8. sbit speaker=P2^1;                  //定義蜂鳴器
  9. sbit key1=P1^0;                          //最低溫度設(shè)置
  10. sbit key2=P1^1;              //最高溫度設(shè)置
  11. sbit key3=P1^2;       //連接切換模式的備用開(kāi)關(guān) P33和P12口短接 用于切換模式和退出報(bào)警中斷


  12. sbit keyh=P1^5;  //校時(shí)
  13. sbit keym=P1^6;  //校分
  14. sbit keys=P1^7;  //校秒
  15. //定義時(shí)間按鍵

  16. uint  tem;                                  //定義采集溫度
  17. int htem,htem2,time,time2,x,y,z,dot,dot2,maxtem,mintem;                          //定義溫度十位數(shù)、個(gè)位數(shù)、小數(shù),以及其三種模式的標(biāo)記值
  18. int cnt1=1,cnt2=1,cnt3=1,cnt4=1,cnt5=1,cnt6=1,cnt7=1;                  //定義計(jì)數(shù)變量
  19. int i;
  20. uchar mode=0;                          //定義模式變量
  21. uchar code t3[]={"  H/L=0/1:     C"};    //顯示調(diào)最值溫度的十位
  22. uchar code t4[]={"O/D:           C"};    //顯示調(diào)最值溫度的個(gè)位/小數(shù)位字模
  23. uchar code table2[]={  
  24. '0','1','2','3','4','5','6','7','8','9',':'};   //顯示時(shí)間的字模
  25. uchar code t5[]={"Max         . CD"};         //顯示最高溫度的字模
  26. uchar code t6[]={"Min         . CD"};         //顯示最低溫度的字模


  27. //延時(shí)函數(shù)
  28. void delay1(uint i)
  29. {
  30.         while(i--);        
  31. }



  32. //顯示函數(shù)1  初始顯示
  33. void display(uint dat,uchar add)
  34. {
  35. uchar bai,shi ,ge;
  36. bai=dat/100;
  37. shi=dat%100/10;
  38. ge=dat%10;                                                                                   
  39. writelcd_cmd(add);
  40. writelcd_dat(bai+0x30);
  41. writelcd_dat(shi+0x30);
  42. writelcd_cmd(add+3);
  43. writelcd_dat(ge+0x30);
  44. }

  45. void lcd_min()   //定義最小溫度顯示
  46. {
  47.         uchar l;
  48.         
  49. writelcd_cmd(0x38);   //初始化屏那迤粱
  50. delay(5);
  51. writelcd_cmd(0x38);
  52. delay(5);
  53. writelcd_cmd(0x38);
  54. writelcd_cmd(0x08);
  55. writelcd_cmd(0x01);
  56. writelcd_cmd(0x06);
  57. writelcd_cmd(0x0c);
  58. writelcd_cmd(0x80);
  59.         
  60.                 writelcd_cmd(0xc0);
  61.                                                 for(l=0;l<16;l++)                  //依次讀取t6并顯示
  62.                                                 {
  63.                                         writelcd_dat(t6[l]);
  64.                                                 }
  65.                                                 
  66.                                                 display(mintem,0xca);
  67.                                                 delay1(5000000000);   //延時(shí)顯示
  68. }

  69. void lcd_max()  //定義最大溫度顯示
  70. {
  71.         uchar k;
  72.         writelcd_cmd(0x38);   //初始化屏幕清屏
  73. delay(5);
  74. writelcd_cmd(0x38);
  75. delay(5);
  76. writelcd_cmd(0x38);
  77. writelcd_cmd(0x08);
  78. writelcd_cmd(0x01);
  79. writelcd_cmd(0x06);
  80. writelcd_cmd(0x0c);
  81. writelcd_cmd(0x80);
  82.         writelcd_cmd(0xc0);
  83.                                                 for(k=0;k<16;k++)                  //依次讀取t5并顯示
  84.                                                 {
  85.                                         writelcd_dat(t5[k]);
  86.                                                 }
  87.                                                 display(maxtem,0xca);
  88.                                                 delay1(5000000000);
  89. }

  90. void write_Char(unsigned char a,unsigned char b,unsigned char dat) //顯示時(shí)間程序母程序 定位
  91. {      
  92. if (b == 0)   
  93.     {      
  94.     writelcd_cmd(0x80 + a);      
  95.     }      
  96. else   
  97.     {      
  98.     writelcd_cmd(0xC0 + a);      
  99.     }         
  100. writelcd_dat(dat);   
  101. }   

  102. void display4(uchar hour1,uchar hour2,uchar min1,uchar min2,uchar sec1,uchar sec2)    //顯示時(shí)間子程序  取值
  103. {     

  104.    
  105.     write_Char(4,0,table2[hour1]);                    //顯示小時(shí)
  106.     write_Char(5,0,table2[hour2]);  
  107.     write_Char(6,0,table2[0x0a]);                   //顯示冒號(hào)
  108.     write_Char(7,0,table2[min1]);                    //分鐘
  109.     write_Char(8,0,table2[min2]);  
  110.     write_Char(9,0,table2[0x0a]);                    //顯示冒號(hào)
  111.     write_Char(10,0,table2[sec1]);                    //秒
  112.     write_Char(11,0,table2[sec2]);
  113.         
  114.   
  115. }  


  116. //顯示函數(shù)2  調(diào)最值溫度低十位 在LCD上排顯示
  117. void display2(uint dat,uchar add)
  118. {
  119. uchar bai,shi ;
  120. bai=dat/100;
  121. shi=dat%100/10;
  122. //ge=dat%10;                                                                                   
  123. writelcd_cmd(add);
  124. writelcd_dat(shi+0x30);
  125. writelcd_dat(bai+0x30);
  126. writelcd_cmd(add+3);
  127. //writelcd_dat(ge+0x30);
  128. }


  129. //顯示函數(shù)3  調(diào)最值溫度的個(gè)位/小數(shù) 在LCD下排顯示
  130. void display3(uint dat,uchar add)
  131. {
  132. uchar ge;
  133. //bai=dat/100;
  134. //shi=dat%100/10;
  135. ge=dat%10;                                                                                   
  136. writelcd_cmd(add);
  137. //writelcd_dat(shi+0x30);
  138. //writelcd_dat(bai+0x30);
  139. //writelcd_cmd(add+3);
  140. writelcd_dat(ge+0x30);
  141. }


  142. //按鍵掃描函數(shù)
  143. void keyscan()
  144. {  uchar i,j;  //定義i/j
  145.    writelcd_cmd(0x80);  //顯示函數(shù)表示以此顯示t3字模里面的字符
  146.    for(i=0;i<16;i++)
  147.    {writelcd_dat(t3[i]);}
  148.    writelcd_cmd(0xc0);
  149.    for(j=0;j<16;j++)   //顯示函數(shù)表示以此顯示t4字模里面的字符
  150.    {writelcd_dat(t4[j]);}
  151.   
  152.    while(mode!=0)  //當(dāng)mode不為0時(shí)
  153.    {
  154. display2(htem,0x8b);  //顯示調(diào)十位        
  155. display3(time,0xca);   //顯示調(diào)個(gè)位小數(shù)位
  156.                  
  157.    while(mode!=0)
  158.    {
  159.            switch(mode)  //切換模式case語(yǔ)句循環(huán) 5個(gè)模式 5個(gè)循環(huán) 6個(gè)變量 初始模式為0 切換后對(duì)應(yīng)地方的光標(biāo)閃爍
  160.            {
  161.                         
  162.            case 1:writelcd_cmd(0xc0+10);writelcd_cmd(0x0f);break;  //調(diào)個(gè)位
  163.            case 2:writelcd_cmd(0x80+11);writelcd_cmd(0x0f);break;  //調(diào)十位
  164.                  case 3:writelcd_cmd(0xc0+10);writelcd_cmd(0x0f);break;  //調(diào)小數(shù)位                                 
  165.                  case 4:lcd_max();break;                                  //顯示最大溫度
  166.                  case 5:lcd_min();break;  //顯示最小溫度
  167.            default:mode=0;break;
  168.            }
  169.                  
  170.           if(key2==0&&mode==1)  //模式為1 key2為0時(shí) 調(diào)最高位的個(gè)位
  171.           {
  172.                         delay(50);  //按鍵消抖
  173.             y=0;display3(y,0x80);writelcd_cmd(0xca+11);   //max one 在左上角顯示0 表示調(diào)最高溫度
  174.                   
  175.                   if(key2==0)
  176.                 {  
  177.                         delay(10);  //十個(gè)循環(huán) 對(duì)應(yīng)0-9數(shù)字
  178.                    cnt1++;  //計(jì)數(shù)+1
  179.                    while(key2==0);
  180.                    switch(cnt1%11)  //按鍵到10以后清零
  181.                    {
  182.                         case 1:time=0;display3(time,0xca);writelcd_cmd(0xca+11);break;                           //在0xca的地方顯示個(gè)位值 光標(biāo)閃爍
  183.                   case 2:time=1;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  184.             case 3:time=2;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  185.             case 4:time=3;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  186.                         case 5:time=4;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  187.                         case 6:time=5;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  188.                         case 7:time=6;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  189.                         case 8:time=7;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  190.                         case 9:time=8;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  191.                         case 10:time=9;display3(time,0xca);writelcd_cmd(0xca+11);break;                        
  192.                         
  193.                         default:break;        
  194.                    }        
  195.                 }
  196.           }
  197.                 if(key1==0&&mode==1)  //類似 最低個(gè)位
  198.           {
  199.                         delay(50);
  200.             y=1;display3(y,0x80);writelcd_cmd(0xca+11);  //min one 在左上角顯示1 表示調(diào)最低溫度
  201.                   
  202.                   if(key1==0)
  203.                 {  
  204.                         delay(10);
  205.                    cnt4++;
  206.                    while(key1==0);
  207.                    switch(cnt4%11)
  208.                    {
  209.                         case 1:time2=0;display3(time2,0xca);writelcd_cmd(0xca+11);break;         
  210.                   case 2:time2=1;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  211.             case 3:time2=2;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  212.             case 4:time2=3;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  213.                         case 5:time2=4;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  214.                         case 6:time2=5;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  215.                         case 7:time2=6;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  216.                         case 8:time2=7;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  217.                         case 9:time2=8;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  218.                         case 10:time2=9;display3(time2,0xca);writelcd_cmd(0xca+11);break;                        
  219.                         
  220.                         default:break;        
  221.                    }        
  222.                 }
  223.           }
  224.           if(key2==0&&mode==2)  //最高十位
  225.           {
  226.           delay(10);
  227.                         x=00;display2(x,0x80);writelcd_cmd(0x80+11);  //max ten 在左上角顯示00 表示調(diào)最高
  228.           if(key2==0)
  229.                   {
  230.                    cnt2++;
  231.                    while(key2==0);
  232.                    switch(cnt2%11)
  233.                    {
  234.                                 
  235.                     case 1:htem=00;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  236.                     case 2:htem=10;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  237.                     case 3:htem=20;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  238.                           case 4:htem=30;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  239.                     case 5:htem=40;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  240.                     case 6:htem=50;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  241.                     case 7:htem=60;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  242.                     case 8:htem=70;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  243.                     case 9:htem=80;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  244.                     case 10:htem=90;display2(htem,0x8b);writelcd_cmd(0x80+11);break;                  
  245.                                  
  246.         
  247.                                 
  248.                     default:break;
  249.                    }
  250.                   }
  251.                         

  252.           }
  253.                 if(key1==0&&mode==2)
  254.           {
  255.           delay(10);
  256.                         x=10;display2(x,0x80);writelcd_cmd(0x80+11); //min ten 在左上角顯示10表示 調(diào)最低
  257.           if(key1==0)
  258.                   {
  259.                    cnt3++;
  260.                    while(key1==0);
  261.                    switch(cnt3%11)
  262.                    {
  263.                                 
  264.                     case 1:htem2=00;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  265.                     case 2:htem2=10;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  266.                     case 3:htem2=20;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  267.                           case 4:htem2=30;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  268.                     case 5:htem2=40;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  269.                     case 6:htem2=50;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  270.                     case 7:htem2=60;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                 
  271.                     case 8:htem2=70;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                  
  272.                     case 9:htem2=80;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                 
  273.                     case 10:htem2=90;display2(htem2,0x8b);writelcd_cmd(0x80+11);break;                 
  274.                         
  275.                                 
  276.                     default:break;
  277.                    }
  278.                   }
  279.                         

  280.           }
  281.                 if(key2==0&&mode==3)  //最高小數(shù)
  282.           {
  283.                         delay(50);
  284.                           z=00;display2(z,0x80);writelcd_cmd(0xca+11); //max dot
  285.                   
  286.                   if(key2==0)
  287.                 {  
  288.                         delay(10);
  289.                    cnt5++;
  290.                    while(key2==0);
  291.                    switch(cnt5%11)
  292.                    {
  293.                         case 1:dot=0;display3(dot,0xca);writelcd_cmd(0xca+11);break;         
  294.                   case 2:dot=1;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  295.             case 3:dot=2;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  296.             case 4:dot=3;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  297.                         case 5:dot=4;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  298.                         case 6:dot=5;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  299.                         case 7:dot=6;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  300.                         case 8:dot=7;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  301.                         case 9:dot=8;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  302.                         case 10:dot=9;display3(dot,0xca);writelcd_cmd(0xca+11);break;                        
  303.                         
  304.                         default:break;        
  305.                    }        
  306.                 }
  307.           }
  308.                 if(key1==0&&mode==3)  //最低小數(shù)
  309.           {
  310.                         delay(50);
  311.                            z=10;display2(z,0x80);writelcd_cmd(0xca+11);   //min dot
  312.                   
  313.                   if(key1==0)
  314.                 {  
  315.                         delay(10);
  316.                    cnt6++;
  317.                    while(key1==0);
  318.                    switch(cnt6%11)
  319.                    {
  320.                         case 1:dot2=0;display3(dot2,0xca);writelcd_cmd(0xca+11);break;         
  321.                   case 2:dot2=1;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  322.             case 3:dot2=2;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  323.             case 4:dot2=3;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  324.                         case 5:dot2=4;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  325.                         case 6:dot2=5;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  326.                         case 7:dot2=6;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  327.                         case 8:dot2=7;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  328.                         case 9:dot2=8;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  329.                         case 10:dot2=9;display3(dot2,0xca);writelcd_cmd(0xca+11);break;                        
  330.                         
  331.                         default:break;        
  332.                    }        
  333.                 }
  334.           }
  335.                
  336.                 if(mode==4)  //模式4 顯示最大溫度
  337.           {
  338.                         maxtem=htem*10+time*10+dot;
  339.                         lcd_max();                        
  340.           }
  341.                
  342.                 if(mode==5)  //最低溫度
  343.           {
  344.                         mintem=htem2*10+time2*10+dot2;
  345.                         lcd_min();                    
  346.           }
  347.                
  348.    }
  349.   }
  350.   lcd_init();  //模式為0時(shí)執(zhí)行LCD初始化函數(shù)
  351. }




  352. //中斷初始化函數(shù)
  353. void init()
  354. {
  355.   lcd_init();                   //lcd初始化
  356.    speaker=1;  //蜂鳴器口默認(rèn)高電平
  357.    mode=0;  //模式默認(rèn)0
  358.    htem=80;  //最高溫度默認(rèn)80
  359.    time=0;
  360.         htem2=10;  //最低溫度默認(rèn)10
  361.         time2=0;
  362.         dot=0;
  363.         dot2=0;
  364.         EA=1;                                //總中斷開(kāi)啟
  365.    EX1=1;                                //外部中斷1允許
  366.    ET1=1;                                //定時(shí)器1允許
  367.    TMOD=0X01;                        //定時(shí)中斷1,模式1
  368.    IT1=1;                                //中斷1 下降沿觸發(fā)
  369.    TH1=0Xee;                        //定時(shí)中斷1 0.5us
  370.    TL1=0X00;
  371.          TR1=0;  //定時(shí)中斷1默認(rèn)關(guān)閉
  372.         
  373.           count=0;    //時(shí)間計(jì)數(shù)默認(rèn)為0
  374.     hour=00;    //小時(shí)00
  375.     min=00;    //分鐘00
  376.     sec=00;    //秒00
  377.      
  378.     TH0=(65536-50000)/256;    //內(nèi)部中斷T0初始化
  379.     TL0=(65536-50000)%256;   
  380.     TR0=1;    //內(nèi)部中斷T0開(kāi)啟
  381.     ET0=1;  
  382.         
  383. }



  384. //主函數(shù)
  385. void main()
  386. {  
  387.   P1=0xe7;     //初始P1口,P14,P13為低電平 使S1 S5 S9 S14 S15 S16變?yōu)榻拥氐钠胀ㄩ_(kāi)關(guān) S9與P33短接 用于切換模式和退出報(bào)警中斷
  388.          init();                  //中斷初始化
  389.         
  390.         

  391.         while(1)
  392.         {  
  393.                 if(mode!=0)                  //當(dāng)模式不為0
  394.                 {keyscan();}                  //執(zhí)行按鍵掃描 以及調(diào)溫度的程序

  395.              else if(mode==0)                  //模式為0時(shí)
  396.                 {
  397.                                 delay(100);
  398.                     tmpchange();                  //在ds18b20取數(shù)據(jù)
  399.                         tem=tmp();                         //溫度值獲取 為整數(shù) 且小數(shù)位實(shí)際上是個(gè)位 如35.5攝氏度對(duì)應(yīng)的值是355
  400.                         
  401.         if(keyh==0)                 //當(dāng)S14閉合時(shí) 實(shí)現(xiàn)小時(shí)加一  
  402.         {  
  403.             delay(5);  
  404.             if(keyh==0)  
  405.             {     
  406.                 if(hour!=23)    hour++;                    //hour=23后清零
  407.                 else            hour=0;  
  408.             }  
  409.             while(!keyh);                       //檢測(cè)松手      
  410.               
  411.         }  
  412.   
  413.         if(keym==0)              //實(shí)現(xiàn)分鐘加一  
  414.         {  
  415.             delay(5);  
  416.             if(keym==0)  
  417.             {     
  418.                 if(min!=59)                    //59后清零
  419.                 {  
  420.                     min++;  
  421.                 }  
  422.                 else   
  423.                 {  
  424.                     min=0;  
  425.                 }  
  426.             }  
  427.             while(!keym);       //松手檢測(cè)  
  428.               
  429.         }  
  430.   
  431.         if(keys==0)             //實(shí)現(xiàn)秒加一  
  432.         {  
  433.             delay(5);  
  434.             if(keys==0)  
  435.             {     
  436.                 if(sec!=59)                    //59后清零
  437.                 {  
  438.                     sec++;  
  439.                 }  
  440.                 else   
  441.                 {  
  442.                     sec=0;  
  443.                 }  
  444.             }  
  445.             while(!keys);  
  446.             
  447.         }  
  448.   
  449.         hour1=hour/10;                    //小時(shí)十位
  450.         hour2=hour%10;                    //小時(shí)個(gè)位
  451.         min1=min/10;                    //分鐘十位
  452.         min2=min%10;                    //分鐘個(gè)位
  453.         sec1=sec/10;                    //秒十位
  454.         sec2=sec%10;                    //秒個(gè)位
  455.   
  456.               
  457.                 maxtem=htem*10+time*10+dot;
  458.                 mintem=htem2*10+time2*10+dot2;
  459.                     

  460.                         if(tem>=maxtem)                //高于最高
  461.                         {
  462.                           TR1=1;                                //T1中斷開(kāi)啟
  463.                                                                     
  464.                         }
  465.                         else if(tem<=mintem)                //低于最低
  466.                         {
  467.                           TR1=1;                                //T1中斷開(kāi)啟
  468.                                                                      
  469.                         }
  470.                         else                                     //處于中間
  471.                         {
  472.                         TR1=0;                                        //T1中斷關(guān)閉
  473.                                            //報(bào)警燈滅
  474.                         }
  475.                         
  476.                         delay(10);
  477.                     display(tem,0xca);                  //一直顯示溫度
  478.                           display4(hour1,hour2,min1,min2,sec1,sec2);  //一直顯示時(shí)鐘  

  479.                     delay(100);
  480.                         
  481.                         
  482. ……………………

  483. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏6 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報(bào)

樓主
ID:440028 發(fā)表于 2022-1-11 14:54 | 只看該作者
lidianxiaofang.c(48): warning C206: 'writelcd_cmd': missing function-prototype
程序編譯沒(méi)有通過(guò)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表