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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

最近做多點溫度報警器的一些資料

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:273334 發(fā)表于 2018-1-8 18:33 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
期末大作業(yè):
多點溫度檢測系統(tǒng)的設(shè)計
基本要求:
1、掌握51系列單片機的基本結(jié)構(gòu)及設(shè)計方法;
2、了解多點溫度檢測系統(tǒng)的工作原理;
3、熟悉多點溫度檢測系統(tǒng)的設(shè)計方案及其優(yōu)劣;
4、選擇一款合適的方案完成多點溫度檢測系統(tǒng)的設(shè)計。

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

設(shè)計內(nèi)容:
1、方案設(shè)計;
2、多點溫度檢測系統(tǒng)的硬件設(shè)計;
3、多點溫度檢測系統(tǒng)的軟件設(shè)計和調(diào)試;
4、多點溫度檢測系統(tǒng)的仿真;
5、完成大作業(yè)

的半成品。。。

單片機源程序如下:
  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函數(shù)聲明************************************************/
  9. extern void InitLcd1602();                                          //lcd1602初始化函數(shù)
  10. extern void DisplayLimit(uchar x,uchar y,char dat);                //在坐標(biāo)(x,y)顯示溫度上限或下限
  11. extern void InitMaxMin();                                         //進入溫度報警值設(shè)置界面
  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函數(shù)聲明****************************************************/
  17. extern void KeyDrive();
  18. extern void KeyScan();
  19. /****************************************ds18b20.c函數(shù)聲明***************************************************/
  20. extern bit        RESET_DS18B20(void);
  21. extern uint Read_DS18B20_TEMP(void);
  22. /*****************************************main.c子函數(shù)聲明***************************************************/
  23. void Timer1Init(uint ms);                                    //定時器1初始化函數(shù)
  24. void SetLimit();                                            //設(shè)置報警值函數(shù)
  25. void ControlBuzz();                                        //蜂鳴器控制函數(shù)
  26. void delay(uint z);
  27. /**********************************************變量定義******************************************************/
  28. extern uchar code buff[];
  29. uchar T1RH=1;                                           //定時器初值
  30. uchar T1RL=1;                                             
  31. bit flagBuzz=0;                                       //蜂鳴器開關(guān)標(biāo)志
  32. bit EBuzz=0;                                         //蜂鳴器使能標(biāo)志
  33. char High=20;                                       //溫度上限  超過限度蜂鳴器開
  34. char Low=10;                                       //溫度下限
  35. uchar mode=0;                                     //模式變量
  36. uchar cnt=0;                                     //ESC按鍵 變量
  37. uchar tflag;                                    //溫度正負標(biāo)志位
  38. /*************************************主函數(shù)***************************************/
  39. void main()
  40. {
  41.         EA=1;                                            //開啟總中斷
  42.         Timer1Init(1);                                   //初始化定時器1
  43.         RESET_DS18B20();                                 //復(fù)位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,".");                                     //顯示小數(shù)點
  51.                 LcdShowDat(13,1,buff[Read_DS18B20_TEMP()%10]);            //顯示小數(shù)位
  52.                 KeyDrive();                                    //按鍵驅(qū)動
  53.                 SetLimit();                                    //設(shè)置報警值
  54.         }
  55. }

  56. /**********************************按鍵動作函數(shù)************************************/
  57. void KeyDown(uchar keycode)
  58. {
  59.         if(keycode==0x0D)                                        //回車鍵:進入模式設(shè)置
  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鍵:開關(guān)蜂鳴器報警
  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)                                     //蜂鳴器使能關(guān)閉 不顯示喇叭
  102.                   {
  103.                            EBuzz=0;
  104.                                 LcdShowStr(7,0,"  ");
  105.                   }
  106.           }
  107.   }
  108. }

  109. /************************************報警值設(shè)置函數(shù)*********************************/
  110. void SetLimit()
  111. {
  112.                 if(mode==0);                                             //模式0 正常顯示 調(diào)用蜂鳴器控制函數(shù)
  113.                 {
  114.                         ControlBuzz();
  115.                 }
  116.                
  117.                 if(mode!=0)                                              //模式1 調(diào)整溫度上限
  118.                 {                                                        //模式2 調(diào)整溫度下限
  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. /************************************蜂鳴器控制函數(shù)************************************/
  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初始化函數(shù)***********/
  160. void Timer1Init(uint ms)
  161. {
  162.         ulong tmp;                                               //16位長整型變量tmp
  163. ……………………

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

所有資料51hei提供下載:

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


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:157028 發(fā)表于 2018-12-22 17:37 | 只看該作者
可以把電路圖也分享一下嘛。
回復(fù)

使用道具 舉報

板凳
ID:431770 發(fā)表于 2018-12-23 11:22 | 只看該作者
原理圖可以分享嗎
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产二区 | 国产黄色在线观看 | 午夜在线视频一区二区三区 | 男女免费在线观看视频 | 成人影院免费视频 | 国产成人在线视频免费观看 | av在线播放国产 | 免费日本视频 | 精品成人av | 精品久久久久久久久久久院品网 | 欧美视频二区 | 久久99精品久久久 | 91视频大全 | 国产一区二区三区视频 | 国产超碰人人爽人人做人人爱 | 亚洲乱码一区二区三区在线观看 | 国产精品揄拍一区二区久久国内亚洲精 | 国产自产c区 | 亚洲一页| 麻豆久久 | 中国一级特黄毛片大片 | 毛片一级黄色 | 五月天婷婷丁香 | 日韩欧美在线一区 | 国产精品国产三级国产播12软件 | 国产成人精品一区二区三区 | 日韩中文字幕视频在线 | 国产高清精品一区二区三区 | 欧美激情欧美激情在线五月 | 黄色毛片在线看 | 麻豆精品国产91久久久久久 | 在线观看三级av | 国产免费观看一区 | 欧美 日韩 国产 成人 在线 91 | 日韩精品免费一区二区在线观看 | 日韩无| 精品一区二区三区在线视频 | 日韩久久久一区二区 | 精品视频一区二区 | 在线观看毛片网站 | 日韩在线免费视频 |