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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

  [復制鏈接]
跳轉到指定樓層
樓主
初學者,玩著玩著就玩大了,剛開始有PC的串口控制單片機輸入輸出電平信號,來控制繼電器,鬧著玩。最后想著用手機控制,慢慢加上了ESP8266模塊,實現了手機端控制,最后又在某寶上買了一個多路繼電器模塊,通過修改程序,實現了手機控制多路程序,現在能手機控制八路繼電器,模塊上也有2路按鍵能控制,并且實現了信號反饋,下一步想繼續拓展成遠程控制,并且帶反饋信號功能,請大咖多多指點……


制作出來的實物圖如下:


電路原理圖如下:


單片機源程序如下:

  1. #include <DB1.h>        //頭文件
  2. #define HEAD 0x00//數據頭碼
  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路用作了全局開關)
  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串口初始化函數
  33.         TMOD = 0x20;        //定時器T/C1工作方式2
  34.         SCON = 0x50;        //串口工作方式1,允許串口接收(SCON = 0x40 時禁止串口接收)
  35.         TH1 = 0xFd;           //定時器初值高8位設置
  36.         TL1 = 0xFd;           //定時器初值低8位設置
  37. //        PCON = 0x80;        //波特率倍頻(屏蔽本句波特率9600)
  38.         TR1 = 1;              //定時器啟動   
  39. }

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

  63.                         if(DY_KEY2 == 0){ //如果按鍵按下則繼續
  64.                                 J1= ~J1;      //第1路開
  65.                                 Play(1);   //蜂鳴
  66.                                 if (RI == 0){
  67.                                         SBUF=0xf1;   //將按鍵信息發送回PC(0xf1自定義為按鍵信息)
  68.                                         TI = 0;
  69.                                 }
  70.                                 DELAY_MS(10);
  71.                                 while(DY_KEY2 == 0); //等待按鍵松開
  72.                         }
  73.                 }
  74.                 if (RI == 1){                //接收中斷標志位為1時//接受數據頭碼
  75.                         UART_data1 = SBUF;        //接收數據 SBUF 為單片機的接收發送緩沖寄存器
  76.                         RI = 0;                        //令接收中斷標志位為0(軟件清零)
  77.                         s=0;                                
  78.                         while (s<2000&&UART_data1==HEAD){//判斷頭碼是否正確,等待時間過長時跳出。
  79.                                 s++;
  80.                                 if (RI == 1){//開始接受控制數據
  81.                                         UART_data2 = SBUF; //接收尾碼數據
  82.                                SBUF=UART_data2;   //將接收的尾碼數據發送回去
  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引腳關
  87.                                                 case 0x02:J2=0;Play(1);break;//未開發
  88.                                                 case 0x82:J2=1;Play(2);break;
  89.                                                 case 0x03:J3=0;Play(1);break;//未開發
  90.                                                 case 0x83:J3=1;Play(2);break;
  91.                                                 case 0x04:J4=0;Play(1);break;//未開發
  92.                                                 case 0x84:J4=1;Play(2);break;
  93.                                                 case 0x05:J5=0;Play(1);break;//未開發
  94.                                                 case 0x85:J5=1;Play(2);break;
  95.                                                 case 0x06:J6=0;Play(1);break;//未開發
  96.                                                 case 0x86:J6=1;Play(2);break;
  97.                                                 case 0x07:J7=0;Play(1);break;//未開發
  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引腳關
  101.                                                 case 0x09:J1=0;J2=0;J3=0;J4=0;J5=0;J6=0;J7=0;J8=0;Play(3);break;//全局開關
  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. }
復制代碼


以上代碼51hei提供下載:


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

4.14 MB, 下載次數: 109, 下載積分: 黑幣 -5

評分

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

查看全部評分

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

使用道具 舉報

沙發
ID:748312 發表于 2020-5-10 17:00 | 只看該作者
樓主強大,向你學習
回復

使用道具 舉報

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

使用道具 舉報

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

用的是“TCP連接”,這個可以做手機的客戶端或者服務器端
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

11#
ID:846386 發表于 2020-11-25 12:06 | 只看該作者
這技術真牛,學習
回復

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美中文日韩在线v日本 | www97影院| 精品久久久久久亚洲精品 | 在线视频一区二区三区 | 久久久高清| 亚洲精品在线看 | 青青草av | 日本免费一区二区三区视频 | 免费看黄色小视频 | 青青草一区 | 亚洲成人精品久久 | 欧美综合国产精品久久丁香 | 91se在线| 日韩精品一区在线 | 欧美a区 | 国产一区 | 国产一级免费视频 | 国产精品一区二区久久 | 精精国产xxxx视频在线 | 国产精品久久久久久久粉嫩 | 欧美a区 | 精品一区欧美 | 91资源在线 | 日日夜夜免费精品视频 | 狠狠操狠狠搞 | 午夜成人免费视频 | 日韩精品成人 | 久久久国产精品一区 | 久久国产综合 | 老司机久久 | 日本久久精品视频 | 免费一区二区三区在线视频 | 天天操,夜夜爽 | 国产精品一二三区 | 亚洲传媒在线 | 日韩黄色免费 | 欧美性网| 国产成人综合在线 | 九九国产在线观看 | 在线一区视频 | 国产精品一区二区久久精品爱微奶 |