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

📄 main.c

📁 超声波倒车雷达的设计程序 利用SPCE061A单片机实现超声波倒车雷达的测量计算方法。程序中采用软件校正
💻 C
字号:
//============================================================================
//  工程名称:  Car_Radar 
//  功能描述:   超声波倒车雷达
//  IDE环境:   SUNPLUS u'nSPTM  IDE 2.0.0(or later)
//  涉及的库:	CMacro1016.lib
//  组成文件:  main.c
//				UserFunction.c	超声波测距子程序
//				IntDocument.c	中断服务程序,超声波测距的部分代码也在其中
//				system.c		系统端口初始化、部分功能程序
//				Speech.c		语音播放程序
//              isr.asm			语音播放使用的FIQ中断服务程序
//              hardware.asm	语音播放使用的支持文件(用户无需修改)
//              demo_start.c    开机动作,包括液晶上的欢迎画面及播放一段音乐
//              Led.c           静态LED显示的驱动
//              LCD_DISP.c      液晶显示的驱动    
//              
//  日期:       2006-4-13 
//============================================================================

//========================================================
//	文件名称:	main.c
//	功能描述:	主程序文件
//	维护记录:	2006-4-13	
//========================================================
#include "SPCE061A.h"

//for Measure   以下变量,函数在UserFunction.c中定义
extern unsigned int M_TIMER_DELAY;
extern unsigned int M_LOW_DISTEN;
extern unsigned int M_TIMER_OFFSET;
extern unsigned int M_TIMER_SEND;
extern unsigned int M_MUT_DATA;
extern void InitMeasure(void);
extern unsigned int  BeginMeasure(void);
//..end
extern void Initial_IO(void);
extern void Channel_Sel(unsigned int ch);		//通道选择
												//Result_Check函数为测量结果处理程序,
												//包括显示更新、语音播报
extern void Result_Check(unsigned int ch,unsigned int Result[3]);
extern void User_Delay(unsigned int iTimers);
extern void LCD_DISP_START(void);
extern void demo_strat(void);
unsigned int Back_Data[2]={153,153};
unsigned int Too_Freq;
//=======================================================================
//	语法格式:	void Delay_1ms(unsigned int Timers)
//	实现功能:	利用IRQ4的1KHz中断的ms延时程序
//	参数:		需要延时的ms数
//	返回值:	无
//=======================================================================
unsigned int Counter_1KHz = 0;					//用于1KHz中断里作为后台计数器用,用于延时
void Delay_1ms(unsigned int Timers)
{
	Counter_1KHz = 0;							//清零
	while(Counter_1KHz<Timers)					//循环等待该计数器在1KHz中断当中计数
	{											//达到预定值
		*P_Watchdog_Clear = 0x0001;
	}
}
//=======================================================================
//	语法格式:	int main(void)
//	实现功能:	多组超声波模组巡回测距、状态显示Demo程序
//				(超声波倒车达雷)主程序
//	参数:		无
//	返回值:	无意义
//=======================================================================
int main(void)
{
	unsigned int ch_Sel = 0;
	
	demo_strat();			
	InitMeasure();								//测距初始化
	Initial_IO();								//初始化系统所使用的端口
	*P_INT_Ctrl = *P_INT_Ctrl_New|0x0020;		//打开IRQ4的1KHz中断
	Too_Freq=9;
	M_TIMER_DELAY = 95;						//初始化测距所需要的参数....
	M_LOW_DISTEN = 7;
	M_TIMER_OFFSET = 20;
	M_TIMER_SEND = 14;
	M_MUT_DATA = 32800;							//...end
	
	while(1)
	{
		Channel_Sel(ch_Sel);					//选择通道
		Back_Data[ch_Sel] = BeginMeasure();		//进行一次测距
		Result_Check(ch_Sel,Back_Data);			//对每一通道测量结果进行处理

 		ch_Sel++;								//通道号数自加1
		if(ch_Sel>1) ch_Sel = 0;				//如果通道数超过了预设的,则归零
		Delay_1ms(20);							//延时20ms后再进行下一通道的测量
		*P_Watchdog_Clear = 0x0001;
	}
}

⌨️ 快捷键说明

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