历史上的今天
返回首页

历史上的今天

今天是: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)
}

推荐阅读

史海拾趣

Harris公司的发展小趣事

Hammond公司的故事始于1916年,当时它仅仅是一个位于加拿大安大略省圭尔夫的后院车间。1917年,OS Hammond and Son正式成立,并在接下来的几年里开始制造电子管收音机、电池充电器等电子产品。这一时期,Hammond逐步积累了技术和市场经验,为后续的快速发展奠定了基础。随着广播和通讯行业的兴起,Hammond敏锐地捕捉到了市场机遇,开始专注于为这些行业提供关键组件。

Densei-Lambda (TDK)公司的发展小趣事

进入20世纪30年代,Hammond迎来了其发展历程中的一个重要转折点。在1930年代初,Hammond成为加拿大第一家生产两柱式机架和窄柜系列产品的公司,这些产品迅速获得了广播和通讯行业的青睐。这一创举不仅巩固了Hammond在业内的地位,还为其后续在电气、电子行业的全面发展铺平了道路。

Hi-Tron Semiconductor Corp公司的发展小趣事

二战后,随着全球经济的复苏和电气产品的爆炸性需求,Hammond迎来了前所未有的发展机遇。在1950年代和1960年代,Hammond积极扩展产品线,成为变压器、机架、机柜以及电气和电子行业外壳的领先供应商。同时,公司还进行了多次战略性收购,进一步巩固了其在北美电气OEM市场的地位,成为磁性材料的主要供应商之一。

Cofan Usa Inc公司的发展小趣事

在快速发展的过程中,Cofan Usa Inc公司意识到供应链管理的重要性。为了确保产品质量和交货期的稳定性,公司开始优化供应链管理流程,与优质供应商建立长期合作关系,并引入先进的供应链管理系统。这些举措有效提升了公司的运营效率和市场竞争力。

Captive Fastener公司的发展小趣事

Captive Fastener公司在电子紧固件领域一直致力于技术创新。某年,公司研发团队成功开发出一种新型的自锁紧固件,这种紧固件能够在高振动环境下保持稳定的连接性能,极大地提高了电子设备的可靠性和耐久性。这一创新产品迅速获得了市场的认可,Captive Fastener公司因此获得了大量订单,实现了业务的快速增长。

Apex [Apex Microtechnology]公司的发展小趣事

Apex Microtechnology一直致力于开发在性能、质量和可靠性方面引领行业的产品。通过不断创新和研发,公司成功推出了多款具有竞争力的功率模拟产品,为全球客户提供高效的解决方案。同时,Apex Microtechnology也积极拓展全球市场,与众多知名企业建立了合作关系,进一步提升了其在电子行业的影响力。

问答坊 | AI 解惑

射线是否正在你身边无时不刻地产生着危害??

人生大部分时间是在建筑物室内度过的,受到的射线照射主要源于建材。诚然,建材的放射性危害不具有普遍性,可以认为是小概率亊件,问题在于人们几乎无从知道射线或电离辐射是否正在你身边无时不刻地产生着危害。它看不见摸不着感觉不到,等危害造成 ...…

查看全部问答>

关于CDMA DTU的开发

各位前辈:     小女子现在手上有一个任务:使用lpc2136 ARM7芯片加扩展卡DTL800,在uC/OS-II操作系统上设计一款CDMA DTU, 实现AT指令操作,比如短信,语音,拨号上网等方式,用的是2.5G的  全名是:CDMA低速上网卡。 &nbs ...…

查看全部问答>

STM8批量编程碰到解保护的问题

STM8S103F2,已经贴好在板子上了,因为程式更新比较频繁, 所以采用的是在线方式烧写,由于在之前烧录时有按RD要求写入了option byte. 当我们再次烧录时提示Device is protected. 从网上查资料得知,可以先改写0x4800h这部分Option byte, 但 ...…

查看全部问答>

STM32解除写保护后必须复位才能再写FLASH?

                                 手册里是这样说的,擦除选项字节后必须产生系统复位才能重新装载WRP,这样的话bootloader不是要进两次才能写新的AP ...…

查看全部问答>

找一个几十篇UCOSII下载的地方

http://www.armjishu.com/bbs/viewtopic.php?id=1980 因为太大了,大家自己去下载吧…

查看全部问答>

镍氢电池充电器的三阶段式充电方式的设计,求电路图或设计思路

同时对2节镍氢电池进行并行充电。电源电路输出最大功率5W。当单节电池电压大于1.3V时停止充电,并指示充电完成。当充电电池短路时具有短路保护功能。 电池充电分为3阶段,第一阶段电池电压0.9V-1V时,充电电流控制在300mA,第二阶段电池电压在1V-1 ...…

查看全部问答>

DIY手机 方案细节征集

GSM模块采用SIM900A,对外提供SMA接口,耳机(带mic耳机)和扬声器接口,板载mic,串口可连接到MCU或者引出供网友DIY,SIM卡座 MCU选用LPC176X(或者其他?) 电源:LM2596S-ADJ 提供4.0V电压;  TC1262-3.3VDB 提供3.3V电压 按键:1 ...…

查看全部问答>

顶标C80 88Z的芯片具体型号(已知是用作4分频)

如图,芯片顶标 第一行:C80,第二行:88Z 已知在电路中是用作4分频的元件。 求具体型号,或者类似功能的芯片型号。 …

查看全部问答>

非對稱半橋仿真

用proteus進行仿真 半橋IC為IR2109 操作頻率30K 想利用LC諧振震盪產生一個高壓 但目前發現VDS波形怪怪的 並不是一個半方波 看過其他PAPER應該是要半方坡才對 不知道有沒有人知道原因 …

查看全部问答>

求利用独立四键输入四位数,显示在lcd1206第二行中间位置

求利用独立四键输入四位数,显示在lcd1206第二行中间位置…

查看全部问答>