1 引言 去年在我國局部地區流行的SARS 前期癥狀是高燒38oC 以上(少數長(cháng)期病患者除外),紅外測溫儀可為防止SARS 的擴散和傳播提供了快速、非接觸測量手段,可廣泛、有效地用于人群的體溫排查。一時(shí)紅外測溫在我國迅速紅火起來(lái),這里介紹一種采用SPCE061A和TN系列傳感器實(shí)現紅外測溫的方法。 2 芯片特性簡(jiǎn)介 SPCE061A是臺灣凌陽(yáng)公司生產(chǎn)的性?xún)r(jià)比很高的一款十六位單片機,使用它可以非常方便的實(shí)現控制和語(yǔ)音播報的系統,該芯片擁有8路10位精度的AD,其中1路AD為音頻轉換通道,并且內置有自動(dòng)增益電路。這為實(shí)現語(yǔ)音錄入提供了方便的硬件條件。2路10位精度的DA,只需要外接2個(gè)功放(LM386)即可完成語(yǔ)音的播放。另外,凌陽(yáng)十六位單片機具有易學(xué)易用的效率較高的一套指令系統和集成開(kāi)發(fā)環(huán)境。在此環(huán)境中,支持標準C語(yǔ)言,可以實(shí)現C語(yǔ)言與凌陽(yáng)匯編語(yǔ)言的互相調用,并且,提供了語(yǔ)音錄放的庫函數,只要了解庫函數的使用,就會(huì )很容易完成語(yǔ)音播報,這些都為軟件開(kāi)發(fā)提供了方便的條件。 3 系統總體方案介紹 系統結構圖如下: 本系統包括按鍵部分、音頻輸出部分和TN紅外測溫傳感器接入等三部分。 按鍵部分:按鍵開(kāi)始測溫,一直按下,聽(tīng)到聲音表示測溫完畢。 音頻輸出部分:主要是將SPCE061A兩路音頻輸出端通過(guò)LM386放大,經(jīng)喇叭播放。 TN紅外測溫傳感器接入部分:通過(guò)SPCE061A IO口的控制,將將所測得的溫度接受到SPCE061A中來(lái)處理。 系統實(shí)現的功能:按住按鍵,聽(tīng)到聲音,此時(shí)播報測得的環(huán)境溫度和目標溫度。 4 系統硬件設計 紅外測溫傳感器如圖 4.1 所示。 紅外測溫模塊與SPCE061A的接口如下: V-->3.3v D-->IOA15 C-->IOB8 G-->GND A-->按鍵-->GND 音頻輸出部分詳細電路圖如圖4.2 5 系統軟件設計 本系統軟件設計流程如下: 其中,SPCE061A讀取紅外傳感器的測量結果,是采用SPI接口進(jìn)行讀取,其中數據格式如下: SPI時(shí)序圖: 一幀數據包括5Byte,每個(gè)Byte代表含義如下: Item “L”(4CH): 代表此幀為目標溫度 “f”(66H): 代表此幀為環(huán)境溫度 MSB 8 bit Data Msb LSB 8 bit Data Lsb Sum Item+MSB+LSB=SUM CR 0DH,結束碼 讀取數據流程圖如圖5.3: 本軟件系統設計簡(jiǎn)單。主要是因為凌陽(yáng)的十六位單片機開(kāi)發(fā)環(huán)境使用方便,并支持C語(yǔ)言與匯編語(yǔ)言的互相調用,且提供豐富的凌陽(yáng)語(yǔ)音函數庫,只要我們了解這些函數的使用方法,我們就可以很容易的實(shí)現語(yǔ)音的播放。本系統采用S480壓縮格式,該壓縮算法壓縮比較大80:3, 存儲容量大,音質(zhì)介于A(yíng)2000和S240之間,適用于語(yǔ)音播放。例如播放部分代碼如下: 其相關(guān)API函數如下所示: int SACM_S480_Initial(int Init_Index) //初始化 void SACM_ S480_ServiceLoop(void) //獲取語(yǔ)音資料,填入譯碼隊列 void SACM_ S480_Play(int Speech_Index, int Channel, int Ramp_Set) //播放 void SACM_ S480_Stop(void) //停止播放 void SACM_S480_Pause (void) //暫停播放 void SACM_S480_Resume(void) //暫停后恢復 void SACM_S480_Volume(Volume_Index) //音量的控制 unsigned int SACM_S480_Status(void) //獲取模塊的狀態(tài) Call F_FIQ_Service_ SACM_S480 //中斷服務(wù)函數 各函數具體內容如下: 1)【API格式】 C:int SACM_S480_Initial(int Init_Index) ASM:R1=[ Init_Index] Call F_ SACM_ S480_Initial 【功能說(shuō)明】SACM_S480語(yǔ)音播放之前的初始化。 【參 數】Init_Index=0 表示手動(dòng)方式;Init_Index=1 則表示自動(dòng)方式。 【返 回 值】 0:代表語(yǔ)音模塊初始化失敗 1:代表初始化成功。 【備 注】該函數用于對定時(shí)器、中斷和DAC等的初始化。 2) 【API格式】 C:void SACM_S480_ServiceLoop(void) ASM:Call F_ SACM_S480_ServiceLoop 【功能說(shuō)明】從資源中獲取SACM_S480語(yǔ)音資料,并將其填入解碼隊列中。 【參 數】無(wú)。 【返 回 值】無(wú)。 【備 注】播放語(yǔ)音文件中數據,當出現FF FF FFH數據時(shí)便停止播放。 3) 【API格式】 C:int SACM_S480_Play(int Speech_Index, int Channel, int Ramp_Set); ASM:R1=[ Speech _Index] R2=[ Channel] R3=[ Ramp_Set] Call SACM_S480_Play 【功能說(shuō)明】播放資源中SACM_S480語(yǔ)音。 【參 數】Speech _Index 表示語(yǔ)音索引號。 Channel: 1.通過(guò)DAC1通道播放; 2.通過(guò)DAC2通道播放; 3.通過(guò)DAC1和 DAC2雙通道播放。 Ramp_Set:0.禁止音量增/減調節; 1.僅允許音量增調節; 2.僅允許音量減調 節; 3.允許音量增/減調節。 【返 回 值】無(wú)。 【備 注】 、 SACM_S480的數據率有4.8Kbps7.2Kbps三種,可在同一模塊的幾種算法中自動(dòng)選擇一種。 、赟peech_Index是定義在resource.inc文件中資源表(T_SACM_S480_SpeechTable)的偏移地址。 、 中斷服務(wù)子程序中F_FIQ_Service_ SACM_S480必須放在TMA_FIQ中斷向量上(參見(jiàn)SPCE的中斷系統)。 、芎瘮翟试STimerA以所選的的數據采樣率(計數溢出)中斷。 SACM_S480自動(dòng)方式主程序流程見(jiàn): 6 結語(yǔ) 凌陽(yáng)公司的SPCE061A的結構特點(diǎn)及其相關(guān)的一些開(kāi)發(fā)平臺為我們控制和播放提供了極其方便的條件,當然SPCE061A還有很多的類(lèi)似于其他方面的單片機所具有的功能,使用起來(lái)同樣方便。隨著(zhù)市場(chǎng)競爭的激烈,開(kāi)發(fā)者對產(chǎn)品開(kāi)發(fā)的資金和時(shí)間的投入不斷縮小,相信凌陽(yáng)科技能實(shí)現開(kāi)發(fā)者們的需求。 |