历史上的今天
今天是:2024年11月09日(星期六)
2019年11月09日 | STC15F2K60S2单片机调试超声波HC-SR04测距经验
2019-11-09 来源:51hei
经过一天的调试,终于把STC15F2K60S2单片机测量超声波HC-SR04的程序搞定,主要存在问题是:
1、单片机时钟设置为22.1184MHz,而且采取1T模式运行时,触发信号维持10us以上时间要采用延时函数 Delay_us(250)并一定达到10us以上。
2、等待回声接收的引脚echo要开启接收,即echo=1;
3、触发信号发出后不能马上开启计数器计数,一定要等到有回声信号时(echo被置为高)才开启,为了防止回声信号一直不出现,增加超时退出。
4、测量时间(echo维持高电平时间)也增加超时退出,否则程序出现死机。
5、禁止定时计数后要软件清除一次中断标志,因是检测到echo回声停止,此时不一定出现中断(默认中断清除)
6、为保证测量精度,TH1TL1中的计数值要减去初值并除以22,因计数22次为1us。
具体子函数如下:
/*------------------------------------------------
超声波模块触发信号
------------------------------------------------*/
void trigger()
{
trig=0;
NOP(21); //延时
trig=1;
Delay_us(250); //至少10us高电平
trig=0;
}
/*------------------------------------------------
超声波模块距离测试函数
------------------------------------------------*/
void measuring() //晶振22.1184MHz
{
uint Return_time; //超声波返回时间
uint Wait_time;
TL1 = 0x33; //设置定时初值 2ms定时
TH1 = 0x53; //设置定时初值
echo=1; //等待回声(开启输入)
trig=1; //初始状态
Ping_count=0; //时间计数初值
trigger(); //触发
Wait_time=0;
while ((!echo)&(Wait_time++<10000)); //触发后等待echo出现高电平或超时不出现高电平
TR1 = 1; //启动定时计数器T1
Wait_time=0;
while((echo)&(Wait_time++<10000)); //等待echo=0或超时不出现低电平
TR1 = 0; //停止计数
TF1 = 0; //因不是响应中断停止,故软件清除
Return_time = (TH1<< 8) + TL1;
Return_time = (Return_time - 0x5333)/22; //多计时us部分 计数22次为1us
Return_time = 2000*Ping_count + Return_time; //计算总时间,单位是微秒
distance = 34.0*Return_time/200; //计算距离为mm:(34毫米*时间/200)
}
史海拾趣
|
人生大部分时间是在建筑物室内度过的,受到的射线照射主要源于建材。诚然,建材的放射性危害不具有普遍性,可以认为是小概率亊件,问题在于人们几乎无从知道射线或电离辐射是否正在你身边无时不刻地产生着危害。它看不见摸不着感觉不到,等危害造成 ...… 查看全部问答> |
|
各位前辈: 小女子现在手上有一个任务:使用lpc2136 ARM7芯片加扩展卡DTL800,在uC/OS-II操作系统上设计一款CDMA DTU, 实现AT指令操作,比如短信,语音,拨号上网等方式,用的是2.5G的 全名是:CDMA低速上网卡。 &nbs ...… 查看全部问答> |
|
STM8S103F2,已经贴好在板子上了,因为程式更新比较频繁, 所以采用的是在线方式烧写,由于在之前烧录时有按RD要求写入了option byte. 当我们再次烧录时提示Device is protected. 从网上查资料得知,可以先改写0x4800h这部分Option byte, 但 ...… 查看全部问答> |
|
手册里是这样说的,擦除选项字节后必须产生系统复位才能重新装载WRP,这样的话bootloader不是要进两次才能写新的AP ...… 查看全部问答> |
|
同时对2节镍氢电池进行并行充电。电源电路输出最大功率5W。当单节电池电压大于1.3V时停止充电,并指示充电完成。当充电电池短路时具有短路保护功能。 电池充电分为3阶段,第一阶段电池电压0.9V-1V时,充电电流控制在300mA,第二阶段电池电压在1V-1 ...… 查看全部问答> |
|
GSM模块采用SIM900A,对外提供SMA接口,耳机(带mic耳机)和扬声器接口,板载mic,串口可连接到MCU或者引出供网友DIY,SIM卡座 MCU选用LPC176X(或者其他?) 电源:LM2596S-ADJ 提供4.0V电压; TC1262-3.3VDB 提供3.3V电压 按键:1 ...… 查看全部问答> |




