esp8266測試程序和ESP8266安卓客戶端.apk提供下載
0.png (65.71 KB, 下載次數(shù): 127)
下載附件
2017-5-15 18:51 上傳
單片機源程序如下:
- /************* 本地常量聲明 **************/
- #define MAIN_Fosc 22118400L //定義主時鐘
- #define RX1_Lenth 32 //串口接收緩沖長度
- //#define BaudRate1 9600UL //選擇波特率
- //#define Timer1_Reload (65536UL -(MAIN_Fosc / 4 / BaudRate1)) //Timer 1 重裝值, 對應300KHZ
- //#define Timer2_Reload (65536UL -(MAIN_Fosc / 4 / BaudRate1)) //Timer 2 重裝值, 對應300KHZ
- #include"STC15Fxxxx.H"
- #include<intrins.h>
- #define uchar unsigned char
- #define uint unsigned int
- /************* 本地變量聲明 **************/
- u8 idata RX1_Buffer[RX1_Lenth]; //接收緩沖
- u8 TX1_Cnt; //發(fā)送計數(shù)
- u8 RX1_Cnt; //接收計數(shù)
- bit B_TX1_Busy; //發(fā)送忙標志
- /************* 端口引腳定義 **************/
- sbit LED1=P1^0;//LED1
- sbit LED2=P1^1;//LED2
- sbit LED3=P3^7;//LED3
- sbit DK1=P3^3;//繼電器
- sbit BEEP=P3^4;//蜂鳴器
- sbit K1=P1^3;//按鍵1
- sbit K2=P1^2;//按鍵2
- sbit K3=P1^4;//按鍵3
- sbit DQ=P1^6;//18B20溫度傳感器
- char led1bl,led2bl,led3bl;
- #define jump_ROM 0xCC //跳過ROM命令
- #define start 0x44 //啟動轉(zhuǎn)換命令
- #define read_EEROM 0xBE //讀存儲器命令
- uchar TMPH,TMPL; //溫度值
- uchar HL; //當前溫度
- unsigned char LYMS[13]="AT+CWMODE=2\r\n";
- unsigned char SZLY[38]="AT+CWSAP='ESP8266','0123456789',11,0\r\n";
- unsigned char RST[8]="AT+RST\r\n";
- unsigned char SZDLJ[13]="AT+CIPMUX=1\r\n";
- unsigned char KQFU[21]="AT+CIPSERVER=1,5000\r\n";
- unsigned char FSSJ[13]="AT+CIPSEND=\r\n";//AT+CIPSEND= 發(fā)送數(shù)據(jù)
- unsigned char WDSJ[4]={0x00,0x00,0x00,0x00};
- void Delay1(unsigned long ms)
- {
- unsigned char i, j,k;
- for(k=0;k<ms;k++)
- {
- _nop_();
- _nop_();
- i = 22;
- j = 128;
- do
- {
- while (--j);
- } while (--i);
- }
- }
- void Delay2(unsigned long cnt)
- {
- long i;
- for(i=0;i<cnt*100;i++);
- }
- void Delay3(unsigned int N)
- {
- int i;
- for(i=0;i<N*10;i++);
- }
- //--------------------
- // 函數(shù)名稱: Reset
- // 入口參數(shù): 無
- // 返回deceive_ready
- // 函數(shù)功能:復位
- //--------------------
- unsigned char Reset(void)
- {
- unsigned char deceive_ready;
- Delay3(10);
- DQ=0; //拉低DQ線
- Delay3(29); //延時至少480us~960us
- DQ=1; //將DQ線設置位邏輯高
- Delay3(3); //延時等待deceive_ready響應
- deceive_ready=DQ; //采樣deceive_ready信號
- Delay3(25); //等待時序結(jié)束
- return(deceive_ready); //有deceive_ready信號時返回0,否則返回1
- }
- //---------------------------
- // 函數(shù)名稱:read_bit
- // 入口參數(shù): 無
- // 返回接收的數(shù)據(jù)
- // 函數(shù)功能:讀一個bit子程序
- //---------------------------
- unsigned char read_bit(void)
- {
- unsigned char i;
- DQ=0; //拉低DQ線開始時序
- DQ=1; //升高DQ線
- for(i=0;i<3;i++); //延時至時序開始15us
- return(DQ); //返回DQ值
- }
- //---------------------------
- // 函數(shù)名稱: write_bit
- // 入口參數(shù): bitval
- // 函數(shù)功能:寫一個bit子程序
- //---------------------------
- void write_bit(unsigned char bitval)
- {
- DQ=0; //拉低DQ線開始時序
- if(bitval==1)
- DQ=1; //如果寫邏輯為高
- Delay3(5); //延時
- DQ=1; //升高DQ線
- }
- //----------------------------
- // 函數(shù)名稱: write_byte
- // 入口參數(shù): val
- // 函數(shù)功能:寫一個byte子程序
- //----------------------------
- void write_byte(unsigned char val)
- {
- unsigned char i,temp;
- for(i=0;i<8;i++)
- {
- temp=val>>i; //將val位右移i位賦值給比temp
- temp=temp&0x01; //取temp最低位
- write_bit(temp);
- Delay3(5); //延時至時序結(jié)束
- }
- }
- //----------------------------
- // 函數(shù)名稱: read_byte
- // 返回接收的數(shù)據(jù) value
- // 函數(shù)功能:讀一個byte子程序
- //----------------------------
- unsigned char read_byte(void)
- {
- unsigned char i,m,receive_data;
- m=1;receive_data=0; //初始化
- for(i=0;i<8;i++)
- {
- if(read_bit())
- {
- receive_data=receive_data+(m<<i);
- } //每讀一位數(shù)據(jù)據(jù),左移一位
- Delay3(6); //延時至時序結(jié)束
- }
- return(receive_data); //返回value
- }
- //---------------------------
- // 函數(shù)名稱: Get_temp
- // 返回接收的數(shù)據(jù) TMPL, TMPH
- // 函數(shù)功能:取出溫度值
- //---------------------------
- uint Get_temp(void)
- {
- unsigned int T;
- //EA = 0;
- Reset();
- write_byte(jump_ROM); //發(fā)跳過ROM命令
- write_byte(start); //發(fā)啟動轉(zhuǎn)換命令
- Reset();
- write_byte(jump_ROM); //發(fā)跳過ROM命令
- write_byte(read_EEROM); //發(fā)跳過ROM命令
- TMPL=read_byte(); //讀低8位溫度值
- TMPH=read_byte(); //讀高8位溫度值
-
- //EA = 0;
- T=TMPL+TMPH*256;
- if(T==0xFFFF) return 0xFFFF;
- if(T>0x8000) //溫度為負
- {
- T=~T+1;
- return(0x8000+T*5/8);
- }
- else //溫度位正
- {
- return(T*5/8);
- }
- }
- void UARTSendByte(unsigned char byte)//?????????
- {
- SBUF=byte; //???????????
- while(TI==0); //??????,TI?????1
- TI=0; //?????????
- }
- void DisplayTemp(unsigned int temp)
- {
- uchar i=0;
- uchar TmpTable[3] = {0};
- TmpTable[ 0 ] = (temp%1000)/100;
- TmpTable[ 1 ] = (temp%100)/10;
- TmpTable[ 2 ] = (temp%10);
- // UARTSendByte(TmpTable[0] + 0x30);Delay3(9);
- // UARTSendByte(TmpTable[1] + 0x30);Delay3(9);
- // UARTSendByte('.');Delay3(9);
- // UARTSendByte(TmpTable[2] + 0x30);Delay3(9);
- // UARTSendByte(0x0d);Delay3(9);
- // UARTSendByte(0x0a);Delay3(9);
- WDSJ[0]=(TmpTable[0] + 0x30);
- WDSJ[1]=(TmpTable[1] + 0x30);
- WDSJ[2]=('.');
- WDSJ[3]=(TmpTable[2] + 0x30);
- }
- void main(void)
- {
- char i=0;
- B_TX1_Busy = 0;
- RX1_Cnt = 0;
- TX1_Cnt = 0;
- S1_8bit(); //8位數(shù)據(jù)
- S1_USE_P30P31(); //UART1 使用P30 P31口 默認
- /*AUXR &= ~(1<<4); //Timer stop 波特率使用Timer2產(chǎn)生
- AUXR |= 0x01; //S1 BRT Use Timer2;
- AUXR |= (1<<2); //Timer2 set as 1T mode
- TH2 = (u8)(Timer2_Reload >> 8);
- TL2 = (u8)Timer2_Reload;
- AUXR |= (1<<4); //Timer run enable
- REN = 1; //允許接收
- ES = 1; //允許中斷
- EA = 1; //允許全局中斷*/
- S2CON = 0x50; //8位數(shù)據(jù),可變波特率
- AUXR |= 0x04; //定時器2時鐘為Fosc,即1T
- T2L = 0xD0; //設定定時初值
- T2H = 0xFF; //設定定時初值
- AUXR |= 0x10; //啟動定時器2
- REN = 1; //允許接收
- ES = 1; //允許中斷
- EA = 1; //允許全局中斷*/
- P3M1 = 0x00;
- P3M0 = 0xFF;
- RX1_Cnt=0;
- DK1=0;
- BEEP=0;
- Delay2(2000);
- for(i=0;i<13;i++)//AT+CWMODE=2 設置成路由模式
- {
- SBUF=LYMS[i];Delay1(5);
- }
- Delay2(1000);
- for(i=0;i<38;i++)//AT+CWSAP="ESP8266","0123456789",11,0 設置路由
- {
- SBUF=SZLY[i];Delay1(5);
- }
- Delay2(3000);
- for(i=0;i<8;i++)//AT+RST 重啟
- {
- SBUF=RST[i];Delay1(5);
- }
- Delay2(5000);
- for(i=0;i<13;i++)//AT+CIPMUX=1 設置成多連接
- {
- SBUF=SZDLJ[i];Delay1(5);
- }
- Delay2(2000);
- for(i=0;i<21;i++)//AT+CIPSERVER=1,5000 開啟TCP服務端口
- {
- SBUF=KQFU[i];Delay1(5);
- }
- Delay2(2000);
- Get_temp();
- Delay3(50000);
- Get_temp();
- Delay3(50000);
- while (1)
- {
- DisplayTemp(Get_temp());//刷新18B20
- if(K1==0)
- {
- Delay1(5);
- if(K1==0)
- {
- LED1=!LED1;
- }
- while(K1==0);
- }
- if(K2==0)
- {
- Delay1(5);
- if(K2==0)
- {
- LED2=!LED2;
- }
- while(K2==0);
- }
- if(K3==0)
- {
- Delay1(5);
- if(K3==0)
- {
- LED3=!LED3;
- }
- while(K3==0);
- }
- }
- }
- /********************* UART1中斷函數(shù)************************/
- void UART1_int (void) interrupt UART1_VECTOR
- {
- char i,a,b,c;
- if(RI)
- {
- RI = 0;
- RX1_Buffer[RX1_Cnt] = SBUF; //保存一個字節(jié)
- if(RX1_Buffer[0]==0x45)
- {
- RX1_Cnt++;
- }
- else
- {
- RX1_Cnt=0;
- }
- if(RX1_Cnt>=10)
- {
- if(RX1_Buffer[0]==0x45&&RX1_Buffer[1]==0x53&&RX1_Buffer[2]==0x50)
- {
- if(RX1_Buffer[4]==0x4C&&RX1_Buffer[5]==0x45&&RX1_Buffer[6]==0x44)//判斷LED
- {
- if(RX1_Buffer[7]==0x31)//判斷LED1
- {
- if(RX1_Buffer[3]==0x4B)//判斷開
- {
- LED1=0;
- }
- if(RX1_Buffer[3]==0x47)//判斷關(guān)
- {
- LED1=1;
- }
- }
- if(RX1_Buffer[7]==0x32)//判斷LED2
- {
- if(RX1_Buffer[3]==0x4B)//判斷開
- {
- LED2=0;
- }
- if(RX1_Buffer[3]==0x47)//判斷關(guān)
- {
- LED2=1;
- }
- }
- if(RX1_Buffer[7]==0x33)//判斷LED3
- {
- if(RX1_Buffer[3]==0x4B)//判斷開
- {
- LED3=0;
- }
- if(RX1_Buffer[3]==0x47)//判斷關(guān)
- {
- LED3=1;
- }
- }
- }
- if(RX1_Buffer[4]==0x4A&&RX1_Buffer[5]==0x44&&RX1_Buffer[6]==0x51)//判斷繼電器
- {
- if(RX1_Buffer[7]==0x31)//判斷LED1
- {
- if(RX1_Buffer[3]==0x4B)//判斷開
- {
- DK1=1;
- }
- if(RX1_Buffer[3]==0x47)//判斷關(guān)
- {
- DK1=0;
- }
- }
- }
- if(RX1_Buffer[3]==0x46&&RX1_Buffer[4]==0x4D&&RX1_Buffer[5]==0x51&&RX1_Buffer[6]==0x43&&RX1_Buffer[7]==0x53)//判斷蜂鳴器
- {
- BEEP=1;Delay2(100);BEEP=0;Delay2(100);BEEP=1;Delay2(100);BEEP=0;Delay2(100);
- }
- if(RX1_Buffer[3]==0x43&&RX1_Buffer[4]==0x58&&RX1_Buffer[5]==0x53&&RX1_Buffer[6]==0x4A)//查詢數(shù)據(jù)
- {
- if(LED1==0){a=0x4B;}else{a=0x47;}
- if(LED2==0){b=0x4B;}else{b=0x47;}
- if(LED3==0){c=0x4B;}else{c=0x47;}
- for(i=0;i<11;i++)//AT+CIPSEND= 發(fā)送數(shù)據(jù)
- {
- SBUF=FSSJ[i];Delay1(5);
- }
- SBUF=0x30;Delay1(5);
- SBUF=0x2C;Delay1(5);
- SBUF=0x32;Delay1(5);
- SBUF=0x36;Delay1(5);
- SBUF=0x0D;Delay1(5);
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
安信可測試版使用說明.rar
(1.04 MB, 下載次數(shù): 286)
2017-5-15 17:20 上傳
點擊文件名下載附件
8266WiFi模塊測試程序 下載積分: 黑幣 -5
|