摘 要: 針對(duì)水銀溫度計(jì)不便讀數(shù)、響應(yīng)速度慢、在普通家庭中使用面狹窄的特點(diǎn), 提出了數(shù)碼語(yǔ)音溫度計(jì)的設(shè)計(jì)方案。選擇不銹鋼封裝的DS18B20 作溫度傳感器、ISD1720 進(jìn)行語(yǔ)音錄放、STC89C52 單片機(jī)進(jìn)行溫度信號(hào)采集、數(shù)據(jù)處理和語(yǔ)音回放控制, 構(gòu)建了實(shí)際的電路系統(tǒng)。實(shí)驗(yàn)表明, 該數(shù)碼語(yǔ)音溫度計(jì)測(cè)量范圍為0~ 99. 9 ℃, 顯示分辨率為0. 1℃ , 誤差不大于 0. 5℃ , 測(cè)溫速度快, 讀數(shù)方便, 語(yǔ)音清晰, 語(yǔ)音播報(bào)間隔時(shí)間可調(diào), 可廣泛應(yīng)用于家庭或需要溫度語(yǔ)音提示的場(chǎng)合。
0 引 言
溫度測(cè)量在人們的日常生活中扮演著重要的角色,當(dāng)人們感到身體不適時(shí), 通常需要測(cè)量體溫; 家中的嬰兒或病人吃的流質(zhì)食物, 給嬰兒準(zhǔn)備的洗澡水等, 都需要事先感測(cè)溫度, 溫度過(guò)高或過(guò)低都會(huì)對(duì)病人或嬰兒造成危害。目前便宜的體溫計(jì)在家中廣泛使用, 但其通常只用于測(cè)量體溫, 量程小、最大42℃ ;讀數(shù)不方便, 特別是老年人視力不好, 不容易讀準(zhǔn)確; 在測(cè)量體溫以外的情況下不便使用, 并且破損后水銀泄漏對(duì)身體會(huì)造成危害等, 一些國(guó)家已開始禁止銷售水銀溫度計(jì); 非接觸式的紅外測(cè)溫儀雖然方便使用, 但價(jià)格昂貴。文獻(xiàn)[ 3] 介紹了一種用于工業(yè)應(yīng)用的數(shù)字溫度計(jì)設(shè)計(jì)方法,文獻(xiàn)[ 4-5] 分別介紹了采用具有語(yǔ)音處理功能的單片機(jī)和語(yǔ)音芯片設(shè)計(jì)溫度計(jì)的方法, 但是在儀器的小型化、使用方便性以及成本等因數(shù)影響下, 在一般家庭不容易推廣, 并且其核心技術(shù)也沒(méi)有公開。因此, 研制一種使用方便、既能數(shù)碼顯示又能語(yǔ)音提示, 價(jià)格便宜, 應(yīng)用場(chǎng)合廣泛, 特別適合家庭使用的溫度測(cè)量?jī)x器, 具有重要的實(shí)用價(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ò)撥擋開關(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 所示:
圖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ù)自開發(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ǔ)音信息錄制、松開即錄制結(jié)束,語(yǔ)音信息通過(guò)MIC 錄入, 觸發(fā)S5 鍵進(jìn)行播放, 檢查當(dāng)前錄制信息段的效果, 在錄制或者播放的過(guò)程中, 可以通過(guò)LED 的閃爍來(lái)了解操作的進(jìn)程; 如果某段語(yǔ)音錄制效果不理想, 必須及時(shí)刪除, 因?yàn)樵谑謩?dòng)控制方式下, 刪除操作只對(duì)開始一段和最末一段信息有效; 錄制完成后, 還必須檢查每段信息在器件的存儲(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)。
由該芯片內(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)前信息段的開始地址進(jìn)行語(yǔ)音回放, 當(dāng)遇到該段語(yǔ)音的結(jié)束標(biāo)志EOM 時(shí), 回放結(jié)束, 讀取記錄指針和回放指針的位置( 即查閱狀態(tài)寄存器SR0 和SR1) , 這樣可以精確的知道每段語(yǔ)音的開始地址和結(jié)束地址。由于系統(tǒng)正常工作時(shí), 采用SPI 模式, 根據(jù)測(cè)量得到的溫度值, 尋找到相應(yīng)的語(yǔ)音段入口, 將語(yǔ)音信息讀出; 在SPI 模式下, 該芯片的操作命令SET PLAY、S ET REC、SET??REASE 有一個(gè)先入先出的緩存器, 在相同類型的SET 命令下, 使得從一個(gè)存儲(chǔ)塊到另一個(gè)存儲(chǔ)塊之間可以實(shí)現(xiàn)無(wú)縫連接, 使人聽起來(lái)感覺到輸出的溫度語(yǔ)音信號(hào)是連續(xù)的。圖3 中S1 是復(fù)位按鈕, S2 是快進(jìn)按鈕, S3 是檫除按鈕, S6 是直通模式選擇按鈕, S7 進(jìn)行音量調(diào)節(jié); 以上開關(guān)按鈕都是低電平有效; R4 是語(yǔ)音采樣頻率的選擇電阻, 當(dāng)其為80 k 時(shí),語(yǔ)音錄制的采樣頻率為8 kHz; 當(dāng)不使用語(yǔ)音播報(bào)功能時(shí), 可以將SW 開關(guān)斷開, 同時(shí)語(yǔ)音播報(bào)的時(shí)間間隔通過(guò)單片機(jī)電路中的1 個(gè)三位的撥碼開關(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ú)走線, 最后與電源地連接。
1. 3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)的軟件流程如圖4 所示。
系統(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)的開始處, 準(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)用。