單片機源程序如下:
/***************************飛音云電子****************************
** 工程名稱:YS-V0.7語音識別模塊驅動程序
** CPU: STC11L08XE
** 晶振:22.1184MHZ
** 波特率:9600 bit/S
** 說明:普通+按鍵觸發模式: 即每次識別時都需要說“小杰”這個口令 ,才能夠進行下一級的識別
/***************************飛音云電子******************************/
#include "config.h"
/************************************************************************************/
// nAsrStatus 用來在main主程序中表示程序運行的狀態,不是LD3320芯片內部的狀態寄存器
// LD_ASR_NONE: 表示沒有在作ASR識別
// LD_ASR_RUNING: 表示LD3320正在作ASR識別中
// LD_ASR_FOUNDOK: 表示一次識別流程結束后,有一個識別結果
// LD_ASR_FOUNDZERO: 表示一次識別流程結束后,沒有識別結果
// LD_ASR_ERROR: 表示一次識別流程中LD3320芯片內部出現不正確的狀態
/***********************************************************************************/
uint8 idata nAsrStatus=0;
void MCU_init();
void ProcessInt0(); //識別處理函數
void delay(unsigned long uldata);
void User_handle(uint8 dat);//用戶執行操作函數
void Led_test(void);//單片機工作指示
uint8_t G0_flag=DISABLE;//運行標志,ENABLE:運行。DISABLE:禁止運行
sbit LED=P4^2;//信號指示燈
void Delay200ms();
sbit CMD_KE=P4^1;//觸發按鍵
/***********************************************************
* 名 稱: void main(void)
* 功 能: 主函數 程序入口
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void main(void)
{
uint8 idata nAsrRes;
uint8 i=0;
Led_test();
MCU_init();
LD_Reset();
UartIni(); /*串口初始化*/
nAsrStatus = LD_ASR_NONE; // 初始狀態:沒有在作ASR
#ifdef TEST
PrintCom("串口運行中....rn"); /*text.....*/
PrintCom("口令:1、代碼測試rn"); /*text.....*/
PrintCom(" 2、開發板驗證rn"); /*text.....*/
PrintCom(" 3、開燈rn"); /*text.....*/
PrintCom(" 4、關燈rn"); /*text.....*/
PrintCom(" 5、北京rn"); /*text.....*/
PrintCom(" 6、上海rn"); /*text.....*/
PrintCom(" 7、廣州rn"); /*text.....*/
#endif
while(1)
{
switch(nAsrStatus)
{
case LD_ASR_RUNING:
case LD_ASR_ERROR:
break;
case LD_ASR_NONE:
{
nAsrStatus=LD_ASR_RUNING;
if (RunASR()==0) /* 啟動一次ASR識別流程:ASR初始化,ASR添加關鍵詞語,啟動ASR運算*/
{
nAsrStatus = LD_ASR_ERROR;
}
break;
}
case LD_ASR_FOUNDOK: /* 一次ASR識別流程結束,去取ASR識別結果*/
{
nAsrRes = LD_GetResult(); /*獲取結果*/
User_handle(nAsrRes);//用戶執行函數
nAsrStatus = LD_ASR_NONE;
break;
}
case LD_ASR_FOUNDZERO:
default:
{
nAsrStatus = LD_ASR_NONE;
break;
}
}// switch
}// while
}
/***********************************************************
* 名 稱: LED燈測試
* 功 能: 單片機是否工作指示
* 入口參數: 無
* 出口參數:無
* 說 明:
**********************************************************/
void Led_test(void)
{
LED=~ LED;
Delay200ms();
LED=~ LED;
Delay200ms();
LED=~ LED;
Delay200ms();
LED=~ LED;
Delay200ms();
LED=~ LED;
Delay200ms();
LED=~ LED;
}
/***********************************************************
* 名 稱: void MCU_init()
* 功 能: 單片機初始化
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void MCU_init()
{
P0 = 0xff;
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;
P4 = 0xff;
P1M0=0XFF; //P1端口設置為推挽輸出功能,即提高IO口驅動能力,從驅動繼電器模塊工作
P1M1=0X00;
LD_MODE = 0; // 設置MD管腳為低,并行模式讀寫
IE0=1;
EX0=1;
EA=1;
}
/***********************************************************
* 名 稱: 延時函數
* 功 能:
* 入口參數:
* 出口參數:
* 說 明:
* 調用方法:
**********************************************************/
void Delay200us() //@22.1184MHz
{
unsigned char i, j;
_nop_();
_nop_();
i = 5;
j = 73;
do
{
while (--j);
} while (--i);
}
void delay(unsigned long uldata)
{
unsigned int j = 0;
unsigned int g = 0;
while(uldata--)
Delay200us();
}
void Delay200ms() //@22.1184MHz
{
unsigned char i, j, k;
i = 17;
j = 208;
上一篇:51單片機控制步進電機和直流減速電機
下一篇:單片機單總線掛2片ds18b20傳感器,8位數碼同時管顯示
推薦閱讀最新更新時間:2025-05-07 02:45





設計資源 培訓 開發板 精華推薦
- ULN2803F雙五線四相步進電機驅動模塊
- arduino_plus
- 使用 ROHM Semiconductor 的 BA50BC0WFP-E2 的參考設計
- RH1013M典型應用——雙路精密運算放大器
- 使用 ROHM Semiconductor 的 BD4732 的參考設計
- REF193 低壓差開爾文連接電壓基準的典型應用電路
- ESP323 Spectrum 律動盒子
- AC160214-1, DALI Adapter 使照明通訊主板可以作為 DALI 控制裝置 (Receiver) 或 DALI 控制裝置 (Controller) 運作
- 1811571117-QN8027
- ADR441B 2.5 Vout 超低噪聲、LDO XFET 電壓基準的典型應用,具有電流吸收器和電流源