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

📄 main.c

📁 基于SPCE061A的带语音功能的超声波测距系统的源代码
💻 C
字号:
//===============================================================
//
//        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 2004   SUNPLUS TECHNOLOGY CO.
//                           ALL RIGHTS RESERVED
//
//    The entire notice above must be reproduced on all authorized copies.
//
//==============================================================


//============================================================
//  project  name:  20HzOut.scs
//  Author: xinqiang  (email: xinqiang@sunnorth.com.cn)    
//  Tel: 010-62981668-xxxx
//  Applied body: SPCE061A
//  Project Description:  flash erase and write driver
//
//  System Description: PC with CPU 233MHz,128MB RAM,
//                      SUNPLUS u'nSP IDE 1.8.4(or later)
//
//   Library:(a) sacmv25.lib
//            (b) 
//
// Files List:
//     main.c
//     Flash.asm/hardware.asm 
//     hardware.h/hardware.inc
//
//  Current Version:  V1.0
//  Date:  2004-7-13
//  
//  Reference:
//  Version history:
//--------------------------------------------------------------------------------------------------------
//  Version   YYYY-MM-DD-INDEX   Modified By         Description
//
//===============================================================
//============================================================
//  工程名称:?  20HzOut.scs
//  作者: xinqiang  (email: xinqiang@sunnorth.com.cn)    
//  联系方式:? 010-62981668-xxxx
//  适应芯片: SPCE061A
//  实现功能:  flash erase and write driver
//
//  系统要求: PC with CPU 233MHz,128MB RAM,
//                      SUNPLUS u'nSP IDE 1.8.4(or later)
//
//   涉及的库:(a) sacmv25.lib
//             (b) 
//
// 组成文件:
//     main.c
//     Flash.asm/hardware.asm 
//     hardware.h/hardware.inc
//
//  当前版本:  V1.0
//  日期:  2004-7-13
//  
//  参考文件:
//  维护记录:
//--------------------------------------------------------------------------------------------------------
//  Version   YYYY-MM-DD-INDEX   Modified By         Description
//
//===============================================


///////////////////////////////////////////////////////////////////////////////
//程序名称:20Hz Out Test_main.c
//描述:  A口的一个口输出20Hz的方波,用于超声波模组的40KHz波形的调制
      //同时用B口的一个IO口测超声波模组的出输信号,以测出距离
      
//========================================================================================
#include <SPCE061A.h>


#define M_KEY_ENTER		  0x0001	//按键  进行一次测量
#define M_KEY_BACK		  0x0006	//查询按键,向后查询
#define M_KEY_FROND		  0x0007	//查询按键,向前查询

#define M_LCD_SHOW_DOT	  0x0008	//LCD显示小数点给p+9
#define M_LCD_SHOW_SET	  0x0001	//LCD显示正常标识p+10
    
unsigned int uiIOB_20Hz_flag;		//IOB01口(即20Hz方波输出口)的状态标识
unsigned int uiEXT_EN_flag;			//外部中断使能标识位

unsigned int uiMeasure_Index;		//当前测量的次数
unsigned int uiResult[4];			//保存测四次测量结果的缓存区

extern unsigned int uiRS_ReciveFlag;
extern unsigned int uiTX_Buff[5];	//发送数据缓冲区
//用于液晶显示及扫键的
extern void InitIsr(void);
extern void InitSPL10A(void);
extern void RefreshLCD(void);
extern CheckKeypad(void);
extern DisplayBuffer;
unsigned int *p;					//指向显示缓冲区的指针
//......end
void User_Delay(unsigned int iTimers);
void US_Send200us(void);
void BeginMeasure(void);

int main()
{	
	__asm("INT OFF");
	InitSystem();					//系统初始化
	InitData();						//全局数据初始化
	
	p=&DisplayBuffer;				//指针P指向显示缓冲区
	InitIsr();						//开放1KHz中断,用于100ms定时
	InitSPL10A();					//SPL10A初始化
	
	*(p+10) = 0x0001;
	RefreshLCD();
//	Speech_Resource(17);		
	//主循环  等待中断	
	while(1)
	{
		switch(CheckKeypad())		//扫键,根据按键值进入不同的操作
		{
			case M_KEY_ENTER: BeginMeasure();break;					//进行一次测量
			case 2: Speech_Resource(18);Measure_Data_Save();break;	//保存测量数据
			case 3: break;
			case 4: break;
			case 5: break;
			case 6: Speech_Resource(18);Measure_Data_Read(0);break;	//向后查询测量数据
			case 7: Speech_Resource(18);Measure_Data_Read(1);break;	//向前查询测量数据
			case 8: break;
			default: break;
		}
		if(uiRS_ReciveFlag)			//串行口接收到测量命令
		{
			BeginMeasure();			//启动测量
			uiRS_ReciveFlag=0;
		}
	}
}
//延时程序
//
void User_Delay(unsigned int iTimers)
{
	unsigned int i;
	for(i=0;i<iTimers;i++)
	{
		__asm("nop");
	}
}

⌨️ 快捷键说明

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