基于AT89C2051的超聲波測距系統(tǒng)
3.3 數(shù)碼管顯示電路
數(shù)據(jù)顯示采用串行接口LED顯示驅(qū)動管理芯片MC14489,它的輸入端與系統(tǒng)CPU之間只有3條I/0口線相連。這3個端口是:使能端ENBLE、時鐘端CLOCK、數(shù)據(jù)端DATA IN,通過這3個端口寫控制字和數(shù)據(jù)。更新顯示寄存器的內(nèi)容,需要傳送3個字節(jié)的信息,更新配置寄存器的內(nèi)容僅需要傳送一個字節(jié)的信息。這種芯片可以顯示5位數(shù)碼管數(shù)據(jù),本系統(tǒng)只用到了4位。驅(qū)動電壓為5 V,亮度調(diào)節(jié)通過 端口與地之間連接的電阻來調(diào)節(jié),電阻增大亮度減小。顯示電路如圖6所示。
圖6 顯示電路
3.4 單片機系統(tǒng)
發(fā)射的超聲波被調(diào)制成包含40 kHz方波的具有一定時間間隔的矩形波脈沖信號,其發(fā)射、接收脈沖工作時序圖如圖7所示。由單片機AT89C2051的P1.7口控制H橋電路的使能端EN,送出40 kHz的超聲波脈沖信號,其脈沖寬度及脈沖間隔均由軟件控制。脈沖寬度約為125~200us,即在一個調(diào)制脈沖內(nèi)包含5~8個40 kHz的方波。脈沖發(fā)送間隔取決于要求測量的最大距離。若在有效測距范圍內(nèi)有被測物體,則在后一次超聲波束發(fā)出之前應(yīng)當(dāng)接收到前一次發(fā)射的反射波,否則認(rèn)為前方無被測物體。因此,按有效測距范圍可以估算出最短的脈沖間隔發(fā)送時間。例如:最大測距范圍為10m時,脈沖間隔時間t:2s/v=2×10/340≈60ms,實際應(yīng)取t≥60 ms.本系統(tǒng)為方便起見,選擇脈沖間隔定時器為65 ms.
圖7 發(fā)射和接收脈沖時序圖
3.5 串口輸出
MC14489可以通過和單片機串口進(jìn)行通信,當(dāng)顯示面板離主控制板較遠(yuǎn)時,數(shù)據(jù)信號將會衰減,所以可通過串口來傳輸數(shù)據(jù)。
3.6 按鍵輸入
本系統(tǒng)可以設(shè)定距離值,當(dāng)大于或小于設(shè)定值時將發(fā)出控制信號。P1.5、P1.6輸出高低電平,從而可以控制繼電器等外部設(shè)備。由3個按鍵設(shè)定距離值:S0的作用是進(jìn)入和退出設(shè)定,S1和S2分別是向上加值和向下減值,每按一次加或減一厘米,由數(shù)碼管輸出顯示。
4 系統(tǒng)軟件設(shè)計
該系統(tǒng)軟件采用8051匯編語言編寫,主程序流程圖如圖8所示。AT89C2051單片機有2個外中斷口,分別用于接收回波中斷和按鍵輸人中斷,對應(yīng)2個外中斷子程序。此外,還用到了內(nèi)部中斷定時器, 它用于控制發(fā)送載波脈沖,如圖9所示。 定時器65 ms產(chǎn)生中斷一次,主要是發(fā)送載波脈沖和計數(shù)器清零。外中斷0將在有下降沿觸發(fā)時產(chǎn)生中斷,用于讀取定時器產(chǎn)生的計時值和使標(biāo)志位置位。外中斷1是按鍵輸人中斷,用于提供比較值來輸出控制信號。S0第一次觸發(fā)為中斷產(chǎn)生信號,再次觸發(fā)則為輸入確定信號。S1和S2按鍵是輸入值增加和減少按鍵,它們通過判斷對應(yīng)的10口狀態(tài)來確定是否輸入。
圖8 主程序流程圖
評論