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