基于A(yíng)T89C51的語(yǔ)音數字電壓表設計
一、概述
本文引用地址:http://dyxdggzs.com/article/235603.htm在眾多測量?jì)x表中,數字電壓表應該是比較先進(jìn)的一類(lèi)表,工作人員在測量電路電壓時(shí),其測量值能通過(guò)液晶顯示器直觀(guān)地讀出而不需工作人員再認真仔細地察看測量檔次,換算及估計測量值,但在觀(guān)察使用過(guò)程中, 仍可發(fā)現工作人員在測量過(guò)程中因要注意測量點(diǎn)而無(wú)法顧及顯示器的現象。而本文介紹的語(yǔ)音電壓表則能較好地解決上述問(wèn)題, 它在工作人員測量電壓時(shí), 能用標準的漢語(yǔ)讀出測量值,這樣就大大方便了工作人員操作過(guò)程。
二、設計方案
語(yǔ)音電壓表的組成框圖見(jiàn)圖1.

圖1語(yǔ)音電壓表的組成框圖
它是以AT89C51 單片機為核心, 由ICL7126 31/2 位數字電壓表、語(yǔ)音電路、功放電路、電源等組成。
設計中, 先將語(yǔ)音電壓表需用的"0、1、2?? 十、百、點(diǎn)、伏、負、超量程"等十幾個(gè)音節的特征語(yǔ)音信號通過(guò)語(yǔ)音電路錄音,生成十幾段數據語(yǔ)音塊,以此作為讀出電壓值的音源。輸入的模擬信號經(jīng)過(guò)數字表中A/D 轉換進(jìn)入單片機, 由單片機進(jìn)行分析判斷,找出語(yǔ)音塊中對應的音源, 送到功放電路進(jìn)行放大輸出, 讀出電壓值, 從而實(shí)現智能測量。
三、硬件設計
(一) 單片機
單片機采用AT8951 型, 它是一種帶4K 字節閃爍可編程可擦除只讀存儲器的低電壓、高性能CMOS8 位微處理器, 它與工業(yè)標準的MCS- 51 指令和輸出管腳相兼容, 由于將多功能CPU 和閃爍存儲器組合在單個(gè)芯片中, 因而AT89C51 是一種高效微控制器, 為很多嵌入控制系統所采用。
(二) A/D 轉換電路
A/D 轉換電路由兩部分組成。
1.量程轉換電路是用7126 組裝構成的四量程數字電壓表實(shí)用電路。四個(gè)量程分別是:200mV、2V、20V、200V.電壓量程的選擇是通過(guò)雙刀五擲轉換開(kāi)關(guān)S1 來(lái)控制的, 當S1 打到哪一量程端時(shí),如200V 端,則該數字電壓表的測量范圍就確定了為0- 200V.
2.A/D 電路用ICL7126 芯片作為A/D 電路的核心元件。被測電壓輸入后,經(jīng)ICL7126 內部電路進(jìn)行數模轉換、譯碼驅動(dòng)后,送至液晶顯示器顯示被測電壓的電壓值。
(三) 語(yǔ)音電路
語(yǔ)音電路采用ISD1420 芯片,其最大特點(diǎn)是:采用了直接模擬量存貯技術(shù)DAST,完成語(yǔ)音的錄入,存貯以及分段調出,而無(wú)需像其他語(yǔ)音電路那樣,要經(jīng)過(guò)A/D、D/A 轉換,數字壓縮和語(yǔ)音合成等復雜的數字量信息處理及變換環(huán)節,因而可以較好地保留模擬量中的有效成分減少失真, 提高錄放音質(zhì)量。它使用方便,無(wú)需專(zhuān)用語(yǔ)音開(kāi)發(fā)系統,由麥克風(fēng)錄入存貯; 可隨意改寫(xiě)刪除; 有多種信息取址方式供用戶(hù)選擇; 分段靈活,抗干擾能力強。當89S51 判斷出某個(gè)數字時(shí),只要把該數字對應的地址碼送到單片機的P1 口, 產(chǎn)生一個(gè)中斷,于是該數字的語(yǔ)音便放了出來(lái)。
四、軟件設計
(一) 主程序
初始化工作主要是對累加器A 和P1 口清零, 然后等待報數啟動(dòng)鍵SB 按下。采樣程序是將顯示驅動(dòng)信號變換為段選數據鎖存起來(lái),并讀入片內RAM.由于被測值的變化,在采樣瞬間可能因顯示數字的跳變"空顯"而造成報數出錯,在程序中防止空顯出錯的方法是,只有個(gè)位、十位和百位全有顯示(非00H)或全無(wú)顯示(均為00H)才確認正常,否則返回重新采樣。根據使用要求,每報完一遍被測值應間隔2S,以便于改換下一個(gè)被測點(diǎn)并使讀數穩定。在2S 延時(shí)內,有重報請求就再調用一次放音子程序,否則轉向重新采樣。
(二) 語(yǔ)言編輯子程序
這一程序是對段選數據和小數點(diǎn)進(jìn)行判斷后,散轉到各個(gè)編輯處理程序,再按照"智能化"報數的要求,將所要發(fā)出的語(yǔ)音地址碼送P1 口,通過(guò)ISD1420 發(fā)音。
漢語(yǔ)報數的"智能化"是指對所顯示的數值能夠自動(dòng)插入或刪去數位語(yǔ)音,以適合人們的讀數習慣。例如:對顯示值220, 應報為"二、百、二、十".對顯示值"10.05"應報為"十、點(diǎn)、零、五".所以在每個(gè)編輯程序中,是通過(guò)對各位數據的逐次判"0"來(lái)確定是否要插入或刪去其數位語(yǔ)言,并編好發(fā)音順序。部分程序如下:
功能: 發(fā)音子程序
TALK:MOVR7, ARL A
MOVDPTR, #FYTIME
MOVC A, @A+DPTR
MOVR6, AINC R6
MOVA, R7RL ANC AMOVC, @A+DPTR
MOVR5, AINC R5
MOVA, R7MOVDPTR, #FYADRR
MOVC A, @A+DPTR
MOVR7, ALCALL PLAY
MOVR7, #30
WAIT: LCALL DELAY1ms
DJNZ R7,WAIT RET
(三) 放音子程序PLAY
在進(jìn)入該程序后再調用延時(shí)程序DELAY1 , 當所有語(yǔ)音放完后,通過(guò)判斷發(fā)出停止信號,返回主程序。部分程序如下:
入口; R7( 開(kāi)始地址) , R6( H) R5( L) 為放音時(shí)間
PLAY;MOVP1, R7 CLR PLL
PLAY1: LCALL DELAY1ms
JNB RECLED,PLAY2
DJNZ R5, PLAY1
DJNZ R6, PLAY1
PLAY2:SETB PLLRET
(四) 延時(shí)程序
延時(shí)程序是利用循環(huán)來(lái)編寫(xiě)的, 延時(shí)1ms.
入口: R4 功能: 延時(shí)1ms
DELAY1ms:MOVR4, #0FAH
NOPNOP
DJNZ R4,DELAY1ms
五、結束語(yǔ)
本設計方案關(guān)鍵部分在語(yǔ)音芯片, 它的質(zhì)量決定了發(fā)音效果,所以要選用優(yōu)音質(zhì)、高智能的語(yǔ)音芯片。
評論