新聞中心

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

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

        作者: 時間:2016-11-30 來源:網絡 收藏

        voidsend40kHz(void)//發射40KHz超聲波
        {
        count=0;
        TIMSK&=0XDF;//禁止ICP1使能
        OCR2=0X64;
        TCCR2=0X19;
        }
        voidclose40kHz(void)//停止發射超聲波
        {
        TCCR2=0X00;
        }
        voidhextobcd(unsignedcharm)//將count十六進制數據轉換為LED七段碼
        {
        unsignedchartemp;
        temp=m%10;
        ledbuff[0]=tab1[temp];//mm位
        m=m/10;
        temp=m%10;
        ledbuff[1]=tab1[temp];//lm位
        temp=m/10;
        ledbuff[2]=tab2[temp];//m位
        }
        voiddisplay3led(void)//數碼管顯示
        {
        unsignedchari;
        for(i=0;i<3;i++)
        {
        PORTD=ledbuff[i];
        PORTC=~(1<delay_1ms();
        PORTC=(1<}
        }

        voiddisplay8led(void)//8LED顯示
        {
        if(newcount<10)
        PORTD=0XFE;
        elseif(newcount<20)
        PORTD=0XFD;
        elseif(newcount<30)
        PORTD=0XFB;
        elseif(newcount<40)
        PORTD=0XF7;
        elseif(newcount<50)
        PORTD=0XEF;
        elseif(newcount<100)
        PORTD=0XDF;
        elseif(newcount<180)
        PORTD=0XBF;
        else
        PORTD=0X7F;
        }

        voidmcu_init(void)//MCU初始化
        {
        DDRD=0XFF;
        PORTD=0XFF;
        DDRC=0XDF;//PC5為輸入
        PORTC=0XFF;
        DDRB=0XFE;
        PORTB=0XF7;
        TCNT2=0X00;
        TCNT0=0XC6;//T0定時58US
        TCCR0=0X02;//T0定時器1/8分頻
        TCNT1=0X00;
        TCCR1A=0X00;
        TCCR1B=0X81;//輸入捕獲噪音抑制允許,ICP1下降沿觸發,系統時鐘
        TIMSK=0X01;//使能T0定時溢出

        }
        voidmain(void)
        {
        unsignedchari;
        mcu_init();
        for(;;)
        {
        send40kHz();
        SREG|=0X80;
        delay_us(50);
        close40kHz();
        delay_us(20);
        TIMSK=0X21;
        if(!(PINC&0X20))//如果插上JD1短路塊,則數碼管顯示距離
        {
        if(newcount!=oldcount)
        oldcount=newcount;
        hextobcd(oldcount);
        for(i=0;i<20;i++)
        display3led();
        }
        else
        {
        PORTC=0XFF;
        display8led();
        delay_ms(100);
        }
        }

        }

        雙龍SL-SRF-25超聲波避障程序—51單片機
        /***********************************************************************/
        /*
        廣州雙龍電子
        WWW.SL.COM.CN
        功能:
        超聲波避障,避障距離為10cm;前進遇障后退左轉彎.
        接線方法:
        52板P1.0(用短線)接超聲波傳感器J1-1(J1插針的第一腳)
        注意:
        用戶可以根據自已的避障距離,把52板P1.0腳連接到超聲波傳感器的相應腳
        以下是避障距離范圍情況:
        1:J1-1避障距離范圍5~9cm
        2:J1-2避障距離范圍10~19cm
        3:J1-3避障距離范圍20~29cm
        4:J1-4避障距離范圍30~39cm
        5:J1-5避障距離范圍40~49cm
        6:J1-6避障距離范圍50~99cm
        7:J1-7避障距離范圍100~179cm
        8:J1-8避障距離范圍180~250cm
        Chiptype:AT89S52
        Clockfrequency:24MHz
        */
        /************************************************************************/
        #include"reg52.h"
        sbitP1_0=P1^0;//定義避障距離檢測腳
        voiddelay_1ms(void)//1毫秒延時程序
        {
        unsignedcharj=0,i=8;
        do
        {
        while(--j);
        }
        while(--i);
        }

        voiddelay(unsignedchari)//毫秒級延時程序
        {
        while(i--)
        delay_1ms();
        }

        voidforward(void)//LED4~5亮,前進
        {
        P0=0XE7;
        P3=0x50;
        }
        voidleft(void)//LED1~3亮,左轉
        {
        P0=0XF8;
        P3=0x60;
        }
        voidback(void)//LED全亮,后退
        {
        P0=0;
        P3=0XA0;
        }

        voidinit(void)//端口初始化
        {
        P1|=0X01;//要讀取P1.0,就先寫1
        P0=255;//8LED全不亮
        P3=0;
        }
        /***********************************************************************
        主函數
        ***********************************************************************/
        voidmain(void)
        {
        init();//系統初始化
        while(1)//循環
        {
        if(!P1_0)//如果在避障范圍,則后退,左轉彎
        {
        back();
        delay(200);//后退200毫秒
        left();
        delay(200);//左轉90度.
        }
        else
        {
        forward();
        delay(200);
        }
        }
        }

        上一頁 1 2 下一頁

        關鍵詞: AVR單片機超聲波測

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 册亨县| 北票市| 长乐市| 汨罗市| 五峰| 越西县| 胶州市| 航空| 云安县| 绍兴县| 曲松县| 长春市| 蒙自县| 东山县| 康定县| 汉阴县| 东乌珠穆沁旗| 镇平县| 噶尔县| 盐池县| 永平县| 孟连| 南涧| 额敏县| 万盛区| 名山县| 嘉鱼县| 夹江县| 高密市| 乌拉特前旗| 辉县市| 盐城市| 抚顺县| 宾川县| 建阳市| 西贡区| 蚌埠市| 灵川县| 抚宁县| 新干县| 河池市|