基于AT89C2051的超聲波測距系統
3.3 數碼管顯示電路
數據顯示采用串行接口LED顯示驅動管理芯片MC14489,它的輸入端與系統CPU之間只有3條I/0口線相連。這3個端口是:使能端ENBLE、時鐘端CLOCK、數據端DATA IN,通過這3個端口寫控制字和數據。更新顯示寄存器的內容,需要傳送3個字節的信息,更新配置寄存器的內容僅需要傳送一個字節的信息。這種芯片可以顯示5位數碼管數據,本系統只用到了4位。驅動電壓為5 V,亮度調節通過 端口與地之間連接的電阻來調節,電阻增大亮度減小。顯示電路如圖6所示。

圖6 顯示電路
3.4 單片機系統
發射的超聲波被調制成包含40 kHz方波的具有一定時間間隔的矩形波脈沖信號,其發射、接收脈沖工作時序圖如圖7所示。由單片機AT89C2051的P1.7口控制H橋電路的使能端EN,送出40 kHz的超聲波脈沖信號,其脈沖寬度及脈沖間隔均由軟件控制。脈沖寬度約為125~200us,即在一個調制脈沖內包含5~8個40 kHz的方波。脈沖發送間隔取決于要求測量的最大距離。若在有效測距范圍內有被測物體,則在后一次超聲波束發出之前應當接收到前一次發射的反射波,否則認為前方無被測物體。因此,按有效測距范圍可以估算出最短的脈沖間隔發送時間。例如:最大測距范圍為10m時,脈沖間隔時間t:2s/v=2×10/340≈60ms,實際應取t≥60 ms.本系統為方便起見,選擇脈沖間隔定時器為65 ms.

圖7 發射和接收脈沖時序圖
3.5 串口輸出
MC14489可以通過和單片機串口進行通信,當顯示面板離主控制板較遠時,數據信號將會衰減,所以可通過串口來傳輸數據。
3.6 按鍵輸入
本系統可以設定距離值,當大于或小于設定值時將發出控制信號。P1.5、P1.6輸出高低電平,從而可以控制繼電器等外部設備。由3個按鍵設定距離值:S0的作用是進入和退出設定,S1和S2分別是向上加值和向下減值,每按一次加或減一厘米,由數碼管輸出顯示。
4 系統軟件設計
該系統軟件采用8051匯編語言編寫,主程序流程圖如圖8所示。AT89C2051單片機有2個外中斷口,分別用于接收回波中斷和按鍵輸人中斷,對應2個外中斷子程序。此外,還用到了內部中斷定時器, 它用于控制發送載波脈沖,如圖9所示。 定時器65 ms產生中斷一次,主要是發送載波脈沖和計數器清零。外中斷0將在有下降沿觸發時產生中斷,用于讀取定時器產生的計時值和使標志位置位。外中斷1是按鍵輸人中斷,用于提供比較值來輸出控制信號。S0第一次觸發為中斷產生信號,再次觸發則為輸入確定信號。S1和S2按鍵是輸入值增加和減少按鍵,它們通過判斷對應的10口狀態來確定是否輸入。

圖8 主程序流程圖












評論