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

📄 main.c

📁 用C编写基于凌阳SPCE061A芯片的图象识别模块可实现(1)获得数据并处理。(2)控制按扭KEY1
💻 C
字号:
#include "Eagle_Lookaround.h"
#include "SPCE061V004.H"
//================================================================
//
//        The information contained herein is the exclusive property of
//      Sunplus Technology Co. And shall not be distributed, reproduced,
//      or disclosed in whole in part without prior written permission.
//
//            (C) COPYRIGHT 2003   SUNPLUS TECHNOLOGY CO.
//                           ALL RIGHTS RESERVED
//
//    The entire notice above must be reproduced on all authorized copies.
//
//=================================================================
//  工程名称: Eagle_Lookaround.spj  
//  功能描述: (1)获得数据并处理。
//			  (2)控制按扭KEY1,播放物体的形状和颜色。
//			  (3)分辩的颜色:红色、绿色、蓝色、黄色。
//			  (4)分辩的形状:正方形、长方形、圆形、三角形。
//			  (5)控制按键KEY2,小车跟着红色的物体移动,别的颜色不做跟踪。
//  文件来源: 无
//  IDE环境:  SUNPLUS u'nSPTM  IDE 1.8.4(or later)
//  硬件连接: 
//			  SPCE061A  ----  EAGLE DEMO
//			  -------------------------------
//			   PA8		 ----  SCK
//			   PA9       ----  SDA
// 			   PA10      ----  LOAD
//             PA11      ----  RESET
//			  -------------------------------
//			   SPCE061A  ----  小车 DEMO
//			   PB10      ----   PB10
//             PB11      ----   PB11
//             PB12      ----   PB12
//             PB13      ----   PB13
//			  -------------------------------
//  涉及的库: CMacro.lib,sacmv26e.lib;
//            	
//  组成文件:
//				main.c
//    			hardware.asm\hardware.inc
//				FIQ.asm
//          	Lookaround.c
//				Find_Clock_Shape.asm
//				VR_Funtion.c
//				master.asm
//          	Eagle_Lookaround.h
//  日期:   	2003/12      											
//===============================================================

//======================= 全程变量设置开始 ================================
int 	gActivated;								// 该变量用于检测是否有触发命令,当有识别出语句		                    		
int 	VR_PrevResult_Color;					// 存贮物体的颜色	
int 	VR_PrevResult_Shape;					// 存贮物体的形状
int 	VR_PrevResult_CenterX;					// 存贮水平距离
int 	VR_PrevResult_CenterY;					// 存贮垂直距离
int 	VR_PrevResult_AreaH;					// 存贮空间距离高位地址
int 	VR_PrevResult_AreaL;					// 存贮空间距离低位地址
int 	VR_OverFlag;							// 结束标志
int 	VR_TimeFlag;							// 时间标志
int 	VR_TimeDeldy;							// 时间计数
int 	SleepCount;								// 是否进入睡眠的计数
unsigned 	int 	Key;						// 键盘的值
//======================= 全程变量设置结束 ================================

//======================= 子程序开始 ======================================
//===================================================
//函数:PlayRespond(int Result);
//语法:调用
//描述:播放A2000格式的语音文件
//参数:播放语音文件的索引号
//返回:无
//===================================================	
void PlayRespond(int Result)
{
	unsigned int Ret;
	Ret = *P_INT_Mask;
	SACM_A2000_Initial(1);						// 初始化
	*P_INT_Mask |= Ret;
	SACM_A2000_Volume(3);						// 设置播放的音量 
	SACM_A2000_Play(Result, 3, 3);				// 播放资源文件中的语音
	while((SACM_A2000_Status()&0x0001) != 0)	// 是否播放完成
	{
		SACM_A2000_ServiceLoop();				// 语音资源文件进行译码
	}
	SACM_A2000_Stop();							// 播放结束
}

//========================== 子程序结束 ===================================

//========================== 主程序开始 ===================================
//===================================================
//函数:int main();
//语法:
//描述:主程序
//参数:无
//返回:无
//===================================================
int main()
{
	Key = 0;
	gActivated = 0;								// 初始化变量部分
	VR_OverFlag = 0 ;					
	VR_TimeFlag = 0 ;
	VR_TimeDeldy = 0 ;	
	SleepCount = 0;
	
	*P_LVD_Ctrl = C_LVD28V;						// 设置电压检测低限为2.8V
										
	SP_Init_IOA(0xfb00,0xfb00,0xfb00);			// 初始化I/O口
	SP_Init_IOB(0xffff,0x001f,0xffff);
	Enable_1KHzAnd2HzInt();						// 1KHzAnd2Hz的设置
	ResetEagle3();								// 复位SPCA531		
	IntialToEagle3();							// 初始化SPCA563

	VR_TimeFlag = 0;							// 延时约5S,这时让eagle正对着一张白纸,作自动白平衡
	VR_TimeDeldy = 0;
	while (VR_TimeFlag !=1)
		Delay(5000);

	SetAWBOFF();								// 关闭自动白平衡功能
	PlayRespond(S_Sir);							// 使用 SCAM2000播放回答
	
	while(1)
	{	
		if(*P_LVD_Ctrl&0x8000)					// 电压太低发出YEAH四声,提示换电池			
		{
			PlayRespond(S_Yes);					// SCAM2000播放回答			
			PlayRespond(S_Yes);					// SCAM2000播放回答			
			PlayRespond(S_Yes);					// SCAM2000播放回答			
			PlayRespond(S_Yes);					// SCAM2000播放回答						
		}
		Key = SP_Import(P_IOA_Data);
		Key &= 0x000f;
		if (Key != 0)
		{
			switch(Key)
			{
				case 1:						
					PlayRespond(S_Yes);			// SCAM2000播放回答			
		    		VR_Search_Color();    		// 辩识颜色和形状 
		   			break;    		
	    		case 2:    			    	
	    			VR_Chase_Ball();    		// 跟踪物体的移动 		
	    			break;
	   			default:
	   			break;  	                                                                                                                                                                                                                                                                                                                                                                                                                                 	VR_Search_Color();
			}
		}
	}	
}
//========================== 主程序结束 ===================================

⌨️ 快捷键说明

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