为什么我的超声波模块,测出的距离大10倍了,实测过,刚好是大了10倍,程序哪里出问题了,贴来,各位帮忙分析一下
/********************************************************/
/*项目名称:单片机避障小车 */
/*单片机:STC89C52RC */
/*晶振频率:12MHz */
/********************************************************/
#include
#include
#include
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
/************STC单片机特殊功能寄存器定义*****************/
sfr T2CON=0xC8; //定时器2控制寄存器
sbit TF2=T2CON^7;
sbit TR2=T2CON^2;
sbit ET2=IE^5; //定时器2中断控制位
sfr T2MOD=0xC9;
sfr RCAP2L=0xCA;
sfr RCAP2H=0xCB;
sfr TL2=0xCC;
sfr TH2=0xCD;
sfr IPH=0xB7; //中断优先级控制寄存器高 定时器2优先中断IPH=0x20 IP=0x20
/*************端口定义**********************************/
sbit Sevro_moto_pwm=P3^5; //接舵机信号端输入PWM信号调节速度
sbit Trig=P3^1; //超声波控制端
sbit Echo=P3^2; //超声波接收端
sbit IN1=P1^0; //左边电机驱动口
sbit IN2=P1^1; //左边电机驱动口
sbit IN3=P1^2; //右边电机驱动口
sbit IN4=P1^3; //右边电机驱动口
sbit INA=P1^4; //左边电机使能端
sbit INB=P1^5; //右边电机使能端
sbit IR1=P3^6; //左边红外距离检测
sbit IR2=P3^7; //右边红外距离检测
/********************************************************/
/*************寄存器定义*********************************/
#define Left_moto_go {IN1=1,IN2=0;} //左边电机向前走
#define Left_moto_back {IN1=0,IN2=1;} //左边电机向后走
#define Left_moto_Stop {IN1=0,IN2=0;} //左边电机停转
#define Right_moto_go {IN3=1,IN4=0;} //右边电机向前走
#define Right_moto_back {IN3=0,IN4=1;} //右边电机向后走
#define Right_moto_Stop {IN3=0,IN4=0;} //右边电机停转
//测距相关寄存器定义
bit Time_Up; //溢出标志
uint time; //时间
ulong S=0; //距离
ulong S1=0;
ulong S2=0;
ulong S3=0;
ulong S4=0;
bit busy_flag=0; //测距中标志
bit succeed_flag=0; //测量成功标志
bit Error_flag=0; //测距出错标志
delay_flag=0; //延时标志
delay_cnt=0; //延时计数器
//舵机
uint timer=0; //延时基准变量
uchar pwm_val_left = 0;//变量定义
uchar push_val_left =14;//舵机归中,产生约,1.5MS 信号
/********************************************************/
/*********延时函数***************************************/
void Delay1ms(uint i) //1ms延时程序
{
uchar j;
while(i--)
{
for(j=0;j
有奖活动 | |
---|---|
【有奖活动——B站互动赢积分】活动开启啦! | |
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |