在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用18B20做溫度補(bǔ)償?shù)某暡y(cè)距程序

            用18B20做溫度補(bǔ)償?shù)某暡y(cè)距程序

            作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
            18B20溫度補(bǔ)償超聲波測(cè)距程序
            #include
            #include
            #define uint unsigned int
            #define uchar unsigned char
            sbit rs=P1^0;
            sbit rw=P1^1;
            sbit en=P1^2;
            sbit wave=P1^4;
            uint tvalue;//溫度值用18B20做溫度補(bǔ)償?shù)某暡y(cè)距程序
            uchar tflag;//溫度正負(fù)標(biāo)志
            sbit DQ=P1^3;//ds18b20單片機(jī)連接口
            char idata disp_buf1[16];//1602顯示緩沖區(qū)1(即上排16個(gè)字符)
            char idata disp_buf2[16];//1602顯示緩沖區(qū)2(即下排16個(gè)字符)
            uchar code table[]=" Celiang Ok ! ";
            uchar i;
            char idata julidata[3]; //存放距離值變量
            uchar data disdata[4];//溫度
            unsigned long int JuLi;//距離
            unsigned char Gao,Di;//存儲(chǔ)計(jì)時(shí)器高位,低位
            void ChuShiHua();//初始化
            void FaShe();//發(fā)射聲波
            void Shou();//接收外部中斷程序
            void Deng();//空等待
            void delay(uint n) //延時(shí)時(shí)間為n*1ms
            { uchar x=0;
            for(; n>0; n--)
            {
            for(; x<250; x++)
            {
            _nop_();
            _nop_();
            _nop_();
            _nop_();
            }
            }
            }
            void delayus(uint n)
            {
            while(n--);
            }
            void check_busy()
            {
            P2=0xff;
            rs=0;
            rw=1;
            en=1;
            while(P2&0x80);
            en=0;
            }
            void lcd_wcom(uchar com)
            { check_busy();
            rw=0;
            rs=0;
            P2=com;
            en=1;
            en=0;
            }
            void lcd_wdat(uchar dat)
            { check_busy();
            rw=0;
            rs=1;
            P2=dat;
            en=1;
            en=0;
            }
            void lcd_init()
            {
            lcd_wcom(0x38),delay(1);//8位,雙列,5*7
            lcd_wcom(0x0c),delay(1); //開(kāi)顯示,關(guān)光標(biāo),光標(biāo)所在字符不閃電子小制作_我愛(ài)制作_電子DIY制作套件http://www.5imcu.net/
            lcd_wcom(0x06),delay(1);//顯示地址遞增18B20做溫度補(bǔ)償?shù)某暡y(cè)距程序
            lcd_wcom(0x01),delay(1); //清屏,光標(biāo)移到左上角
            }
            void chushi_display()
            {
            uchar m=0;
            lcd_init();
            lcd_wcom(0x80);
            for(m=0; m<16; m++)
            {
            lcd_wdat(table[m]); //將數(shù)組中字符顯示出來(lái)18B20做溫度補(bǔ)償?shù)某暡y(cè)距程序
            delay(1000);
            }
            delay(100);
            lcd_wcom(0x01);
            }
            void ds1820rst()
            { unsigned char x=0;
            DQ = 1,delayus(4); //DQ復(fù)位
            DQ = 0; //DQ拉低
            delayus(100); //精確延時(shí)大于480us
            DQ = 1; //拉高h(yuǎn)ttp://www.duankudp.com/
            delayus(40);
            }
            uchar ds1820rd()
            {
            unsigned char i=0;
            unsigned char dat = 0;
            for (i=8;i>0;i--)
            { DQ = 0; //給脈沖信號(hào)
            dat>>=1;
            DQ = 1; //給脈沖信號(hào)電子小制作_我愛(ài)制作_電子DIY制作套件http://www.5imcu.net/
            if(DQ)
            dat|=0x80;
            delayus(10);
            }
            return(dat);
            }
            void ds1820wr(uchar wdata)
            {
            unsigned char i=0;
            for (i=8; i>0; i--)
            {
            DQ = 0;
            DQ = wdata&0x01;
            delayus(10);
            DQ = 1;
            wdata>>=1;
            }
            }
            read_temp()
            {
            uchar a,b;
            ds1820rst();
            ds1820wr(0xcc);/
            ds1820wr(0x44);/
            ds1820rst();
            ds1820wr(0xcc);/
            ds1820wr(0xbe);/
            a=ds1820rd();
            b=ds1820rd();
            tvalue=b;
            tvalue<<=8;
            tvalue=tvalue|a;
            if(tvalue<0x0fff)
            tflag=0;
            else
            {
            tvalue=~tvalue+1;
            tflag=1;
            }
            tvalue=tvalue*(0.625);//溫度值擴(kuò)大10倍,精確到1位小數(shù)
            return(tvalue);
            }
            void ds1820disp()
            {
            uchar flagdat;
            disdata[0]=tvalue/1000+0x30;//百位數(shù)
            disdata[1]=tvalue00/100+0x30;//十位數(shù)
            disdata[2]=tvalue0/10+0x30;//個(gè)位數(shù)http://www.duankudp.com/
            disdata[3]=tvalue+0x30;//小數(shù)位
            if(tflag==0)
            flagdat=0x20;//正溫度不顯示符號(hào)電子小制作_我愛(ài)制作_電子DIY制作套件http://www.5imcu.net/
            else
            flagdat=0x2d;//負(fù)溫度顯示負(fù)號(hào):-18B20做溫度補(bǔ)償?shù)某暡y(cè)距程序
            if(disdata[0]==0x30)
            {
            disdata[0]=0x20;//如果百位為0,不顯示
            if(disdata[1]==0x30)
            {
            disdata[1]=0x20;//如果百位為0,十位為0也不顯示
            }
            }
            }
            void updata_disp()
            {
            disp_buf1[0]=W, disp_buf1[1]=e;
            disp_buf1[2]=n, disp_buf1[3]=D;
            disp_buf1[4]=u,disp_buf1[5]=-;
            disp_buf1[6]=-, disp_buf1[7]=D;
            disp_buf1[8]=i,disp_buf1[9]=s;;
            disp_buf1[10]=t,disp_buf1[11]=a;;
            disp_buf1[12]=n,disp_buf1[13]=t;;
            disp_buf1[14]=:,disp_buf1[15]=:;
            disp_buf2[0]=*, disp_buf2[1]=disdata[1];
            disp_buf2[2]=disdata[2],disp_buf2[3]=.;
            disp_buf2[4]=disdata[3],disp_buf2[5]=-;
            disp_buf2[6]=-, disp_buf2[7]=0;
            disp_buf2[8]=0;
            disp_buf2[9] =julidata[0]+0x30;
            disp_buf2[10]=julidata[1]+0x30;
            disp_buf2[11]=julidata[2]+0x30;
            disp_buf2[12]=c,disp_buf2[13]=m;
            disp_buf2[14]=*,disp_buf2[15]=*;
            }
            void display()
            {
            uchar i;
            lcd_wcom(0x80);
            for(i=0;i<16;i++)
            lcd_wdat(disp_buf1[i]);
            lcd_wcom(0xc0);
            for(i=0;i<16;i++)
            lcd_wdat(disp_buf2[i]);
            }
            void int_t0() interrupt 1 using 1 //定時(shí)中斷http://www.jiaoqb.com/
            {
            TH0=0x3c;
            TL0=0xb0;
            i++;
            if(i== 10)
            {
            i=0;
            display(); //更新顯示數(shù)據(jù)
            }
            }
            void ChuShiHua()
            {
            IE = 0x82; //開(kāi)T0中斷
            TMOD = 0x10; //定時(shí)器1模式1,定時(shí)器0模式0
            PX1 = 1; //INT1高優(yōu)先級(jí)18B20做溫度補(bǔ)償?shù)某暡y(cè)距程序
            PT0 = 0; //T0 低級(jí)中斷
            IT1 = 0; //INT1電平觸發(fā)0
            TR0 = 1; //啟動(dòng)定時(shí)器T0http://www.jiaoqb.com/
            wave= 0;
            }
            void Deng()
            {
            unsigned int i,j;
            wave=0;
            for (i = 0; i < 200; i++)
            for (j = 0; j < 200; j++);
            }
            void FaShe()
            {
            IE = 0; //關(guān)中斷
            wave= 0;
            delay(80);
            TH1 = 0;
            TL1 = 0; //計(jì)數(shù)器清零
            wave=1;
            TR1 = 1; //啟動(dòng)計(jì)算器;
            delayus(125);
            wave=0;
            delayus(300);
            IE=0X86;
            }
            void Shou() interrupt 2 //外部中斷INT1
            {
            IE = 0; //關(guān)中斷
            JuLi= 0;
            TR1 = 0; //關(guān)定時(shí)器1
            Gao = TH1, Di = TL1;
            JuLi = JuLi | Gao, JuLi = JuLi << 8;
            JuLi = JuLi | Di,JuLi = JuLi*17;
            JuLi = JuLi/1000,julidata[0] = JuLi / 100;
            julidata[1] = (JuLi - (julidata[0]*100))/10;
            julidata[2] = JuLi, updata_disp();
            IE = 0x82; //關(guān)int1中斷,開(kāi)顯示中斷http://www.jiaoqb.com/
            }
            main()
            {
            display(); //更新顯示數(shù)據(jù)
            chushi_display();
            ChuShiHua();
            while (1)
            {
            read_temp();//讀取溫度
            ds1820disp();//顯示
            FaShe();
            Deng(); //數(shù)據(jù)送入顯示緩沖區(qū)http://www.duankudp.com/
            }
            }



            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉