早教吧 育儿知识 作业答案 考试题库 百科 知识分享

52单片机12m晶振下为什么做超声波测距还需要×12的分频if(succeedflag==1){distancedata=outcomeH;//测量结果的高8位distancedata

题目详情
52单片机 12m晶振下 为什么做超声波测距还需要×12的分频
if(succeed_flag==1)
{
distance_data=outcomeH; //测量结果的高8位
distance_data
▼优质解答
答案和解析
if(succeed_flag)
{
time = timeH * 256 + timeL;
distance = time * 0.0172; //厘米
}
else
{
distance = 0;
}
//外中断0,用做判断回波电平
void exter() interrupt 0 // 外部中断0是0号
{
EX0=0; //关闭外部中断
timeH =TH1; //取出定时器的值
timeL =TL1; //取出定时器的值
succeed_flag=1;//至成功测量的标志
}
假设80S52使用12M晶振:
若用定时器方式计时,从理论上说distance_data*=12;是不对的,该句将计时的时间又转换为晶振的震动次数
若使用计数器的方式的话也是说不通的,12M晶振下,最高计数频率不超过1/2MHz,即计数脉冲的周期要不小于2us
以下都是在忽略改行注释的情况下:
从distance_data*=12;前后看更是不能理解了,若使用该语句后,所测距离至少要放大12倍,若将此处12改为10还有方法处理,假设乘以10,设乘10后的十进制数据变为4000,除以58取整后的结果为68,在显示或处理时将其当作6.8,即在后续处理或者显示时将十进制数据各位的权缩小10倍
还有种可能是为了处理探头等其他情况带来的误差并且处理或显示时是按上面的方式,如果是这样的话个人感觉此处乘12还是很大的