国产免费AV|泡泡玛特欧洲总部将设在伦敦|中文天堂网www新版资源在线|一本久道综合在线中文|国精产品一二三产区的使用方法|香蕉鱼在线观看|www.27eee
ELEOK
標(biāo)題:
51單片機zigbee通信C語言代碼 E18_MS1+DS18B20
[打印本頁]
作者:
coolfire
時間:
2021-5-5 23:11
標(biāo)題:
51單片機zigbee通信C語言代碼 E18_MS1+DS18B20
1、基本實現(xiàn)方案:
主機:單片機模擬單總線協(xié)議與DS18B20通信采集溫度值,并通過串口將數(shù)據(jù)發(fā)送給zigbee模塊。
從機:單片機通過串口接收zigbee接收到的溫度值,然后將溫度值送到模擬iic協(xié)議的數(shù)據(jù)區(qū),并在顯示器上顯示出來。
2、使用到元件;
Stc89c52單片機、11.0592Mhz晶振、22pf瓷片電容、10k電阻、10uf電解電容、按鍵。
Zigbee 通信模塊E18_MS1_PCB
DS18B20溫度傳感器
Oled12864顯示器 0.96寸iic通信
蜂鳴器+9013三極管
TM16374位數(shù)碼管顯示模塊
3、電路原理圖:
1.png
(95.95 KB)
下載附件
2021-5-5 23:07 上傳
4、電路方案:
主機電路由單片機最小系統(tǒng)、DS18B20數(shù)字溫度傳感器、zigbee無線通信模塊、數(shù)碼管顯示模塊組成。
從機電路由單片機最小系統(tǒng)、zigbee無線通信模塊、oled顯示模塊、蜂鳴器報警電路組成。
注意事項:51單片機只有一個串口(P3.0,P3.1),下載程序端口與zigbee通信端口復(fù)用,會導(dǎo)致zigbee連接失敗,在打開電源之前將串口引腳上的跳線帽拔掉,在單片機完成初始化后再將跳線帽插回。(我估計是這個問題,但也沒有好的解決辦法,希望各路大師提提意見)
制作出來的實物圖如下:
2.png
(382.69 KB)
下載附件
2021-5-5 23:08 上傳
部分源碼:完整源碼見附件
#include <REG52.H>
#include <stdio.h>
#include "oled.h"
#include "bmp.h"
#define uchar unsigned char
#define uint unsigned int
sbit AT_MODE = P2^3; //zigbee通信模式選擇
sbit REST = P1^7; //zigbee復(fù)位引腳
sbit PBB = P2^4; //蜂鳴器
uchar flag = 0;
uchar index = 0;
uchar data c[4] ="0000";
uchar code str[]="123789";
uchar num_10,num_1,num_0;
void Send_string(uchar *c)
{
while(*c != '!')
{
SBUF=*c;
c++;
while(TI==0);
TI=0;
}
}
void Send_data(uchar str)
{
SBUF=str;
while(TI==0);
TI=0;
}
void Send_str(uchar *s)
{
while(*s)
{
Send_data(*s++);
}
}
void Send_init()
{
EA=1;ES=1; //開總中斷和串行口中斷
TMOD = 0x20; //設(shè)置定時計數(shù)器位方式2
TH1 = 0xfd; // 設(shè)置波特率為9600
TL1 = 0xfd;
TR1 = 1; //啟動定時計數(shù)器
SCON = 0x50; //設(shè)置串口為方式2
PCON = 0x00; //波特率不加倍 AT+MODE=?
// TI=1;
}
void zigbee_init()
{
AT_MODE = 1; //AT指令模式
Send_str("AT+UART=2"); //設(shè)置波特率9600
Delay_1ms(1000);
Send_str("AT+DEVE=E"); //終端 模式
Delay_1ms(1000);
Send_str("AT+MODE=3"); //協(xié)議模式
Delay_1ms(1000);
Send_str("AT+PANID=55AA");//設(shè)置ID號
Delay_1ms(1000);
Send_str("AT+RESET"); //復(fù)位
Delay_1ms(5000);
}
void main(void)
{
u8 t,temp;
t=' ';
REST = 0;
Delay_1ms(100);
OLED_Init(); //初始化OLED
Send_init();
zigbee_init();
REST = 1;
//顯示圖片
OLED_DrawBMP(0,0,128,8,BMP1); //圖片顯示(圖片顯示慎用,生成的字表較大,會占用較多空間,F(xiàn)LASH空間8K以下慎用)
Delay_1ms(2000);
OLED_Clear();
while(1)
{
num_10= c[0];
num_1 = c[1];
num_0 = c[2];
OLED_ShowString(0,0,"DS18B20 zigbee",16);
OLED_ShowString(0,3,"TEMP:",16);
OLED_ShowChar(50,3,num_10,16);
OLED_ShowChar(58,3,num_1,16);
OLED_ShowChar(68,3,'.',16);
OLED_ShowChar(76,3,num_0,16);
//temp = ((num_10-31)*10)+(num_1-31);
if(num_10 >= '3')PBB=1; //溫度大于30 開蜂鳴器
else PBB=0;
}
}
//串口接收中斷函數(shù)
void Serial_INT() interrupt 4
{
if(RI==0) return;
ES=0; //關(guān)閉串口中斷
RI=0; //清接收中斷標(biāo)志
c[index++]=SBUF;
if(SBUF == '!')
{
flag = 1;
index= 0;
}
ES=1;
}
復(fù)制代碼
完整源碼:
51zigbee程序代碼.zip
(165.38 KB, 售價: 2 E幣)
2021-5-5 23:09 上傳
點擊文件名下載附件
售價: 2 E幣
[記錄]
[
購買
]
歡迎光臨 ELEOK (http://m.afoofa.cn/)
Powered by Discuz! X5.0