chenwh_amdz 发表于 2012-9-16 19:29:27

【求助】ATmega128操作HC_SR04超声波测距


int   main(void)
{
       volatile unsigned int time_us=0;//定时器计数值
       volatile unsigned int distance_cm = 0; //距离

      DDRG |= 0x01;
        DDRG &= 0xfd; //Trig输出接PG0Echo输入接PG1
        PORTG &= 0xfe; //PG0 = 0
        PORTG |= 0x02; //PG1 = 1 带上拉电阻输入

        lcd_init();   //液晶初始化

        while(1)
        {
                PORTG &= 0xfe; //PG0 = 0
                PORTG |= 0x01; //PG0 = 1
                _delay_us(20);
                PORTG &= 0xfe; //PG0 = 0

                while(!(PING & 0x02)); //等待PG1=1
                TCNT1 = 0; //开始一次计数               
                TCCR1B = 0x02; //8分频
               
                while(PING & 0x02); //等待PG1=0
                TCCR1B = 0x00; //定时器停止
                time_us = TCNT1; //读取计数值       

                distance_cm = time_us/58;

                table = (distance_cm%1000)/100 + 0x30;
                table = (distance_cm%100)/10 + 0x30;
                table = distance_cm%10 + 0x30;

                lcd_display(table);

                _delay_ms(100);

        }
}单片机使用8M晶振,测试结果在0-5cm内显示正确,而超过5cm后液晶一直显示是5cm,请问程序有什么问题吗?
页: [1]
查看完整版本: 【求助】ATmega128操作HC_SR04超声波测距