多功能電子醫(yī)藥盒設(shè)計
多功能電子醫(yī)藥盒設(shè)計,多功能,電子,醫(yī)藥,設(shè)計
目 錄 1 引言 ..................................................................1 2 多功能電子醫(yī)藥盒設(shè)計概述 ..............................................3 2.1 設(shè)計目的 ...................................................................................................................................................3 2.2 設(shè)計實現(xiàn)總體功能 ...................................................................................................................................3 3 系統(tǒng)總體設(shè)計方案 ......................................................4 3.1 設(shè)計總體功能圖 ...................................................................................................................................4 3.2 功能描述 ...............................................................................................................................................4 3.2.1 按鍵功能描述 ..................................................................................................................................4 3.2.2 定時的開啟 ........................................................................................................................................4 3.2.3 系統(tǒng)硬件設(shè)計方案 ..........................................................................................................................5 3.2.4 遙控器硬件設(shè)計方案 .......................................................................................................................5 3.3 產(chǎn)品使用注意事項 ...............................................................................................................................8 4 主要系統(tǒng)芯片及功能介紹 ................................................9 4.1 凌陽單片機的選擇 ...................................................................................................................................9 4.2 主要性能特點分析 ...................................................................................................................................9 4.3 系統(tǒng)主控制芯片及部件介紹 .............................................................................................................10 4.3.1 無線語音遙控器主控制器 SPCE061A 介紹 ..................................................................................10 4.3.2 直流電機驅(qū)動芯片 L298N 的介紹 .................................................................................................12 4.3.3 無線語音遙控器中 SPCE061A 的功能 ..........................................................................................13 5 軟件設(shè)計部分及方案 ...................................................17 5.1 凌陽 SPCE061A 單片機指令系統(tǒng)與開發(fā)環(huán)境 ....................................................................................17 5.2 ATMEGA16L 單片機指令系統(tǒng)與開發(fā)環(huán)境 ........................................................................................18 結(jié) 論 ...............................................................19 參考文獻 ...............................................................20 附錄 1:電路圖 .........................................................21 附錄 2: 程序 ..........................................................22 致 謝 ...............................................................41 1 1 引言 隨著現(xiàn)代科學(xué)技術(shù)的飛速發(fā)展,數(shù)字化時代的來臨,計算機和網(wǎng)絡(luò)已經(jīng)將觸角 伸入社會各行各業(yè),滲入了城市的血液中,并且在一定程度上取代了人類繁瑣的機 械的勞動。世界也正面臨一場大規(guī)模的新的工業(yè)革命,又稱為信息革命。數(shù)字化、 智能化,已經(jīng)成為這場革命的主旋律。讓計算機像人類一樣動作一樣思考,并擁有 人的記憶和人的邏輯,使人類從繁瑣的鍵盤操作和按鍵輸入中解脫出來是電腦智能 化面對的重要課題。 在現(xiàn)代傳感器技術(shù)、音頻視頻壓縮解碼技術(shù)的跨越式發(fā)展,使計算機實現(xiàn)了高 度的集成化,功能也逐漸出現(xiàn)全能化、專門化以及智能化的分化發(fā)展方向。計算機 的微處理器的功能也不僅僅局限于計算和處理數(shù)據(jù),同時也將存儲和硬件解碼等外 圍電路也集成到其中。也正是因為如此,運用單獨的處理器就可以實現(xiàn)智能化人機 對話接口,讓計算機像人類一樣思考,通過人類的動作和語言向計算機輸入指令, 使計算機的操作方式發(fā)生根本性的變革,真正拉近人與計算機間的距離。 現(xiàn)代計算機的性能已經(jīng)相當強大,運算能力已經(jīng)不可限量,而且還在飛速發(fā)展。 在日常生活的諸多領(lǐng)域,電腦已經(jīng)取代人類,從事大量繁瑣的、重復(fù)性的勞動。但 是在這些領(lǐng)域中,大型的計算機不能充分發(fā)揮自身性能,而且在成本方面也毫無經(jīng) 濟性可言。所以,針對不同領(lǐng)域不同功能的專門性計算機應(yīng)運而生,其運算處理能 力并不一定非常強大,而是對于特別的應(yīng)用場合在其中整合特殊的功能,使其在特 定的場合發(fā)揮最大的作用。嵌入式計算機應(yīng)運而生,嵌人式計算機作為計算機的一 個重要分支,得到了越來越廣泛的應(yīng)用。隨著信息技術(shù)發(fā)展所帶來應(yīng)用需求的增多, 嵌人式計算機的應(yīng)用范圍和需求越來越廣,性能不斷改進,新的架構(gòu)不斷出現(xiàn),各 種單片機和數(shù)字信號處理器相繼面世。嵌人式操作系統(tǒng)與 PC 操作系統(tǒng)相比,嵌人 式操作系統(tǒng)不要求全能,但必須能夠依據(jù)系統(tǒng)設(shè)計規(guī)格,高效率地發(fā)揮硬件的運算 能力,使產(chǎn)品達到效率價格比的優(yōu)化。 本次設(shè)計是在運用成品嵌入式計算機的基礎(chǔ)上,實現(xiàn)用人類的語言無線遙控單 片機的運作。為了更明確的顯示聲音對單片機的遙控作用,使單片機控制遠處可開 啟的藥盒,體現(xiàn)聲控單片機的運行情況。 對于多功能電子醫(yī)藥盒的設(shè)計,關(guān)鍵在于語音識別,語音處理技術(shù)是一門新興 的技術(shù),它不僅包括語音的錄制和播放,還涉及語音的壓縮編碼和解碼,語音的識 別等各種處理技術(shù)。以往做這方面的設(shè)計,一般有兩個途徑:一種方案是單片機擴 展設(shè)計,另一種就是借助于專門的語音處理芯片。普通的單片機往往不能實現(xiàn)這么 復(fù)雜的過程和算法,即使勉強實現(xiàn)也要加很多的外圍器件。專門的語音處理芯片也 2 比較多,像 ISD 系列、PM50 系列等,但是專門的語音處理芯片功能比較單一,想在 語音之外的其他方面應(yīng)用基本是不可能的。而無線通信技術(shù)現(xiàn)在多采用無線數(shù)字通 信模塊,其通信協(xié)議可以自己設(shè)定,通信頻率可以在一定范圍內(nèi)可以改變,使傳輸 數(shù)據(jù)的可靠性、安全性都大大提高。 基于上述要求本次設(shè)計擬采用三種設(shè)計方案。在芯片方面,ATMEGA16L 微處 理器和凌陽 SPCE061A 微處理器以及二者的組合應(yīng)用是三種備選方案。兩種微控制 器都具有豐富的片上系統(tǒng)資源,可以通過外加輔助電路的方式實現(xiàn)語音辨識功能, 從而滿足對控制指令的語音采集、壓縮、存儲、解壓和辨識等一系列功能的要求。 在指令系統(tǒng)方面,兩者都支持 C 語言,省去了繁瑣重復(fù)的堆棧操作,方便了程序員 的編寫,和讀取。 在確定設(shè)計使用單片機后,還應(yīng)對單片機加裝部分外圍電路才能使用,其中包 括:電源電路、音頻電路、I/O 電路等。使其保證單片機各項功能的實現(xiàn)。此外還有 部分必須的功能電路,如:復(fù)位按鍵,狀態(tài)指示燈等等。 在藥盒倉體方面,采用三個直流電機驅(qū)動,動力來自驅(qū)動后輪的直流電機,驅(qū) 動器采用意法半導(dǎo)體生產(chǎn)的 L298N 直流電機驅(qū)動器,整個藥盒由電源供電。 語音指令的識別過程是利用單片機的特定人語音識別功能來實現(xiàn)的。首先對電 子藥盒進行訓(xùn)練,將語音命令轉(zhuǎn)換為數(shù)字信號存儲在單片機 FLASH 存儲器中。在 需要控制藥倉開啟的時候,單片機通過采集聲音信號,并量化處理為數(shù)字信號后, 與存儲器中預(yù)先存儲的控制命令進行辨識,結(jié)果以字節(jié)數(shù)據(jù)方式從無線模組發(fā)出, 藥盒接收到控制指令后,控制驅(qū)動芯片和舵機,使電子藥盒完成響應(yīng)動作。這些操 作都是由預(yù)先編寫并燒錄在單片機中的 C 語言程序控制的。 在整個設(shè)計中,兩個難點在于單片機外圍電路的設(shè)計和控制程序的編寫。如果 能很好的解決這兩個方面的問題,電子藥盒的工作應(yīng)該會比較順利。 3 2 多功能電子醫(yī)藥盒設(shè)計概述 2.1 設(shè)計目的 隨著我國國民經(jīng)濟的發(fā)展,針對生活節(jié)奏的加快和社會老齡化的趨勢,結(jié) 合產(chǎn)業(yè)發(fā)展需要,設(shè)計出了多功能語音電子醫(yī)藥盒。 使用多功能電子醫(yī)藥盒提高了人們的生活效率:針對年輕人,可以在忙碌 的工作時提醒吃藥的時間;針對老年人,可以提醒按時吃藥、安全吃藥。 2.2 設(shè)計實現(xiàn)總體功能 采用凌陽單片機的語音技術(shù),傳動技術(shù),記憶與存儲技術(shù)。 性能指標: 1.語音提示后,倉蓋開啟和閉合的時間:1~2s; 2.藥倉數(shù)量:4 倉設(shè)計; 3.能根據(jù)人的提示進行藥物的選擇; 4.人性化設(shè)計與友好的人機界面; 5.24 小時內(nèi)任意設(shè)定藥物服用提醒; 6.語音互動,可以實現(xiàn)人機對話,具有小型機器人的識別能力; 7.四倉設(shè)計,分為底倉、固定倉與常動倉,介紹如下: 底倉:為藥物備用倉; 固定倉:針對家庭中常常需要服用藥物的人所設(shè)計,服藥時間、數(shù)量等可 進行自行設(shè)定。 常動倉(分兩層):針對生活中的易發(fā)性疾病所設(shè)計,服藥時間、數(shù)量等 可進行自行設(shè)定,具備語音識別功能,可根據(jù)語音提示,自動進行藥物的選擇。 8.具有時間的記憶功能。 4 3 系統(tǒng)總體設(shè)計方案 3.1 設(shè)計總體功能圖 3.2 功能描述 3.2.1 按鍵功能描述 時間調(diào)整鍵:可對現(xiàn)在時間及設(shè)定時間進行調(diào)整,可實現(xiàn) 5 路定時提醒: 對于時間調(diào)整,可進行年月日小時分的設(shè)定。 設(shè)定藥物鍵:通過此鍵可進行服藥位置、時間及數(shù)量(最大為 4)的設(shè)定, 對于服藥位置,可進行層數(shù)(最大為 3)與格數(shù)(最大為 6)的設(shè)定。 采用默認鍵:通過此鍵無需設(shè)定,即可享用標準方案:位置:一層 2 格; 時間:早上 8 時,數(shù)粒:2 粒。 3.2.2 定時的開啟 當時鐘計時達到預(yù)定時間,液晶自動顯示藥品位置、種類及服用量,語音 播報液晶屏上顯示的信息。同時,單片機控制直流電機迅速轉(zhuǎn)動,自動開啟藥 盒。3.2.3 系統(tǒng)硬件設(shè)計方案 根據(jù)需要,系統(tǒng)硬件擬使用兩塊 PCB 板設(shè)計。其中一塊為語音遙控器,用 5 于搭載凌陽 SPCE061A 單片機、電源電路、音頻電路、I/O 電路等外圍電路。 另一塊為車體控制板,用于搭載接口電路,電源電路及電機驅(qū)動。 調(diào)整“現(xiàn)在時間”及定時:1)接通電源時為默認狀態(tài);2)當前時間顯示: 12:00;3)定時顯示:08:00;4)數(shù)量顯示:2 粒;5)當前位置顯示:第一 層。 3.2.4 遙控器硬件設(shè)計方案 在無線語音遙控智能電子醫(yī)藥盒的設(shè)計中,凌陽 SPCEO61A 單片機作為遙 控器的主控制器,需要增加一系列的外圍電路的支持才能實現(xiàn)音頻輸入輸出和 識別,以及語音命令的輸出等功能。需要增加的外圍電路有:電源電路、MIC 輸入電路、音頻輸出電路、無線傳輸電路、復(fù)位電路、I/O 接口電路。 1.電源電路 凌陽 SPCE061A 單片機內(nèi)核電源電壓要求為 3.3V,其他邏輯器件要求 5V 供電,設(shè)計中采用 DC9V 供電,直流電壓先通過 LM7805 得到 5V 直流電源為 邏輯電路供電,然后通過 SPY0029 穩(wěn)壓到 3.3V,為整個單片機內(nèi)核供電。另外, 在 LM7805 的前端入一個二極管,目的在于防止電源接反而對整個電路造成損 壞。電路如圖 3-1 所示。 圖 關(guān)SW-PBDiodeVINGOU7.JRLM80C 6 3-1 電源電路 2.音頻電路 1)MIC 輸入電路 在使用 SPCE061A 的語音訓(xùn)練和聲音控制的時候,需要使用 MIC 輸入電路 將語音信號接收,并傳送至 SPCE061A 進行處理。為提高輸入的聲音質(zhì)量, MIC 輸入電路還應(yīng)具備一定的濾波降噪功能。電路中的∏性濾波器就能很好的 實現(xiàn)這個功能。同時使入電路可以實現(xiàn)自動增益(AGC)控制。原理如圖 3-2 其中 X1 是語音的 MIC 輸入端。 圖 3-2 MIC 輸入電路 2)DAC 輸出電路 在語音訓(xùn)練的過程中,凌陽 SPCE061A 需要輸出信號提示音,以讓訓(xùn)練者 了解其工作狀態(tài),方便進行語音訓(xùn)練。另外還要播報藥盒的工作狀態(tài)。 1KR20uFC4M35INPVADE78.9G 7 SPCE061A 自帶雙通道 DAC 音頻輸出, DAC1、DAC2 轉(zhuǎn)換輸出的模擬量電流 信號分別通過 DAC1 和 DAC2 管腳輸出, DAC 輸出為電流型輸出,所以 DAC 輸出經(jīng)過 SPY0030 音頻放大,以驅(qū)動喇叭放音。這為單片機的音頻設(shè)計提供了 極大方便。原理圖如圖 4.3。在 P9 上接一個 2pin 的插針外接喇叭,即可實現(xiàn)提 示語音輸出功能。DAC 電路中,SPY0030 是凌陽的一款音頻放大芯片,相當于 LM386,但是它比 LM386 音質(zhì)好,可以工作在 2.4-6.0V 范圍內(nèi),最大輸出功率 可達 700mW。 圖 3-3 DAC 輸出電路 3.I/O 接口電路 接口電路凌陽 SPCE061A 的兩路 16 位 I/O 接口引出,因為一般邏輯電路都 是 8 位并行總線,所以 SPCE061A 的 I/O 接口分為 4 組,每組 8 個端口加兩個 電源線,電源電壓可由雙刀雙擲選擇為 3.3V 或 5V。另外,串口和 IOB7 及 IOB10 復(fù)用,在此設(shè)計中用該資源將語音命令傳輸給串口 nRF2401 模組進行無 線發(fā)射。原理圖如圖 3-4。 +5-2136USPY0CKRV9DApF 8 123456790PIOABS+-VC.TXR 圖 3-4 I/O 接口電路 4.復(fù)位電路 在一些情況下,需要對 SPCE061A 進行硬件復(fù)位,有 阻容電路完成上電復(fù)位功能, 通電就自動復(fù)位,另外,還可 以按鍵外部復(fù)位,原理圖如圖 4.5。 圖 3-5 復(fù)位電路 3.3 產(chǎn)品使用注意事項 1.在使用本產(chǎn)品時禁止藥物混放,同時,若在已放過藥物的小格重新裝藥 時,及時清洗小格,保證小格干凈清潔,防止藥物污染。 2.本產(chǎn)品應(yīng)放在小孩接觸范圍之外。 3.本產(chǎn)品應(yīng)在遮光,通風(fēng),干燥處保存。 KE 9 4 主要系統(tǒng)芯片及功能介紹 4.1 凌陽單片機的選擇 MCS-51 單片機+語音芯片的不足: 1.集成性較低:MCS-51 單片機與語音芯片之間的連線與外圍器件較多; 2.可編程性差,較難理解:在看懂時序圖的前提下才能理解其工作原理; 3.語音效果一般; 4.性價比較低,不易于接受和推廣。 凌陽單片機的優(yōu)點: 1.集成性好,語音信號的實時采集:采用模塊式集成結(jié)構(gòu),片內(nèi)集成了 2KB RAM、 32KB Flash、 ADC、DAC、并行 I/O 等,特別適合語音信號處理; 2.可編程性好:2 個 16 位可編程定時器/計數(shù)器,14 個中斷源,可以通過定 時器、外部時鐘輸入、鍵喚醒等; 3.語音效果好:7 通道 10 位 ADC,內(nèi)置麥克風(fēng)放大和自動增益控制功能; 4.性價比高,易于接受和推廣。 10 4.2 主要性能特點分析 電子醫(yī)藥盒的不足: 1.人的提示進行藥物的選擇; 2.按鍵設(shè)定,設(shè)置定時操作麻煩; 3.總體性能比較單一。 多功能電子醫(yī)藥盒的特點: 1.能根據(jù)人的提示進行藥物的選擇; 2.人性化設(shè)計與友好的人機界面; 3.24 小時內(nèi)任意設(shè)定藥物服用提醒; 4.語音互動,可以實現(xiàn)人機對話,具有小型機器人的識別能力; 5.四倉設(shè)計,分為底倉、固定倉與常動倉,介紹如下: a)底倉:為藥物備用倉; b)固定 :倉針對家庭中常常需要服用藥物的人所設(shè)計,服藥時間、數(shù)量等可 進行自行設(shè)定。 c)常動倉(分兩層):針對生活中的易發(fā)性疾病所設(shè)計,服藥時間、數(shù)量 等可進行自行設(shè)定,具備語音識別功能,可根據(jù)語音提示,自動進行藥物的選 擇。 具有時間的記憶功能: 用戶在吃藥的第一天或前幾天大多會記得按時吃藥,用戶在吃藥同時按動 一下智能藥盒上設(shè)定好的按鍵,智能藥盒就自動記住這個時間,以后每天同樣 的時間就會響鈴、閃光和語音提示說話(hello,remember me)提醒用戶吃藥, 每天如此。 4.3 系統(tǒng)主控制芯片及部件介紹 4.3.1 無線語音遙控器主控制器 SPCE061A 介紹 經(jīng)過上述討論,實現(xiàn)聲音智能控制功能最理想的控制芯片為臺灣凌陽科技 推出的 SOPC(System On Programmable Chip)級 16 位 MCU-DSP 混合處理器 SPCE061A 作為處理語音指令的控制芯片,其兼有微處理器,數(shù)字信號處理器, 存儲器的三重功能,具有豐富的片上系統(tǒng)資源。凌陽 SPCE061A 具有 μ’nSP? 的指令系統(tǒng)提供具有較高運算速度的 16 位*16 位的乘法運算指令和內(nèi)積運算指 令,增添了 DSP 功能,使得 μ’nSPTM 系列運用在復(fù)雜的數(shù)字信號處理方面既 很便利,又比專用的 DSP 芯片廉價。凌陽內(nèi)嵌 32K 字的 Flash 和 2K 字的 SRAM,ROM 和 RAM 統(tǒng)一編址,屬于馮諾依曼結(jié)構(gòu)計算機,這樣的設(shè)計在制作中 方便了對語音指令的壓縮和存儲。實物如圖 4-1。 11 圖 4-1 凌陽 SPCE061A 單片機 圖 4-2 ATMEGA16L 管腳圖 SPCE061A 的主要性能: 1.16 位 μ’nSP? 核心高檔微控制器; 2.工作電壓:VVD 為 2.6V-3.6V(CPU),VDDH 為 VDD-5.5V(I/O) ; 3.CPU 時鐘:0.32MHz-49.152MHz; 4.內(nèi)置 2K 字 SRAM; 5.內(nèi)置 32K 字 FLASH; 6.可編程音頻控制器; 7.晶體振蕩器; 8.系統(tǒng)處于設(shè)備狀態(tài)。耗電小雨 2mA 3.6V; 9.2 個 16 位可編程定時器/計數(shù)器(可自動預(yù)置初始計數(shù)值) ; 10.2 個 10 位 DAC; 11.32 位通用可編程輸入/輸出端口; 12.14 個中斷源可來自定時器 A/B,時基,2 個外部時鐘源輸; 13.具備觸鍵喚醒功能; 14.使用凌陽音頻編碼 SACM_S240 方式(2.4Kbps) ,能容納 210s 的語音數(shù) 據(jù); 15.鎖相環(huán) PLL 振蕩器提供系統(tǒng)時鐘信號; 16.32768Hz 實時時鐘; 17.7 通道 10 位電壓數(shù)模轉(zhuǎn)換器(ADC)和單通道聲音模數(shù)轉(zhuǎn)換器; 12 18.聲音模數(shù)轉(zhuǎn)換器輸入通道內(nèi)置麥克風(fēng)放大器和自動增益控制(AGC)功 能; 19.具備串口設(shè)備接口; 20.具有低電壓復(fù)位(LVR)功能和低電壓監(jiān)測(LVD)功能; 21.內(nèi)置在線仿真電路 ICE(In-Circuit Emulator ) ; 22.具有保密能力; 23.具有 Watch Dog 功能。 主控制器 ATMEGA16L 的介紹 AVR 內(nèi)核具有豐富的指令集和 32 個通用工作寄存器。所有的寄存器都直 接與算邏單元(ALU) 相連接,使得一條指令可以在一個時鐘周期內(nèi)同時訪問兩 個獨立的寄存器。這種結(jié)構(gòu)大大提高了代碼效率,并且具有比普通的 CISC 微 控制器最高至 10 倍的數(shù)據(jù)吞吐率。管腳圖如圖 3.2。 ATmega16L 有如下特點: 1.16K 字節(jié)的系統(tǒng)內(nèi)可編程 Flash(具有同時讀寫的能力,即 RWW); 2.512 字節(jié) EEPROM,1K 字節(jié) SRAM; 3.32 個通用 I/O 口線; 4.32 個通用工作寄存器; 5.用于邊界掃描的 JTAG 接口,支持片內(nèi)調(diào)試與編程; 6.三個具有比較模式的靈活的定時器/ 計數(shù)器(T/C); 7.片內(nèi)/外中斷,片內(nèi)經(jīng)過標定的 RC 振蕩器; 8.可編程串行 USART,有起始條件檢測器的通用串行接口; 9.8 路 10 位具有可選差分輸入級可編程增益(TQFP 封裝) 的 ADC; 10.具有片內(nèi)振蕩器的可編程看門狗定時器; 11.一個 SPI 串行端口; 12.四通道 PWM,兩路 8 位,兩路 16 位; 13.六個可以通過軟件進行選擇的省電模式:空閑模式、ADC 噪聲抑制模 式; 14.省電模式、掉電模式、Standby 模式以及擴展的 Standby 模式 15.速度等級:0 - 8 MHz ; 16.工作電壓:2.7 - 5.5V。 4.3.2 直流電機驅(qū)動芯片 L298N 的介紹 L298N 是 ST 公司生產(chǎn)的一種高電壓、大電流電機驅(qū)動芯片。該芯片的主 要特點是:工作電壓高,最高工作電壓可達 46V;輸出電流大,瞬間峰值電流可達 13 3A,持續(xù)工作電流為 2A;內(nèi)含兩個 H 橋的高電壓大電流全橋式驅(qū)動器,可以 用來驅(qū)動直流電動機和步進電動機、繼電器、線圈等感性負載;采用標準 TTL 邏輯電平信號控制;具有兩個使能控制端,在不受輸入信號影響的情況下允許 或禁止器件工作;有一個邏輯電源輸入端,使內(nèi)部邏輯電路部分在低電壓下工 作;可以外接檢測電阻,將變化量反饋給控制電路。其管腳圖和實物圖分別如 圖 4-1、圖 4-2 所示,管腳功能如表 4-3 所示。 圖 4-1 L298N 管腳圖 圖 4-2 L298N 實物圖 表 4-2 L298N 引腳功能表 14 4.3.3 無線語音遙控器中 SPCE061A 的功能 在本次設(shè)計中,關(guān)鍵地問題之一在于人聲的 A/D 轉(zhuǎn)換存儲與識別, SPCE061A 提供了語音輸入壓縮以及辨識的先進技術(shù)。 1. 語音指令的輸入。凌陽 SPCE061A 利用麥克風(fēng)的指令輸入系統(tǒng), SPCE061A 內(nèi)置由 D/A 轉(zhuǎn)換器 DACO 和逐次逼近寄存器 SAR 組成的逐次逼 近式 8 通道 10 位 A/D 轉(zhuǎn)換器,以及采樣/保持電路。其中 7 個通道用于將模 擬量信號(電壓信號)轉(zhuǎn)換為數(shù)字量信號,可以直接通過引線(IOA 0-IOA 6) 輸人(Line_Inl-Line_ln7)另外一個通道只用于語音輸人,即通過內(nèi)置自動增益控 制放大器的麥克風(fēng)通道(MIC-In)輸人,是語音采集專用通道,也可設(shè)置為普 通 A/D 輸入。 2.語音指令的訓(xùn)練。語音遙控器作為機器,一定是不能先天理解人類的語 言的,所以,必須教會它人類語言的含義。即語音訓(xùn)練,內(nèi)容是將人類的語言 事先已訓(xùn)練的方式經(jīng)過模數(shù)轉(zhuǎn)換存儲在凌陽SPCE061A的FLASH中,并指定每 一條語音所要指向的操作,以便在日后的使用中將采集來的語音與存儲的語音 引 腳 符 號 功 能 1 15 SENSING A SENSING B 此兩端與地連接電流檢測電阻,并向驅(qū)動芯片反饋檢測到的信號 2 3 OUT 1 OUT 2 此兩腳是全橋式驅(qū)動器A 的兩個輸出端,用來連接負載 4 Vs 電機驅(qū)動電源輸入端 5 7 IN 1 IN2 輸入標準的TTL邏輯電平信號,用來控制全橋式驅(qū)動器 A的開關(guān) 6 11 ENABLE A ENABLE B 使能控制端.輸入標準TTL邏輯電平信號;低電平時全橋式驅(qū)動器禁止工 作。 8 GND 接地端,芯片本身的散熱片與8腳相通 9 Vss 邏輯控制部分的電源輸人端口 10 12 IN 3 IN 4 輸入標準的TTL 邏輯電平信號,用來控制全橋式驅(qū)動器B的開關(guān) 13 14 OUT 3 OUT 4 此兩腳是全橋式驅(qū)動器 B的兩個輸出端,用來連接負載 15 相比對,以確定單片機需要進行的操作。 凌陽SPCE061A對于不同的辨識能力提供以下兩種語音訓(xùn)練方式: 1)特定發(fā)音人識別SD(Speaker Dependent),是指語音樣板由單個人訓(xùn)練, 可用于語音提示,而DVR用來錄音和放音; 2)非特定發(fā)音人識別 SI(Speaker Independert)。是指語音樣板由不同年 齡、不同性別、不同口音的人訓(xùn)練,可以識別一群人的命令; 在本次設(shè)計中,需要向小車訓(xùn)練:向前、向后、左轉(zhuǎn)、右轉(zhuǎn)、停止等幾項 語音指令,以供控制小車時的辨識使用。 值得注意的是,使用非特定發(fā)音人識別需要利用大量的 DVR 存儲不同人訓(xùn) 練的語音,但是凌陽 SPCE061A 并不能提供大量的內(nèi)存空間供存儲使用,由于 設(shè)計條件有限,無法擴展必要的存儲芯片完成存儲語音的功能,故選擇使用特 定發(fā)音人識別。其訓(xùn)練具體流程參看后文內(nèi)容。 3.對訓(xùn)練的語音指令的存儲。將經(jīng)A/D轉(zhuǎn)換后的數(shù)據(jù)壓縮存儲, SPCEO61A單片機的16位 DSP有很強的信息處理能力,最高時鐘頻率達49.152 MHz,具備運算速度高等優(yōu)勢。這些為語音的錄放、合成及辨識提供了條件。 凌陽壓縮算法中DVR可用于錄、放音。語音的編碼、存儲、解碼處理是通過操 作麥克風(fēng)輸人所生成的WAVE文件完成的,但在這個環(huán)節(jié)上會出現(xiàn)的一個問題 為其占用的存儲空間很大,對SPCEO61A單片機的32K FLASH來說想要存儲大 量的信息顯然是不可能的。而SPCE061A 提出了解決方法: SACMV25.LIB。 該庫將A/D、編碼、解碼、存儲及D/A做成相應(yīng)的模塊,對于每個模塊都有其 應(yīng)用程序接口API,所以只須了解每個模塊所要實現(xiàn)的功能及其參數(shù)的內(nèi)容,然 后調(diào)用該API函數(shù)即可實現(xiàn)相應(yīng)功能。在進行A/D 轉(zhuǎn)換之前,從MIN_IN輸入的 模擬信號要經(jīng)過緩沖器和放大器,AGC功能將通過MIC——IN通道輸入的模擬 信號放大值控制在一定范圍內(nèi),然后放大信號經(jīng)采樣-保持模塊送入比較器參與 A/D轉(zhuǎn)換值得確定。 4. SPCE061A的語音辨識。語音辨識是一種以語音模型為指令基礎(chǔ)的控制方 式,語音模型的質(zhì)量直接影響辨識操作的速度和準確率。具體步驟是經(jīng)過兩次 語音采集,即訓(xùn)練和發(fā)布指令。系統(tǒng)經(jīng)復(fù)雜的函數(shù)操作將發(fā)布指令與預(yù)先訓(xùn)練 的一音模型進行比對,如與語音模型相匹配,則輸出控制信號。具體原理如圖 4-3。 16 聲學(xué)模式訓(xùn)練 語音模型 復(fù)雜聲 學(xué)語音 條件下 的語音 輸入 語音匹配 語音模式訓(xùn)練 語音處理 語言模型 識別結(jié)果理解結(jié)束 圖 4-3 語音辨識原理簡圖 凌陽16位微處理器的SPCE061A 核心實現(xiàn)與計算機連接采用有線方案,通過 并口將預(yù)先設(shè)計的小車控制程序燒寫到SPCE061A單片機,以識別各種語音指 令.系統(tǒng)的處理過程為:當向控制器發(fā)出語音命令時,聲波通過MIC輸入,將 相應(yīng)的信號傳遞到SPCE061A 處理芯片,在芯片中通過相關(guān)的程序與預(yù)先訓(xùn)練好 的語音模型進行比較、識別及處理,根據(jù)識別的結(jié)果進行判斷、轉(zhuǎn)換,然后發(fā) 出相應(yīng)的控制指令到無線模組,無線發(fā)送語音指令。 圖 4-4 語音辨識流程 使用特定人語音辨識的語音樣板由單個人訓(xùn)練和識別處理組成,如圖 3.8。 值得注意的是,凌陽 SPCEO61A 在接收到控制語音指令后,并不是直接用 其進行辨識。 為了提辨識的正確率,語音信號要經(jīng)過語音識別電路,將語音信號經(jīng)過濾波 器降噪、加重等處理后進行預(yù)測、量化等一系列操作進行模數(shù)轉(zhuǎn)換,以數(shù)字形 式進行過零次數(shù)能量相關(guān)函數(shù)等方法進行匹配運算,輸出辨識結(jié)果。 5.語音指令的發(fā)送和回應(yīng)。在對遙控器發(fā)出語音指令后凌陽 SPCEO61A 將人發(fā)出的。 指令與訓(xùn)練時的音頻進行辨識后確定指令,由串口無線模組 nRF2401 發(fā)射。 車上控制器接收到相應(yīng)指令后,設(shè)置動作標志位,返回回應(yīng)數(shù)據(jù),同時控制 17 L298N 和舵機,使藥盒做出開倉閉倉的動作。SPCE061A 接收到響應(yīng)數(shù)據(jù)后, 可知電子藥盒已經(jīng)響應(yīng)了語音指令,便語音播報當前電子藥盒的響應(yīng)。 18 5 軟件設(shè)計部分及方案 5.1 凌陽 SPCE061A 單片機指令系統(tǒng)與開發(fā)環(huán)境 凌陽 SPCEO61A 單片機采用 μ’nSP? 內(nèi)核指令系統(tǒng)的程序設(shè)計支持匯編語 言和 C 語言編寫。在編程中也可以使用匯編偽指令,這樣能使句子所表達的意 思的結(jié)構(gòu)更加清晰,能夠增強可讀性,使匯編器的編譯效率提高。μ’nSP?內(nèi) 核對支持 ANSI-C 中使用的基本數(shù)據(jù)類型,并且可以在 C 程序中調(diào)用匯編函數(shù) 提高代碼效率,并使其具有較好的實時性。聲控小車的各種動作,以及指令以 及工作方式都要通過 C 語言與匯編語言編寫,并進行摸擬,調(diào)試等操作。為減 少繁瑣的堆棧操作和提高程序可讀性,在本次設(shè)計中采用 C 語言編寫辨識程序。 在編程工作結(jié)束后,將會對聲控小車進行程序的輸入。使用凌陽科技提供 的一個集成開發(fā)環(huán)境 μ’nSP? IDE,它能完成程序的編輯、編譯、鏈接、調(diào)試 和仿真等功能。使用它的的軟件仿真功能可以在不連接仿真板的情況下通過模 擬硬件的部分功能來調(diào)試程序。并使用在線調(diào)試器 PROBE 對 SPCEO61A 程序 進行寫入,它既是一個程序燒寫器人又是一個實時在線調(diào)試器。它利用了 SPCE06lA 片內(nèi)置的在線仿真電路 ICE(In-Circuit Emulator)接口和凌陽公司的 在線串行編程技術(shù)。PROBE 工作于凌陽 IDE 集成開發(fā)環(huán)境軟件包下,其 5 芯 的仿真頭直接連接到目標電路板上 SPCEO61A 相應(yīng)引腳,直接對目標電路板上 的 SPCEO61A 調(diào)試,運行編寫好的程序。PROBE 的另一頭是標準 25 針打印機 接口,直接連接到計算機打印口與微機通信,在計算機 IDE 集成開發(fā)環(huán)境軟件 包下,實現(xiàn)在線調(diào)試。 圖 5-6 計算機,PROBE 和用戶目標板三者之間的連接示意圖 19 5.2 ATMEGA16L 單片機指令系統(tǒng)與開發(fā)環(huán)境 為了獲得最高的性能以及并行性, AVR 采用了 Harvard 結(jié)構(gòu),具有獨立 的數(shù)據(jù)和程序總線。程序存儲器里的指令通過一級流水線運行。CPU 在執(zhí)行一 條指令的同時讀取下一條指令( 在本文稱為預(yù)取) 。這個概念實現(xiàn)了指令的單時 鐘周期運行。程序存儲器是可以在線編程的FLASH 。AVRStudio 是Atmel 公司推 出的AVR 單片機集成開發(fā)環(huán)境。能運行于Windows9x/ME/NT/2000/XP等操作系 統(tǒng)平臺下。它提供了源文件的編輯器,用于軟件仿真的芯片仿真器和在線硬件 仿真(ICE) 的接口。源程序的編輯可采用匯編語言,其匯編級編譯器(AVR Assembler)是免費提供的。 AVRStudio也可采用C語言編程,支持第三方C編譯 器。AVRStudio還集成有軟件調(diào)試( AVR Studio)和實時在線仿真器(JTAG ICE)以及 AVRProg下載等功能。目前,ARTMEL 公司所發(fā)布的最新版本為 AVR Studio4.14,可以在 ATMEL公司的官方網(wǎng)站htttp://下載。 圖5-7 AVRStudio開發(fā) 20 結(jié) 論 本次對于多功能電子醫(yī)藥盒的設(shè)計采用凌陽 SPCE061A 十六位單片機和 AVR 系列 ATMEGA16L 高檔 8 位單片機配合實現(xiàn)。 SPCE061A 采用 μ’nSP? 內(nèi)核微處理器,其內(nèi)部集成語音采集、識別及播放功能,并且集成了 2K 字的 RAM、32K 字的 Flash,同時 ATMEGA16L 內(nèi)集成的 1K 字節(jié)的 SRAM 和 16K 字節(jié)的 FLASH 使得整個系統(tǒng)不需要外擴程序存儲器和 RAM。由于采用了高性 能的 MCU,省掉了大量的外圍器件,使得硬件結(jié)構(gòu)大大簡化,提高了系統(tǒng)的可 靠性。遙控器部分選用凌陽 SPCE061A,完全取決于其高集成度和較全面的功 能,不需要增加復(fù)雜的外圍電路就可以實現(xiàn)語音辨識和一系列職能動作。它的 軟件編程采用 C 和匯編混合編程來實現(xiàn),集兩種語言之優(yōu)點于一體,它們的完 美結(jié)合極大限度地簡化了編程過程,豐富了編程思想,給開發(fā)者帶來了莫大的 方便。采用別的單片機實現(xiàn)所有功能一般要兩個單片機,硬件電路也更加復(fù)雜。 若要實現(xiàn)語音播報功能和語音辨識,不是多用幾個別的類型的單片機就可實現(xiàn) 的,而凌陽單片機提供了很好的語音播放和錄制機制以及簡單的 API 接口編程。 使用 SPCE061A 開發(fā)產(chǎn)品不僅給開發(fā)者耳目一新的感覺更給用戶以振奮的性能。 在 SPCE061A 集成函數(shù)庫帶來方便的同時,我也感受到了其源代碼的不透明, 當想增加自己特定的功能時,不知如何下手。與此相反,ATMEGA16L 的技術(shù) 資料很詳細,甚至 bootloader 的編程都已涉及,所以作為單片機的初學(xué)者從 AVR 系列單片機入手是一個很好的選擇,當具有一定經(jīng)驗后,可以用 SPCE061A 做一些設(shè)計上的輔助工作,也能為自己的作品增添不少色彩。 對于無線語音遙控智能來講,本次設(shè)計的作品并無太大實用價值,但有很 大實際意義,其中聲音控制機器操作的思路是今后簡化人機接口的方向。此類 構(gòu)想可移植到諸如小家電、汽車等于生活息息相關(guān)的電子產(chǎn)品上。在人類與計 算機的關(guān)系日益密切的今天,更為便捷、更為人性化、更為智能化的人機對話 方式無疑是今后科技發(fā)展的新趨勢。 在結(jié)束了本次畢業(yè)設(shè)計后,本人對于單片機的了解和使用能力達到了一個 更高的層次,使知識得到了充分的運用,同時也補充了部分沒有接觸過的思想。 本人從中受益匪淺。 21 參考文獻 [1]劉海承等. MCU-DSP 型單片機原理與應(yīng)用.北京:北京航空航天大學(xué)出版社, 2003. [2]羅亞非.凌陽 16 位單片機應(yīng)用基礎(chǔ).北京:北京航空航天大學(xué)出版社, 2003 [3]鄭學(xué)堅,周斌.微型計算機原理及應(yīng)用(第三版) 北京:清華大學(xué)出版社,2001. [4]歐陽斌林, 等.單片機原理與應(yīng)用.中國水利水電出版社,2001. [5]李晶皎.嵌人式語音技術(shù)及凌陽 16 位單片機應(yīng)用.北京:北京航空航天大 學(xué)出版社,2003:97~102. [6]潘松,黃繼業(yè).EDA 技術(shù)實用教程.第二版.北京:科學(xué)出版社,2005: 234~237. [7]凌陽科技大學(xué)計劃.凌陽單片機在大學(xué)生電子競賽中的應(yīng)用,第一版,北京航 空航天大學(xué)出版社,2005: 175~179. [8]劉海成,秦進平.MCU-DSP型單片機原理與應(yīng)用基于凌陽 16位單片機,第一 版,北京航空航天大學(xué)出版社,2006:215~216. [9]張齊,杜群貴.單片機應(yīng)用系統(tǒng)設(shè)計技術(shù)——基于C語言編程,第二版,電子 工業(yè)出版社,2004:191~193. [10]侯媛彬.凌陽單片機原理及其畢業(yè)設(shè)計精選,第一版,科學(xué)出版社, 2006:33~41. [11]吳雙力,崔劍,王伯嶺.AVR-GCC與AVR單片機 C語言開發(fā),第一版,北京 航空航天大學(xué)出版社,2004:163~169. [12]徐煜明,韓雁 .單片機原理及接口技術(shù),第一版,電子工業(yè)出版社, 2005:57~58. [13]楊西明,朱騏 .單片機編程與應(yīng)用入門,第一版,機械工業(yè)出版社, 2004:341~344. [14]嚴天峰.單片機應(yīng)用系統(tǒng)設(shè)計與仿真調(diào)試,第一版,北京航空航天大學(xué)出版 社,2005:215~223. [15]Michael A. Miller.Data and Network Communications,第一版,科學(xué)出版社, 2002:145~148. 22 附錄 1:電路圖 23 附錄 2: 程序 #include #include #define uchar unsigned char #define uint unsigned int //********* 延時程序 ********* void delayms(unsigned int n) //延時 10×n 毫秒程序 { unsigned int i,j; for(i=0;i0;i--) for(j=248;j>0;j--); } /******************語音模塊 ********************/ sbit s1=P1^3; sbit s2=P1^4; sbit reshi=P1^5; void speak2(void) { delay1ms(50); s2=1; delay1ms(50); s2=0; delay1ms(2); s2=1; //s2=1; } /**************LCD 液晶***************/ #define LCD_CS_SET P1|=0 x04 //CS = P1.2 #define LCD_CS_CLR P1//定義按鍵位置 sbit key2=P3^1; sbit key3=P3^2; sbit key4=P3^3; sbit SCK=P3^6; sbit SDA=P3^4; sbit RST = P3^5; // DS1302 復(fù)位 /***************電機******/ unsigned char code F_Rotation[4]={0 x01,0 x02,0 x04,0 x08};//正轉(zhuǎn)表格 unsigned char code B_Rotation[4]={0 x08,0 x04,0 x02,0 x01};//反轉(zhuǎn)表格 void Delaymotor(unsigned int i)//延時 { while(--i); } void oneblock(char w) { unsigned char i,j; for(j=0;j<120;j++) { for(i=0;i<4;i++) //4 相 { if(w) P2=B_Rotation[i]; //輸出對應(yīng)的相 可以自行換成反轉(zhuǎn)表格 else P2=F_Rotation[i]; Delaymotor(1000); //改變這個參數(shù)可以調(diào)整電機轉(zhuǎn)速 } } } 26 unsigned char l_tmpdate[7]={0,0,12,14,11,3,9};//秒分時日月周年 08-05-15 12:00:00 unsigned char l_tmpdisplay[8]; code unsigned char write_rtc_address[7]={0 x80,0 x82,0 x84,0 x86,0 x88,0 x8a,0 x8c}; //秒分時日月 周年 最低位讀寫位 code unsigned char read_rtc_address[7]={0 x81,0 x83,0 x85,0 x87,0 x89,0 x8b,0 x8d}; unsigned char weizhi[6]={0,0,0}; unsigned char shuliang[3]={0,0,0}; unsigned char shijian[7]={0,1,12,14,11,3,9}; char a=0,f=0; /****************************************************************************/ void Write_Ds1302_Byte(unsigned char temp) { unsigned char i; for (i=0;i>=1; //右移一位 SCK=1; } } void Write_Ds1302( unsigned char address,unsigned char dat ) { RST=0; _nop_(); SCK=0; _nop_(); RST=1; _nop_(); //啟動 Write_Ds1302_Byte(address); //發(fā)送地址 Write_Ds1302_Byte(dat); //發(fā)送數(shù)據(jù) RST=0; //恢復(fù) 27 } /****************************************************************************/ unsigned char Read_Ds1302 ( unsigned char address ) { unsigned char i,temp=0 x00; RST=0; _nop_(); SCK=0; _nop_(); RST=1; _nop_(); Write_Ds1302_Byte(address); for (i=0;i>=1; //右移一位 SCK=1; } RST=0; _nop_(); //以下為 DS1302 復(fù)位的穩(wěn)定時間 RST=0; SCK=0; _nop_(); SCK=1; _nop_(); SDA=0; _nop_(); SDA=1; _nop_(); return (temp); //返回 28 } /****************************************************************************/ void Read_RTC(void) //讀取 日歷 { unsigned char i,*p; p=read_rtc_address; //地址傳遞 for(i=0;i<7;i++) //分 7 次讀取 秒分時日月周年 { l_tmpdate[i]=Read_Ds1302(*p); p++; } } /***********************************************************************/ void Set_RTC(void) //設(shè)定 日歷 { unsigned char i,*p,tmp; for(i=0;i<7;i++){ //BCD 處理 tmp=l_tmpdate[i]/10; l_tmpdate[i]=l_tmpdate[i]%10; l_tmpdate[i]=l_tmpdate[i]+tmp*16; } Write_Ds1302(0 x8E,0X00); p=write_rtc_address; //傳地址 for(i=0;i<7;i++) //7 次寫入 秒分時日月周年 { Write_Ds1302(*p,l_tmpdate[i]); p++; } Write_Ds1302(0 x8E,0 x80); 29 } //********* 發(fā)送字節(jié) ********* void send_byte( uchar s_data ) { uchar i; LCD_SCK_CLR; for( i=0; i<8; i++ ) { if( s_data else LCD_SDA_CLR; LCD_SCK_SET; s_data = s_data << 1; _nop_();_nop_();_nop_();_nop_();_nop_(); LCD_SCK_CLR; } } //********* 接收字節(jié) ********* uchar receive_byte( void ) { uchar i,r_data=0; LCD_SCK_CLR; for( i=0; i<8; i++ ) { r_data = r_data << 1; LCD_SCK_SET; _nop_();_nop_(); LCD_SCK_CLR; if( LCD_SDA_IN ) r_data |= 0 x01; //0 x02 _nop_();_nop_();_nop_();_nop_();_nop_(); 30 } return( r_data ); } //********* 向 LCD 發(fā)送指令 ******** void LCD_W_Comm( uchar CMD ) { LCD_SDA_SET; LCD_CS_SET; _nop_();_nop_(); send_byte( 0 xf8 ); //0 xF8 = 1111 1000,發(fā)送指令 send_byte( CMD send_byte( CMD <<4); LCD_CS_CLR; Delay(); } //********* 向 LCD 發(fā)送數(shù)據(jù) ******** void LCD_W_Data( uchar DAT ) { LCD_SDA_SET; LCD_CS_SET; _nop_();_nop_(); send_byte( 0 xfa );
收藏