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

📄 main.c

📁 利用SPCE061A单片机、三个超声波测距模组实现超声波倒车雷达
💻 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.
//============================================================================
//============================================================================
//  工程名称:  Car_Radar 
//  功能描述:   超声波倒车雷达应用方案,配合2005~2006新版毕业设计大礼包发行
//  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	语音播放使用的支持文件(用户无需修改)
//              
//	硬件连接:	IOA8、IOA9、IOA10外接三个发光二极管
//				IOB0、IOB1接CD4052(模拟开关)的A0、A1,作为通道先择用
//				IOB2	作为回波信号接收,请参考提供的电路图连接
//				IOB3	作为超声波模组发射使能,请参考提供的电路图连接
//  日期:       2005-12-13 v1.0
//============================================================================

//========================================================
//	文件名称:	main.c
//	功能描述:	主程序文件
//	维护记录:	2005-12-13	v1.0
//========================================================
#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]);

//=======================================================================
//	语法格式:	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 Back_Data[3];
	unsigned int ch_Sel = 0;
	InitMeasure();								//测距初始化
	Initial_IO();								//初始化系统所使用的端口
	
	*P_INT_Ctrl = *P_INT_Ctrl_New|0x0020;		//打开IRQ4的1KHz中断

	M_TIMER_DELAY = 200;						//初始化测距所需要的参数....
	M_LOW_DISTEN = 30;
	M_TIMER_OFFSET = 20;
	M_TIMER_SEND = 15;
	M_MUT_DATA = 32300;							//...end
	
	while(1)
	{
		Channel_Sel(ch_Sel);					//选择通道
		Back_Data[ch_Sel] = BeginMeasure();		//进行一次测距
		Result_Check(ch_Sel,Back_Data);			//对每一通道测量结果进行处理

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

⌨️ 快捷键说明

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