超聲波測距器的設計
超聲波測距器在汽車倒車,建筑工地和一些工業(yè)現(xiàn)場有著很廣泛的用途。其測量范圍0.10~4.0 m,測量精度可高達1 cm左右。
本設計采用新型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 .
sbit LCDCS P3^1;
另一個重點就是超聲波測距的算法計算。
D = S/2(v+t)/2 ---------------------------------------------------------------------------(1-1)
其中D為被測物與測距器的距離。
S為聲波的來回路程。
V為聲速。
T為所用時間。
C8051F020 外設及其豐富,本設計只用到了外部中斷和SPI的部分管腳,在此基礎上還可以增加不少內(nèi)容,純粹使用前后臺系統(tǒng),會使系統(tǒng)的適時性受到限制,在下篇我會詳細介紹基于c8051f020的ucos_II的移植。
代碼部分:
//-------------------------------------------------------------------------
// SPI_Init()
//-------------------------------------------------------------------------
void SPI0_Init (void)
{
SPI0CFG = 0x07; // data sampled on 1st SCK rising edge
// 8-bit data words
SPI0CFG|=0x40; //CKPOL =1;01000111
SPI0CN = 0x03; // Master mode; SPI enabled; flags
// cleared
SPI0CKR = SYSCLK/2/2000000-1; // SPI clock = 8MHz (limited by
// EEPROM spec.)
}
void MSPI_SendData(unsigned char ddata)
{
LCDCS = 0; // 片選HC595
SPIF = 0;
SPI0DAT = ddata;
while (SPIF == 0); // 等待寫結束
LCDCS = 1;
}
評論