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