您好,欢迎访问一九零五行业门户网

超声波测距仪的编程设计

概述:超声波测距器在汽车倒车,建筑工地和一些工业现场有着很广泛的用途。其测量范围0.10~4.0m,测量精度可高达1cm左右。
本设计采用新型8051控制器c8051f020,系统采用22.1184mhz的高精度晶振,来获得稳定的时间频率,以减少测量误差。c8051f020用p3.0端口输出超声波换能器所需的40khz方波信号,利用中断口检测超声波接收电路输出的返回信号。显示电路采用spi延伸的lcd1602液晶。
本设计的重点就是超声波的接收和发射电路。
超声波的发射电路如下图1.2
图1.2
发射电路主要由反向器74hc04和超声波换能器构成,p3.0端口输出的40khz方波信号一路经反向器送到超声波换能器的一个电极,另一路经两级反向器后送到超声波换能器的另一个电极,用这种方式可以提高超声波的发射强度。
超声波接收电路如下图1.3
图1.3
集成电路cx20106a是一款红外接收的芯片,常用于电视红外遥控器。常用的载波频率38khz与测距的40khz较为相近,可以利用它来做接收电路。适当的改变c3的大小,可以改变接受电路的灵敏度和抗*力。
显示电路如下图1.4
采用c8051f020的spi从而驱动595控制lcd1602.其中lcdcs为595的片选信号
本设计把片选信号定义为p3.1.
sbitlcdcsp3^1;
另一个重点就是超声波测距的算法计算。
d=s/2(v+t)/2---------------------------------------------------------------------------(1-1)
其中d为被测物与测距器的距离。
s为声波的来回路程。
v为声速。
t为所用时间。
c8051f020外设及其丰富,本设计只用到了外部中断和spi的部分管脚,在此基础上还可以增加不少内容,纯粹使用前后台系统,会使系统的适时性受到限制,在下篇我会详细介绍基于c8051f020的ucos_ii的移植。
代码部分:
//-------------------------------------------------------------------------
//spi_init()
//-------------------------------------------------------------------------
voidspi0_init(void)
{
spi0cfg=0x07;//datasampledon1stsckrisingedge
//8-bitdatawords
spi0cfg|=0x40;//ckpol=1;01000111
spi0cn=0x03;//mastermode;spienabled;flags
//cleared
spi0ckr=sysclk/2/2000000-1;//spiclock<=8mhz(limitedby
//eepromspec.)
}
voidmspi_senddata(unsignedcharddata)
{
lcdcs=0;//片选hc595
spif=0;
spi0dat=ddata;
while(spif==0);//等待写结束
lcdcs=1;
}
其它类似信息

推荐信息