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

標題: 最近做多點溫度報警器的一些資料 [打印本頁]

作者: cth886    時間: 2018-1-8 18:33
標題: 最近做多點溫度報警器的一些資料
期末大作業:
多點溫度檢測系統的設計
基本要求:
1、掌握51系列單片機的基本結構及設計方法;
2、了解多點溫度檢測系統的工作原理;
3、熟悉多點溫度檢測系統的設計方案及其優劣;
4、選擇一款合適的方案完成多點溫度檢測系統的設計。

功能要求:
1、設計一個4路溫度檢測系統,每路溫度的變化范圍是-10℃--+110℃;
2、對4路溫度循環進行顯示,顯示格式為“第X路 XXX.X度”,每路顯示的時間自定,當按下【鎖定】鍵時,僅顯示鎖定的那一路的溫度,再次按下【鎖定】鍵后,恢復循環顯示;
3、每路溫度可單獨設置上下限報警范圍;
4、當檢測到的實際溫度超出設置的上下限(高于上限或者低于下限)時發出聲音報警,同時顯示器閃爍顯示報警的溫度及路數(按【取消】鍵后停止報警);
5、按鍵若干。

設計內容:
1、方案設計;
2、多點溫度檢測系統的硬件設計;
3、多點溫度檢測系統的軟件設計和調試;
4、多點溫度檢測系統的仿真;
5、完成大作業

的半成品。。。

單片機源程序如下:
  1. #include "reg52.h"

  2. #define uchar unsigned char
  3. #define uint unsigned int
  4. #define ulong unsigned long
  5.        
  6. //sbit Buzz = P3^2;
  7. sbit Buzz = P1^5;

  8. /*******************************************lcd1602.c函數聲明************************************************/
  9. extern void InitLcd1602();                                          //lcd1602初始化函數
  10. extern void DisplayLimit(uchar x,uchar y,char dat);                //在坐標(x,y)顯示溫度上限或下限
  11. extern void InitMaxMin();                                         //進入溫度報警值設置界面
  12. extern void Display_user(uchar x);                               //顯示用戶自定義的字符“↑”
  13. extern void LcdShowStr(uchar x,uchar y,uchar *str);
  14. extern void LcdShowDat(uchar x,uchar y,uchar num);
  15. extern void Display_laba();
  16. /*******************************************key.c函數聲明****************************************************/
  17. extern void KeyDrive();
  18. extern void KeyScan();
  19. /****************************************ds18b20.c函數聲明***************************************************/
  20. extern bit        RESET_DS18B20(void);
  21. extern uint Read_DS18B20_TEMP(void);
  22. /*****************************************main.c子函數聲明***************************************************/
  23. void Timer1Init(uint ms);                                    //定時器1初始化函數
  24. void SetLimit();                                            //設置報警值函數
  25. void ControlBuzz();                                        //蜂鳴器控制函數
  26. void delay(uint z);
  27. /**********************************************變量定義******************************************************/
  28. extern uchar code buff[];
  29. uchar T1RH=1;                                           //定時器初值
  30. uchar T1RL=1;                                             
  31. bit flagBuzz=0;                                       //蜂鳴器開關標志
  32. bit EBuzz=0;                                         //蜂鳴器使能標志
  33. char High=20;                                       //溫度上限  超過限度蜂鳴器開
  34. char Low=10;                                       //溫度下限
  35. uchar mode=0;                                     //模式變量
  36. uchar cnt=0;                                     //ESC按鍵 變量
  37. uchar tflag;                                    //溫度正負標志位
  38. /*************************************主函數***************************************/
  39. void main()
  40. {
  41.         EA=1;                                            //開啟總中斷
  42.         Timer1Init(1);                                   //初始化定時器1
  43.         RESET_DS18B20();                                 //復位18B20
  44.         delay(20);
  45.   InitLcd1602();                                   //初始化lcd1602
  46.         while(1)
  47.         {
  48.                 LcdShowDat(10,1,buff[Read_DS18B20_TEMP()/100]);           //顯示溫度值十位
  49.                 LcdShowDat(11,1,buff[Read_DS18B20_TEMP()/10%10]);         //顯示溫度值個位
  50.                 LcdShowStr(12,1,".");                                     //顯示小數點
  51.                 LcdShowDat(13,1,buff[Read_DS18B20_TEMP()%10]);            //顯示小數位
  52.                 KeyDrive();                                    //按鍵驅動
  53.                 SetLimit();                                    //設置報警值
  54.         }
  55. }

  56. /**********************************按鍵動作函數************************************/
  57. void KeyDown(uchar keycode)
  58. {
  59.         if(keycode==0x0D)                                        //回車鍵:進入模式設置
  60.         {
  61.                 mode++;
  62.                 if(mode>2)mode=0;
  63.         }
  64.         else if(keycode==0x26)                                   //向上鍵:模式1 上限值+1   模式2 下限值+1
  65.         {
  66.                 if(mode==1)
  67.                 {
  68.                         High++;
  69.                         if(High>99)High=99;
  70.                 }
  71.                 else if(mode==2)
  72.                 {
  73.                         Low++;
  74.                         if(Low==High)Low=High-1;
  75.                 }
  76.         }
  77.         else if(keycode==0x28)                                   //向下鍵:模式1 上限值-1   模式2 下限值-1
  78.         {
  79.                 if(mode==1)
  80.                 {
  81.                         High--;
  82.                         if(High==Low)High=Low+1;
  83.                 }
  84.                 else if(mode==2)
  85.                 {
  86.                         Low--;
  87.                         if(Low<0)Low=0;
  88.                 }
  89.         }
  90.         else if(keycode==0x1B)                                   //Esc鍵:開關蜂鳴器報警
  91.         {
  92.                 if(mode==0)
  93.                 {
  94.                         cnt++;
  95.                   if(cnt>1)cnt=0;
  96.                   if(cnt==1)                                          //蜂鳴器使能開啟 顯示喇叭圖像
  97.                   {
  98.                            EBuzz=1;
  99.                                  Display_laba();
  100.                   }
  101.                   else if(cnt==0)                                     //蜂鳴器使能關閉 不顯示喇叭
  102.                   {
  103.                            EBuzz=0;
  104.                                 LcdShowStr(7,0,"  ");
  105.                   }
  106.           }
  107.   }
  108. }

  109. /************************************報警值設置函數*********************************/
  110. void SetLimit()
  111. {
  112.                 if(mode==0);                                             //模式0 正常顯示 調用蜂鳴器控制函數
  113.                 {
  114.                         ControlBuzz();
  115.                 }
  116.                
  117.                 if(mode!=0)                                              //模式1 調整溫度上限
  118.                 {                                                        //模式2 調整溫度下限
  119.                         EBuzz=0;
  120.                         InitMaxMin();
  121.                         while(mode!=0)
  122.                         {
  123.                                 KeyDrive();
  124.                                 if(mode==1)
  125.                                 {
  126.                                         Display_user(3);                                   //顯示自定義的 箭頭 圖像 指向溫度上限
  127.                                         DisplayLimit(2,0,High);                            //顯示 溫度報警值上下限
  128.                 DisplayLimit(12,0,Low);
  129.                                 }
  130.                                 else if(mode==2)
  131.                                 {
  132.                                         Display_user(13);                                  //顯示自定義的 箭頭 圖像 指向溫度下限
  133.                                         LcdShowStr(3,1," ");
  134.                                         DisplayLimit(2,0,High);
  135.                 DisplayLimit(12,0,Low);
  136.                                 }
  137.                         }
  138.                         InitLcd1602();
  139.                 }
  140. }

  141. /************************************蜂鳴器控制函數************************************/
  142. void ControlBuzz()
  143. {
  144.         if((Read_DS18B20_TEMP()>=(10*High))||(Read_DS18B20_TEMP()<=(10*Low)))
  145.                 flagBuzz=1;
  146.         else
  147.                 flagBuzz=0;
  148.         if((flagBuzz==1)&&(EBuzz==1))
  149.         {
  150.                 Buzz=~Buzz;
  151.         }
  152. }

  153. void delay(uint z)
  154. {
  155.         uint x,y;
  156.         for(x=z;x>0;x--)               
  157.                 for(y=115;y>0;y--);
  158. }

  159. /**********定時器1初始化函數***********/
  160. void Timer1Init(uint ms)
  161. {
  162.         ulong tmp;                                               //16位長整型變量tmp
  163. ……………………

  164. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:

11.DS18B20溫度報警.rar (68.75 KB, 下載次數: 52)



作者: admin123    時間: 2018-12-22 17:37
可以把電路圖也分享一下嘛。
作者: GGXiang    時間: 2018-12-23 11:22
原理圖可以分享嗎




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久国产一区二区三区 | 国产区精品 | 欧美精品久久一区 | 中文字幕在线视频精品 | 91原创视频在线观看 | 久久专区| 国产精品一区在线 | 久久r精品 | 日韩欧美亚洲 | 在线看片国产精品 | 综合网视频 | 蜜桃视频在线观看免费视频网站www | 天堂综合 | 欧美va大片| 久久一区 | 久操伊人 | 毛片a级 | 日日草夜夜草 | 欧美日韩视频在线第一区 | 99久久精品国产一区二区三区 | 中文字幕加勒比 | 国产精品免费一区二区三区四区 | 久久久精品一区二区三区 | 国产人免费人成免费视频 | 亚洲欧美在线观看视频 | av在线一区二区三区 | 国产视频久久 | 亚洲精品一区二区网址 | 亚洲国产精品一区在线观看 | 日韩av免费在线观看 | 国产99视频精品免费视频7 | 日韩网站在线 | 91看片在线 | 天天操 夜夜操 | 久久精品色欧美aⅴ一区二区 | 久久久久久91香蕉国产 | 成人精品视频在线观看 | 在线成人| 99精品视频免费观看 | 高清av电影| 亚洲高清视频一区 |