智能小车设计论文
单片机课程设计
题 目
学生姓名
院(系)
班 级
学 号
指导老师
完成日期 年日
南 昌 工 程 学 院
课程设计(论文)任务书
I 、课程设计(论文) 题目: 智能小车的设计
II 、课程设计(论文) 使用的原始资料(数据) 及设计技术要求:
通过Intel8253和1298N 实现汽车的加速、减速、刹停,并可通过两个电 机的不同转速实现左转和右转等功能
III 、课程设计(论文) 工作内容及完成时间:
1、查阅资料,确定硬件系统框图组成。(5月20日~5月22日) 2、设计完整电原理图。(5月23日~5月25日) 3、设计软件结构流程框图。(5月26日~5月27日) 4、按流程编写各功能模块程序。(5月28日~5月29日) 5、完成课程设计报告(5月30日~5月31日)
Ⅳ 主 要参考资料: 1、张俊漠,单片机中级教程-原理与应用 北京航空航天大学出版社2002
2、郭天祥,51单片机c 语言教程
机械与电气 系 10机械电子(本) 专业类 01班
学生:饶晓东
日期: 自 2013 年 5 月20 日至 2013 年5 月31
指导教师:于祯
助理指导教师(并指出所负责的部分) :
教研室主任
附注:任务书应该附在已完成的课程设计说明书首页。
日
摘要
智能作为现代的新发明,是以后的发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能电动车就是其中的一个体现。本次设计的简易智能电动车,采用AT89C52单片机作为小车的检测和控制核心;在小车行驶的过程中能够根据不同的要求通过改变PWM 输出改变小车的行驶速度。本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能。 采用的技术主要有:
1、通过AT89C52自带的定时器设置PWM 输出来控制小车的速度;2、电机驱动芯片L298N 控制两个直流电机的转向; 3、数码管显示测量数据
目录
1. 设计任务: ...................................................................................................................... 6 2. 方案设计、选择与确定 .................................................................................................... 6 2.1 电源模块 . ....................................................................................................................... 6 2.1.1 方案1 . ....................................................................................... 错误!未定义书签。 2.1.2 方案2 . ....................................................................................... 错误!未定义书签。 2.1.3 方案选择 . .................................................................................. 错误!未定义书签。 2.2数据显示模块 ................................................................................................................. 6 2.2.1 方案1 . ....................................................................................... 错误!未定义书签。 2.2.2 方案 2 . ...................................................................................... 错误!未定义书签。 2.3 测速模块: .................................................................................. 错误!未定义书签。 2.3.1 方案1: . ................................................................................... 错误!未定义书签。 2.3.2 方案2: . ................................................................................... 错误!未定义书签。 2.4 控制模块 . ....................................................................................................................... 6 2.4.1 方案1 . ....................................................................................... 错误!未定义书签。 2.4.2 方案2 . ....................................................................................... 错误!未定义书签。 2.4.3 方案3 . ....................................................................................... 错误!未定义书签。 2.5总体方案 . ........................................................................................................................ 7 2.6人员分工 . ........................................................................................................................ 7 3. 硬件电路设计 .................................................................................................................. 7 3.1锁存器模块 ..................................................................................................................... 7 3.2 单片机模块 .................................................................................................................... 7 3.3显示模块 . ........................................................................................................................ 8 3.4驱动模块 . ........................................................................................................................ 8 3.5整体模块 . ........................................................................................................................ 9 4.系统程序: ..................................................................................................................... 9 5. 心得体会 ........................................................................................................................ 15
1. 设计任务:
设计并制作了一个智能小车,实现小车的加速、减速、前进、后退,并可通过两
个电机的不同转速实现左转和右转。
2. 方案设计、选择与确定 2.1 电源模块
直接使用一般5号电池串联给单片机电机供电,该方案优点是方案比较简单方便,价格便宜。
2.2数据显示模块
用数码管及时显示小车的数度档位,共有四档,1
而显示数度等级。
档最低,4档最高,从
2.4 控制模块
使用STC89C52单片机。STC89C52单片机价格便宜,片内资源也比较丰富,但是外部中断口较少,而且使用其定时器模拟PWM 输出是占用太对CPU 时间,使用起来不方便。
使用 Mega128 单片机。Mega128片内资源也比较丰富,但是外部中断口较多,功能强大,但是价格比较贵,而且其封装只有贴片封装不方便使用。
AT89C52是一个低电压,高性能CMOS 8位单片机,片内含8k bytes 的可反复擦写的Flash 只读程序存储器和256 bytes 的随机存取数据存储器(RAM ),器件采用ATMEL 公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash 存储单元。 所以最终选择AT89C52。
2.5总体方案
整个电路系统分为AT89C52控制、滤波电路、L298N 电机驱动、LCD 液晶显示六个模块。首先利用输出相应的信号给驱动芯片驱动电机转动, 从而控制整个小车的运动过程。
2.6人员分工
由于该系统设计的工作量比较大,我们选择人员分小组分模块设计调试方式。既可以发挥各个队员的优势又能发挥团体协作的力量。 我们组有10个人,分成:
主要负责硬件设计调试以及相关资料的搜索。 负责软件设计调试以及相关资料的搜索。
3. 硬件电路设计 3.1锁存器模块
3.2 单片机模块
3.4驱动模块
从单片机输出的信号功率很弱,即使在没有其它外在负载时也无法带动电机,所以在实际电路中我们加入了电机驱动芯片提高输入电机信号的功率,从而能够根据需要控制电机转动。根据驱动功率大小以及连接电路的简化要求选择L298N ,其外形、管脚分布如图所示。从图中可以知道,一块L298N 芯片能够驱动两个电机转动,它的使能端可以外接高低电平,也可以利用单片机进行软件控制,极大地满足各种复杂电路需要。另外,L298N 的驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决了负载能力不够这个问题。
4.系统程序:
按照预定的功能,系统实现预定的功能的程序如下所示:
#include
#define uchar unsigned char
sbit dula=P3^0; //数码管显示段选I/0口定义 sbit wela=P3^1; //数码管显示位选I/0口定义
sbit pwm1=P1^6; //1号电机输出脉冲 sbit pwm2=P1^7; //2号电机输出脉冲 sbit jia_key=P2^6; //加速键 sbit jian_key=P2^7; //减速键
sbit zuozhuan_key=P2^4; //左转键 sbit youzhuan_key=P2^5; //右转 sbit qianjing_key=P2^2; //请进按钮 sbit houtui_key=P2^3; //后退 按钮 sbit kaiqi_key=P2^0; //开启按钮 sbit zt_key=P2^1; //停按钮 sbit b0=P1^0; //控制1号电机正转 sbit b1=P1^1; //控制1号电机正转 sbit b2=P1^2; //控制2号电机正转 sbit b3=P1^3; //控制2号电机反转 sbit b4=P1^4; //控制L298的开关 sbit b5=P1^5;
uchar num1=0,num2=0,show_num=0,gao_num1=0,di_num1=0,gao_num2=0,di_num2=0; uchar code table[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};//数码管显示的数据表格 void delay(uchar sj) //延时程序 { uchar j,k; for(j=sj;j>0;j--) for(k=110;k>0;k--); }
void display() //显示程序 {
dula=0;
P0=table[show_num]; dula=1; dula=0; wela=0; P0=0xfe; wela=1; wela=0; delay(5); } void key() //按键检测处理函数 { if(kaiqi_key==0&&b4==0&&b5==0) { delay(5); //消抖
if(kaiqi_key==0) //开启键
{
b4=1; //开启L298驱动器
b5=1;
num1=1; //让1号电机到一档
num2=1; //2号电机至2档
b0=1; //让1号电机正转
b1=0;
b2=1; //让2号电机反转
b3=0;
while(kaiqi_key==0);
}
}
if(zt_key==0&&b4==1&&b5==1) //暂停
{
delay(5);
if(zt_key==0)
{
b4=0;
b5=0;
b0=0;
b1=0;
b2=0;
b3=0;
while(zt_key==0);
}
}
if(jia_key==0&&b4==1&&b5==1) //加速
{
delay(5);
if(jia_key==0)
{
num1++; //加速键按下,速度标志加1
num2++;
if(num1==5) //已达到最大3,则保持
num1=4;
if(num2==5)
num2=4;
while(jia_key==0); //等待按键松开
}
}
if(jian_key==0&&b4==1&&b5==1)
{
delay(5);
if(jian_key==0)
{
if(num1!=1)
num1--; //减速键按下,速度标志位减1
else
num1=1;
if(num2!=1)
num2--;
else
num2=1;
while(jian_key==0);
}
}
if(qianjing_key==0&&b4==1&&b5==1)
{
delay(5);
if(qianjing_key==0)
{
b0=1;
b1=0;
b2=1;
b3=0;
while(qianjing_key==0);
}
}
if(houtui_key==0&&b4==1&&b5==1) //后退键
{
delay(5);
if(houtui_key==0)
{
b0=0;
b1=1;
b2=0;
b3=1;
while(houtui_key==0);
}
}
if(zuozhuan_key==0&&b4==1&&b5==1)
{
delay(5);
if(zuozhuan_key==0)
{
num1=1;
num2=2;
}
}
if(youzhuan_key==0&&b4==1&&b5==1) //右转标志
{
delay(5);
if(youzhuan_key==0)
{
num1=2;
num2=1;
while(youzhuan_key==0);
}
}
}
void dispose() //根据速度标志进行处理
{
switch(num1)
{ case 1: //一档的时候高电平占1/4
show_num=1;
gao_num1=1;
di_num1=3;
break;
case 2:
show_num=2; //二档的时候高电平占2/4
gao_num1=2;
di_num1=2;
break;
case 3:
show_num=3;
gao_num1=3;
di_num1=1;
break;
case 4:
show_num=4;
gao_num1=4;
di_num1=0;
break;
}
switch(num2)
{ case 1:
gao_num2=1;
di_num2=3;
break;
case 2:
gao_num2=2;
di_num2=2;
break;
case 3:
gao_num2=3;
di_num2=1;
break;
case 4:
gao_num2=4;
di_num2=0;
break;
}
}
void main()
{
uchar m;
uchar n;
b0=0;
b1=0;
b2=0;
b3=0;
b4=0;
b5=0;
pwm1=0;
pwm2=0;
while(1)
{
key();
dispose();
if(di_num2!=0)
{
for(n=0;n
{
pwm2=0;
display();
}
}
for(n=0;n
{
pwm2=1;
display();
}
pwm2=0;
if(di_num1!=0)
{
for(n=0;n
{
pwm1=0;
display();
}
}
for(n=0;n
{
pwm1=1;
display();
}
pwm1=0;
}
}
4.系统程序以及流程图:
6. 心得体会 通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 这个设计过程中,我们通过学习,参考资料学会了编程,绘图,小车组装等过程。设计结果能够符合题意,成功完成了此次实习要求,我们不只在乎这一结果,更加在乎的,是这个过程。这个过程中,我们花费了大量的时间和精力,更重要的是,我们在学会创新的基础上,同时还懂得合作精神的重要性,学会了与他人合作。
7. 参考文献
[1]郭天祥,51单片机c 语言教程
[2]德杰. 电气测试技术[M]. 北京:机械工业出版社,2008.1
[3]张洪润,张亚凡. 传感技术与应用教程[M]. 北京:清华大学出版社,2005.1
[4]陈冬云,杜敬仓,任柯燕. Atmega128 单片机原理与开发指导[M]. 北京:机械工业出版社,2005.10
[5]李广弟. 单片机基础[M]. 北京:北京航空航天大学出版社,2007.6
[6]楼然苗,李光飞. 单片机课程设计指导[M]. 北京:北京航空航天大学出版社,2007.7
[7]谭浩强. C程序设计教程[M]. 北京:清华大学出版社,2007.7