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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1935|回復: 1
打印 上一主題 下一主題
收起左側

基于單片機DS18B20溫度報警系統 無線藍牙顯示 控制

[復制鏈接]
跳轉到指定樓層
樓主
一、系統方案
隨著科學技術的不斷發展帶動著電子行業的地位越來越重,現在電子產品幾乎在社會的各個領域都可以見到。這些技術的發展有效的帶動著社會生產力的發展和信息化的提高,同時電子產品也越來越智能。
本設計采用AT89C51單片機為主控芯片,采用數字型防水溫度傳感器DS18B20制作溫度檢測報警器,通過四位數碼管顯示溫度值,系統設立幾個按鍵,可以通過按鍵進行設置溫度的上、下限值,當所采集溫度超過設定值時,系統會控制蜂鳴器和對應LED發出聲光報警。這個設計簡單、成本低、具有實用性。


二、硬件設計
原理圖如下:
三、單片機軟件設計
1、首先是串口初始化:
void Uart_init()
{

        TMOD=0x20;//定時器0工作方式1

        EA=1;//開總中斷


        TH1=0xfd;
         TL1=0xfd;
         TR1=1;  
  ET1=0;         
        SM0=0;  
         SM1=1;  
         REN=1;  
        EA=1;
        ES=1;
}

2、中斷服務程序
void Usart() interrupt 4
{
        receiveData=SBUF;//出去接收到的數據
        RI = 0;//清除接收中斷標志位
        ES=0;
        SBUF=receiveData;//將接收到的數據放入到發送寄存器
        while(!TI);                         //等待發送數據完成
        TI=0;                                                 //清除發送完成標志位
        ES=1;
}
3、按鍵檢測程序
/*****外部中斷0服務程序*****/
void int0(void) interrupt 0
{
        EX0=0;      //關外部中斷0
        if(DEC==0&&set_st==1)
        {
                BEEP=0;
                Delay(2000);
                BEEP=1;
                do
                {
                        Disp_alarm(shangxian);
                }
                while(DEC==0);
                if(H_ZF==0&&L_ZF==0)
                {
                        shangxian--;
                        if(shangxian<=xiaxian+1)
                                shangxian=xiaxian+1;
                }
                else if(H_ZF==0&&L_ZF==1)
                {
                        shangxian--;
                        if(shangxian<0&&xiaxian==1)
                        {
                                shangxian=0;
                                H_ZF=0;
                        }
                        else if(shangxian<0&&xiaxian>1)
                        {
                                shangxian=1;
                                H_ZF=1;
                        }
                }
                else if(H_ZF==1)
                {
                        shangxian++;
                        if(shangxian>=xiaxian-1)
                        shangxian=xiaxian-1;
                }
        }
        else if(DEC==0&&set_st==2)
        {
                BEEP=0;
                Delay(2000);
                BEEP=1;
                do
                {
                        Disp_alarm(xiaxian);
                }
                while(DEC==0);
                if(L_ZF==0)
                {
                        xiaxian--;
                        if(xiaxian<0)
                        {
                                xiaxian=1;
                                L_ZF=1;
                        }
                }
                else if(L_ZF==1)
                {
                        xiaxian++;
                        if(xiaxian>=55)
                        {
                                xiaxian=55;
                        }
                }
        }
}
/*****外部中斷1服務程序*****/
void int1(void) interrupt 2
{
        EX1=0;      //關外部中斷1
        if(ADD==0&&set_st==1)
        {
                BEEP=0;
                Delay(2000);
                BEEP=1;
                do
                {
                        Disp_alarm(shangxian);
                }
                while(ADD==0);
                if(H_ZF==0)
                {
                        shangxian++;
                        if(shangxian>=125)shangxian=125;
                }
                else if(H_ZF==1)
                {
                        shangxian--;
                        if(shangxian<=0)
                        {
                                shangxian=0;
                                H_ZF=0;
                        }
                }
        }                        
        else if(ADD==0&&set_st==2)
        {
                BEEP=0;
                Delay(2000);
                BEEP=1;
                do
                {
                        Disp_alarm(xiaxian);
                }
                while(ADD==0);
                if(L_ZF==0)
                {
                        xiaxian++;
                        if(xiaxian>=shangxian-1)
                                xiaxian=shangxian-1;        
                }
                else if(H_ZF==0&&L_ZF==1)
                {
                        xiaxian--;
                        if(xiaxian<=0)
                        {
                                if(shangxian==0)
                                {
                                        xiaxian=1;
                                        L_ZF=1;
                                }
                                else
                                {
                                        xiaxian=0;
                                        L_ZF=0;
                                }
                        }
                }
                else if(H_ZF==1&&L_ZF==1)
                {
                        xiaxian--;
                        if(xiaxian<=shangxian+1)
                                xiaxian=shangxian+1;
                }
        }  
}
4、核心算法程序
/*****讀取溫度*****/
unsigned int ReadTemperature(void)
{
  unsigned char a=0;
  unsigned char b=0;
  unsigned int t=0;
  float tt=0;
  Init_DS18B20();
  WriteOneChar(0xCC);  //跳過讀序號列號的操作
  WriteOneChar(0x44);  //啟動溫度轉換
  Init_DS18B20();
  WriteOneChar(0xCC);  //跳過讀序號列號的操作
  WriteOneChar(0xBE);  //讀取溫度寄存器
  a=ReadOneChar();     //讀低8位
  b=ReadOneChar();    //讀高8位
  t=b;
  t<<=8;
  t=t|a;
  if(t&0xf800)
  {
        t=~t+1;
        fuhao=1;
  }
  else
  fuhao=0;
  tt=t*0.0625;
  t= tt*10+0.5;     //放大10倍輸出并四舍五入
  return(t);
}
四、proteus仿真設計
Proteus軟件是一款應用比較廣泛的工具,它可以在沒有硬件平臺的基礎上通過自身的軟件仿真出硬件平臺的運行情況,這樣就可以通過軟件仿真來驗證我們設計的方案有沒有問題,如果有問題,可以重新選擇器件,連接器件,直到達到我們設定的目的,避免我們搭建實物的時候,如果當初選擇的方案有問題,我們器件都已經焊接好了,再去卸載下去,再去焊接新的方案的器件,測試,這樣會浪費人力和物力,也給開發者帶來一定困惑,Proteus仿真軟件就很好的解決這個問題,我們在設計之初,就使用該軟件進行模擬仿真,測試,選擇滿足我們設計的最優方案。最后根據測試沒問題的仿真圖紙,焊接實物,調試,最終完成本設計的作品。

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:883308 發表于 2023-7-22 01:50 | 只看該作者
真不錯真不錯,謝謝大佬分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品欧美一区二区久久久伦 | 毛片视频观看 | 欧美二区三区 | 一区二区三区国产 | 2019中文字幕视频 | 风间由美一区二区三区在线观看 | 亚洲精品无 | 亚洲精品久久久一区二区三区 | 日韩一二区 | 国产一区二区影院 | 久久免费看 | 一区二区三区四区不卡视频 | 中文字幕第九页 | 天天操人人干 | 精品一区二区三区四区在线 | 欧美专区在线 | 欧美一级久久 | 亚洲国产精品99久久久久久久久 | 看黄在线 | 免费成人高清在线视频 | 国产精品国产三级国产播12软件 | 91高清视频在线观看 | 久久久久一区二区 | 免费福利视频一区二区三区 | 久久免费视频2 | 不卡一区二区三区四区 | 五十女人一级毛片 | 一区二区成人 | 日韩一区二区三区四区五区 | 欧美xxxⅹ性欧美大片 | 国产成人精品久久二区二区91 | 成年人在线观看 | 久久99精品久久久久久国产越南 | 日韩欧美一区二区在线播放 | a级免费视频 | 国产精品日韩欧美一区二区三区 | 欧美一区中文字幕 | 国产精品福利网站 | 国产精品久久久 | 在线第一页 | 国产电影一区二区三区爱妃记 |