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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機zigbee通信代碼 E18_MS1_PCB+DS18B20

[復制鏈接]
跳轉到指定樓層
樓主
1、基本實現方案:
       主機:單片機模擬單總線協議與DS18B20通信采集溫度值,并通過串口將數據發送給zigbee模塊。
       從機:單片機通過串口接收zigbee接收到的溫度值,然后將溫度值送到模擬iic協議的數據區,并在顯示器上顯示出來。
2、使用到元件;
Stc89c52單片機、11.0592Mhz晶振、22pf瓷片電容、10k電阻、10uf電解電容、按鍵。
Zigbee 通信模塊E18_MS1_PCB
DS18B20溫度傳感器
Oled12864顯示器 0.96寸iic通信
蜂鳴器+9013三極管

TM16374位數碼管顯示模塊
3、電路原理圖:


4、電路方案:
主機電路由單片機最小系統、DS18B20數字溫度傳感器、zigbee無線通信模塊、數碼管顯示模塊組成。
       從機電路由單片機最小系統、zigbee無線通信模塊、oled顯示模塊、蜂鳴器報警電路組成。

       注意事項:51單片機只有一個串口(P3.0,P3.1),下載程序端口與zigbee通信端口復用,會導致zigbee連接失敗,在打開電源之前將串口引腳上的跳線帽拔掉,在單片機完成初始化后再將跳線帽插回。(我估計是這個問題,但也沒有好的解決辦法,希望各路大師提提意見)

制作出來的實物圖如下:

單片機源程序如下:

  1. #include <REG52.H>
  2. #include <stdio.h>
  3. #include "oled.h"
  4. #include "bmp.h"

  5. #define uchar unsigned char
  6. #define uint unsigned int
  7.         
  8. sbit  AT_MODE = P2^3; //zigbee通信模式選擇
  9. sbit  REST    = P1^7; //zigbee復位引腳
  10. sbit  PBB     = P2^4; //蜂鳴器

  11. uchar flag = 0;
  12. uchar index = 0;
  13. uchar data c[4] ="0000";
  14. uchar code str[]="123789";
  15. uchar num_10,num_1,num_0;

  16. void Send_string(uchar *c)
  17. {
  18. while(*c != '!')
  19. {
  20.   SBUF=*c;
  21.   c++;
  22.   while(TI==0);
  23.   TI=0;
  24. }
  25. }

  26. void Send_data(uchar str)
  27. {
  28.         SBUF=str;
  29.         while(TI==0);
  30.         TI=0;
  31. }

  32. void Send_str(uchar *s)
  33. {
  34.         while(*s)
  35.         {
  36.          Send_data(*s++);
  37.     }
  38. }
  39. void Send_init()
  40. {
  41.         EA=1;ES=1;                    //開總中斷和串行口中斷
  42.         TMOD = 0x20;            //設置定時計數器位方式2
  43.         TH1  = 0xfd;            // 設置波特率為9600
  44.         TL1  = 0xfd;            
  45.         TR1  = 1;                    //啟動定時計數器
  46.         SCON = 0x50;            //設置串口為方式2
  47.         PCON = 0x00;            //波特率不加倍                  AT+MODE=?
  48. //        TI=1;
  49. }

  50. void zigbee_init()
  51. {
  52.   AT_MODE = 1;        //AT指令模式
  53.   Send_str("AT+UART=2");   //設置波特率9600
  54.   Delay_1ms(1000);
  55.   Send_str("AT+DEVE=E");      //終端 模式
  56.   Delay_1ms(1000);
  57.   Send_str("AT+MODE=3");    //協議模式
  58.   Delay_1ms(1000);
  59.   Send_str("AT+PANID=55AA");//設置ID號
  60.   Delay_1ms(1000);
  61.   Send_str("AT+RESET");           //復位
  62.   Delay_1ms(5000);
  63. }

  64. void main(void)
  65. {        
  66.                 u8 t,temp;
  67.                  t=' ';
  68.         REST = 0;
  69.             Delay_1ms(100);
  70.                
  71.                 OLED_Init();                        //初始化OLED           
  72.                 Send_init();         
  73.                 zigbee_init();        
  74.         REST = 1;         
  75.             //顯示圖片
  76.                 OLED_DrawBMP(0,0,128,8,BMP1);  //圖片顯示(圖片顯示慎用,生成的字表較大,會占用較多空間,FLASH空間8K以下慎用)
  77.                 Delay_1ms(2000);
  78.                  OLED_Clear();
  79.          
  80.                 while(1)
  81.                 {        

  82.                   num_10= c[0];
  83.                   num_1 = c[1];
  84.                   num_0 = c[2];        
  85.                                    
  86.                         OLED_ShowString(0,0,"DS18B20 zigbee",16);
  87.                         OLED_ShowString(0,3,"TEMP:",16);
  88.                         OLED_ShowChar(50,3,num_10,16);
  89.                         OLED_ShowChar(58,3,num_1,16);
  90.                         OLED_ShowChar(68,3,'.',16);
  91.                         OLED_ShowChar(76,3,num_0,16);

  92.                         //temp = ((num_10-31)*10)+(num_1-31);
  93.                         if(num_10 >= '3')PBB=1;  //溫度大于30 開蜂鳴器
  94.                         else PBB=0;
  95.                
  96.                 }         
  97. }



  98. //串口接收中斷函數
  99. void Serial_INT() interrupt 4
  100. {
  101. if(RI==0) return;
  102. ES=0;        //關閉串口中斷
  103. RI=0;        //清接收中斷標志
  104. c[index++]=SBUF;
  105.     if(SBUF == '!')
  106.         {
  107.       flag = 1;
  108.           index= 0;
  109.         }
  110. ES=1;
  111. }

  112.         
復制代碼

所有資料51hei提供下載:
51zigbee程序代碼.zip (165.38 KB, 下載次數: 77)


評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:1053252 發表于 2024-3-18 22:45 | 只看該作者
大佬你好,可以請教你幾個問題嗎?
回復

使用道具 舉報

板凳
ID:522456 發表于 2024-8-14 17:37 | 只看該作者
參考看看
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: www.日韩av.com | 久久成人精品 | 午夜手机在线视频 | 超碰97人人人人人蜜桃 | 国产线视频精品免费观看视频 | 久久综合入口 | 色呦呦在线 | 亚洲精品一区二区在线观看 | 天堂中文字幕av | 国产精品久久久久婷婷二区次 | 狠狠干在线 | 中文字幕一区在线观看视频 | 免费在线观看av的网站 | av影音资源 | 久久久久久国产 | 婷婷在线免费 | 成人依人 | 亚洲精品日韩一区二区电影 | 久久福利 | 精品九九| 在线观看日韩 | 99资源| 一区二区三区视频 | 日韩欧美中文字幕在线观看 | 98成人网 | 午夜精品影院 | 日韩高清一区 | 亚洲第一视频网站 | 99久久精品国产一区二区三区 | 久久久久久亚洲国产精品 | 欧美一区在线视频 | 亚洲精品久久久久久久久久吃药 | 一区二区三区电影网 | 在线播放第一页 | 成人一区二区电影 | 国产小u女发育末成年 | 爱爱视频日本 | 五月天婷婷激情 | 亚洲天堂男人的天堂 | a级在线免费 | 亚洲国产自产 |