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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

通過機智云控制8盞燈的亮滅

[復制鏈接]
ID:617549 發表于 2019-12-1 14:28 | 顯示全部樓層 |閱讀模式
通過機智云控制8盞燈的亮滅

單片機源程序如下:
  1. #include <reg52.h>

  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit lcd0=P1^0;
  5. sbit lcd1=P1^1;
  6. sbit lcd2=P1^2;
  7. sbit lcd3=P1^3;
  8. sbit lcd4=P1^4;
  9. sbit lcd5=P1^5;
  10. sbit lcd6=P1^6;
  11. sbit lcd7=P1^7;
  12. sbit key_config_Ap=P2^1;
  13. sbit key_config_Air=P2^3;

  14. uchar usartbuf[50]={0};
  15. uchar sn,checksum,usrtlen,usarrtflag,num_usart;
  16. uchar send_3_config,send_7_error,send_8_dev,send_9_dev;

  17. /*wifi模組請求設備信息,mcu回復*/
  18. uchar mcu_send_1[75]={
  19. 0xff,0xff,0x00,0x47,0x02,0x55,0x00,0x00,
  20. 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,
  21. 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x34,
  22. 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,
  23. 0x30,0x30,0x30,0x30,0x30,0x30,0x30,0x31,
  24. 0x34,0x39,0x33,0x35,0x33,0x31,0x33,0x36,
  25. 0x30,0x66,0x38,0x66,0x34,0x32,0x37,0x64,
  26. 0x38,0x64,0x33,0x34,0x35,0x39,0x36,0x62,
  27. 0x33,0x37,0x33,0x62,0x38,0x61,0x39,0x30,
  28. 0x00,0x00,0x55};                                                                                                                                               

  29. /*wifi模組與設備mcu心跳,mcu回復*/
  30. uchar mcu_send_2[9]={0xff,0xff,0x00,0x05,0x08,0x55,0x00,0x00,0x55};

  31. /*設備mcu通知wifi模組進入配置模式,mcu發送*/
  32. uchar mcu_send_3[10]={0xff,0xff,0x00,0x06,0x09,0x55,0x00,0x00,0x11,0x55};

  33. /*設備mcu重置wifi,mcu發送*/
  34. uchar mcu_send_4[9]={0xff,0xff,0x00,0x05,0x0b,0x55,0x00,0x00,0x55};

  35. /*wifi模組向設備通知工作狀態變化,mcu回復*/
  36. uchar mcu_send_5[9]={0xff,0xff,0x00,0x05,0x0e,0x55,0x00,0x00,0x55};

  37. /*wifi模組請求重啟mcu,mcu回復*/
  38. uchar mcu_send_6[9]={0xff,0xff,0x00,0x05,0x10,0x55,0x00,0x00,0x55};

  39. /*非法消息通知,mcu回復*/
  40. uchar mcu_send_7[10]={0xff,0xff,0x00,0x06,0x12,0x55,0x00,0x00,0x11,0x55};

  41. /*wifi模組讀取設備當前狀態,mcu回復*/
  42. uchar mcu_send_8[11]={0xff,0xff,0x00,0x07,0x04,0x55,0x00,0x00,0x03,0x11,0x55};

  43. /*設備向wifi主動上報當前狀態,mcu發送*/
  44. uchar mcu_send_9[11]={0xff,0xff,0x00,0x07,0x05,0x55,0x00,0x00,0x04,0x11,0x55};

  45. /*wifi模組控制設備,mcu回復*/
  46. uchar mcu_send_10[9]={0xff,0xff,0x00,0x05,0x04,0x55,0x00,0x00,0x55};

  47. /*mcu通知wifi進入可綁定模式,mcu發送*/
  48. uchar mcu_send_12[9]={0xff,0xff,0x00,0x05,0x15,0x55,0x00,0x00,0x55};

  49. /**********************************************************************/
  50. /**********************************************************************/
  51. /**********************************************************************/
  52. /**********************************************************************/
  53. /**********************************************************************/
  54. /**********************************************************************/
  55. /**********************************************************************/
  56. /**********************************************************************/

  57. /*延時函數*/
  58. void Delay_ms(unsigned char z)
  59. {
  60.         unsigned char x,y;
  61.         for(x=z;x>0;x--)
  62.                 for(y=110;y>0;y--);
  63. }

  64. /*初始化函數*/
  65. void Usart_Init()
  66. {
  67.         TMOD=0x21;                                        //定時器0工作方式1,定時器1工作方式2
  68.         TH0=(65536-10000)/256;
  69.         TL0=(65536-10000)%256;
  70.         TH1=0xfd;
  71.         TL1=0xfd;
  72.         TR0=1;
  73.         TR1=1;
  74.         REN=1;
  75.         SM0=0;
  76.         SM1=1;
  77.         EA=1;
  78.         ES=1;       
  79. }

  80. /*mcu發送數據程序*/
  81. void Usart_SendArrang(uchar *dat,uchar len)
  82. {
  83.         unsigned char i;
  84.         for(i=0;i<len;i++)
  85.         {
  86.                         ES=0;
  87.                         SBUF=dat[i];
  88.                         while(!TI);
  89.                         TI=0;
  90.                         ES=1;
  91.         }
  92. }

  93. /*定時器0中斷*/
  94. void Timer0_Int() interrupt 1
  95. {
  96.         TH0=(65536-10000)/256;
  97.         TL0=(65536-10000)%256;
  98.         num_usart++;
  99. }

  100. /*串口中斷函數*/
  101. void Usart_Int() interrupt 4
  102. {
  103.         num_usart=0;
  104.         ET0=1;
  105.         usartbuf[usrtlen++]=SBUF;
  106.         if(usrtlen==2)
  107.         {
  108.                 if(usartbuf[0]!=0xff||usartbuf[1]!=0xff)
  109.                 {
  110.                         usrtlen=0;
  111.                 }
  112.         }
  113.         RI=0;
  114. }


  115. /*改變設備狀態*/
  116. void Control_Mcu()
  117. {
  118.         switch(usartbuf[9])
  119.         {
  120.                 case 0x01:
  121.                         if(usartbuf[10]==0x01)
  122.                         {
  123.                                 lcd0=0;
  124.                         }
  125.                         else if(usartbuf[10]==0)
  126.                         {
  127.                                 lcd0=1;
  128.                         }
  129.                         break;

  130.                 case 0x02:
  131.                         if(usartbuf[10]==0x02)
  132.                         {
  133.                                 lcd1=0;
  134.                         }
  135.                         else if(usartbuf[10]==0)
  136.                         {
  137.                                 lcd1=1;
  138.                         }
  139.                         break;

  140.                 case 0x04:
  141.                         if(usartbuf[10]==0x04)
  142.                         {
  143.                                 lcd2=0;
  144.                         }
  145.                         else if(usartbuf[10]==0)
  146.                         {
  147.                                 lcd2=1;
  148.                         }
  149.                         break;

  150.                 case 0x08:
  151.                         if(usartbuf[10]==0x08)
  152.                         {
  153.                                 lcd3=0;
  154.                         }
  155.                         else if(usartbuf[10]==0)
  156.                         {
  157.                                 lcd3=1;
  158.                         }
  159.                         break;

  160.                 case 0x10:
  161.                         if(usartbuf[10]==0x10)
  162.                         {
  163.                                 lcd4=0;
  164.                         }
  165.                         else if(usartbuf[10]==0)
  166.                         {
  167.                                 lcd4=1;
  168.                         }
  169.                         break;

  170.                 case 0x20:
  171.                         if(usartbuf[10]==0x20)
  172.                         {
  173.                                 lcd5=0;
  174.                         }
  175.                         else if(usartbuf[10]==0)
  176.                         {
  177.                                 lcd5=1;
  178.                         }
  179.                         break;

  180.                 case 0x40:
  181.                         if(usartbuf[10]==0x40)
  182.                         {
  183.                                 lcd6=0;
  184.                         }
  185.                         else if(usartbuf[10]==0)
  186.                         {
  187.                                 lcd6=1;
  188.                         }
  189.                         break;

  190.                 case 0x80:
  191.                         if(usartbuf[10]==0x80)
  192.                         {
  193.                                 lcd7=0;
  194.                         }
  195.                         else if(usartbuf[10]==0)
  196.                         {
  197.                                 lcd7=1;
  198.                         }
  199.                         break;
  200.         }
  201. }

  202. /*處理串口數據*/
  203. void Usart_Communication()
  204. {
  205.         uchar i;
  206.         if(num_usart==10)
  207.         {
  208.                 ET0=0;
  209.                 num_usart=0;
  210.                 usarrtflag=1;
  211.                 REN=0;
  212.         }
  213.         if(usarrtflag)
  214.         {
  215.                 sn=usartbuf[5];
  216.                 checksum=0;
  217.                 switch(usartbuf[4])
  218.                 {
  219.                         case 0x01:
  220.                                 mcu_send_1[5]=sn;
  221.                                 for(i=2;i<74;i++)
  222.                                 {
  223.                                         checksum=checksum+mcu_send_1[i];
  224.                                 }
  225.                                 checksum=checksum%256;
  226.                                 mcu_send_1[74]=checksum;
  227.                                 Usart_SendArrang(mcu_send_1,75);
  228.                                 break;

  229.                         case 0x07:
  230.                                 mcu_send_2[5]=sn;
  231.                                 for(i=2;i<8;i++)
  232.                                 {
  233.                                         checksum=checksum+mcu_send_2[i];
  234.                                 }
  235.                                 checksum=checksum%256;
  236.                                 mcu_send_2[8]=checksum;
  237.                                 Usart_SendArrang(mcu_send_2,9);
  238.                                 break;       

  239.                         case 0x0a:
  240.                                 break;

  241.                         case 0x0c:
  242.                                 break;

  243.                         case 0x0d:
  244.                                 mcu_send_5[5]=sn;
  245.                                 for(i=2;i<8;i++)
  246.                                 {
  247.                                         checksum=checksum+mcu_send_5[i];
  248.                                 }
  249.                                 checksum=checksum%256;
  250.                                 mcu_send_5[8]=checksum;
  251.                                 Usart_SendArrang(mcu_send_5,9);
  252.                                 break;

  253.                         case 0x0f:
  254.                                 mcu_send_6[5]=sn;
  255.                                 for(i=2;i<8;i++)
  256.                                 {
  257.                                         checksum=checksum+mcu_send_6[i];
  258.                                 }
  259.                                 checksum=checksum%256;
  260.                                 mcu_send_6[8]=checksum;
  261.                                 Usart_SendArrang(mcu_send_6,9);
  262.                                 break;       

  263.                         case 0x11:
  264.                                 mcu_send_7[5]=sn;
  265.                                 send_7_error=usartbuf[8];
  266.                                 mcu_send_7[8]=send_7_error;
  267.                                 for(i=2;i<9;i++)
  268.                                 {
  269.                                         checksum=checksum+mcu_send_7[i];
  270.                                 }
  271.                                 checksum=checksum%256;
  272.                                 mcu_send_7[9]=checksum;
  273.                                 Usart_SendArrang(mcu_send_7,10);
  274.                                 break;

  275.                         case 0x03:
  276.                                 if(usartbuf[3]=0x06&&usartbuf[8]==0x02)
  277.                                 {
  278.                                         mcu_send_8[5]=sn;
  279.                                         send_8_dev=~P1;
  280.                                         mcu_send_8[9]=send_8_dev;
  281.                                         for(i=2;i<10;i++)
  282.                                         {
  283.                                                 checksum=checksum+mcu_send_8[i];
  284.                                         }
  285.                                         checksum=checksum%256;
  286.                                         mcu_send_8[10]=checksum;
  287.                                         Usart_SendArrang(mcu_send_8,11);
  288.                                         break;
  289.                                 }
  290.                                 if(usartbuf[3]=0x08&&usartbuf[8]==0x01)
  291.                                 {
  292.                                         Control_Mcu();                                                                //收到數據后,mcu控制設備函數
  293.                                        
  294.                                         mcu_send_10[5]=sn;
  295.                                         for(i=2;i<8;i++)
  296.                                         {
  297.                                                 checksum=checksum+mcu_send_10[i];
  298.                                         }
  299.                                         checksum=checksum%256;
  300.                                         mcu_send_10[8]=checksum;
  301.                                         Usart_SendArrang(mcu_send_10,9);                        //mcu回復

  302.                                         mcu_send_9[5]=sn;
  303.                                         send_9_dev=~P1;
  304.                                         mcu_send_9[9]=send_9_dev;
  305.                                         for(i=2;i<10;i++)
  306.                                         {
  307.                                                 checksum=checksum+mcu_send_9[i];
  308.                                         }
  309.                                         checksum=checksum%256;
  310.                                         mcu_send_9[10]=checksum;
  311.                                         Usart_SendArrang(mcu_send_9,11);                        //mcu主動上報設備狀態                                       
  312.                                         break;       
  313.                                 }

  314.                         case 0x06:
  315.                                 break;

  316.                         case 0x16:
  317.                                 break;       
  318.                 }
  319.                 usrtlen=0;
  320.                 usarrtflag=0;
  321.                 REN=1;
  322.         }       
  323. }

  324. /*按鍵配置設備入網*/
  325. void Key_Usart_Config()
  326. {
  327.         uchar i;
  328.         checksum=0;
  329.         if(key_config_Ap==0)                                                                        //SoftAp配置模式
  330.         {
  331.                 Delay_ms(10);
  332.                 if(key_config_Ap==0)
  333.                 {       
  334.                         REN=0;
  335.                         sn=0x00;
  336.                         mcu_send_3[5]=sn;
  337.                         for(i=2;i<9;i++)
  338.                         {
  339.                                 checksum=checksum+mcu_send_3[i];
  340.                         }
  341.                         checksum=checksum%256;
  342.                         mcu_send_3[9]=checksum;
  343.                         send_3_config=1;
  344.                         mcu_send_3[8]=send_3_config;
  345.                         Usart_SendArrang(mcu_send_3,10);
  346.                         while(key_config_Ap==0);
  347.                         REN=1;       
  348.                 }       
  349.         }

  350.         if(key_config_Air==0)                                                                        //AirLink配置模式
  351.         {
  352.                 Delay_ms(10);
  353.                 if(key_config_Air==0)
  354.                 {       
  355.                         REN=0;
  356.                         sn=0x00;
  357.                         mcu_send_3[5]=sn;
  358.                         for(i=2;i<9;i++)
  359.                         {
  360.                                 checksum=checksum+mcu_send_3[i];
  361.                         }
  362.                         checksum=checksum%256;
  363.                         mcu_send_3[9]=checksum;
  364.                         send_3_config=2;
  365.                         mcu_send_3[8]=send_3_config;
  366.                         Usart_SendArrang(mcu_send_3,10);
  367.                         while(key_config_Air==0);
  368.                         REN=1;       
  369.                 }       
  370.         }       
  371. }

  372. /*主函數*/
  373. void main()
  374. {
  375.         Usart_Init();

  376.         while(1)
  377.         {
  378.                 Key_Usart_Config();
  379.                 Usart_Communication();
  380.         }
  381. }
復制代碼

所有資料51hei提供下載:
c51連機智云控制8盞燈的亮滅.zip (202.38 KB, 下載次數: 13)
回復

使用道具 舉報

ID:682938 發表于 2020-1-26 22:48 | 顯示全部樓層
樓主你的會報這個錯嗎main.c(425): error C249: 'DATA': SEGMENT TOO LARGE
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 人人叉 | 人人干人人超 | 无码日韩精品一区二区免费 | 欧美一区二区三区在线视频 | 性国产xxxx乳高跟 | 日韩视频专区 | 91精品国产色综合久久不卡98 | 国产一区久久精品 | 国产99久久精品一区二区永久免费 | 国产精华一区 | 综合视频在线 | 99精品国产一区二区青青牛奶 | 欧美一级片在线看 | 最大av在线| 亚洲第一成人影院 | 亚洲精品久久久久久一区二区 | 久久久久久av | 成人深夜福利在线观看 | 精品1区2区 | 北条麻妃av一区二区三区 | 国产自产c区| 三极网站 | 99久久成人 | 99色综合| 亚洲国产区 | 日韩欧美网| 999久久久免费精品国产 | 日本精品一区二区三区在线观看 | 日韩精品亚洲专区在线观看 | 日本三级电影在线免费观看 | 国产精品视频播放 | 中文字幕成人av | 2019天天操 | 91精品久久久久久久 | 在线观看国产www | 国产精品99999999 | 国产精品2区 | 欧美一级欧美三级在线观看 | 在线看日韩 | 亚洲欧洲国产视频 | 欧美一级黄色网 |