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

標題: 基于51單片機DS18B20溫度檢測報警系統串口設置閥值-仿真及源程序 [打印本頁]

作者: bbxyliyang    時間: 2023-11-15 14:32
標題: 基于51單片機DS18B20溫度檢測報警系統串口設置閥值-仿真及源程序
一、系統方案
1、本設計采用51單片機作為主控器。
2、DS18B20采集溫度值送到數碼管顯示。
3、按鍵報警閥值或串口設置閥值。
4、測量溫度小于下限或大于上限,蜂鳴器報警。


二、硬件設計
原理圖如下:
三、單片機軟件設計
1、首先是系統初始化
uint z;
        init_eeprom();  //開始初始化保存的數據
        InitTimer();    //初始化定時器
        wendu=ReadTemperature()-5;                          //獲取溫度值并減去DS18B20的溫漂誤差
        for(z=0;z<300;z++)
        {
                Disp_init();        
        }
        Uart_init();
2、顯示程序
  1. /*****顯示報警溫度子程序*****/
  2. void Disp_alarm(uchar baojing)
  3. {
  4.         P0 =LEDData[baojing%10];      //
  5.         P2 = 0xBF;
  6.         Delay(100);
  7.         P2=0xff;

  8.         P0 =LEDData[baojing%100/10]; //顯示十位
  9.         P2 = 0xEF;
  10.         Delay(100);
  11.         P2=0xff;

  12.         if(set_st==1&&H_ZF==0&&baojing/100!=0)
  13.         P0 =LEDData[baojing/100]; //顯示百位
  14.         else if(set_st==1&&H_ZF==0&&baojing/100==0)
  15.         P0=0x00;
  16.         else if(set_st==1&&H_ZF==1)
  17.         P0=0x80;
  18.         else if(set_st==2&&L_ZF==0&&baojing/100!=0)
  19.         P0 =LEDData[baojing/100]; //顯示百位
  20.         else if(set_st==2&&L_ZF==0&&baojing/100==0)
  21.         P0=0x00;
  22.         else if(set_st==2&&L_ZF==1)
  23.         P0=0x80;
  24.         P2 = 0xFB;
  25.         Delay(100);
  26.         P2=0xff;

  27.         if(set_st==1)P0 =0xCE;
  28.         else if(set_st==2)P0 =0x1A; //上限H、下限L標示
  29.         P2 = 0xFE;
  30.         Delay(100);
  31.         P2 = 0xff;         //關閉顯示
  32. }
復制代碼


3、按鍵程序
  1. /*****外部中斷1服務程序*****/
  2. void int1(void) interrupt 2
  3. {
  4.         EX1=0;      //關外部中斷1
  5.         if(ADD==0&&set_st==1)
  6.         {
  7.                 BEEP=0;
  8.                 Delay(2000);
  9.                 BEEP=1;
  10.                 do
  11.                 {
  12.                         Disp_alarm(shangxian);
  13.                 }
  14.                 while(ADD==0);
  15.                 if(H_ZF==0)
  16.                 {
  17.                         shangxian++;
  18.                         if(shangxian>=125)shangxian=125;
  19.                 }
  20.                 else if(H_ZF==1)
  21.                 {
  22.                         shangxian--;
  23.                         if(shangxian<=0)
  24.                         {
  25.                                 shangxian=0;
  26.                                 H_ZF=0;
  27.                         }
  28.                 }
  29.         }                        
  30.         else if(ADD==0&&set_st==2)
  31.         {
  32.                 BEEP=0;
  33.                 Delay(2000);
  34.                 BEEP=1;
  35.                 do
  36.                 {
  37.                         Disp_alarm(xiaxian);
  38.                 }
  39.                 while(ADD==0);
  40.                 if(L_ZF==0)
  41.                 {
  42.                         xiaxian++;
  43.                         if(xiaxian>=shangxian-1)
  44.                                 xiaxian=shangxian-1;        
  45.                 }
  46.                 else if(H_ZF==0&&L_ZF==1)
  47.                 {
  48.                         xiaxian--;
  49.                         if(xiaxian<=0)
  50.                         {
  51.                                 if(shangxian==0)
  52.                                 {
  53.                                         xiaxian=1;
  54.                                         L_ZF=1;
  55.                                 }
  56.                                 else
  57.                                 {
  58.                                         xiaxian=0;
  59.                                         L_ZF=0;
  60.                                 }
  61.                         }
  62.                 }
  63.                 else if(H_ZF==1&&L_ZF==1)
  64.                 {
  65.                         xiaxian--;
  66.                         if(xiaxian<=shangxian+1)
  67.                                 xiaxian=shangxian+1;
  68.                 }
  69.         }  
  70. }
復制代碼


4、核心算法程序
  1. /*****初始化DS18B20*****/
  2. void Init_DS18B20(void)
  3. {
  4.   unsigned char x=0;
  5.   DQ = 1;         //DQ復位
  6.   Delay_DS18B20(8);    //稍做延時
  7.   DQ = 0;         //單片機將DQ拉低
  8.   Delay_DS18B20(80);   //精確延時,大于480us
  9.   DQ = 1;         //拉高總線
  10.   Delay_DS18B20(34);
  11. }
  12. /*****讀一個字節*****/
  13. unsigned char ReadOneChar(void)
  14. {
  15.   unsigned char i=0;
  16.   unsigned char dat = 0;
  17.   for (i=8;i>0;i--)
  18.   {
  19.     DQ = 0;     // 給脈沖信號
  20.     dat>>=1;
  21.     DQ = 1;     // 給脈沖信號
  22.     if(DQ)
  23.     dat|=0x80;
  24.     Delay_DS18B20(4);
  25.   }
  26.   return(dat);
  27. }
  28. /*****寫一個字節*****/
  29. void WriteOneChar(unsigned char dat)
  30. {
  31.   unsigned char i=0;
  32.   for (i=8; i>0; i--)
  33.   {
  34.     DQ = 0;
  35.     DQ = dat&0x01;
  36.     Delay_DS18B20(5);
  37.     DQ = 1;
  38.     dat>>=1;
  39.   }
  40. }
  41. /*****讀取溫度*****/
  42. unsigned int ReadTemperature(void)
  43. {
  44.   unsigned char a=0;
  45.   unsigned char b=0;
  46.   unsigned int t=0;
  47.   float tt=0;
  48.   Init_DS18B20();
  49.   WriteOneChar(0xCC);  //跳過讀序號列號的操作
  50.   WriteOneChar(0x44);  //啟動溫度轉換
  51.   Init_DS18B20();
  52.   WriteOneChar(0xCC);  //跳過讀序號列號的操作
  53.   WriteOneChar(0xBE);  //讀取溫度寄存器
  54.   a=ReadOneChar();     //讀低8位
  55.   b=ReadOneChar();    //讀高8位
  56.   t=b;
  57.   t<<=8;
  58.   t=t|a;
  59.   if(t&0xf800)
  60.   {
  61.         t=~t+1;
  62.         fuhao=1;
  63.   }
  64.   else
  65.   fuhao=0;
  66.   tt=t*0.0625;
  67.   t= tt*10+0.5;     //放大10倍輸出并四舍五入
  68.   return(t);
  69. }
復制代碼


四、 proteus仿真設計
Proteus軟件是一款應用比較廣泛的工具,它可以在沒有硬件平臺的基礎上通過自身的軟件仿真出硬件平臺的運行情況,這樣就可以通過軟件仿真來驗證我們設計的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達到我們設定的目的,避免我們搭建實物的時候,如果當初選擇的方案有問題,我們器件都已經焊接好了,再去卸載下去,再去焊接新的方案的器件,測試,這樣會浪費人力和物力,也給開發者帶來一定困惑,Proteus仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優方案。最后根據測試沒問題的仿真圖紙,焊接實物,調試,最終完成本設計的作品。



作者: kissubaby    時間: 2023-11-16 09:46
好東西值得擁有,樓主,提供源代碼下載嗎?




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 亚洲免费在线观看 | 亚洲精选久久 | 日本欧美国产 | 国产精品一二区 | 欧美日韩不卡 | 97国产精品视频人人做人人爱 | 亚洲国产一区二区三区在线观看 | 成人精品一区二区 | 精品少妇一区二区三区日产乱码 | 久久福利电影 | 国产区精品 | 成人在线视频网站 | 欧美在线二区 | 亚洲综合色丁香婷婷六月图片 | 网站黄色在线 | 精一区二区 | 99福利视频| 精品久久久久久久久久久 | 狠狠草视频 | 91秦先生艺校小琴 | 日韩在线视频免费观看 | 亚洲欧美日韩电影 | 久久久久成人精品免费播放动漫 | 免费久久网 | 99久久婷婷国产综合精品电影 | 精品国产一区二区三区久久狼黑人 | 国产精品久久久久久二区 | 国产视频二区 | 国产剧情一区二区三区 | av在线免费网 | 美女一级毛片 | 2018天天干天天操 | 免费在线成人网 | 国产欧美精品区一区二区三区 | 久久se精品一区精品二区 | 国产成人短视频在线观看 | 黄色一级大片在线观看 | 精品一区二区三区四区视频 | 成人在线视频看看 | 亚洲综合五月天婷婷 | 欧美在线视频网 |