新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于AT89C51的語音數(shù)字電壓表設(shè)計(jì)

基于AT89C51的語音數(shù)字電壓表設(shè)計(jì)

作者: 時(shí)間:2014-03-31 來源:網(wǎng)絡(luò) 收藏

一、概述

本文引用地址:http://2s4d.com/article/235603.htm

在眾多測量儀表中,數(shù)字電壓表應(yīng)該是比較先進(jìn)的一類表,工作人員在測量電路電壓時(shí),其測量值能通過液晶顯示器直觀地讀出而不需工作人員再認(rèn)真仔細(xì)地察看測量檔次,換算及估計(jì)測量值,但在觀察使用過程中, 仍可發(fā)現(xiàn)工作人員在測量過程中因要注意測量點(diǎn)而無法顧及顯示器的現(xiàn)象。而本文介紹的語音電壓表則能較好地解決上述問題, 它在工作人員測量電壓時(shí), 能用標(biāo)準(zhǔn)的漢語讀出測量值,這樣就大大方便了工作人員操作過程。

二、設(shè)計(jì)方案

語音電壓表的組成框圖見圖1.

 

 

圖1語音電壓表的組成框圖

它是以 單片機(jī)為核心, 由ICL7126 31/2 位數(shù)字電壓表、語音電路、功放電路、電源等組成。

設(shè)計(jì)中, 先將語音電壓表需用的"0、1、2?? 十、百、點(diǎn)、伏、負(fù)、超量程"等十幾個(gè)音節(jié)的特征語音信號通過語音電路錄音,生成十幾段數(shù)據(jù)語音塊,以此作為讀出電壓值的音源。輸入的模擬信號經(jīng)過數(shù)字表中A/D 轉(zhuǎn)換進(jìn)入單片機(jī), 由單片機(jī)進(jìn)行分析判斷,找出語音塊中對應(yīng)的音源, 送到功放電路進(jìn)行放大輸出, 讀出電壓值, 從而實(shí)現(xiàn)智能測量。

三、硬件設(shè)計(jì)

(一) 單片機(jī)

單片機(jī)采用AT8951 型, 它是一種帶4K 字節(jié)閃爍可編程可擦除只讀存儲器的低電壓、高性能位微處理器, 它與工業(yè)標(biāo)準(zhǔn)的MCS- 51 指令和輸出管腳相兼容, 由于將多功能CPU 和閃爍存儲器組合在單個(gè)芯片中, 因而 是一種高效微控制器, 為很多嵌入控制系統(tǒng)所采用。

(二) A/D 轉(zhuǎn)換電路

A/D 轉(zhuǎn)換電路由兩部分組成。

1.量程轉(zhuǎn)換電路是用7126 組裝構(gòu)成的四量程數(shù)字電壓表實(shí)用電路。四個(gè)量程分別是:200mV、2V、20V、200V.電壓量程的選擇是通過雙刀五擲轉(zhuǎn)換開關(guān)S1 來控制的, 當(dāng)S1 打到哪一量程端時(shí),如200V 端,則該數(shù)字電壓表的測量范圍就確定了為0- 200V.

2.A/D 電路用ICL7126 芯片作為A/D 電路的核心元件。被測電壓輸入后,經(jīng)ICL7126 內(nèi)部電路進(jìn)行數(shù)模轉(zhuǎn)換、譯碼驅(qū)動后,送至液晶顯示器顯示被測電壓的電壓值。

(三) 語音電路

語音電路采用ISD1420 芯片,其最大特點(diǎn)是:采用了直接模擬量存貯技術(shù)DAST,完成語音的錄入,存貯以及分段調(diào)出,而無需像其他語音電路那樣,要經(jīng)過A/D、D/A 轉(zhuǎn)換,數(shù)字壓縮和語音合成等復(fù)雜的數(shù)字量信息處理及變換環(huán)節(jié),因而可以較好地保留模擬量中的有效成分減少失真, 提高錄放音質(zhì)量。它使用方便,無需專用語音開發(fā)系統(tǒng),由麥克風(fēng)錄入存貯; 可隨意改寫刪除; 有多種信息取址方式供用戶選擇; 分段靈活,抗干擾能力強(qiáng)。當(dāng)89S51 判斷出某個(gè)數(shù)字時(shí),只要把該數(shù)字對應(yīng)的地址碼送到單片機(jī)的P1 口, 產(chǎn)生一個(gè)中斷,于是該數(shù)字的語音便放了出來。

四、軟件設(shè)計(jì)

(一) 主程序

初始化工作主要是對累加器A 和P1 口清零, 然后等待報(bào)數(shù)啟動鍵SB 按下。采樣程序是將顯示驅(qū)動信號變換為段選數(shù)據(jù)鎖存起來,并讀入片內(nèi)RAM.由于被測值的變化,在采樣瞬間可能因顯示數(shù)字的跳變"空顯"而造成報(bào)數(shù)出錯(cuò),在程序中防止空顯出錯(cuò)的方法是,只有個(gè)位、十位和百位全有顯示(非00H)或全無顯示(均為00H)才確認(rèn)正常,否則返回重新采樣。根據(jù)使用要求,每報(bào)完一遍被測值應(yīng)間隔2S,以便于改換下一個(gè)被測點(diǎn)并使讀數(shù)穩(wěn)定。在2S 延時(shí)內(nèi),有重報(bào)請求就再調(diào)用一次放音子程序,否則轉(zhuǎn)向重新采樣。

(二) 語言編輯子程序

這一程序是對段選數(shù)據(jù)和小數(shù)點(diǎn)進(jìn)行判斷后,散轉(zhuǎn)到各個(gè)編輯處理程序,再按照"智能化"報(bào)數(shù)的要求,將所要發(fā)出的語音地址碼送P1 口,通過ISD1420 發(fā)音。

漢語報(bào)數(shù)的"智能化"是指對所顯示的數(shù)值能夠自動插入或刪去數(shù)位語音,以適合人們的讀數(shù)習(xí)慣。例如:對顯示值220, 應(yīng)報(bào)為"二、百、二、十".對顯示值"10.05"應(yīng)報(bào)為"十、點(diǎn)、零、五".所以在每個(gè)編輯程序中,是通過對各位數(shù)據(jù)的逐次判"0"來確定是否要插入或刪去其數(shù)位語言,并編好發(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)所有語音放完后,通過判斷發(fā)出停止信號,返回主程序。部分程序如下:

入口; 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)來編寫的, 延時(shí)1ms.

入口: R4 功能: 延時(shí)1ms

DELAY1ms:MOVR4, #0FAH

NOPNOP

DJNZ R4,DELAY1ms

五、結(jié)束語

本設(shè)計(jì)方案關(guān)鍵部分在語音芯片, 它的質(zhì)量決定了發(fā)音效果,所以要選用優(yōu)音質(zhì)、高智能的語音芯片。



關(guān)鍵詞: AT89C51 CMOS8

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉