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