新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 比較簡單的AVR單片機超聲波測距的實例

        比較簡單的AVR單片機超聲波測距的實例

        作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
        于調(diào)試檢查及使用在不同場合。測量范圍10cm-250cm,測距小于100cm時,誤差是1~2cm.,大于 100cm時,誤差是3~5cm。SL-SRF-25超聲波傳感器,還可以指定從單片機I/O端口上輸出分段距離檢測信號,可以直接裝在雙龍SL系列機器人上,作為尋物、避障探測等應用。LED發(fā)光二極管顯示所測分段距離范圍信號,可以用于機器人控制。
        短路插針JD1-2/-3腳功能接地;JD1-1接PC5;短路塊插于2,3間,使用LED數(shù)碼管顯示;短路塊插于1,2間,使用LED發(fā)光二極管顯示,或超聲波傳感器輸出分段控制信號。超聲波傳感器輸出分段控制信號對應J1引腳:
        1、J1-1—PD0避障距離范圍5~9cm
        2:J1-2—PD1避障距離范圍10~19cm
        3:J1-3—PD2避障距離范圍20~29cm
        4:J1-4—PD3避障距離范圍30~39cm
        5:J1-5—PD4避障距離范圍40~49cm
        6:J1-6—PD5避障距離范圍50~99cm
        7:J1-7—PD6避障距離范圍100~179cm
        8:J1-8—PD7避障距離范圍180~250cm

        SLSRF-25電原理圖


        SL-SRF-25超聲波測距源程序:
        /*********************************************************************
        Project:超聲波測距
        Chiptype:ATMEGA8
        Clockfrequency:8.000000MHz
        *********************************************************************/
        #include
        #include
        #pragmainterrupt_handlerintt0:10//T0溢出中斷
        #pragmainterrupt_handlericp_timer1:6//T1捕捉中斷
        #pragmadata:code//設定數(shù)據(jù)區(qū)為程序存儲器
        constunsignedchartab1[]={0X28,0XEE,0X32,0XA2,0XE4,
        0XA1,0X21,0XEA,0X20,0XA0};//七段譯碼字型表(lm,cm)
        constunsignedchartab2[]={0X08,0XCE,0X12,0X82,0XC4,
        0X81,0X01,0XCA,0X00,0X80};//七段譯碼字型表(m)
        #pragmadata:data//設定數(shù)據(jù)區(qū)回到數(shù)據(jù)存儲器
        unsignedcharledbuff[]={0X08,0X28,0X28};//顯示緩沖區(qū)
        unsignedcharcount;
        unsignedcharnewcount;
        unsignedcharoldcount;
        voidintt0(void)//T0中斷定時程序,定時58US,即測距1CM.
        {
        TCNT0=0XC6;
        count++;
        }
        voidicp_timer1(void)//ICP1捕捉中斷,捕捉頻率38.5~41.6
        {
        if(96<=ICR1<=104)
        {
        SREG&=0X7f;
        newcount=count-13;
        ICR1=0;
        TCNT1=0;
        TCCR1B=0X81;
        }
        }
        voiddelay_1us(void)//1us
        {
        asm("nop");
        }
        voiddelay_us(unsignedintt)//tus
        {
        unsignedinti=0;
        for(i=0;idelay_1us();
        }
        voiddelay_1ms(void)//1ms
        {
        unsignedinti;
        for(i=1;i<1142;i++);
        }
        voiddelay_ms(unsignedchart)
        {
        unsignedchari=0;
        for(i=0;i{
        delay_1ms();
        }
        }

        上一頁 1 2 下一頁

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 固阳县| 恩平市| 芮城县| 昌都县| 洪雅县| 侯马市| 兴国县| 托克逊县| 文成县| 岚皋县| 新绛县| 新建县| 九江市| 邵阳县| 郴州市| 兖州市| 榆林市| 林芝县| 汝南县| 磐安县| 沧源| 当雄县| 秭归县| 安平县| 泾阳县| 邵武市| 泾源县| 辰溪县| 邢台市| 禹城市| 藁城市| 无棣县| 甘肃省| 四平市| 兖州市| 定结县| 视频| 凉城县| 永和县| 鄂伦春自治旗| 黄浦区|