【求助】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]