?? main.c
字號(hào):
//========================================================================
// The information contained herein is the exclusive property of
// Sunnnorth Technology Co. And shall not be distributed, reproduced,
// or disclosed in whole in part without prior written permission.
// (C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
// ALL RIGHTS RESERVED
// The entire notice above must be reproduced on all authorized copies.
//========================================================================
//========================================================================
// 工程名稱: RecognisLCD
// 功能描述: 《實(shí)驗(yàn)儀指導(dǎo)書(shū)》綜合實(shí)驗(yàn)
// 語(yǔ)音識(shí)別+LCD顯示演示程序,配合綜合實(shí)驗(yàn)4
// 采用特定人識(shí)別技術(shù),程序開(kāi)始時(shí)用戶需要對(duì)語(yǔ)音識(shí)別進(jìn)行訓(xùn)練,每
// 條指令訓(xùn)練兩次,訓(xùn)練成功后,才開(kāi)始真正的語(yǔ)音辨識(shí),針對(duì)用戶發(fā)
// 出的不同語(yǔ)音指令,LCD上顯示不同的表情,并播放對(duì)應(yīng)的語(yǔ)音,以回
// 應(yīng)語(yǔ)音指令
// 涉及的庫(kù): CMacro1016.lib
// bsr222SDL.lib
// SACMV26e.lib
// 組成文件: main.c/RSDocument.c/Sound.c/face.c/SPLC501User.c
// isr.asm/hardware.asm/DataOSforLCD.asm/SPLC501Driver_IO.asm
// bsrSD.inc/a2000.inc/hardware.inc/SPLC501Driver_IO.inc
// bsrSD.h/a2000.h/hardware.h/SPLC501User.h
// 硬件連接: 硬件連接主要是針對(duì)實(shí)驗(yàn)儀LCD的連線,如下:
// LCD DB0~DB7接IOA0~IOA7
// LCD EP 接IOB5
// LCD RW 接IOB4
// LCD A0 接IOB3
// LCD CS 接IOB2 或接地也可
//
// 維護(hù)記錄: 2005-10-16 v1.0 by xinqiang
//
// 注 意: 本工程當(dāng)中的LCD驅(qū)動(dòng)程序?yàn)榫?jiǎn)版,為了減小ROM空間的占用,將LCD
// 驅(qū)動(dòng)當(dāng)中的8X16 ASCII碼顯示功能取消掉,望見(jiàn)諒
//========================================================================
//********************************************************************************//
//-- 在程序中我們通過(guò)五條語(yǔ)句的訓(xùn)練演示特定人連續(xù)音識(shí)別。
//--
//-- 在程序一開(kāi)始為訓(xùn)練名稱,然后提示訓(xùn)練剩下的四條命令,訓(xùn)練完畢開(kāi)始辨識(shí),當(dāng)識(shí)別
//命令則會(huì)聽(tīng)到應(yīng)答,具體命令如下:
//****************訓(xùn)練******************************************
// 提示音 輸入語(yǔ)音
//--------------------------------------------------------
//"1" 訓(xùn)練名字----"??"
//"2" "how are you"
//"3" "happy new year"
//"4" "I love you"
//"5" "go to sleep"
//"Hoo" (每條命令要訓(xùn)練兩次,而訓(xùn)練完一次后會(huì)提示該音,用戶需要再一次輸入該命令聲音)
//"OHOH"(當(dāng)訓(xùn)練出錯(cuò)時(shí),發(fā)出此聲,用戶需要重新訓(xùn)練當(dāng)前的命令)
//音樂(lè)(完成訓(xùn)練,進(jìn)入辨識(shí)狀態(tài))
//*****************識(shí)別*****************************************
// 發(fā)布命令 應(yīng)答
//---------------------------------------------------------
//名字"??" "lalalalala"
//"how are you" "I`m fine"
//"happy new year" "happy new year"
//"I love you" "I love you too"
//"go to sleep" "ZZZZ"
//注意:在每次提示音結(jié)束后1-2秒再輸入命令或當(dāng)上次應(yīng)答結(jié)束1-2秒后再發(fā)布命令
//********************************************************************************//
//========================================================================
// 文件名稱: main.c
// 功能描述: 語(yǔ)音識(shí)別+LCD顯示程序主程序文件
// 包括主程序
// 維護(hù)記錄: 2005-10-16 v1.0
//========================================================================
#include "bsrSD.h" //包含語(yǔ)音識(shí)別庫(kù)的頭文件
#include "SPLC501User.h" //包含SPLC501液晶驅(qū)動(dòng)的頭文件
#include "face.h" //包含要顯示的圖片的頭文件
#define P_Watchdog_Clear (unsigned int*)0x7012
void Delay(unsigned int Timers);
//========================================================================
// 語(yǔ)法格式: int main(void)
// 實(shí)現(xiàn)功能: 主程序
// 參數(shù): 無(wú)
// 返回值: 無(wú)
//========================================================================
void Play_Sound(unsigned int Index); //在Sound.c中定義
void ReTrainBS(void); //在Sound.c中定義
int main(void)
{
unsigned int uiTemp=0,Loop_Counter=0;
int res;
LCD501_Init(0); //初始化液晶顯示
LCD501_SetPaintMode(4); //設(shè)置LCD繪圖顯示模式為取反疊加模式
LCD501_Bitmap(40,20,(unsigned int *)encoding_02);//顯示圖像
ReTrainBS(); //調(diào)用語(yǔ)音識(shí)別的訓(xùn)練程序,在Sound.c中定義
Play_Sound(12);
//..........開(kāi)始識(shí)別命令.........................
BSR_InitRecognizer(BSR_MIC); //辨識(shí)器初始化
LCD501_Bitmap(40,20,(unsigned int *)encoding_00);//顯示圖片
while(1)
{
res = BSR_GetResult(); //獲取語(yǔ)音識(shí)別結(jié)果,在庫(kù)中定義
switch(res) //根據(jù)識(shí)別的結(jié)果進(jìn)行分支跳轉(zhuǎn)
{
case 0x100: //name ID
LCD501_Bitmap(40,20,(unsigned int *)encoding_01);
Play_Sound(7); //播放:lalalalala
Loop_Counter = 0; //計(jì)數(shù)清零
break;
case 0x101: //命令一 ID
LCD501_Bitmap(40,20,(unsigned int *)encoding_02);
Play_Sound(5); //播放:I`m fine
Loop_Counter = 0; //計(jì)數(shù)清零
break;
case 0x102: //命令二 ID
LCD501_Bitmap(40,20,(unsigned int *)encoding_04);
Play_Sound(8); //播放:Happy new year
Loop_Counter = 0; //計(jì)數(shù)清零
break;
case 0x103: //命令三 ID
LCD501_Bitmap(40,20,(unsigned int *)encoding_03);
Play_Sound(6); //播放:I love you too
Loop_Counter = 0; //計(jì)數(shù)清零
break;
case 0x104: //命令四 ID
for(uiTemp=0;uiTemp<3;uiTemp++) //顯示三次表情變化
{
LCD501_Bitmap(40,20,(unsigned int *)encoding_05);
Delay(5);
LCD501_Bitmap(40,20,(unsigned int *)encoding_00);
Delay(5);
}
Play_Sound(9); //播放:ZZZZZZ(打呼嚕聲)
Loop_Counter = 0; //計(jì)數(shù)清零
break;
default:
break;
}
Loop_Counter++; //循環(huán)計(jì)數(shù)器自加一,用于程序中的狀態(tài)狀斷
if(Loop_Counter>=600) //如在循環(huán)次數(shù)里沒(méi)有命令,則顯示初始圖片
{
LCD501_Bitmap(40,20,(unsigned int *)encoding_00);
Loop_Counter = 0;
}
*P_Watchdog_Clear = 0x0001; //清看門狗
}
}
//========================================================================
// 語(yǔ)法格式: void Delay(unsigned int Timers)
// 實(shí)現(xiàn)功能: 延時(shí)子程序
// 參數(shù): Timers 延時(shí)的時(shí)長(zhǎng)控制參數(shù)
// 返回值: 無(wú)
//========================================================================
void Delay(unsigned int Timers)
{
unsigned int i;
while(Timers!=0)
{
for(i=0;i<0xffff;i++)
*P_Watchdog_Clear = 0x0001;
Timers--;
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -