基于51單片機(jī)的超聲波測(cè)距系統(tǒng)的研究與設(shè)計(jì)
(1)溫度測(cè)量部分。
由于聲音的速度在不同的溫度下有所不同,為提高系統(tǒng)的精度,采用了溫度補(bǔ)償功能。這里采用的主要元器件是是美國(guó)Dallas半導(dǎo)體公司生產(chǎn)的單總線數(shù)字溫度傳感器DS18B20,其具有精度高、智能化、體積小、線路簡(jiǎn)單等特點(diǎn)。將DS18B20數(shù)據(jù)線與單片機(jī)的P1.1口相連,就可以實(shí)現(xiàn)溫度測(cè)量,如圖4所示。
(2)LCD顯示部分。
本設(shè)計(jì)顯示部分采用字符型TC1602液晶顯示所測(cè)距離值。TC1602顯示的容量為2行16個(gè)字。液晶顯示屏有微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧、使用方便等諸多優(yōu)點(diǎn),與數(shù)碼管相比,顯得更專(zhuān)業(yè)、美觀。使用時(shí),可將P0與LCD的數(shù)據(jù)線相連,P2口與LCD的控制線相連,如圖5所示。
其中,TC1602第4腳RS為寄存器選擇,第5腳RW為讀寫(xiě)信號(hào)線,第6腳E為使能端。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。這里要注意的是,為了布線方便,單片機(jī)端的D0~D7是接到LCD/602的D1~D0,正好相反,因此在編寫(xiě)軟件時(shí)需要做處理,使讀取正確。
(3)報(bào)警部分。
采用一個(gè)蜂鳴器,由P1.2輸出一定頻率的信號(hào),在連接到蜂鳴器之前,經(jīng)過(guò)一個(gè)三極管9 012的放大。報(bào)警部分的連線,如圖6所示。
(4)電源電路:220 V經(jīng)9 V變壓器降壓后,再經(jīng)D1~D4橋式整流和7 805穩(wěn)壓后給電路各部分供電。
(5)晶振電路:采用12 MHz的晶振。
4 軟件
系統(tǒng)軟件設(shè)計(jì)采用模塊化設(shè)計(jì),主要包括主程序設(shè)計(jì)、T1中斷服務(wù)子程序、INT0外部中斷服務(wù)子程序、測(cè)溫子程序、距離計(jì)算子程序、顯示子程序、延時(shí)子程序和報(bào)警子程序設(shè)計(jì)等。
系統(tǒng)軟件編制時(shí)應(yīng)考慮相關(guān)硬件的連線,同時(shí)還要進(jìn)行存儲(chǔ)空間、寄存器以及定時(shí)器和外部中斷引腳的分配和使用。本設(shè)計(jì)中P1.0引腳連接到7 HC04推挽放大電路再連接到超聲波發(fā)射傳感器,P1.0引腳輸出的將是軟件方式產(chǎn)生的40 kHz方波,而P3.2(INT0)則被用來(lái)接收回波。定時(shí)器T1,T0均工作在工作方式1,為16位計(jì)數(shù),T1定時(shí)器被用來(lái)開(kāi)啟一次測(cè)距過(guò)程以它的溢出為標(biāo)志開(kāi)始一個(gè)發(fā)射測(cè)量循環(huán),T0定時(shí)器是用來(lái)計(jì)算脈沖往返時(shí)間,它們的初值均設(shè)為0。
系統(tǒng)初始化后就啟動(dòng)定時(shí)器T1從0開(kāi)始計(jì)數(shù),此時(shí)主程序進(jìn)入等待,當(dāng)?shù)竭_(dá)65 ms時(shí)T1溢出進(jìn)入T1中斷服務(wù)子程序;在T1中斷服務(wù)子程序中將啟動(dòng)一次新的超聲波發(fā)射,此時(shí)將在P1.0引腳上開(kāi)始產(chǎn)生40 kHz的方波,同時(shí)開(kāi)啟定時(shí)器T0計(jì)時(shí),為了避免直射波的繞射,需要延遲1 ms后再開(kāi)INT0中斷允許;INT0中斷允許打開(kāi)后,若此時(shí)P3.2(INT0)引腳出現(xiàn)低電平則代表收到回波信號(hào),將提出中斷請(qǐng)求進(jìn)入INT0中斷服務(wù)子程序,在INT0中斷服務(wù)子程序中將停止定時(shí)器T0計(jì)時(shí),讀取定時(shí)器T0時(shí)間值到相應(yīng)的存儲(chǔ)區(qū),同時(shí)設(shè)置接收成功標(biāo)志;主程序一旦檢測(cè)到接收成功標(biāo)志,將調(diào)用測(cè)溫子程序,采集超聲波測(cè)距時(shí)的環(huán)境溫度,并換算出準(zhǔn)確的聲速,存儲(chǔ)到RAM存儲(chǔ)單元中;單片機(jī)再調(diào)用距離計(jì)算子程序進(jìn)行計(jì)算,計(jì)算出傳感器到目標(biāo)物體之間的距離;此后主程序調(diào)用顯示子程序進(jìn)行顯示;若超過(guò)設(shè)定的最小報(bào)警距離還將啟動(dòng)揚(yáng)聲器報(bào)警;當(dāng)一次發(fā)射、接收、顯示的過(guò)程完成后,系統(tǒng)將延遲100 ms重新讓T1置初值,再次啟動(dòng)T1以溢出,進(jìn)入下一次測(cè)距。如果由于障礙物過(guò)遠(yuǎn),超出量程,以致在T0溢出時(shí)尚未接收到回波,則顯示“ERROR”重新回到主流程進(jìn)入新一輪測(cè)試。主程序和定時(shí)器T1、外部中斷INT0中斷服務(wù)子程序的框圖分別,如圖7~圖9所示。
蜂鳴器相關(guān)文章:蜂鳴器原理
評(píng)論