找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6855|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

基于局域網(wǎng)的智能家居(手機(jī)控制C51單片機(jī)輸出多路繼電電器)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:705430 發(fā)表于 2020-5-8 22:35 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
初學(xué)者,玩著玩著就玩大了,剛開始有PC的串口控制單片機(jī)輸入輸出電平信號,來控制繼電器,鬧著玩。最后想著用手機(jī)控制,慢慢加上了ESP8266模塊,實現(xiàn)了手機(jī)端控制,最后又在某寶上買了一個多路繼電器模塊,通過修改程序,實現(xiàn)了手機(jī)控制多路程序,現(xiàn)在能手機(jī)控制八路繼電器,模塊上也有2路按鍵能控制,并且實現(xiàn)了信號反饋,下一步想繼續(xù)拓展成遠(yuǎn)程控制,并且?guī)Х答佇盘柟δ埽埓罂Ф喽嘀更c……


制作出來的實物圖如下:


電路原理圖如下:


單片機(jī)源程序如下:

  1. #include <DB1.h>        //頭文件
  2. #define HEAD 0x00//數(shù)據(jù)頭碼
  3. sbit BEEP=P3^7;
  4. sbit J1 = P1 ^ 0;//控制器接口定義
  5. sbit J2 = P1 ^ 1;//
  6. sbit J3 = P1 ^ 2;//
  7. sbit J4 = P1 ^ 3;//
  8. sbit J5 = P1 ^ 4;//6-11路沒有使用(第12路用作了全局開關(guān))
  9. sbit J6 = P1 ^ 5;//
  10. sbit J7 = P1 ^ 6;//
  11. sbit J8 = P1 ^ 7;//
  12. sbit DY_KEY1 = P3 ^ 4;
  13. sbit DY_KEY2 = P3 ^ 5;
  14. /********************************************************************/
  15. void DELAY_MS (unsigned int a){//毫秒級延時1*a毫秒
  16.         unsigned int i;
  17.         while( a-- != 0){
  18.                 for(i = 0; i < 600; i++);
  19.         }
  20. }
  21. /********************************************************************/
  22. void Play(unsigned int t)
  23. {
  24.         unsigned char i;
  25.         for(i=0;i<100;i++){
  26.       BEEP=0;   
  27.       DELAY_MS(t);
  28.         }
  29.         BEEP=1;
  30. }
  31. /****************************************************************************/
  32. void UART_init (void){//UART串口初始化函數(shù)
  33.         TMOD = 0x20;        //定時器T/C1工作方式2
  34.         SCON = 0x50;        //串口工作方式1,允許串口接收(SCON = 0x40 時禁止串口接收)
  35.         TH1 = 0xFd;           //定時器初值高8位設(shè)置
  36.         TL1 = 0xFd;           //定時器初值低8位設(shè)置
  37. //        PCON = 0x80;        //波特率倍頻(屏蔽本句波特率9600)
  38.         TR1 = 1;              //定時器啟動   
  39. }

  40. /***************************************************************************/
  41. void main (void){
  42.         unsigned char UART_data1,UART_data2; //定義串口接收數(shù)據(jù)變量
  43.         unsigned int s;   //計數(shù),方便程序判斷
  44.         UART_init();      //串口初始化(查尋)
  45. //        INT_init ();  //外部中斷INT初始化
  46.         DELAY_MS(1000);   //延時防止下載時死機(jī)
  47.         
  48.         while(1){
  49.                 DY_KEY1 = 1;
  50.                 DY_KEY2 = 1;        
  51.                 if(DY_KEY1==0||DY_KEY2==0){ //如果按鍵按下則繼續(xù)
  52.                         DELAY_MS(40); //延時20mS
  53.                         if(DY_KEY1 == 0){ //如果按鍵按下則繼續(xù)
  54.                                 J8= ~J8;      //第1路開
  55.                                 Play(1);   //蜂鳴
  56.                                 if (RI == 0){
  57.                                         SBUF=0xf8;   //將按鍵信息發(fā)送回PC(0xf8自定義為按鍵信息)
  58.                                         TI = 0;
  59.                                 }
  60.                                 DELAY_MS(10);
  61.                                 while(DY_KEY1 == 0); //等待按鍵松開
  62.                         }

  63.                         if(DY_KEY2 == 0){ //如果按鍵按下則繼續(xù)
  64.                                 J1= ~J1;      //第1路開
  65.                                 Play(1);   //蜂鳴
  66.                                 if (RI == 0){
  67.                                         SBUF=0xf1;   //將按鍵信息發(fā)送回PC(0xf1自定義為按鍵信息)
  68.                                         TI = 0;
  69.                                 }
  70.                                 DELAY_MS(10);
  71.                                 while(DY_KEY2 == 0); //等待按鍵松開
  72.                         }
  73.                 }
  74.                 if (RI == 1){                //接收中斷標(biāo)志位為1時//接受數(shù)據(jù)頭碼
  75.                         UART_data1 = SBUF;        //接收數(shù)據(jù) SBUF 為單片機(jī)的接收發(fā)送緩沖寄存器
  76.                         RI = 0;                        //令接收中斷標(biāo)志位為0(軟件清零)
  77.                         s=0;                                
  78.                         while (s<2000&&UART_data1==HEAD){//判斷頭碼是否正確,等待時間過長時跳出。
  79.                                 s++;
  80.                                 if (RI == 1){//開始接受控制數(shù)據(jù)
  81.                                         UART_data2 = SBUF; //接收尾碼數(shù)據(jù)
  82.                                SBUF=UART_data2;   //將接收的尾碼數(shù)據(jù)發(fā)送回去
  83.                                         RI = 0;
  84.                                         switch (UART_data2){
  85.                                                 case 0x01:J1=0;Play(1);break;//第P1.0引腳開
  86.                                                 case 0x81:J1=1;Play(2);break;//第P1.0引腳關(guān)
  87.                                                 case 0x02:J2=0;Play(1);break;//未開發(fā)
  88.                                                 case 0x82:J2=1;Play(2);break;
  89.                                                 case 0x03:J3=0;Play(1);break;//未開發(fā)
  90.                                                 case 0x83:J3=1;Play(2);break;
  91.                                                 case 0x04:J4=0;Play(1);break;//未開發(fā)
  92.                                                 case 0x84:J4=1;Play(2);break;
  93.                                                 case 0x05:J5=0;Play(1);break;//未開發(fā)
  94.                                                 case 0x85:J5=1;Play(2);break;
  95.                                                 case 0x06:J6=0;Play(1);break;//未開發(fā)
  96.                                                 case 0x86:J6=1;Play(2);break;
  97.                                                 case 0x07:J7=0;Play(1);break;//未開發(fā)
  98.                                                 case 0x87:J7=1;Play(2);break;
  99.                                                 case 0x08:J8=0;Play(1);break;//第P1.7引腳開
  100.                                                 case 0x88:J8=1;Play(2);break;//第P1.7引腳關(guān)
  101.                                                 case 0x09:J1=0;J2=0;J3=0;J4=0;J5=0;J6=0;J7=0;J8=0;Play(3);break;//全局開關(guān)
  102.                                                 case 0x89:J1=1;J2=1;J3=1;J4=1;J5=1;J6=1;J7=1;J8=1;Play(3);break;
  103.                                                 default:break;//冗余語句
  104.                                                         
  105.                                         }
  106.                                 }
  107.                         }
  108.                 }
  109.         }
  110. }
復(fù)制代碼


以上代碼51hei提供下載:


手機(jī)控制C51單片機(jī)輸出多路繼電電器.zip

4.14 MB, 下載次數(shù): 109, 下載積分: 黑幣 -5

評分

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

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏14 分享淘帖 頂1 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:748312 發(fā)表于 2020-5-10 17:00 | 只看該作者
樓主強(qiáng)大,向你學(xué)習(xí)
回復(fù)

使用道具 舉報

板凳
ID:577696 發(fā)表于 2020-5-14 13:42 | 只看該作者
想知道樓主手機(jī)端用的是什么APP?
回復(fù)

使用道具 舉報

地板
ID:705430 發(fā)表于 2020-5-19 10:32 | 只看該作者
小飛龍 發(fā)表于 2020-5-14 13:42
想知道樓主手機(jī)端用的是什么APP?

用的是“TCP連接”,這個可以做手機(jī)的客戶端或者服務(wù)器端
回復(fù)

使用道具 舉報

5#
ID:93929 發(fā)表于 2020-5-22 20:37 | 只看該作者
什么型號的單片機(jī)?
回復(fù)

使用道具 舉報

6#
ID:259035 發(fā)表于 2020-5-24 18:55 | 只看該作者
謝謝樓主分享
回復(fù)

使用道具 舉報

7#
ID:65956 發(fā)表于 2020-8-6 11:15 | 只看該作者
附件里有帶APP軟件嗎?是跟之前有人發(fā)的那個藍(lán)牙APP同款嗎?
回復(fù)

使用道具 舉報

8#
ID:517951 發(fā)表于 2020-11-15 17:42 | 只看該作者
不錯,值得學(xué)習(xí)。51hei有你更精彩!
回復(fù)

使用道具 舉報

9#
ID:438106 發(fā)表于 2020-11-23 19:17 | 只看該作者
不錯,不錯,51黑有你更精彩
回復(fù)

使用道具 舉報

10#
ID:693523 發(fā)表于 2020-11-23 20:16 | 只看該作者
我用硬件STC89C52+ESP8266+8路繼電器模塊
貝殼物聯(lián)(服務(wù)器)
易安卓(手機(jī)客戶端)
已經(jīng)搞定,可以手機(jī)端控制和接收到反饋,另外有物理按鍵(門禁開關(guān))作為燈具開關(guān)
效果挺好
回復(fù)

使用道具 舉報

11#
ID:846386 發(fā)表于 2020-11-25 12:06 | 只看該作者
這技術(shù)真牛,學(xué)習(xí)
回復(fù)

使用道具 舉報

12#
ID:849826 發(fā)表于 2020-11-30 14:14 來自手機(jī) | 只看該作者
這個程序改到52單片機(jī)上了,按鍵可以控制輸出開關(guān),沒有8266模塊,用HC-25wifi模塊,無法連接
回復(fù)

使用道具 舉報

13#
ID:849826 發(fā)表于 2020-11-30 14:25 來自手機(jī) | 只看該作者
HC-25怎么連接單片機(jī)做串口通信
回復(fù)

使用道具 舉報

14#
ID:851971 發(fā)表于 2020-11-30 20:10 | 只看該作者
有技術(shù)的,學(xué)的還不錯,下次弄個大的單片機(jī)。
回復(fù)

使用道具 舉報

15#
ID:801730 發(fā)表于 2020-12-3 08:25 | 只看該作者
牛,,,,,仰望
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表