<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > ATMEGA8超聲波測距程序

          ATMEGA8超聲波測距程序

          作者: 時間:2016-11-30 來源:網(wǎng)絡 收藏
          幾天前把超聲波做出來以后 準確度可以提高到1cm 然后放到小車上

          做了一個超聲波蔽障 現(xiàn)在小車可以光電循跡 和超聲波蔽障了 下面是

          本文引用地址:http://www.ex-cimer.com/article/201611/324023.htm

          超聲波的程序

          /*********************************************************************
          Project :超聲波測距
          Chip type : ATMEGA8
          Clock frequency: 8.000000MHz
          *********************************************************************/
          #include
          #include
          #pragma interrupt_handler intt0:10 //T0溢出中斷
          #pragma interrupt_handler icp_timer1:6 // T1捕捉中斷
          const unsigned char tab1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//七段譯碼字型表(lm,cm)
          unsigned char ledbuff[]={0X08,0X28,0X28};//顯示緩沖區(qū)
          unsigned char count;
          unsigned char newcount;
          unsigned char oldcount;
          void intt0(void)//T0中斷定時程序,定時58US,即測距1CM.
          {
          TCNT0=0XC6;
          count++;
          }
          void icp_timer1(void)//ICP1捕捉中斷,捕捉頻率38.5~41.6
          {
          if (96<=ICR1<=104)
          {
          SREG&=0X7f;
          newcount=count-13;
          ICR1=0;
          TCNT1=0;
          TCCR1B=0X81;
          }
          }
          void delay_1us(void)//1us
          {
          asm("nop");
          }
          void delay_us(unsigned int t)//tus
          {
          unsigned int i=0;
          for(i=0;idelay_1us();
          }
          void delay_1ms(void)//1ms
          {
          unsigned int i;
          for(i=1;i<1142;i++);
          }
          void delay_ms(unsigned char t)
          {
          unsigned char i=0;
          for(i=0;i{
          delay_1ms();
          }
          }

          void send40kHz(void) //發(fā)射40KHz超聲波
          {
          count=0;
          TIMSK&=0XDF;//禁止ICP1使能
          OCR2=0X64;
          TCCR2=0X19;
          }
          void close40kHz(void) //停止發(fā)射超聲波
          {
          TCCR2=0X00;
          }
          void hextobcd(unsigned char m)//將count十六進制數(shù)據(jù)轉(zhuǎn)換為LED七段碼
          {
          unsigned char temp;
          temp=m%10;
          ledbuff[0]=tab1[temp];//mm位
          m=m/10;
          temp=m%10;
          ledbuff[1]=tab1[temp];//lm位
          temp=m/10;
          ledbuff[2]=tab1[temp];//m位
          }
          void display3led(void) //數(shù)碼管顯示
          {
          unsigned char i;
          for(i=0;i<3;i++)
          {
          PORTD=ledbuff[i];
          PORTC=~(1< delay_us(100);
          PORTC=(1<}
          }

          void mcu_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下降沿觸發(fā),系統(tǒng)時鐘
          TIMSK=0X01; //使能T0定時溢出

          }
          void main(void)
          {
          unsigned char i;
          mcu_init();
          for(;;)
          {
          send40kHz();
          SREG|=0X80;
          delay_us(50);
          close40kHz();
          delay_us(20);
          TIMSK=0X21;
          if (newcount!=oldcount)
          oldcount=newcount;
          hextobcd(oldcount);
          for(i=0;i<20;i++)
          display3led();
          }

          }



          關鍵詞: ATMEGA8超聲波測

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();