概述:超聲波測距器在汽車倒車,建筑工地和一些工業(yè)現(xiàn)場有著很廣泛的用途。其測量范圍0.10~4.0m,測量精度可高達1cm左右。
本設計采用新型8051控制器c8051f020,系統(tǒng)采用22.1184MHZ的高精度晶振,來獲得穩(wěn)定的時間頻率,以減少測量誤差。C8051f020用P3.0端口輸出超聲波換能器所需的40khz方波信號,利用中斷口檢測超聲波接收電路輸出的返回信號。顯示電路采用SPI延伸的LCD1602液晶。
本設計的重點就是超聲波的接收和發(fā)射電路。
超聲波的發(fā)射電路如下圖1.2
圖1.2
發(fā)射電路主要由反向器74HC04和超聲波換能器構成,P3.0端口輸出的40khz方波信號一路經(jīng)反向器送到超聲波換能器的一個電極,另一路經(jīng)兩級反向器后送到超聲波換能器的另一個電極,用這種方式可以提高超聲波的發(fā)射強度。
超聲波接收電路如下圖1.3
圖1.3
集成電路CX20106A是一款紅外接收的芯片,常用于電視紅外遙控器。常用的載波頻率38khz與測距的40khz較為相近,可以利用它來做接收電路。適當?shù)母淖僀3的大小,可以改變接受電路的靈敏度和抗*力。
顯示電路如下圖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的部分管腳,在此基礎上還可以增加不少內容,純粹使用前后臺系統(tǒng),會使系統(tǒng)的適時性受到限制,在下篇我會詳細介紹基于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;
}