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