⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 电压控制程序,符合各种设备需要,核心程序,IBm专属
💻 C
字号:
//========================================================================
//	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
//	功能描述:	《实验仪指导书》综合实验
//              语音识别+LCD显示演示程序,配合综合实验4
//				采用特定人识别技术,程序开始时用户需要对语音识别进行训练,每
//				条指令训练两次,训练成功后,才开始真正的语音辨识,针对用户发
//				出的不同语音指令,LCD上显示不同的表情,并播放对应的语音,以回
//				应语音指令
//	涉及的库:	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
//	硬件连接:	硬件连接主要是针对实验仪LCD的连线,如下:
//				LCD  DB0~DB7接IOA0~IOA7
//				LCD  EP   接IOB5
//				LCD  RW   接IOB4
//				LCD  A0   接IOB3
//				LCD  CS   接IOB2  或接地也可
//
//	维护记录:	2005-10-16	v1.0    by xinqiang
//				
//	注	  意:	本工程当中的LCD驱动程序为精简版,为了减小ROM空间的占用,将LCD
//				驱动当中的8X16 ASCII码显示功能取消掉,望见谅
//========================================================================
//********************************************************************************//
//-- 在程序中我们通过五条语句的训练演示特定人连续音识别。
//-- 
//-- 在程序一开始为训练名称,然后提示训练剩下的四条命令,训练完毕开始辨识,当识别
//命令则会听到应答,具体命令如下:
//****************训练******************************************
//    提示音                          输入语音
//--------------------------------------------------------
//"1"                    	训练名字----"??"
//"2"                    	"how are you"
//"3"                   	"happy new year"
//"4"                   	"I love you"
//"5"                   	"go to sleep"
//"Hoo"	(每条命令要训练两次,而训练完一次后会提示该音,用户需要再一次输入该命令声音)
//"OHOH"(当训练出错时,发出此声,用户需要重新训练当前的命令)
//音乐(完成训练,进入辨识状态)
//*****************识别*****************************************
//     发布命令                           应答	
//---------------------------------------------------------
//名字"??"                            "lalalalala"
//"how are you"                         "I`m fine"
//"happy new year"                      "happy new year"
//"I love you"                        	"I love you too"
//"go to sleep"                        	"ZZZZ"

//注意:在每次提示音结束后1-2秒再输入命令或当上次应答结束1-2秒后再发布命令
//********************************************************************************//
//========================================================================
//	文件名称:	main.c
//	功能描述:	语音识别+LCD显示程序主程序文件
//				包括主程序
//	维护记录:	2005-10-16	v1.0
//========================================================================
#include "bsrSD.h"									//包含语音识别库的头文件
#include "SPLC501User.h"							//包含SPLC501液晶驱动的头文件
#include "face.h"									//包含要显示的图片的头文件
#define P_Watchdog_Clear	(unsigned int*)0x7012

void Delay(unsigned int Timers);
//========================================================================
//	语法格式:	int main(void)
//	实现功能:	主程序
//	参数:		无
//	返回值:	无
//========================================================================
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);							//设置LCD绘图显示模式为取反叠加模式
	LCD501_Bitmap(40,20,(unsigned int *)encoding_02);//显示图像
	
	ReTrainBS();									//调用语音识别的训练程序,在Sound.c中定义
	Play_Sound(12);
	//..........开始识别命令.........................
	BSR_InitRecognizer(BSR_MIC);		    		//辨识器初始化
	
	LCD501_Bitmap(40,20,(unsigned int *)encoding_00);//显示图片
	
	while(1)
	{
		res = BSR_GetResult();						//获取语音识别结果,在库中定义
		switch(res)									//根据识别的结果进行分支跳转
		{
			case 0x100:								//name ID
				LCD501_Bitmap(40,20,(unsigned int *)encoding_01);
				Play_Sound(7);						//播放:lalalalala
				Loop_Counter = 0;					//计数清零
				break;
			case 0x101:								//命令一 ID
				LCD501_Bitmap(40,20,(unsigned int *)encoding_02);
				Play_Sound(5);						//播放:I`m fine
				Loop_Counter = 0;					//计数清零
				break;
			case 0x102:								//命令二 ID
				LCD501_Bitmap(40,20,(unsigned int *)encoding_04);
				Play_Sound(8);						//播放:Happy new year
				Loop_Counter = 0;					//计数清零
				break;
			case 0x103:								//命令三 ID
				LCD501_Bitmap(40,20,(unsigned int *)encoding_03);
				Play_Sound(6);						//播放:I love you too
				Loop_Counter = 0;					//计数清零
				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;					//计数清零
				break;
			default:
				break;
		}
		Loop_Counter++;								//循环计数器自加一,用于程序中的状态状断
		if(Loop_Counter>=600)						//如在循环次数里没有命令,则显示初始图片
		{
			LCD501_Bitmap(40,20,(unsigned int *)encoding_00);
			Loop_Counter = 0;
		}
		*P_Watchdog_Clear = 0x0001;					//清看门狗
	}
}
//========================================================================
//	语法格式:	void Delay(unsigned int Timers)
//	实现功能:	延时子程序
//	参数:		Timers  延时的时长控制参数
//	返回值:	无
//========================================================================
void Delay(unsigned int Timers)
{
	unsigned int i;
	while(Timers!=0)
	{
		for(i=0;i<0xffff;i++)
			*P_Watchdog_Clear = 0x0001;
		Timers--;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -