本项目开发了一种利用CX20106A芯片与C51单片机相结合的超声波测距系统,实现了精准的距离测量。
CX20106A 超声波发送与接收程序采用单AT89S52单片机实现40KHz脉冲的生成及超声波信号的检测。具体来说,该系统通过P1.0口输出40KHz的脉冲,并利用外部中断INT0(即P3.2)来捕捉返回信号。
定时器T0和T1均采用中断方式工作:其中T1使用8位自动重装模式以实现约12.5微秒的计时,而T0则作为16位定时器用于大约65毫秒的时间测量。当接收到回波脉冲后,在外部中断程序中计算距离。
超声波在空气中的传播速度约为340米/秒,因此系统设定的最大检测范围为22.1米(即65ms内可测得的距离),远超过CX20106A的实际测量需求。考虑到40KHz的信号周期是25微秒且方波高占空比为50%,高低电平宽度均为12.5微秒,定时器T1通过设置自动重装值来满足计时要求。
在单片机使用12MHz晶振的情况下,为了实现精确到12.5微秒的计数周期,可以将定时器T1的初值设为0xF3或0xF4(即(2^8-X)×12/12 us = 12.5us),两者均能满足系统需求。
最终测量结果以厘米单位显示在由74HC138译码器驱动的四位一体数码管上。具体来说,P2口连接到该译码器,并通过控制信号选择特定的数码管进行数据输出;而P0则作为段选和位选的数据端口。
程序中定义了dispaly(uint d)函数用于将距离值(d)分解为千、百、十及个位数并依次显示在1至3号数码管上。此过程包括选择要显示的数字位,输出相应的数据,并通过控制译码器来点亮对应的LED段。
以上描述完整地概述了该超声波检测系统的硬件配置和软件实现方式。