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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5058|回復: 1
收起左側

基于藍牙無線通訊srtp的風扇控制單片機源碼

[復制鏈接]
ID:215485 發表于 2017-7-28 17:46 | 顯示全部樓層 |閱讀模式
原來做過一個電風扇的控制。附件里面包括單片機源代碼。可實現用手機對風扇的速度進行控制。
所需要的元件包括藍牙模塊2個,單片機一塊,風扇一臺,自己的手機一部。控制電路是自己用動動板焊接的,想自己動手做的朋友可以畫PCB。
自己原創,還請多多指教。
0.png

單片機源程序如下:
  1. #include <REG52.H>  
  2. #include <intrins.h>
  3. #include "ds18b20.h"        //引入DS18B20頭文件

  4. sbit k1 = P0^2; //         P2^0;
  5. sbit k2 = P0^3; //P2^1;
  6. sbit k3 = P0^5;//        P2^2;
  7. sbit k4 = P1^4;
  8. sbit k5 = P2^4;
  9. unsigned char UART_buff,n,s,miao,fen,shi,m,miao1,fen1,shi1,x,chart,i;
  10. unsigned char ly_dis[4];//定義顯示緩沖區
  11. char ltemp;
  12. bit New_rec = 0, Send_ed = 1, Money = 0;  
  13. void wendu(void);
  14. //----------------------------------------------  

  15. void Delay10ms()                //@11.0592MHz
  16. {
  17.         unsigned char i, j;

  18.         i = 108;
  19.         j = 145;
  20.         do
  21.         {
  22.                 while (--j);
  23.         } while (--i);
  24. }

  25. void init()
  26. {
  27.         TMOD=0X01;                                //設置定時器0為模式一,即16位計算模式
  28.         TH0=(65536-36660)/256;        //給計數寄存器賦值,50毫秒時間
  29.         TL0=(65536-36660)%256;
  30. //        EA=1;                //開啟總中斷
  31.         ET0=1;                //開啟定時器0中斷
  32.         TR0=1;                //啟動定時器0
  33. }
  34. void main (void)  
  35. {          k4 =0;
  36.     init();
  37.     SCON = 0x50;   //串口方式1, 8-n-1, 允許接收.  
  38.     TMOD = 0x20;   //T1方式2  
  39.     TH1 = 0xFD;   // [url=]//9600bps@11.0592MHz[/url]  
  40.     TL1 = 0xFD;  
  41.     TR1 = 1;                          
  42.     ES  = 1;       //開中斷.  
  43.     EA  = 1;
  44.         k4=1;
  45.         n=0;m=0;miao1=0; x=0;
  46.     while(1)  {
  47.                         if((UART_buff == 1)&&(New_rec == 1)){  n++;New_rec = 0;k4=1;                    //不限時三個擋位的控制
  48.                                                       switch(n) {
  49.                                                                             case 1:k1=0; k2=1; k3=1; break;
  50.                                                                                     case 2:k1=1; k2=0; k3=1; break;
  51.                                                                             case 3:k1=1; k2=1; k3=0;n=0; break;                                                                                               
  52.                                                                            // case 4:k1=1; k2=1; k3=1;  break;                                                                                   
  53.                                                                         }        }                        
  54.                                  else if((UART_buff == 2)&&(New_rec == 1)){  New_rec = 1;miao1=0;k4=1;chart=1;   //定時30分鐘的控制
  55.                                                                                                        while(miao1<30)
  56.                                                                                                      { if((UART_buff == 2)&&(New_rec == 1)){  x++;New_rec = 0;
  57.                                                                                                        switch(x) {
  58.                                                                                                              case 1:k1=0; k2=1; k3=1; break;
  59.                                                                                                                      case 2:k1=1; k2=0; k3=1; break;
  60.                                                                                                             case 3:k1=1; k2=1; k3=0;x=0; break;
  61.                                                                                                                                                                 //        case 4:k1=1; k2=1; k3=1; k4=0; break;                                                                                               
  62.                                                                                                                               }         }
  63.                                                                                                                                         else if((UART_buff == 6)&&(New_rec == 1)){k1=1; k2=1; k3=1; x=0;k4=0;miao1=40;}
  64.                                                                                                    }                                                               
  65.                                                                                          k1=1; k2=1; k3=1; x=0;                                                                                   
  66.                                                                                  }
  67.                            else if((UART_buff == 3)&&(New_rec == 1)){  New_rec = 1;fen1=0;k4=1;chart=1;   //定時1個小時的控制
  68.                                                                                                        while(fen1<2)
  69.                                                                                                      { if((UART_buff == 3)&&(New_rec == 1)){  x++;New_rec = 0;
  70.                                                                                                        switch(x) {
  71.                                                                                                              case 1:k1=0; k2=1; k3=1; break;
  72.                                                                                                                      case 2:k1=1; k2=0; k3=1; break;
  73.                                                                                                             case 3:k1=1; k2=1; k3=0;x=0; break;
  74.                                                                                                                                                                 //        case 4:k1=1; k2=1; k3=1; k4=0; break;                                                                                               
  75.                                                                                                                                   }
  76.                                                                                                                                                                           }
  77.                                                                                                                                                   else if((UART_buff == 6)&&(New_rec == 1)){k1=1; k2=1; k3=1; x=0;k4=0;fen1=40;}
  78.                                                                                                    }                                                               
  79.                                                                                          k1=1; k2=1; k3=1; x=0;                                                                                   
  80.                                                                                  }
  81.                            else if((UART_buff == 4)&&(New_rec == 1)){  New_rec = 1;fen1=0;k4=1;           //定時兩個小時的控制
  82.                                                                                                        while(fen1<5)
  83.                                                                                                      { if((UART_buff == 4)&&(New_rec == 1)){  x++;New_rec = 0;
  84.                                                                                                        switch(x) {
  85.                                                                                                              case 1:k1=0; k2=1; k3=1; break;
  86.                                                                                                                      case 2:k1=1; k2=0; k3=1; break;
  87.                                                                                                             case 3:k1=1; k2=1; k3=0;x=0; break;
  88.                                                                                                                                                                         //case 4:k1=1; k2=1; k3=1; x=0;k4=0;Delay10ms();Delay10ms();Delay10ms(); break;                                                                                               
  89.                                                                                                                               }         }
  90.                                                                                                                                 else if((UART_buff == 6)&&(New_rec == 1)){k1=1; k2=1; k3=1; x=0;k4=0;fen1=40;}

  91.                                                                                                    }                                                               
  92.                                                                                          k1=1; k2=1; k3=1; x=0;                                                                                   
  93.                                                                                  }
  94.                                 else if((UART_buff == 5)&&(New_rec == 1)){  New_rec = 0;k4=1;i=1;                     //溫度自動控制的三個擋位
  95.                                                                                                                 while(i){         if((UART_buff == 6)&&(New_rec == 1)){New_rec = 0;k1=1; k2=1; k3=1;k4=0;i=0;}
  96.                                                                                                                                              else if((ly_dis[1]==2)&&(ly_dis[2]<=5)){k1=0; k2=1; k3=1;}
  97.                                                                                                                                              else if((ly_dis[1]==2)&&(ly_dis[2]>5)){k1=1; k2=0; k3=1;}
  98.                                                                                                                                                  else if((ly_dis[1]==3)&&(ly_dis[2]>=0)){k1=1; k2=1; k3=0;}
  99.                                                                                                                                                  else {k1=1; k2=1; k3=1;k4=1;}
  100.                                                                                                  }                                                        
  101.                                                                                  }
  102.                                  else   if((UART_buff == 6)&&(New_rec == 1)){New_rec = 0;k1=1; k2=1; k3=1;k4=0;i=0;}
  103.                }  

  104. }  
  105. //----------------------------------------------  
  106. void ser_int (void) interrupt 4   
  107. {  
  108.     if(RI == 1) {  //如果收到.  
  109.       RI = 0;      //清除標志.  
  110.       New_rec = 1;  
  111.       UART_buff = SBUF;  //接收.
  112.     }  
  113.     /*else  {        //如果送畢.  
  114.       TI = 0;      //清除標志.  
  115.       Send_ed = 1;  
  116.     }                          */
  117. }  
  118. void wendu(void)
  119. {
  120.      
  121.                         ltemp=tmp()/16;                //得到十進制溫度值,因為DS18B20可以精確到0.0625度,這里取整數顯示
  122.                         if(ltemp<0){                //判斷第一位顯示整數還是負號
  123.                                 ly_dis[0]=0xbf;
  124.                                 ltemp=0-ltemp;       
  125.                         }
  126.                         else
  127.                         ly_dis[0]=ltemp/100;//顯示百位值
  128.                         ltemp=ltemp%100;
  129.                         ly_dis[1]=ltemp/10;        //顯示溫度十位值
  130.                         ly_dis[2]=ltemp%10;        //顯示溫度個位值
  131.                         ly_dis[3]=10;                //最后一位顯示一個C單位
  132. }  


  133. //中斷函數,關鍵字"interrupt" , 這是C語言的中斷函數表示法,1表時定地器0
  134. void timer() interrupt 1
  135. {
  136.         TH0=(65536-36660)/256;        //重新賦值50毫秒中斷
  137.         TL0=(65536-36660)%256;
  138.         s++;                                //比較精確的脈沖輸出,50MS翻轉一次,即1秒中閃爍10次,
  139. ……………………

  140. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
藍牙控制.zip (36.17 KB, 下載次數: 31)




回復

使用道具 舉報

ID:318114 發表于 2018-4-29 19:41 | 顯示全部樓層
請問你這個控制電路的電路圖有嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表