扫码加入

  • 方案介绍
  • 相关推荐
申请入驻 产业图谱

2001年全国大学生电子设计竞赛C题-自动往返电动小汽车

1小时前
37
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2001年电赛C题-自动往返电动小汽车

  • 1、赛题回顾
  • 2、自动小车功能说明
  • 3、硬件部分说明
  • 4、系统程序设计
    • 4.1、LCD1602显示程序
    • 4.2、小车行驶距离处理程序
  • 5、资料下载
  • 6、历年电赛试题解析专栏

1、赛题回顾

 

2、自动小车功能说明

  • 本系统以设计题目的要求为目的,采用80C51单片机为控制核心,利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障,快慢速行驶,以及自动停车,并可以自动记录时间、里程和速度,自动寻迹。整个系统的电路结构简单,可靠性能高。

(一)任务
设计并制作一个能自动往返于起跑线与终点线间的小汽车,能在如图1-1所示的跑道上自动往返行驶。在跑道B,C,D,E,F和G处设有2cm宽的黑线
(二)要求

  1. 车辆从起跑线出发(出发前,车体不得超出起跑线),到达终点线后停留10秒,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上汽车电源开关开始计时)。
  2. 到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车辆中心点与终点线或起跑线中心线之间距离作为偏差的测量值)。
  3. D~E间为限速区,车辆往返均要求以低速通过,通过时间不得少于8秒,但不允许在限速区内停车
    利用超声波传感器检测道路上的障碍,控制电动小汽车的自动避障

各路段行驶速度要求:
BD段:小车全速前进。
DE段:首先以最快的速度减速,并同时开始计时,降至慢速度后保持基本恒速前进,当接近8秒时,开始加速并冲出此段区间。
EF段:小车全速前进。
FG段:首先以最快的速度减速,并且保持最低速度前进,当小车中间的传感器探测出黑线时便立即停车

3、硬件部分说明

  • 核心控制电路STM32F103Cortex-M3内核,最高频率72MHz,Flash存储器64KB或128KB,SRAM存储器20KB,支持模拟转换,包括12位ADC和12位DAC。
  • DDS信号发生器电路:AD9959,4个同步DDS通道,正好可以发送两个载波和调制波,通道间独立的频率/相位/幅度控制,可以同时设置两个不同的频率/相位/幅度,频率/相位/幅度变化的延迟匹配。
  • OPA847,是一款宽带、超低失真、超低噪声的电 压反馈型运算放大器。模块支持最高正负6.5V供电、高达3.9G的增益带宽积、 950V/us 的压摆率、高达75mA的输出驱动电流,可广泛的应用于ADC前端放 大、宽带高增益放大器以及低噪声差动放大器等场合。同时模块预留了接线端子 的信号输入输出接口,方便客户在低频应用时,可选择端子连接。

3.1、红外对光管黑线识别电路

  • 使用红外对管实现黑线识别电路,主要原理是通过红外发射管发射红外光,当红外光照射到不同颜色的表面时,反射光强度会发生变化。红外接收管接收反射回来的红外光信号,并根据光强变化输出不同的电平信号,从而实现黑线与白底的识别。该电路在智能小车循迹、自动巡线机器人等应用中非常常见。
  • 电路主要由红外发射管、红外接收管、限流电阻比较器以及信号处理模块组成。红外发射管一般使用工作波长约为940nm的红外LED,其阳极通过一个电阻接到+5V电源,阴极接地。红外接收管通常是光敏三极管光电二极管,当接收到反射的红外光时,光电流增大,输出电压发生变化。由于白色表面对红外光的反射强,黑色表面对红外光的吸收强,因此在白色区域接收信号强、输出电平低,而在黑色区域接收信号弱、输出电平高。
  • 为了提高信号的稳定性,电路通常加入一个比较器(如LM393),将光敏管的模拟信号与设定的参考电压进行比较,并输出明确的高低电平信号。比较器的参考电压通过电位器调整,可以适应不同环境光照强度和材料反射率的变化。比较器输出端接单片机IO口,当输出低电平时表示检测到白色区域,高电平表示检测到黑线。

电路:

3.2、LCD1602液晶显示电路

  • LCD1602液晶显示电路是单片机系统中常用的人机交互模块,用于显示字符信息、数据或状态提示。LCD1602是一种基于字符的液晶显示器,能够在两行上各显示16个字符,支持5×7点阵的字符显示,具有接口简单、显示直观等特点,因此被广泛应用于嵌入式系统设计中。
  • 该液晶模块主要通过并行总线与单片机进行数据通信,通常有8位数据接口和若干控制信号,包括RS、RW、E三条控制线。RS信号用于选择指令寄存器数据寄存器,当RS为低电平时表示写入命令,为高电平时表示写入显示数据;RW信号用于选择读或写操作,通常接地实现写操作;E信号是使能信号,当数据或命令写入时,需要给E一个高到低的脉冲,才能完成操作。

电路:

3.3、51单片机最小系统电路

  • 51单片机最小系统电路是单片机能够正常运行所需的基础电路,其主要功能是为单片机提供稳定的电源、时钟信号和复位控制。以STC89C52为例,最小系统主要包括电源电路时钟电路复位电路,这三部分构成了单片机运行的基本环境。
  • 电源电路负责为单片机提供稳定的+5V直流电压,通常采用稳压芯片如7805或AMS1117-5.0,将外部电源输入转换成稳定的+5V输出。在电源输入端常并联电解电容瓷片电容,用于滤波,减少电源波动对系统的影响,从而保证单片机在工作时电源电压稳定可靠。
  • 时钟电路为单片机提供指令执行的基准信号,一般采用12MHz或11.0592MHz的晶振,并在XTAL1和XTAL2引脚之间接入晶振,两端各并联一个30pF左右的电容到地,形成稳定的振荡回路。晶振频率决定了单片机的工作速度,同时对于串口通信精度也有重要影响,因此常根据应用选择合适的晶振频率。
  • 复位电路用于在上电或异常状态时将单片机恢复到初始状态,常采用电阻、电容和复位按键组合的方式实现。复位引脚RST在高电平时触发复位,通过在RST端串接一个电容到地并与上拉电阻配合,在上电瞬间形成高电平脉冲,实现自动复位。同时加入复位按键,使用户能够手动触发复位,确保系统在需要时能够重新启动。
  • 在最小系统基础上,通常还会扩展串口下载接口,用于程序烧录和调试,连接TXD、RXD和GND至USB转串口模块即可完成程序下载。此外,也可以扩展LED和按键作为调试辅助。总体来说,51单片机最小系统电路结构简单、成本低,既保证了单片机的正常工作,又为后续功能扩展提供了基础,是学习和开发过程中不可或缺的核心部分。

电路原理图

4、系统程序设计

4.1、LCD1602显示程序


/********************************************************************
* 名称 : write_sfm1(uchar hang,uchar add,uchar date)
* 功能 : 显示1位十进制数,如果要让第一行,第五个字符开始显示"2" ,调用该函数如下
	 	 write_sfm1(1,5,2)
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
void write_sfm1(uchar hang,uchar add,uchar date)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
	write_data(0x30+date%10);	
}

/********************************************************************
* 名称 : write_string(uchar hang,uchar add,uchar *p)
* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下
	 	 write_string(1,5,"ab cd ef;")
* 输入 : 行,列,需要输入1602的数据
* 输出 : 无
***********************************************************************/
void write_string(uchar hang,uchar add,uchar *p)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
		while(1)
		{
			if(*p == '�')  break;
			write_data(*p);
			p++;
		}	
}

/********************************************************************
* 名称 : clear_1602()
* 功能 : 清除1602显示
* 输入 : 无
* 输出 : 无
***********************************************************************/
void clear_1602()
{
	write_string(1,0,"                ");
	write_string(2,0,"                ");
}

/***********************lcd1602上显示特定的字符************************/
void write_zifu(uchar hang,uchar add,uchar date)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
	write_data(date);	
}

/***********************lcd1602上显示两位十进制数************************/
void write_sfm3_18B20(uchar hang,uchar add,uint date)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
	write_data(0x30+date/100%10);
	write_data(0x30+date/10%10);
	write_data('.');
	write_data(0x30+date%10);	
}

/***********************lcd1602上显示三位超声波数************************/
void write_csb3(uchar hang,uchar add,uint date)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
	write_data(0x30+date/100%10);
	write_data('.');		  
	write_data(0x30+date/10%10);
	write_data(0x30+date%10);	
}

/***********************lcd1602上显示两位十进制数************************/
void write_sfm_jl(uchar hang,uchar add,uint date)
{
	if(hang==1)   
		write_com(0x80+add);
	else
		write_com(0x80+0x40+add);
	write_data(0x30+date/100%10);
	write_data(0x30+date/10%10);
	write_data('.');
	write_data(0x30+date%10);	
}


/********************************************************************
* 名称 : init_1602()
* 功能 : 初始化1602液晶 
* 输入 : 无
* 输出 : 无
***********************************************************************/
void init_1602()
{
	write_com(0x38);
	write_com(0x0c);
	write_com(0x06);
	write_string(1,0,"sd:  cm jl:  . m");
	write_string(2,0," 00:00:00  hx:00");
	write_sfm2(2,1,shi);
	write_sfm2(2,4,fen);
	write_sfm2(2,7,miao);
	write_sfm2(1,3,shudu_ll);	  //显示速度
	write_sfm_jl(1,11,juli);	  //显示路程
}


4.2、小车行驶距离处理程序

/***********************处理距离函数****************************/
void wangfanche_display()
{
	if(flag_1s == 1)
	{
		flag_1s = 0;									 	   //cm
		shudu_ll = shudu_ll * (float)2.55; // 2.55 = 20.4 / 8 = 2.55 算出每一个脉冲的轮子走了多少距离
		juli += shudu_ll;   //计路程
		write_sfm_jl(1,11,juli / 10);	  //显示路程
		write_sfm2(2,1,shi);
		write_sfm2(2,4,fen);
		write_sfm2(2,7,miao);
		write_sfm2(1,3,shudu_ll);	  //显示速度
	}		
}

5、资料下载

点击下方联系获取:https://download.csdn.net/download/m0_51061483/91489994

6、历年电赛试题解析专栏

  • 点击查看:电赛试题解析汇总:https://blog.csdn.net/m0_51061483/category_10443456.html

相关推荐