欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 基于51單片機的無線溫度采集系統(tǒng)電路圖 [打印本頁]

作者: alex_wzc    時間: 2019-7-16 22:24
標(biāo)題: 基于51單片機的無線溫度采集系統(tǒng)電路圖
本帖最后由 alex_wzc 于 2019-7-17 22:44 編輯

利用單片機技術(shù),無線傳輸技術(shù),溫度測量技術(shù)等知識設(shè)計一個基于STC89C52單片機控制的無線溫度采集系統(tǒng),以DS18B20作為溫度傳感器,檢測比較精確的溫度信號,并通過NRF24L01無線模塊將從機點的溫度信號傳送到主機。主機接收發(fā)送過來的溫度數(shù)據(jù)進行解碼,一方面將實時的溫度數(shù)據(jù)通過OLED顯示屏進行顯示,另一方面再將溫度數(shù)據(jù)傳輸給溫度監(jiān)測上位機。上位機一方面可以對實時的溫度數(shù)據(jù)進行曲線繪制,另一方面也可以通過上位機設(shè)置溫度上下限,當(dāng)溫度超過設(shè)定閾值時,發(fā)出控制指令給單片機,單片機控制蜂鳴器發(fā)出報警聲音。我們也可通過獨立按鍵模塊對溫度上下限進行設(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ù)讀到單片機的RxBuf數(shù)組中。
                                                                flag=1;
                                                                break;                                                //跳出循環(huán)
                                                }
                                                                 
                                }
                                receive_dispose(receiveData);//單片機數(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;
                                
                }

}


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

上位機圖片.png

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

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

接收端.pdf

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

發(fā)送端.pdf

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

下位機51程序.rar

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


作者: admin    時間: 2019-7-17 00:41
本帖需要重新編輯補全電路原理圖,源碼,詳細(xì)說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1