在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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)用 > RS485接口一體化超聲波測(cè)距模塊

            RS485接口一體化超聲波測(cè)距模塊

            作者: 時(shí)間:2016-11-25 來(lái)源:網(wǎng)絡(luò) 收藏
            一、模塊簡(jiǎn)介:

            超聲波測(cè)距模塊采用STC11F04E單片機(jī)作處理器,工作電源:DC5V,工作電流20mA。測(cè)量數(shù)據(jù)輸出方式為RS485輸出,數(shù)據(jù)格式為標(biāo)準(zhǔn)的ASCII碼,數(shù)據(jù)由:空格位(起始位)+百+十位+個(gè)位。工作方式有兩種:一是連續(xù)測(cè)量方式;二是查詢測(cè)量方式。

            本文引用地址:http://www.biyoush.com/article/201611/321458.htm

            測(cè)量范圍:36cm~450cm(盲區(qū)36cm)。
            測(cè)量過(guò)程中,當(dāng)接收不到障礙物反射的回波時(shí),輸出“C C C”, 當(dāng)測(cè)量低于下限值(在盲區(qū)內(nèi))時(shí)顯示“- - -”。測(cè)量結(jié)果由模塊上的輸出端口輸出,輸出方式為RS485輸出。測(cè)量結(jié)果可通過(guò)電腦進(jìn)行顯示。模塊使用RS485接口通訊,測(cè)量結(jié)果傳送距離遠(yuǎn),可以通過(guò)電腦采集數(shù)據(jù),編寫通訊程序非常的便捷。
            波特率:1200
            校驗(yàn)位:無(wú)
            數(shù)據(jù)位:8
            停止位:無(wú)
            ASCII碼數(shù)據(jù)格式:空格位(起始位)+百+十位+個(gè)位。
            二、模塊的使用設(shè)置
            超聲波模塊的工作方式可進(jìn)行設(shè)置,設(shè)置結(jié)果可保存在模塊內(nèi)部的單片機(jī)中,斷電不會(huì)丟失。設(shè)置命令格式如下:




            查詢命令格式:AT+CL=1-32(0-32為模的的地址編碼,每個(gè)模塊的地址可進(jìn)行獨(dú)立設(shè)定,設(shè)定時(shí)使用AT+WD=“ ”命令,各塊模塊的編碼可獨(dú)立,由使用者自己設(shè)定,設(shè)定范圍0-32,只在查詢方式下有效),數(shù)據(jù)格式為16進(jìn)制數(shù)據(jù)。
            三、模塊使用
            為減小本超聲波測(cè)距模塊外形尺寸,該超聲波測(cè)距元件采用雙面安裝,模塊長(zhǎng)6.2cm寬2.4cm。模塊可用作應(yīng)用系統(tǒng)的測(cè)距模塊。可應(yīng)用在液位檢測(cè)、車位檢測(cè)、距離測(cè)量等產(chǎn)品中。板上留有安裝孔,有一排6腳插針。測(cè)試顯示程序范例如下:
            #include //頭文件
            #include //頭文件
            #define uchar unsigned char //定義變量類型為字符型
            #define uint unsigned int //定義變量類型為長(zhǎng)整型
            #define LED P0 //數(shù)碼管段碼輸出端
            #define LED1 P2_6 //數(shù)碼管位1
            #define LED2 P2_4 //數(shù)碼管位2
            #define LED3 P2_5 //數(shù)碼管位3
            #define sx P2_3 //數(shù)碼管位3

            uchar s,i,pd,jsh,ml[3]={0,0,0},zj,xm0,xm1,xm2,xm3,buffer[3];//程序中用到的變量
            uchar convert[10]={0xA0,0xBD,0x64,0x34,0x39,0x32,0x22,0xBC,0x20,0x30};////0~9段碼單片機(jī)端口P0x.0-P0.7 分別接數(shù)碼管的A、B、F、D、E、H、C、G各段
            void delay(i);//延時(shí)函數(shù)
            void scanLED();//顯示函數(shù)
            void timeToBuffer();//顯示轉(zhuǎn)換函數(shù)
            void offmsd();//百位數(shù)為0判斷處理模塊

            void main()//主程序
            {
            EA=1;//開總中斷
            ES=1;//串口中斷允許
            SCON = 0x50; //串口方式1,允許接收
            TMOD = 0x21; //定時(shí)器1定時(shí)方式2
            TCON = 0x40; //定時(shí)器1開始計(jì)數(shù)
            TH1 = 0xF3;//6MHz 1200波特率
            TL1 = 0xF3;//6MHz 1200波特率
            TI = 0;//串口發(fā)送中斷標(biāo)志置0
            RI =0;//串口接收中斷標(biāo)志置0
            TR1=1; //啟動(dòng)定時(shí)器1
            sx=0;
            while(1)
            {
            timeToBuffer();//調(diào)用轉(zhuǎn)換段碼功能模塊
            offmsd();//調(diào)用百位數(shù)為0判斷處理模塊
            scanLED();//調(diào)用顯示函數(shù)
            }
            }

            void delay(i)//延時(shí)子程序
            {
            while(--i);//延時(shí)循環(huán)
            }

            void scanLED() //顯示功能模塊
            {
            LED=buffer[0];//顯示個(gè)位數(shù)值,個(gè)數(shù)位數(shù)的段碼送顯示端口
            LED3=0;//個(gè)位數(shù)位碼,低電平有效,進(jìn)行顯示
            delay(1);//顯示延時(shí),加大該值,顯示亮度提高
            LED3=1;//關(guān)閉顯示個(gè)位數(shù)顯示
            delay(20);//關(guān)閉顯示延時(shí),減小該值時(shí)顯示亮度提高

            LED=buffer[1];//顯示十位數(shù)值,十?dāng)?shù)位數(shù)的段碼送顯示端口
            LED2=0;//十位數(shù)位碼,低電平有效,進(jìn)行顯示
            delay(1);//顯示延時(shí),加大該值,顯示亮度提高
            LED2=1;//關(guān)閉顯示十位數(shù)顯示
            delay(20);//關(guān)閉顯示延時(shí),減小該值時(shí)顯示亮度提高

            LED=buffer[2];//顯示百位數(shù)值,百數(shù)位數(shù)的段碼送顯示端口
            LED1=0;//百位數(shù)位碼,低電平有效,進(jìn)行顯示
            delay(1);//顯示延時(shí),加大該值,顯示亮度提高
            LED1=1;//關(guān)閉顯示百位數(shù)顯示
            delay(20); //關(guān)閉顯示延時(shí),減小該值時(shí)顯示亮度提高
            }

            void offmsd()//百位數(shù)為0判斷處理模塊
            {
            if (buffer[2]==0xA0) //如果值為零時(shí)百位不顯示
            buffer[2] = 0xff;//數(shù)碼管百位數(shù)的段碼全部為1,即高電平,百位不顯示
            }

            void serial() interrupt 4 using 3//串口中斷接收程序
            {
            if(RI)//串口接收到數(shù)據(jù)時(shí)串口中斷標(biāo)志位為1
            {
            RI=0; //串口中斷標(biāo)志位置0
            pd=SBUF;//接收到的數(shù)據(jù)送中間變變量pd儲(chǔ)存
            if(pd==0x20)//判斷接收到的數(shù)據(jù)是否為0x20(這是ASCII碼的空格的代碼)
            {
            jsh=0;//接收位數(shù)計(jì)數(shù)器jsh置0
            pd=0;//中間變變量pd清0
            }
            if(jsh==1)//當(dāng)jsh值為1時(shí),代表串口接收到模塊發(fā)送回的百位數(shù)值
            {
            ml[0]=SBUF;//串口接收到模塊發(fā)送回的百位數(shù)值存入ml[0]單元
            }
            else if(jsh==2)//當(dāng)jsh值為2時(shí),代表串口接收到模塊發(fā)送回的十位數(shù)值
            {
            ml[1]=SBUF;//串口接收到模塊發(fā)送回的十位數(shù)值存入ml[1]單元
            }
            else if(jsh==3)//當(dāng)jsh值為3時(shí),代表串口接收到模塊發(fā)送回的個(gè)位數(shù)值
            {
            ml[2]=SBUF;//串口接收到模塊發(fā)送回的個(gè)位數(shù)值存入ml[2]單元
            s=ml[0]*100+ml[1]*10+ml[2]; //計(jì)算測(cè)量得到的距離值s,單位為厘米
            }
            jsh++; //接收位數(shù)計(jì)數(shù)器值加1
            }
            }

            void timeToBuffer() //轉(zhuǎn)換段碼功能模塊
            {
            xm0=ml[0]-48;//接到的值為標(biāo)準(zhǔn)的ASCII碼,進(jìn)行十進(jìn)制轉(zhuǎn)換,百位數(shù)的值
            xm1=ml[1]-48;//接到的值為標(biāo)準(zhǔn)的ASCII碼,進(jìn)行十進(jìn)制轉(zhuǎn)換,十位數(shù)值
            xm2=ml[2]-48;//接到的值為標(biāo)準(zhǔn)的ASCII碼,進(jìn)行十進(jìn)制轉(zhuǎn)換,個(gè)位數(shù)值
            buffer[0]=convert[xm2];//轉(zhuǎn)換成對(duì)應(yīng)的顯示碼段
            buffer[1]=convert[xm1];//轉(zhuǎn)換成對(duì)應(yīng)的顯示碼段
            buffer[2]=convert[xm0];//轉(zhuǎn)換成對(duì)應(yīng)的顯示碼段
            if ((ml[0]==67)&&(ml[1]==67))//判斷接收到的ASCII碼數(shù)值為"C",表示模塊接收不到回波,這時(shí)的顯示用"C C C"表示
            {
            buffer[0]=0xE2;//顯示"C"的段碼是0xE2
            buffer[1]=0xE2;//顯示"C"的段碼是0xE2
            buffer[2]=0xE2; //顯示"C"的段碼是0xE2
            }
            else if ((ml[0]==45)&&(ml[1]==45))//判斷接收到的ASCII碼數(shù)值為"-",表示模塊的測(cè)量范圍在盲區(qū)范圍內(nèi)這時(shí)的顯示用"- - -"表示
            {
            buffer[0]=0x7F;//顯示"-"的段碼是0x7F
            buffer[1]=0x7F;//顯示"-"的段碼是0x7F
            buffer[2]=0x7F; //顯示"-"的段碼是0x7F
            }
            }



            評(píng)論


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

            關(guān)閉