技术文章

超声波测距仪的编程设计

来源:仪表网

2012/1/6 14:42:19 2069
  概述:超声波测距器在汽车倒车,建筑工地和一些工业现场有着很广泛的用途。其测量范围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;
  
  }

猜你喜欢

您的留言已提交成功~

采购或询价产品,请直接拨打电话联系

联系人:

联系方式:
当前客户在线交流已关闭
请电话联系他 :