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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機(jī)的無線溫度采集系統(tǒng)電路圖

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:585426 發(fā)表于 2019-7-16 22:24 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 alex_wzc 于 2019-7-17 22:44 編輯

利用單片機(jī)技術(shù),無線傳輸技術(shù),溫度測量技術(shù)等知識設(shè)計一個基于STC89C52單片機(jī)控制的無線溫度采集系統(tǒng),以DS18B20作為溫度傳感器,檢測比較精確的溫度信號,并通過NRF24L01無線模塊將從機(jī)點的溫度信號傳送到主機(jī)。主機(jī)接收發(fā)送過來的溫度數(shù)據(jù)進(jìn)行解碼,一方面將實時的溫度數(shù)據(jù)通過OLED顯示屏進(jìn)行顯示,另一方面再將溫度數(shù)據(jù)傳輸給溫度監(jiān)測上位機(jī)。上位機(jī)一方面可以對實時的溫度數(shù)據(jù)進(jìn)行曲線繪制,另一方面也可以通過上位機(jī)設(shè)置溫度上下限,當(dāng)溫度超過設(shè)定閾值時,發(fā)出控制指令給單片機(jī),單片機(jī)控制蜂鳴器發(fā)出報警聲音。我們也可通過獨立按鍵模塊對溫度上下限進(jìn)行設(shè)定。
發(fā)送端程序:
//功能:將DS18b20溫度傳感器溫度數(shù)據(jù)采集,利用模擬SPI方式,傳輸給NRF24L01
#include <reg52.h>
#include "mcu.h"
#include "NRF24L01.H"
#include "temp.h"

//void delayms(uint ms);           

void main()
{        
        uint while_times = 0;
        init_NRF24L01();   //NRF24L01初始化
        //delayms(10);
        while(1)
        {               
                //將溫度采集數(shù)據(jù)傳遞給TxBuf[0]和TxBuf[1],TxBuf[0]為高8位,TxBuf[1]為低8位;
                TxBuf[0]=Ds18b20ReadTemp()/256;
                TxBuf[1]=Ds18b20ReadTemp()%256;         
                nrf_TxMod();                                  // 設(shè)置為發(fā)送模式
                nrf_trans(TxBuf);                        //將待發(fā)送的數(shù)據(jù)寫入NRF24L01
                while_times = 30;                //檢測是否發(fā)送成功 循環(huán)檢測?次  
                while(while_times--)
                {
                        get_nrf_sta();                        //獲取狀態(tài)標(biāo)志
                        if(TX_DS == 1)                        //發(fā)送成功,跳出循環(huán)
                                        break;
                }
                        
        }
}



接收端程序:
#include "reg52.h"
#include "MCU.h"
#include "OLED.H"
#include "NRF24L01.H"
#include "button.h"
sbit k1=P3^2;                //溫度上限設(shè)置按鍵
sbit k2=P3^3;         //溫度下限設(shè)置按鍵
sbit WARN=P0^3;        //蜂鳴器控制端口
int Temp;                                //溫度變量
uchar receiveData[3];//接收變量存儲數(shù)組
uint Value_UP=0;                //溫度上限值
uint Value_DOWN=0;        //溫度下限值
float  Temp_UP=3000,Temp_DOWN=1000;
uchar str1[]={"     "};
uchar str2[]={"     "};
uchar str3[]={"     "};
uchar i=0;
uchar flag1=0;
uchar flag2=0;
uchar flag_receive = 0;//接收數(shù)據(jù)完成標(biāo)志位
extern uchar code du[];//聲明攝氏度字符變量
extern uchar key_type;
void Int_Init(void);                                        //中斷配置
void UsartConfiguration();                //串口配置
void receive_dispose(uchar *p);        //數(shù)據(jù)接收解碼函數(shù)
float data_dispose(uchar *p , uchar mode);        //接收數(shù)據(jù)處理函數(shù)
void message_display(void);                //顯示提示信息

void main()
{        
                uchar num=0;
                uint while_times = 0;
                uchar flag=0;
                float tp=0;
        
                UsartConfiguration();        //串口初始化
                Int_Init();                                                //中斷初始化
                oled_init();                                        //OLED初始化
                clear_screen();                                //OLED清屏
                NRF24L01_Init();                        //初始化NRF24L01        
                delay(10);        
                message_display();
                while(1)
                {                     
                                uchar num=0;
                                uchar flag=0;
                                nrf_RxMod();                        // 設(shè)置為接收模式
                                while_times = 400;                //檢測是否接收成功 循環(huán)檢測?次 大于發(fā)射效果好
                                while(while_times--)
                                {
                                                get_nrf_sta();                        //獲取狀態(tài)標(biāo)志
                                                        
                                                if(RX_DR == 1)                        //接收成功
                                                {                                                                                
                                                                nrf_read(RxBuf);//接收成功后,將NRF24L01接收到的數(shù)據(jù)讀到單片機(jī)的RxBuf數(shù)組中。
                                                                flag=1;
                                                                break;                                                //跳出循環(huán)
                                                }
                                                                 
                                }
                                receive_dispose(receiveData);//單片機(jī)數(shù)據(jù)接收解碼
                                switch(flag1)
                                {
                                                case 1:Temp_UP+=10;break;
                                                case 2:Temp_UP-=10;break;
                                }
                                switch(flag2)
                                {
                                                case 1:Temp_DOWN+=10;break;
                                                case 2:Temp_DOWN-=10;break;
                                }
                                flag1=0;
                                flag2=0;

                                Value_UP=Temp_UP;
                                Value_DOWN=Temp_DOWN;
                                
                                str2[0] = (char)(0X30+Value_UP/1000);
                                str2[1] = (char)(0X30+Value_UP%1000/100);
                                str2[2] =  0x2e; //小數(shù)點        
                                str2[3] = (char)(0X30+Value_UP%100/10);
                                str2[4] = (char)(0X30+Value_UP%10);
                                
                                str3[0] = (char)(0X30+Value_DOWN/1000);
                                str3[1] = (char)(0X30+Value_DOWN%1000/100);
                                str3[2] =  0x2e; //小數(shù)點
                                str3[3] = (char)(0X30+Value_DOWN%100/10);
                                str3[4] = (char)(0X30+Value_DOWN%10);
                                
                                disp_string_8x16_16x16(5,72,(uchar*)str2);                //顯示溫度上限
                                disp_string_8x16_16x16(7,72,(uchar*)str3);                //顯示溫度下限

                                Temp=(RxBuf[0]*256+RxBuf[1])*0.0625*100+0.5;
                                //溫度整數(shù)部分
                                str1[0] = (char)(0X30+Temp % 10000 / 1000);
                                str1[1] = (char)(0X30+Temp % 1000 / 100);
                                str1[2] =  0x2e; //小數(shù)點
                                //溫度小數(shù)部分
                                str1[3] = (char)(0X30+Temp % 100 / 10);
                                str1[4] = (char)(0X30+Temp % 10);                        
                                disp_string_8x16_16x16(3,72,(uchar*)str1);        
                                
                                SBUF = 0xF1;                                          //將接收到的數(shù)據(jù)放入到發(fā)送寄存器
                                while (!TI);                              //等待發(fā)送數(shù)據(jù)完成
                                TI = 0;
                                
                                SBUF = RxBuf[0];
                                while (!TI);                        
                                TI = 0;
                                
                                SBUF = RxBuf[1];   
                                while (!TI);                        
                                TI = 0;
                        
                                if(Temp>Value_UP||Temp<Value_DOWN)        //報警控制
                                        WARN=0;                        
                                else
                                        WARN=1;
                                
                }

}


上位機(jī)圖片.png (65.35 KB, 下載次數(shù): 32)

上位機(jī)圖片.png

下位機(jī)調(diào)試結(jié)果.jpg (2.16 MB, 下載次數(shù): 27)

下位機(jī)調(diào)試結(jié)果.jpg

接收端.pdf

181.04 KB, 下載次數(shù): 38, 下載積分: 黑幣 -5

發(fā)送端.pdf

153.51 KB, 下載次數(shù): 36, 下載積分: 黑幣 -5

下位機(jī)51程序.rar

228.23 KB, 下載次數(shù): 29, 下載積分: 黑幣 -5

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

使用道具 舉報

沙發(fā)
ID:1 發(fā)表于 2019-7-17 00:41 | 只看該作者
本帖需要重新編輯補(bǔ)全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲精品在线免费 | www.日韩在线| h在线看| 欧美精品在线一区二区三区 | 久久婷婷av | 日韩在线精品视频 | 国产日韩一区二区三区 | 午夜激情视频 | 亚洲超碰在线观看 | 香蕉久久久| 国产资源在线观看 | 日韩精品视频中文字幕 | 亚洲视频免费观看 | 91精品久久久久久久久中文字幕 | 久草福利 | 香蕉av免费 | 国产欧美久久一区二区三区 | 久久国产欧美一区二区三区精品 | www日本高清| 欧洲在线视频 | 日本视频中文字幕 | 午夜一区二区三区在线观看 | 一区二区三区小视频 | 天堂一区二区三区 | 天堂一区二区三区 | 国产日韩精品在线 | 99福利视频 | 欧美日韩亚 | 久久国产一区二区 | 日本三级做a全过程在线观看 | 久久福利网站 | 91污在线 | 欧美在线观看一区 | 黄视频免费在线 | 国产剧情一区 | 国产美女特级嫩嫩嫩bbb片 | 91精品国产91久久久久久丝袜 | 欧美成人猛片aaaaaaa | 精品美女在线观看 | 在线中文字幕视频 | 欧美一级在线免费 |