经过一天的调试,终于把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)
}
上一篇:单片机点阵时钟原理图和源码
下一篇:51单片机数字温度计+灯光报警的proteus仿真+注释详细的源码
推荐阅读
史海拾趣
随着市场竞争的加剧,Brite-Led意识到单凭自身力量难以持续保持领先。于是,公司积极寻求与其他企业和研究机构的合作研发机会。通过与一家知名高校的合作,Brite-Led成功开发出一种新型的LED封装技术,大幅提高了产品的可靠性和耐用性。这一合作不仅加强了Brite-Led的技术实力,也为其带来了更多的商业机会和合作伙伴。
驰芯微公司自2014年成立以来,就立志于打破国外芯片厂商在车规级芯片领域的垄断。初创时期,公司面临着资金短缺、技术壁垒高和市场竞争激烈的挑战。然而,驰芯微团队凭借对技术的执着追求和对市场的敏锐洞察,成功研发出了一系列车规级智能传感和控制芯片,并逐渐在行业中崭露头角。经过数年的努力,驰芯微已经成为国内车规级芯片领域的领军者,其产品广泛应用于各类前装量产车型。
驰芯微公司与明然科技的合作是公司在技术创新方面的又一重要突破。双方共同研发的MCU控制芯片成功应用于主动悬架项目,并在奇瑞的星途瑶光、瑞虎9等车型上取得了重要进展。这一合作不仅提升了国产芯片在高端配置车型中的应用水平,也进一步推动了驰芯微在汽车电子领域的发展。
福斯特半导体(这里假定为福斯特应用材料股份有限公司的半导体业务部门,因直接名为“福斯特半导体”的公司可能专注于不同领域)的母公司——杭州福斯特应用材料股份有限公司,最初并非涉足半导体行业。2003年,公司创始人林建华在纺织业取得成功后,决定跨界进军光伏胶膜行业。当时,国内光伏组件厂商所需的光伏胶膜主要依赖进口,市场被几家国际巨头垄断。林建华凭借在材料领域的深厚积累和技术优势,成功研制出EVA胶膜产品,并迅速占领市场。至2008年,福斯特已成为全球前三的EVA胶膜供应商,为光伏产业的发展奠定了坚实基础。这一跨界创新不仅推动了光伏胶膜行业的国产化进程,也为福斯特半导体后续在电子行业的拓展提供了宝贵的经验和资源。
为了更好地服务中国市场,ebm-papst在中国不断推进本地化生产。公司在上海和西安设立了研发中心和生产基地,配备了与德国同样先进的实验设备。这些本地化生产和研发设施使得ebm-papst能够更快地响应中国市场的需求,提供更符合当地市场特点的产品和解决方案。同时,本地化生产也降低了公司的生产成本,提高了产品的竞争力。
随着中国市场的崛起,ETERNA开始将目光投向了亚洲市场。2011年,中国从德国保时捷家族手中接过ETERNA的旗帜,开始在全球大力拓展ETERNA品牌。在中国市场的推动下,ETERNA的知名度和影响力不断提升。同时,公司还加强了与其他国家和地区的合作与交流,通过参加国际展会和举办品牌活动等方式,进一步扩大了品牌影响力。这些努力使ETERNA在全球电子行业中逐渐崭露头角,成为了一个备受瞩目的品牌。
有位研究生网友提出,就是没觉得手机天线行业有什么技术含量,理由是这个行业用不到公式。 在此,我想有必要就此进行一些陈述,这也是长久以来自己的一些想法。 百闻不如一见,在学校里做东西,和在公司里做东西,是有差异的,这个差异有的时候还 ...… 查看全部问答∨ |
|
有时因为没有电路图,但是自己所从事的行业好歹与电子沾边,于是总喜欢拆开来看看或者动手调调。 有的时候,不小心就被某个地方电一下。 哎,现在有点怕了。 请大家说说你们是否被电过?如何预防?… 查看全部问答∨ |
我要找硬件开发兼职人员(在杭州)急 联系qq 33938019 msn:zhubin@zhubin.net 邮箱:zhubin@zhubin.net … 查看全部问答∨ |
有a,b,c,d四个输入数据,首先让A0=0,A1=0时输出y<=a,然后使WR置0(写输入有效,送出y), 接着再进行计数延时(计数十次,确保数据接收完整),延时完成后使WR置0(关闭通道);再接着让A0=0,A1=1,输出y<=b,用上述流程完成四个数据的依次接收 ...… 查看全部问答∨ |
|
凌阳61单片机超声波测距与电机驱动中断发生冲突怎么解决,求教! 本帖最后由 paulhyde 于 2014-9-15 04:06 编辑 我们在做电赛的智能往返小车的题目,用到的中断有优先级,电机驱动的优先级低一点,超声波测距用到的中断优先级高,进行测距的时候电机就不转了,不知道怎么解决了,下面是用到的中断服务程序: voi ...… 查看全部问答∨ |
近7个月的等待后,现在Ubuntu手机OS稳定版已经跟大家见面,不过它目前支持的设备只有Nexus 4和Galaxy Nexus。刷入稳定版Ubuntu手机OS后,Nexus 4和Galaxy Nexus能够进在GSM下正常的通讯功能(通讯、短信),并且可以使用Wi-Fi、摄像头等。最重要 ...… 查看全部问答∨ |