ATmega16的語(yǔ)音型超聲波測(cè)距儀的設(shè)計(jì)
2.3 語(yǔ)音播報(bào)模塊
語(yǔ)音播報(bào)模塊電路如圖4所示。由集成穩(wěn)壓芯片AMS1117—3.3構(gòu)成的穩(wěn)壓電路輸出3.3 V電壓供給語(yǔ)音芯片ISD4004。ISD4004的語(yǔ)音輸入由麥克風(fēng)MIC輸入或由插頭輸入,插入插頭時(shí)麥克風(fēng)輸入電路自動(dòng)斷開(kāi),此時(shí)可以與電腦連接進(jìn)行錄音。放音時(shí),音頻輸出經(jīng)LM386放大驅(qū)動(dòng)揚(yáng)聲器進(jìn)行放音。ATmega16通過(guò)SPI接口向ISD4004發(fā)送錄音地址和錄音命令進(jìn)行錄音,發(fā)送放音地址和放音命令進(jìn)行放音。中文液晶YM12 864和溫度傳感器DS18B20與單片機(jī)ATmega16的連接較為簡(jiǎn)單,在此不作詳述。本文引用地址:http://www.ex-cimer.com/article/170620.htm
3 軟件設(shè)計(jì)
3.1 超聲波測(cè)距程序設(shè)計(jì)
超聲波測(cè)量距離的表達(dá)式為S=[(331.4+0.607T)×t]/2。其中,T為環(huán)境溫度,t為從發(fā)射超聲波信號(hào)到接收到回波信號(hào)所經(jīng)過(guò)的時(shí)間。由此可見(jiàn),測(cè)量距離的關(guān)鍵是盡可能精確地測(cè)出時(shí)間t。測(cè)量時(shí)間t常用的方法是用一個(gè)定時(shí)器/計(jì)數(shù)器和一個(gè)外部中斷來(lái)實(shí)現(xiàn)。定時(shí)器/計(jì)數(shù)器用來(lái)計(jì)時(shí),外部中斷設(shè)置成電平觸發(fā)方式,用于檢測(cè)一個(gè)脈沖的上升沿和下降沿,當(dāng)ATmega16外部中斷引腳輸入電平由低變高時(shí)觸發(fā)第一次中斷,讀取時(shí)間值t1,然后將外部中斷設(shè)置為下降沿觸發(fā)中斷,等到ATmega16外部中斷引腳輸入的電平由高變低時(shí),再次觸發(fā)中斷,讀取時(shí)間值t2,然后將外部中斷設(shè)置為上升沿觸發(fā)中斷,兩次時(shí)間值之差t=t2-t1即為脈沖的寬度。這種方法除了多占用ATmega16的一個(gè)外部中斷源外,讀取的時(shí)間值精度還容易受到中斷響應(yīng)時(shí)間的影響,造成測(cè)量距離誤差增大。單片機(jī)ATmega16具有一路輸入捕獲功能,配合內(nèi)部的定時(shí)器/計(jì)數(shù)器T/C1,可以非常方便和精確地測(cè)出一個(gè)脈沖從上升沿到下降沿間的時(shí)間。方法是先將T/C1設(shè)置為輸入捕獲模式、上升沿捕獲,并開(kāi)啟全局中斷;當(dāng)發(fā)射探頭發(fā)射的超聲波信號(hào)遇到障礙物后返回,被接收探頭接收時(shí),ATmega16的PD6(ICP1)引腳由低電平變高電平,觸發(fā)第一次輸入捕獲,將T/C1的TCNT1中的計(jì)數(shù)值自動(dòng)寫(xiě)入輸入捕獲寄存器ICR1,在程序中將ICR1的值保存在變量t1中,然后將T/C1設(shè)置為下降沿捕獲;當(dāng)接收到的信號(hào)下降沿到來(lái)時(shí),再一次觸發(fā)輸入捕獲,將ICR1的值保存在變量t2中,然后將TCNT1中的值清0,并將T/C1設(shè)置為上升沿捕獲。假設(shè)單片機(jī)ATmega16所使用的晶振為8 MHz,采用1/8分頻,則兩次捕獲發(fā)生的時(shí)間之差t=t2-t1(μs)即為發(fā)射超聲波信號(hào)至接收到回波信號(hào)所經(jīng)過(guò)的時(shí)聞。定時(shí)器/計(jì)數(shù)器T/C1捕獲中斷程序如下:
手機(jī)電池相關(guān)文章:手機(jī)電池修復(fù)
評(píng)論