1 引言
    去年在我國(guó)局部地區(qū)流行的SARS 前期癥狀是高燒38oC 以上(少數(shù)長(zhǎng)期病患者除外),紅外測(cè)溫儀可為防止SARS 的擴(kuò)散和傳播提供了快速、非接觸測(cè)量手段,可廣泛、有效地用于人群的體溫排查。一時(shí)紅外測(cè)溫在我國(guó)迅速紅火起來,這里介紹一種采用SPCE061A和TN系列傳感器實(shí)現(xiàn)紅外測(cè)溫的方法。 
 
2 芯片特性簡(jiǎn)介
    SPCE061A是臺(tái)灣凌陽公司生產(chǎn)的性價(jià)比很高的一款十六位單片機(jī),使用它可以非常方便的實(shí)現(xiàn)控制和語音播報(bào)的系統(tǒng),該芯片擁有8路10位精度的AD,其中1路AD為音頻轉(zhuǎn)換通道,并且內(nèi)置有自動(dòng)增益電路。這為實(shí)現(xiàn)語音錄入提供了方便的硬件條件。2路10位精度的DA,只需要外接2個(gè)功放(LM386)即可完成語音的播放。另外,凌陽十六位單片機(jī)具有易學(xué)易用的效率較高的一套指令系統(tǒng)和集成開發(fā)環(huán)境。在此環(huán)境中,支持標(biāo)準(zhǔn)C語言,可以實(shí)現(xiàn)C語言與凌陽匯編語言的互相調(diào)用,并且,提供了語音錄放的庫函數(shù),只要了解庫函數(shù)的使用,就會(huì)很容易完成語音播報(bào),這些都為軟件開發(fā)提供了方便的條件。
  
[b]3 系統(tǒng)總體方案介紹
[/b]    系統(tǒng)結(jié)構(gòu)圖如下:
   本系統(tǒng)包括按鍵部分、音頻輸出部分和TN紅外測(cè)溫傳感器接入等三部分。 
按鍵部分:按鍵開始測(cè)溫,一直按下,聽到聲音表示測(cè)溫完畢。 
音頻輸出部分:主要是將SPCE061A兩路音頻輸出端通過LM386放大,經(jīng)喇叭播放。    
    TN紅外測(cè)溫傳感器接入部分:通過SPCE061A IO口的控制,將將所測(cè)得的溫度接受到SPCE061A中來處理。 
系統(tǒng)實(shí)現(xiàn)的功能:按住按鍵,聽到聲音,此時(shí)播報(bào)測(cè)得的環(huán)境溫度和目標(biāo)溫度。 
  
[b]4 系統(tǒng)硬件設(shè)計(jì)
[/b]    紅外測(cè)溫傳感器如圖 4.1 所示。
   紅外測(cè)溫模塊與SPCE061A的接口如下:
   V-->3.3v 
    D-->IOA15 
   C-->IOB8
   G-->GND 
   A-->按鍵-->GND 
   音頻輸出部分詳細(xì)電路圖如圖4.2
 
[b]5 系統(tǒng)軟件設(shè)計(jì)
[/b]   本系統(tǒng)軟件設(shè)計(jì)流程如下:
    其中,SPCE061A讀取紅外傳感器的測(cè)量結(jié)果,是采用SPI接口進(jìn)行讀取,其中數(shù)據(jù)格式如下: 
    SPI時(shí)序圖: 
   一幀數(shù)據(jù)包括5Byte,每個(gè)Byte代表含義如下: 
    Item “L”(4CH): 代表此幀為目標(biāo)溫度 
   “f”(66H): 代表此幀為環(huán)境溫度
   MSB 8 bit Data Msb
   LSB 8 bit Data Lsb 
   Sum Item+MSB+LSB=SUM
   CR 0DH,結(jié)束碼
    讀取數(shù)據(jù)流程圖如圖5.3: 

    本軟件系統(tǒng)設(shè)計(jì)簡(jiǎn)單。主要是因?yàn)榱桕柕氖粏纹瑱C(jī)開發(fā)環(huán)境使用方便,并支持C語言與匯編語言的互相調(diào)用,且提供豐富的凌陽語音函數(shù)庫,只要我們了解這些函數(shù)的使用方法,我們就可以很容易的實(shí)現(xiàn)語音的播放。本系統(tǒng)采用S480壓縮格式,該壓縮算法壓縮比較大80:3, 存儲(chǔ)容量大,音質(zhì)介于A2000和S240之間,適用于語音播放。例如播放部分代碼如下: 
    其相關(guān)API函數(shù)如下所示: 
int SACM_S480_Initial(int Init_Index) //初始化 
void SACM_ S480_ServiceLoop(void) //獲取語音資料,填入譯碼隊(duì)列
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) //暫停后恢復(fù) 
void SACM_S480_Volume(Volume_Index) //音量的控制 
unsigned int SACM_S480_Status(void) //獲取模塊的狀態(tài)
Call F_FIQ_Service_ SACM_S480 //中斷服務(wù)函數(shù) 
各函數(shù)具體內(nèi)容如下: 
    1)【API格式】
    C:int SACM_S480_Initial(int Init_Index) 
    ASM:R1=[ Init_Index] 
     Call F_ SACM_ S480_Initial 
    【功能說明】SACM_S480語音播放之前的初始化。 
    【參 數(shù)】Init_Index=0 表示手動(dòng)方式;Init_Index=1 則表示自動(dòng)方式。 
    【返 回 值】
    0:代表語音模塊初始化失敗 
    1:代表初始化成功。 
    【備 注】該函數(shù)用于對(duì)定時(shí)器、中斷和DAC等的初始化。
    2) 【API格式】
    C:void SACM_S480_ServiceLoop(void) 
    ASM:Call F_ SACM_S480_ServiceLoop 
    【功能說明】從資源中獲取SACM_S480語音資料,并將其填入解碼隊(duì)列中。 
    【參 數(shù)】無。 
    【返 回 值】無。 
    【備 注】播放語音文件中數(shù)據(jù),當(dāng)出現(xiàn)FF FF FFH數(shù)據(jù)時(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 
    【功能說明】播放資源中SACM_S480語音。 
    【參 數(shù)】Speech _Index 表示語音索引號(hào)。 
    Channel: 1.通過DAC1通道播放; 2.通過DAC2通道播放; 3.通過DAC1和  DAC2雙通道播放。
    Ramp_Set:0.禁止音量增/減調(diào)節(jié); 1.僅允許音量增調(diào)節(jié); 2.僅允許音量減調(diào)  節(jié); 3.允許音量增/減調(diào)節(jié)。 
    【返 回 值】無。
    【備 注】
    ① SACM_S480的數(shù)據(jù)率有4.8Kbps\7.2Kbps三種,可在同一模塊的幾種算法中自動(dòng)選擇一種。
    ②Speech_Index是定義在resource.inc文件中資源表(T_SACM_S480_SpeechTable)的偏移地址。 
    ③ 中斷服務(wù)子程序中F_FIQ_Service_ SACM_S480必須放在TMA_FIQ中斷向量上(參見SPCE的中斷系統(tǒng))。
    ④函數(shù)允許TimerA以所選的的數(shù)據(jù)采樣率(計(jì)數(shù)溢出)中斷。
    SACM_S480自動(dòng)方式主程序流程見: 

 6 結(jié)語
    凌陽公司的SPCE061A的結(jié)構(gòu)特點(diǎn)及其相關(guān)的一些開發(fā)平臺(tái)為我們控制和播放提供了極其方便的條件,當(dāng)然SPCE061A還有很多的類似于其他方面的單片機(jī)所具有的功能,使用起來同樣方便。隨著市場(chǎng)競(jìng)爭(zhēng)的激烈,開發(fā)者對(duì)產(chǎn)品開發(fā)的資金和時(shí)間的投入不斷縮小,相信凌陽科技能實(shí)現(xiàn)開發(fā)者們的需求。
                                                                 編輯:何世平