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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4779|回復(fù): 1
收起左側(cè)

基于藍(lán)牙無(wú)線通訊srtp的風(fēng)扇控制單片機(jī)源碼

[復(fù)制鏈接]
ID:215485 發(fā)表于 2017-7-28 17:46 | 顯示全部樓層 |閱讀模式
原來(lái)做過(guò)一個(gè)電風(fēng)扇的控制。附件里面包括單片機(jī)源代碼。可實(shí)現(xiàn)用手機(jī)對(duì)風(fēng)扇的速度進(jìn)行控制。
所需要的元件包括藍(lán)牙模塊2個(gè),單片機(jī)一塊,風(fēng)扇一臺(tái),自己的手機(jī)一部。控制電路是自己用動(dòng)動(dòng)板焊接的,想自己動(dòng)手做的朋友可以畫PCB。
自己原創(chuàng),還請(qǐng)多多指教。
0.png

單片機(jī)源程序如下:
  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];//定義顯示緩沖區(qū)
  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;                                //設(shè)置定時(shí)器0為模式一,即16位計(jì)算模式
  28.         TH0=(65536-36660)/256;        //給計(jì)數(shù)寄存器賦值,50毫秒時(shí)間
  29.         TL0=(65536-36660)%256;
  30. //        EA=1;                //開啟總中斷
  31.         ET0=1;                //開啟定時(shí)器0中斷
  32.         TR0=1;                //啟動(dòng)定時(shí)器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;                    //不限時(shí)三個(gè)擋位的控制
  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;   //定時(shí)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;   //定時(shí)1個(gè)小時(shí)的控制
  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;           //定時(shí)兩個(gè)小時(shí)的控制
  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;                     //溫度自動(dòng)控制的三個(gè)擋位
  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;      //清除標(biāo)志.  
  110.       New_rec = 1;  
  111.       UART_buff = SBUF;  //接收.
  112.     }  
  113.     /*else  {        //如果送畢.  
  114.       TI = 0;      //清除標(biāo)志.  
  115.       Send_ed = 1;  
  116.     }                          */
  117. }  
  118. void wendu(void)
  119. {
  120.      
  121.                         ltemp=tmp()/16;                //得到十進(jìn)制溫度值,因?yàn)镈S18B20可以精確到0.0625度,這里取整數(shù)顯示
  122.                         if(ltemp<0){                //判斷第一位顯示整數(shù)還是負(fù)號(hào)
  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;        //顯示溫度個(gè)位值
  131.                         ly_dis[3]=10;                //最后一位顯示一個(gè)C單位
  132. }  


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

  140. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

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




回復(fù)

使用道具 舉報(bào)

ID:318114 發(fā)表于 2018-4-29 19:41 | 顯示全部樓層
請(qǐng)問(wèn)你這個(gè)控制電路的電路圖有嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人一区二区三区在线观看 | 日韩精品一区二区三区 | 91久久爽久久爽爽久久片 | 欧美日韩一区在线观看 | 日本福利视频 | 国产美女视频一区 | 91精品久久久久久久久中文字幕 | 久久国| av二区三区| 成人免费观看男女羞羞视频 | 国产免费一区 | 夜夜草| 美女午夜影院 | 午夜电影网 | 国产日韩欧美精品一区二区 | 国产精品一区二区在线 | 国产精品一二三区 | 日批免费观看 | 亚州中文字幕 | 成人精品在线观看 | 国产精久久久久久久妇剪断 | 91免费版在线观看 | 国产一级片网站 | 成人av电影在线 | 一级在线视频 | www.99热这里只有精品 | 天天操精品视频 | 一区二区三区免费看 | 久久久久国产精品午夜一区 | 欧美精品一区二区三区在线播放 | 国产精品久久久久久婷婷天堂 | 国产精品爱久久久久久久 | 成人免费区一区二区三区 | 精品久久久久久亚洲综合网 | 91亚洲免费 | 久草网址 | 国产伦精品一区二区三区照片91 | 欧美日韩亚洲三区 | 亚洲国产成人av | 国产一区日韩在线 | 亚洲高清av在线 |