基于單片機(jī)的數(shù)碼語(yǔ)音溫度計(jì)設(shè)計(jì)
引 言
目前便宜的體溫計(jì)在家中廣泛使用,但其通常只用于測(cè)量體溫,量程小、最大42℃ ;讀數(shù)不方便,特別是老年人視力不好,不容易讀準(zhǔn)確; 在測(cè)量體溫以外的情況下不便使用,并且破損后水銀泄漏對(duì)身體會(huì)造成危害等,一些國(guó)家已開(kāi)始禁止銷(xiāo)售水銀溫度計(jì); 非接觸式的紅外測(cè)溫儀雖然方便使用,但價(jià)格昂貴。
1 系統(tǒng)方案設(shè)計(jì)
1. 1 系統(tǒng)的工作原理
單片機(jī)對(duì)溫度傳感器的信號(hào)進(jìn)行采集,采集的數(shù)據(jù)通過(guò)處理后一方面輸出給數(shù)碼管進(jìn)行顯示,另一方面輸出給語(yǔ)音模塊,進(jìn)行語(yǔ)音溫度提示,語(yǔ)音提示的間隔時(shí)間通過(guò)撥擋開(kāi)關(guān)進(jìn)行設(shè)定,也可以關(guān)斷語(yǔ)音功能。系統(tǒng)框圖如圖1 所示。
圖1 系統(tǒng)的方案框圖
1. 2 系統(tǒng)硬件設(shè)計(jì)
1. 2. 1 溫度傳感器
采用數(shù)字溫度傳感器DS18B20,該產(chǎn)品采用美國(guó)DALLAS 公司生產(chǎn)的可組網(wǎng)數(shù)字溫度傳感器芯片,體積小,使用方便,封裝形式多樣,適用于各種狹小空間數(shù)字測(cè)溫和控制領(lǐng)域; 由于項(xiàng)目要求能測(cè)量液體溫度、方便人體接觸等,因此采用外加不銹鋼保護(hù)管的封裝形式,具有耐磨耐碰、防水等功能。DS18B20 在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)雙向通信,可測(cè)溫范圍: - 55~ + 125℃ ,可編程為9~ 12 位A/ D 轉(zhuǎn)換精度,測(cè)溫分辨率可達(dá)0. 062 5℃ 。被測(cè)溫度用符號(hào)擴(kuò)展的16 位數(shù)字量方式串行輸出; 其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生; 多個(gè)DS18B20 可以并聯(lián)到3 根或2 根線上, CPU 只需一根端口線就能與諸多DS18B20 通信, 占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路; 連接電路如圖2 所示:
[!--empirenews.page--]
圖2 傳感器的連接圖
圖2 中傳感器的2 腳與單片機(jī)的輸入/ 輸出( I/ O)腳連接,進(jìn)行雙方通信,采用4. 7 k 的電阻上拉。由于DS18B20 單線通信功能是分時(shí)完成的,系統(tǒng)對(duì)它的各項(xiàng)操作必須嚴(yán)格按協(xié)議進(jìn)行。操作協(xié)議為: 初始化DS18B20( 發(fā)復(fù)位脈沖) →發(fā)ROM 功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù),各項(xiàng)操作都有嚴(yán)格的時(shí)序要求。
1. 2. 2 單片機(jī)
采用與MCS51兼容的STC89C52, 具有8K 字節(jié)的在系統(tǒng)可編程Flash 存儲(chǔ)器,其MOSI、MISO、REST、SCK 等引腳通過(guò)鎖存后與計(jì)算機(jī)的并口連接,就可實(shí)現(xiàn)對(duì)內(nèi)部的Flash 存儲(chǔ)器編程,內(nèi)含512 B 的RAM, 32 個(gè)可編程I/ O口線, 3 個(gè)16 位的定時(shí)/ 計(jì)數(shù)器等特點(diǎn),可以為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案,非常適合本項(xiàng)目的應(yīng)用。
1. 2. 3 語(yǔ)音模塊
采用美國(guó)華幫公司生產(chǎn)的高集成度、高性能的ISD1720 語(yǔ)音錄放芯片, 采樣率在4~ 12 kHz 之間調(diào)節(jié),根據(jù)采樣頻率的不同,可以錄存12~ 36 s 的語(yǔ)音信息, 語(yǔ)音信息在該芯片內(nèi)部的固態(tài)多級(jí)存儲(chǔ)陣列里按行存放,可以通過(guò)指令中的11 位地址精確尋址; 該芯片集語(yǔ)音處理和存儲(chǔ)于一體,具有重復(fù)自開(kāi)發(fā),掉電信息保存,可工作于獨(dú)立按鍵模式和SPI 控制模式,錄放結(jié)束自動(dòng)進(jìn)人低功耗狀態(tài),可直接*輸人或模擬通道輸入,也可喇叭直接輸出,芯片工作電壓2. 4~ 5. 5 V之間,可以多段錄音, 其基本存儲(chǔ)單元入口地址范圍是0X010~0X09F。應(yīng)用電路如圖3 所示。根據(jù)需要,將錄制的語(yǔ)音分成13 個(gè)段,即“零~ 十、點(diǎn)、度”,如37. 5 度,播報(bào)為“ 三、十、七、點(diǎn)、五、度”,每段語(yǔ)音的錄制時(shí)間約為1. 35 s,由于錄制時(shí)間不易精確掌握,用手動(dòng)控制的方式對(duì)13 段語(yǔ)音進(jìn)行錄制,然后手動(dòng)檢查每段語(yǔ)音錄制效果,如圖3 所示,閉合S4 進(jìn)行語(yǔ)音信息錄制、松開(kāi)即錄制結(jié)束,語(yǔ)音信息通過(guò)MIC 錄入,觸發(fā)S5 鍵進(jìn)行播放,檢查當(dāng)前錄制信息段的效果,在錄制或者播放的過(guò)程中,可以通過(guò)LED 的閃爍來(lái)了解操作的進(jìn)程; 如果某段語(yǔ)音錄制效果不理想,必須及時(shí)刪除,因?yàn)樵谑謩?dòng)控制方式下,刪除操作只對(duì)開(kāi)始一段和最末一段信息有效; 錄制完成后,還必須檢查每段信息在器件的存儲(chǔ)體系中是否是按環(huán)形結(jié)構(gòu)存儲(chǔ)的,這可以通過(guò)閉合S5 并保持來(lái)實(shí)現(xiàn),此時(shí),器件將按順序不停的播放當(dāng)前信息段與其前一信息段之間的所有信息段,通過(guò)反復(fù)錄制,直到滿意為止; 當(dāng)然,也可以采用商業(yè)的錄制設(shè)備來(lái)實(shí)現(xiàn)。
圖3 語(yǔ)音芯片連接圖
由該芯片內(nèi)部的語(yǔ)音存放地址范圍可知,每段語(yǔ)音存放約11 行,為了準(zhǔn)確知道每段語(yǔ)音的入口地址和結(jié)束地址,可以利用單片機(jī)檢查。ISD1720 提供了4 線( SCLK, MOSI, MISO, SS) SPI 接口與單片機(jī)連接,由于二者的SPI 時(shí)序不易協(xié)調(diào),系統(tǒng)采用了單片機(jī)的P1. 1, P1. 2, P1. 3, P1. 4 口模擬SPI 時(shí)序?qū)SD1720 進(jìn)行控制。具體操作時(shí), 器件初始化完成后,發(fā)送PLAY指令,器件從當(dāng)前信息段的開(kāi)始地址進(jìn)行語(yǔ)音回放,當(dāng)遇到該段語(yǔ)音的結(jié)束標(biāo)志EOM 時(shí),回放結(jié)束,讀取記錄指針和回放指針的位置( 即查閱狀態(tài)寄存器SR0 和SR1) ,這樣可以精確的知道每段語(yǔ)音的開(kāi)始地址和結(jié)束地址。由于系統(tǒng)正常工作時(shí),采用SPI 模式,根據(jù)測(cè)量得到的溫度值,尋找到相應(yīng)的語(yǔ)音段入口,將語(yǔ)音信息讀出; 在SPI 模式下,該芯片的操作命令SET PLAY、S ET REC、SET??REASE 有一個(gè)先入先出的緩存器,在相同類(lèi)型的SET 命令下,使得從一個(gè)存儲(chǔ)塊到另一個(gè)存儲(chǔ)塊之間可以實(shí)現(xiàn)無(wú)縫連接,使人聽(tīng)起來(lái)感覺(jué)到輸出的溫度語(yǔ)音信號(hào)是連續(xù)的。圖3 中S1 是復(fù)位按鈕, S2 是快進(jìn)按鈕, S3 是檫除按鈕, S6 是直通模式選擇按鈕, S7 進(jìn)行音量調(diào)節(jié); 以上開(kāi)關(guān)按鈕都是低電平有效; R4 是語(yǔ)音采樣頻率的選擇電阻,當(dāng)其為80 k 時(shí),語(yǔ)音錄制的采樣頻率為8 kHz; 當(dāng)不使用語(yǔ)音播報(bào)功能時(shí),可以將SW 開(kāi)關(guān)斷開(kāi),同時(shí)語(yǔ)音播報(bào)的時(shí)間間隔通過(guò)單片機(jī)電路中的1 個(gè)三位的撥碼開(kāi)關(guān)選擇,可以設(shè)置8 個(gè)檔位,每個(gè)檔位的時(shí)間參數(shù)由程序控制。
1. 2. 4 顯示和電源模塊
采用3 位LED 數(shù)碼顯示,保留一位小數(shù),輸出方式采用動(dòng)態(tài)掃描形式,選擇單片機(jī)的兩個(gè)端口經(jīng)過(guò)驅(qū)動(dòng)器后作為L(zhǎng)ED 的字段線和字位線,減少輸出的總電流;為了便攜式應(yīng)用,電源采用九伏電池供電,通過(guò)LM7805 降壓為5 V 供系統(tǒng)各模塊使用。布線和制作PCB 板時(shí),特別要注意地線的處理,要求數(shù)字地、模擬地、以及揚(yáng)聲器的地都要單獨(dú)走線,最后與電源地連接。[!--empirenews.page--]
1. 3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的軟件流程如圖4 所示。
圖4 系統(tǒng)流程圖
系統(tǒng)初始化后,復(fù)位溫度傳感器,啟動(dòng)溫度轉(zhuǎn)換,讀取溫度數(shù)據(jù),進(jìn)行處理,當(dāng)溫度處于快速變化過(guò)程中時(shí),系統(tǒng)不停的進(jìn)行溫度信號(hào)的采集和顯示,判斷語(yǔ)音播報(bào)的間隔時(shí)間是否來(lái)到,當(dāng)滿足要求時(shí),根據(jù)測(cè)得的當(dāng)前溫度值,取出其十位、個(gè)位和小數(shù)位的值,然后查表得其相應(yīng)的語(yǔ)音信號(hào)入口地址,復(fù)位語(yǔ)音芯片,發(fā)上電指令并延時(shí)約25 ms,判斷是否已正常上電,正常上電后,要清除中斷標(biāo)志,判斷器件是否已準(zhǔn)備好接收下一條指令,當(dāng)準(zhǔn)備好后,發(fā)送第一段信息的放音指令,然后檢查狀態(tài)寄存器,判斷器件是否正常執(zhí)行剛發(fā)送的指令,正常執(zhí)行后,又判斷器件是否已準(zhǔn)備好接收下一條指令,只有等到器件已準(zhǔn)備好后,才能向器件發(fā)送下一條指令,否則,就可能造成指令的丟失。程序考慮了器件內(nèi)部的FIFO 緩沖器,使N 段語(yǔ)音信號(hào)就像一段語(yǔ)音一樣進(jìn)行播放,每段語(yǔ)音之間幾乎沒(méi)有死區(qū)時(shí)間間隔。當(dāng)語(yǔ)音播報(bào)完成后,語(yǔ)音芯片失電,完成一次語(yǔ)音播報(bào),程序回到系統(tǒng)的開(kāi)始處,準(zhǔn)備下一個(gè)溫度采集、處理、顯示和語(yǔ)音輸出過(guò)程,如此不斷循環(huán)往復(fù)。
2 結(jié)語(yǔ)
采用語(yǔ)音提示和數(shù)碼顯示的方式設(shè)計(jì)的數(shù)碼語(yǔ)音溫度計(jì),精確度高、測(cè)溫速度快; 應(yīng)用場(chǎng)合廣泛,既可測(cè)量體溫,也可測(cè)量食物、水等物質(zhì)的溫度,量程大; 操作使用方便,不僅適合普通家庭也適合某些需要語(yǔ)音提示的工業(yè)現(xiàn)場(chǎng)生產(chǎn)應(yīng)用。