久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: DS18B20+RS485+液晶1602+顯示(帶限溫)Proteus仿真+單片機程序 [打印本頁]

作者: qifeng    時間: 2019-6-10 16:18
標題: DS18B20+RS485+液晶1602+顯示(帶限溫)Proteus仿真+單片機程序
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)


單片機源程序如下:
  1. #include<main.h>
  2. #include<DS18B20.h>

  3. uchar  Uart_flag=0;                 //串口標志位
  4. uchar k1num=0;
  5. uchar a;

  6. char TH=10,TL=-10;                  //設置限制最高值、最低值
  7. void key_scan();

  8. /****
  9. *****延時1MS函數
  10. ****/

  11. void delay(uint x)
  12. {
  13.         uchar m,n;
  14.         for(m=x;m>0;m--)
  15.         for(n=110;n>0;n--);
  16. }
  17. /***
  18. **函數名:UART_init()
  19. **功能:  串口初始化
  20. ****/
  21. void UART_init()
  22. {
  23.         TMOD=0x20;
  24.         SCON=0x50;
  25.         TH1=0xFD;
  26.         TL1=0xFD;
  27.         TR1=1;

  28.         en=1;           //485一直在寫
  29. }
  30. /***
  31. **函數名:UART_sent()
  32. **功能:  串口發送一個字節
  33. ****/
  34. void UART_sent(uchar date)
  35. {
  36.        
  37.         SBUF=date;
  38.         while(!TI);
  39.         TI=0;
  40. }
  41. /***
  42. **函數名:SPEAK()
  43. **功能:  做報警鈴聲
  44. ****/
  45. void SPEAK()
  46. {
  47.                 beep=0;
  48.                 delay(160);
  49.                 beep=1;       
  50. }
  51. /***
  52. **函數名:main()
  53. **功能:  主函數
  54. ****/
  55. void main()
  56. {
  57.         int ans;         //讀取的溫度寄存器
  58.          uchar flag;   //正負位標志
  59.         UART_init();
  60.         while(1)
  61.         {         
  62.                 key_scan();
  63.                
  64.                 /************* 正常溫度*********************/
  65.                 if(Uart_flag==0)
  66.                 {
  67.                                
  68.                         DS18B20_start_change();         //開始讀溫度
  69.                         delay(1000);
  70.                         ans=DS18B20_read_date();
  71.                         if((ans>TH)||(ans<TL))         //                判斷溫度是否超過限溫值
  72.                         {
  73.                                 P0=0;
  74.                                 SPEAK();
  75.                         }
  76.                         else               
  77.                         {
  78.                                 P0=0xff;
  79.                                 beep=1;
  80.                         }
  81.                         /******判斷是否為負溫度********/
  82.                         if(ans<0)
  83.                         {
  84.                                 ans=-ans;
  85.                                 flag=1;
  86.                         }
  87.                         else
  88.                                 flag=0;
  89.                        
  90.                         if(flag==1)                         //負溫度,發送‘-’
  91.                                 UART_sent('-');
  92.                         else
  93.                                 UART_sent('+');         //正溫度,發送‘+’
  94.                         UART_sent( ( uchar )ans);
  95.                 }
  96.                        
  97.                 /**********調節上限溫度*****************/
  98.                 if(Uart_flag==1)
  99.                 {
  100.                         UART_sent('!');                //調節上限溫度標志
  101.                            _nop_();
  102.                         _nop_();
  103.                    UART_sent(TH);                //發送上限溫度標志
  104.                 }
  105.                 /**********調節下限溫度**************/
  106.                 if(Uart_flag==2)
  107.                 {
  108.                         UART_sent('@');                //調節下限溫度標志
  109.                            _nop_();
  110.                         _nop_();
  111.                    UART_sent(TL);                //發送下限溫度標志
  112.                 }
  113.         }
  114. }
  115. /***
  116. **函數名:key_scan()
  117. **功能:  掃描鍵盤
  118. ****/
  119. void key_scan()
  120. {
  121.         if(k1==0)
  122.         {
  123.                 delay(2);
  124.                 if(k1==0)
  125.                 {
  126.                         while(!k1);                          //松手檢測
  127.                         k1num++;
  128.                         if(k1num==1)
  129.                         {
  130.                                 Uart_flag=1;        //發送限制最高溫度標志
  131.                         }
  132.                         if(k1num==2)
  133.                         {
  134.                                 Uart_flag=2;        //發送限制最低溫度標志
  135.                         }
  136.                         if(k1num==3)
  137.                         {
  138.                                 Uart_flag=0;
  139.                                 k1num=0;       
  140.                         }
  141.                 }
  142.         }
  143.         if(k1num!=0)
  144.         {
  145.                 switch(k1num)
  146.                 {
  147.                         case 1:                                                          //調節最高限溫值
  148.                                 {
  149.                                         if(k2==0)
  150.                                         {
  151.                                                 delay(2);
  152.                                                 if(k2==0)
  153.                                                 {
  154.                                                         while(!k2);
  155.                                                         TH++;
  156.                                                         if(TH>=30)
  157.                                                                 TH=30;       
  158.                                                 }
  159.                                         }
  160.                                         if(k3==0)
  161.                                         {
  162.                                                 delay(2);
  163.                                                 if(k3==0)
  164.                                                 {
  165.                                                         while(!k3);
  166.                                                         TH--;
  167.                                                         if(TH<0)
  168.                                                                 TH=0;       
  169.                                                 }
  170.                                         }

  171.                                 }break;
  172.                         case 2:                                                                //調節最低限溫值
  173.                                 {
  174.                                         if(k2==0)
  175.                                         {
  176.                                                 delay(2);
  177. ……………………

  178. …………限于本文篇幅 余下代碼請從附件下載:

復制代碼

全部資料51hei下載地址:
DS18B20 RES485 液晶1602 顯示(帶限溫).zip (153.18 KB, 下載次數: 166)


作者: 成森林    時間: 2019-11-30 11:56
謝謝樓主,我下載了。。。。。
作者: makaichuang123    時間: 2019-12-19 20:39
可以運行成功了,謝謝




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 人人爽日日躁夜夜躁尤物 | 午夜一级做a爰片久久毛片 精品综合 | 综合一区二区三区 | 久久亚洲国产 | 日本久久网 | 日韩欧美在线不卡 | 天天干精品 | 在线国产精品一区 | 国产日韩欧美激情 | 91国产在线视频在线 | 超碰一区二区 | 特级毛片www | 国产精品色哟哟网站 | 久久精品69 | 成人小视频在线观看 | 国产精品亚洲二区 | 视频一区二区三区四区五区 | 欧美日韩国产欧美 | 亚洲精品成人免费 | 国产91观看 | 亚洲国产精品久久久 | 亚洲视频一区在线播放 | 毛片网在线观看 | 久久不卡| 欧美一区二区在线播放 | 成人午夜激情 | 国产欧美一区二区久久性色99 | 涩涩视频在线观看 | 久久成人一区 | 黄色一级大片在线免费看产 | 久久精品亚洲国产 | 成人一区二区在线 | 国产良家自拍 | 日韩中文字幕在线观看 | 亚洲精品一区二区在线观看 | 成人深夜小视频 | 国产区在线视频 | 国产激情福利 | 精品免费视频 | 欧美精品一区在线 | 少妇一级淫片免费放播放 |