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