欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 51單片機(jī)通過(guò)esp8266和溫度傳感器將溫度顯示到手機(jī)上 [打印本頁(yè)]

作者: 1715092042    時(shí)間: 2019-7-29 16:29
標(biāo)題: 51單片機(jī)通過(guò)esp8266和溫度傳感器將溫度顯示到手機(jī)上
需要的硬件:51單片機(jī),ESP8266(wifi模塊),DS18b20(溫度傳感器)
需要的軟件:
手機(jī)要下載一個(gè)網(wǎng)絡(luò)調(diào)試助手,瀏覽器就有。
      

部分[attach]197065[/attach][attach]197065[/attach]代碼:
#include<reg52.h>
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit DQ=P2^4;
sbit k1=P1^0;
sbit fmq=P1^4;
char receiveTable[20]="";
char aa[1]="";
uint temp,shi,ge,a,i,flag;
void delay(uint i)                //5us
{
        do
        {
                _nop_();             
                _nop_();
                _nop_();
                i--;
        }
        while(i);       
}
void delay1(uint z)                 //1ms
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}

void sendChar(uchar a)                                 //單片機(jī)發(fā)送一個(gè)字節(jié)
{
        SBUF = a;
        while(TI==0);
        TI=0;       
}

void sendString(uchar *s)                        //發(fā)送一個(gè)字符串
{
        while(*s!='\0')
        {
                sendChar(*s);
                s++;
        }
               
}
void init()
{
        /*串口中斷定時(shí)器初始化*/
        TMOD=0x20;                                                        //定時(shí)器1工作在方式2  
        TH1=0xfd;                                                        //波特率為9600,精振為11.0592MHz
        TL1=0xfd;
        REN=1;                                                                //啟動(dòng)串行口接收數(shù)據(jù)
        SM0=0;                                                                //串口工作在方式1
        SM1=1;                                                                //串行口工作方式選擇
        EA=1;                                                                //打開總中斷
        TR1=1;                                                                //打開定時(shí)器中斷
        /*esp8266初始化*/
    delay1(100);//延時(shí)
        sendString("AT+CWMODE=2\r\n");            //設(shè)置ESP8266工作在station模式
        delay1(100);       
//        sendString("AT+CIOBAUD=9600\r\n");        //設(shè)置9600波特率,因?yàn)閑sp8266波特率默認(rèn)是115200
//        delay1(10);       
        sendString("AT+CIPMUX=1\r\n");                  //允許多連接
        delay1(100);
        sendString("AT+CIPSERVER=1,8080\r\n"); //設(shè)置端口號(hào)
        delay1(100);
        ES=1;                                          //開串口中斷
}

void DS()        //初始化
{
        uchar x=0;
        DQ=1;                  //首先先拉高電平,為復(fù)位做準(zhǔn)備
        delay(10);          //延遲一下
        DQ=0;                  //將電平拉低,延遲至少480us
        delay(120);          //一次為5us,此處延遲600us,足以等待存在脈沖
        DQ=1;                  //復(fù)位信號(hào)給出后,將電平拉高,等待獲取存在脈沖
        delay(16);          //延遲15~60us,此處延遲90us,足以給存在脈沖時(shí)間
        x=DQ;                  //讀取存在脈沖
        delay(80);          //讀取存在脈沖,存在脈沖至少為60us到240us的低電平信號(hào),這里給出400us
        DQ=1;                 
}
uchar Read1b()    //讀取1個(gè)字節(jié)
{
        uchar i=0;
        uchar dat=0;
        for(i=0;i<8;i++)
        {
                DQ=0;                 //數(shù)據(jù)線拉成低電平,表示讀數(shù)據(jù)的開始
                delay(1);                 //讀數(shù)據(jù)時(shí),需要低電平保持至少1us
                DQ=1;                         //釋放數(shù)據(jù)總線
                dat>>=1;                 //一位一位的保存讀取到的數(shù)據(jù),所以需要移位處理
                if(DQ)                         //讀取數(shù)據(jù)的高電平
                dat|=0x80;                 //與操作一下,得到我們需要的數(shù)據(jù),讀取數(shù)據(jù)需要在15us內(nèi)讀取,這樣才能保證讀取的數(shù)據(jù)是正確的
                delay(11);
        }
        return(dat);
}
void Write1b(uchar dat)
{
        uchar i=0;
        for(i=0;i<8;i++)
        {
                DQ=0;
                _nop_();
                DQ=dat&0x01;
                delay(12);
                DQ=1;
                dat>>=1;
                delay(5);       
        }                                                  
}                                  
uint Get()
{
        uchar templ,temph,tt;
        uint t;
        DS();                                   //初始化
        Write1b(0XCC);           //因?yàn)槲覀兪且粋(gè)單片機(jī)和一個(gè)DS18B20連接,故在對(duì)ROM指令操作時(shí),選擇0xCC跳過(guò)ROM指令,不對(duì)ROM編碼作出反應(yīng)
        Write1b(0x44);           //RAM操作中的溫度轉(zhuǎn)換指令,將轉(zhuǎn)換的溫度存入RAM的1,2地址
        DS();                                   //初始化
        Write1b(0xcc);           //同上
        Write1b(0xbe);           //從RAM中讀取數(shù)據(jù),從0地址讀到9地址
        templ=Read1b();           //從DS18B20中讀取溫度數(shù)據(jù)中低八位
        temph=Read1b();           //從DS18B20中讀取溫度數(shù)據(jù)中的高八位,溫度數(shù)據(jù)由16位數(shù)據(jù)組成
        t=temph;
        t<<=8;
        t=t|templ;
        tt=t*0.0625;                   /*真實(shí)溫度的轉(zhuǎn)換*/
        return(tt);               
}
void show(uint wd)
{
        aa[0]=wd/10+'0';          
        aa[1]=wd%10+'0';
}
void main()
{       

        init();
        while(1)
        {
                show(Get())        ;
        }
}
手機(jī)顯示溫度.zip (1.92 KB, 下載次數(shù): 201)







作者: 弓長(zhǎng)張    時(shí)間: 2019-7-30 11:20
先收藏一下,以后能用到。樓主會(huì)不會(huì)那種手機(jī)上弄個(gè)APP的。

作者: 1715092042    時(shí)間: 2019-7-30 15:07
弓長(zhǎng)張 發(fā)表于 2019-7-30 11:20
先收藏一下,以后能用到。樓主會(huì)不會(huì)那種手機(jī)上弄個(gè)APP的。

我的同學(xué)做出來(lái)了,但我不會(huì)。
作者: 1715092042    時(shí)間: 2019-8-3 10:47
啦啦啦屁屁怪 發(fā)表于 2019-8-2 14:51
好想?yún)⒖紖⒖迹瑳](méi)什么思路

可以先學(xué)習(xí)一下串口通信。
作者: leonscott    時(shí)間: 2019-12-17 23:25
收藏了,學(xué)習(xí)下怎么配esp8266
作者: y曉風(fēng)殘?jiān)?nbsp;   時(shí)間: 2019-12-18 19:24
為啥我在電腦上測(cè)試就可以連接手機(jī),一安到單片機(jī)上就不行了呀
作者: aking991    時(shí)間: 2019-12-19 18:02
下載學(xué)習(xí)了,謝謝分享
作者: rgbgirl    時(shí)間: 2019-12-20 10:04
收藏學(xué)習(xí),下次驗(yàn)證
作者: 東宮承鄞    時(shí)間: 2020-4-26 19:34
y曉風(fēng)殘?jiān)?發(fā)表于 2019-12-18 19:24
為啥我在電腦上測(cè)試就可以連接手機(jī),一安到單片機(jī)上就不行了呀

你好 請(qǐng)問(wèn)這個(gè)你解決了嗎 我現(xiàn)在也碰到這個(gè)問(wèn)題
作者: 用戶名是什么    時(shí)間: 2020-5-7 23:24
東宮承鄞 發(fā)表于 2020-4-26 19:34
你好 請(qǐng)問(wèn)這個(gè)你解決了嗎 我現(xiàn)在也碰到這個(gè)問(wèn)題

是說(shuō)用TTL轉(zhuǎn)串口可以單片機(jī)不可以的意思嗎?單片機(jī)的話需要代碼噠
作者: 用戶名是什么    時(shí)間: 2020-5-8 14:46
sendString("AT+CWMODE=2\r\n");
注釋錯(cuò)了,2應(yīng)該是AP模式




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1