找回密碼
       立即注冊

      QQ登錄

      只需一步,快速開始

      帖子
      查看: 5577|回復(fù): 7
      打印 上一主題 下一主題
      收起左側(cè)

      at89c52程序改為stc12c5a60s2芯片使用,

      [復(fù)制鏈接]
      跳轉(zhuǎn)到指定樓層
      樓主
      ID:396487 發(fā)表于 2018-10-15 21:05 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
      1. #include "DHT11.h"
      2. #include <stdio.h>
      3. #include "string.h"
      4. extern unsigned char  F16T,F16RH;                //溫濕度數(shù)據(jù)
      5. sbit LED1=P2^0;
      6. sbit LED2=P2^3;
      7. sbit LED3=P2^6;
      8. #define uchar unsigned char
      9. #define uint unsigned int
      10. unsigned char idata Rxbuff[40],Rxnum,SF16T,SF16RH;
      11. unsigned char        Recwifi_data[5],led[2],n,x;
      12. char *strx=0;
      13. char clinetid;//連接ID
      14. unsigned char getflag;//獲取標志
      15. void Get_Clinet(void);
      16. void InitUART(void)                         //這是串口的基本配置,配置他的波特率是9600.這些參數(shù)都是標準的。
      17. {
      18.     TMOD = 0x20;
      19.     SCON = 0x50;
      20.     TH1 = 0xFD;
      21.     TL1 = TH1;
      22.     PCON = 0x00;
      23.     EA = 1;
      24.     ES = 1;
      25.     TR1 = 1;
      26. }

      27. /******************************************************************************/
      28. void delayms(unsigned int x)
      29. {
      30.         unsigned int i;
      31.         while(x--)
      32.                 for(i=1250;i>0;i--);
      33. }
      34. /*
      35. * UART 發(fā)送一字節(jié)
      36. */
      37. void UART_send_byte(char dat)
      38. {
      39.         SBUF = dat;                                        //發(fā)送
      40.         while (TI == 0);                        //等待發(fā)送完畢
      41.         TI = 0;                                                //清發(fā)送完畢中斷請求標志位
      42. }

      43. /*
      44. * UART 發(fā)送字符串
      45. */
      46. void Send_Str(unsigned char *buf)
      47. {
      48.         while (*buf != '\0')
      49.         {
      50.                 UART_send_byte(*buf++);
      51.         }
      52. }

      53. void ESP8266_SERVER(void)//建立服務(wù)器
      54. {
      55.         Send_Str("AT\r\n");
      56.         delayms(500);
      57.         Send_Str("ATE0\r\n");
      58.         delayms(500);
      59.         Send_Str("AT+CWMODE=2\r\n");          //服務(wù)器搭建在WIFI模塊上
      60.         delayms(500);
      61.            Send_Str("AT+CWSAP=\"wifi\",\"12345678\",5,3\r\n");          //設(shè)置顯示名稱:wifi,密碼:12345678
      62.         delayms(500);
      63.         Send_Str("AT+CIPMUX=1\r\n");//啟動多連接,建立服務(wù)器都需要配置
      64.         delayms(500);       
      65.         Send_Str("AT+CIPSERVER=1,5000\r\n");//建立服務(wù)器
      66.         delayms(500);       
      67.         Send_Str("AT+CIPSTO=0\r\n");

      68. }

      69. void Send_DATA(uchar *buffer)
      70. {
      71.     Send_Str("AT+CIPSEND=0,11\r\n");
      72.         delayms(10);
      73.     Send_Str(buffer);//發(fā)送數(shù)據(jù)
      74.         delayms(1000);
      75.         if((Rxbuff[0]=='1')&&(Rxbuff[1]=='1'))//關(guān)燈
      76.         {
      77.                 LED1=1;
      78.                 x=1;
      79.         }
      80.         if((Rxbuff[0]=='1')&&(Rxbuff[1]=='0'))//開燈
      81.         {
      82.                 LED1=0;
      83.                 x=0;
      84.         }
      85.         if(x==0)
      86.         {
      87.          if(F16T>=SF16T)
      88.                  LED2=0;
      89.                  else LED2=1;
      90.                  if(F16RH>=SF16RH)
      91.                  LED3=0;
      92.                  else LED3=1;
      93.         }
      94.         else
      95.         {
      96.                 if((Rxbuff[0]=='2')&&(Rxbuff[1]=='1'))        //關(guān)燈
      97.                         LED2=1;
      98.                 if((Rxbuff[0]=='2')&&(Rxbuff[1]=='0'))//開燈
      99.                         LED2=0 ;
      100.                 if((Rxbuff[0]=='3')&&(Rxbuff[1]=='1'))        //關(guān)燈
      101.                         LED3=1;
      102.                 if((Rxbuff[0]=='3')&&(Rxbuff[1]=='0'))//開燈
      103.                         LED3=0 ;
      104.         }
      105.         if((Rxbuff[0]=='5')&&(Rxbuff[1]=='1'))        //加溫度定值
      106.         {
      107.                 SF16T++;
      108.             if(SF16T>50)
      109.         SF16T=50;
      110.                 Rxbuff[1]=9;
      111.         }
      112.         if((Rxbuff[0]=='5')&&(Rxbuff[1]=='0'))//減溫度定值
      113.         {
      114.                 SF16T--;
      115.             if(SF16T<1)
      116.         SF16T=1;
      117.                 Rxbuff[1]=9;
      118.         }
      119.         if((Rxbuff[0]=='6')&&(Rxbuff[1]=='1'))        //加濕度定值
      120.         {
      121.                 SF16RH++;
      122.             if(SF16RH>90)
      123.         SF16RH=90;
      124.                 Rxbuff[1]=9;
      125.         }
      126.         if((Rxbuff[0]=='6')&&(Rxbuff[1]=='0'))//減濕度定值
      127.         {
      128.                 SF16RH--;
      129.             if(SF16RH<20)
      130.         SF16RH=20;
      131.                 Rxbuff[1]=9;
      132.         }


      133. }
      134. void main()
      135. {
      136.           unsigned char   Tx_Buf[12];
      137.           unsigned char LEDstatus;//燈的狀態(tài)
      138.         delayms(500);
      139.         delayms(1000);          //延時一段時間,讓W(xué)IFI模塊穩(wěn)定
      140.         InitUART();                        //初始化串口
      141.     ESP8266_SERVER();        //初始化ESP8266
      142.         SF16T=25;
      143.         SF16RH=50;
      144.         x=1;
      145.         while(1)       
      146.         {          
      147.                   getDHT11(); //獲取溫濕度值
      148.                   Tx_Buf[0]=F16T/10%10+0x30;                 //將溫濕度數(shù)據(jù)送往發(fā)送數(shù)組,送給模塊讓手機APP顯示
      149.                   Tx_Buf[1]=F16T%10+0x30;               
      150.                   Tx_Buf[2]=F16RH/10%10+0x30;
      151.                   Tx_Buf[3]=F16RH%10+0x30;
      152.                   Tx_Buf[4]=SF16T/10%10+0x30;                 //將溫濕度數(shù)據(jù)送往發(fā)送數(shù)組,送給模塊讓手機APP顯示
      153.                   Tx_Buf[5]=SF16T%10+0x30;               
      154.                   Tx_Buf[6]=SF16RH/10%10+0x30;
      155.                   Tx_Buf[7]=SF16RH%10+0x30;
      156.                 LEDstatus=LED1;
      157.                    Tx_Buf[8]=LEDstatus+0x30;//發(fā)送燈的狀態(tài)
      158.                 LEDstatus=LED2;
      159.                 Tx_Buf[9]=LEDstatus+0x30;
      160.                 LEDstatus=LED3;
      161.                 Tx_Buf[10]=LEDstatus+0x30;
      162.                    Send_DATA(Tx_Buf)        ;//發(fā)送數(shù)據(jù)
      163.         }
      164. }

      165. /*****************串口接收中斷函數(shù),接收數(shù)據(jù)*********************/
      166. void UARTInterrupt(void) interrupt 4
      167. {       
      168.         if(RI)
      169.     {
      170.                 ES=0;
      171.         RI = 0;
      172.               Rxbuff[Rxnum]=SBUF;
      173.                 if(Rxbuff[Rxnum]=='=')
      174.                 {
      175.                         Rxnum=0;
      176.                 }
      177.             else
      178.                 {
      179.                         Rxnum++;
      180.                         if(Rxnum>2)
      181.                         {
      182.                                 Rxnum=2;
      183.                         }
      184.                 }
      185.                 ES=1;
      186.     }          
      187. }
      復(fù)制代碼
      這個是DHT11數(shù)據(jù)發(fā)送到手機的,89c52程序在app上可以顯示溫濕度,但是stc12c5a60s2程序在手機上可以控制但是無法顯示溫度


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

      使用道具 舉報

      沙發(fā)
      ID:396487 發(fā)表于 2018-10-15 21:08 | 只看該作者
      求大家?guī)臀腋囊幌鲁绦�,說要改延時程序,但是菜鳥我不知道怎么改
      回復(fù)

      使用道具 舉報

      板凳
      ID:387733 發(fā)表于 2018-10-16 08:08 | 只看該作者

      用STC下載器里面的軟件延時計算器生成延時函數(shù)代碼,稍作修改即可


      void Delayms(unsigned int x)                //@11.0592MHz
      {
              unsigned char i, j;
              i = 11;
              j = 190;
              while(x--)
              {
                      while (--i)
                          while (--j);
              }
      }

      回復(fù)

      使用道具 舉報

      地板
      ID:396487 發(fā)表于 2018-10-16 19:36 | 只看該作者
      好的,謝謝
      回復(fù)

      使用道具 舉報

      5#
      ID:396487 發(fā)表于 2018-10-16 19:47 | 只看該作者
      sxhwdz 發(fā)表于 2018-10-16 08:08
      用STC下載器里面的軟件延時計算器生成延時函數(shù)代碼,稍作修改即可

      編譯顯示錯誤
      DHT11.H(29): error C267: 'Delay_us': requires ANSI-style prototype
      DHT11.H(29): warning C206: 'Delay_us': missing function-prototype
      回復(fù)

      使用道具 舉報

      6#
      ID:388197 發(fā)表于 2018-10-16 21:47 | 只看該作者
      mykt2012 發(fā)表于 2018-10-16 19:47
      編譯顯示錯誤
      DHT11.H(29): error C267: 'Delay_us': requires ANSI-style prototype
      DHT11.H(29): war ...

      Delay_us函數(shù)主體寫在main下面了,沒有在main上面聲明?
      另外如果里面有_nop_()
      記得include <intrins.h>
      回復(fù)

      使用道具 舉報

      7#
      ID:326450 發(fā)表于 2018-11-13 17:08 | 只看該作者
      恩恩,挺有用的
      回復(fù)

      使用道具 舉報

      8#
      ID:700310 發(fā)表于 2020-2-29 20:11 | 只看該作者
      這是手機APP遠程監(jiān)控大棚溫濕度嗎?我要做這個
      回復(fù)

      使用道具 舉報

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

      本版積分規(guī)則

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

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

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