基于AT89C51的語音數字電壓表設計
一、概述
本文引用地址:http://www.j9360.com/article/235603.htm在眾多測量儀表中,數字電壓表應該是比較先進的一類表,工作人員在測量電路電壓時,其測量值能通過液晶顯示器直觀地讀出而不需工作人員再認真仔細地察看測量檔次,換算及估計測量值,但在觀察使用過程中, 仍可發現工作人員在測量過程中因要注意測量點而無法顧及顯示器的現象。而本文介紹的語音電壓表則能較好地解決上述問題, 它在工作人員測量電壓時, 能用標準的漢語讀出測量值,這樣就大大方便了工作人員操作過程。
二、設計方案
語音電壓表的組成框圖見圖1.

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