当前位置:文档之家› 智能小车设计论文

智能小车设计论文

单片机课程设计题目智能小车的设计学生姓名饶晓东院(系)机械与电气工程学院班级 10机械电子工程01班学号 2010100548指导老师于祯完成日期 2013 年 5 月 31 日南昌工程学院课程设计(论文)任务书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、张俊漠,单片机中级教程-原理与应用北京航空航天大学出版社20022、郭天祥,51单片机c语言教程机械与电气系 10机械电子(本) 专业类 01班学生:饶晓东日期:自 2013 年 5 月20 日至 2013 年5 月31 日指导教师:于祯助理指导教师(并指出所负责的部分):教研室主任附注:任务书应该附在已完成的课程设计说明书首页。

摘要智能作为现代的新发明,是以后的发展方向,它可以按照预先设定的模式在一个环境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。

智能电动车就是其中的一个体现。

本次设计的简易智能电动车,采用AT89C52单片机作为小车的检测和控制核心;在小车行驶的过程中能够根据不同的要求通过改变PWM 输出改变小车的行驶速度。

本设计结构简单,较容易实现,但具有高度的智能化、人性化,一定程度体现了智能。

采用的技术主要有:1、通过AT89C52自带的定时器设置PWM输出来控制小车的速度;2、电机驱动芯片L298N控制两个直流电机的转向;3、数码管显示测量数据目录1. 设计任务: 52.方案设计、选择与确定 52.1 电源模块 52.1.1 方案1 52.1.2 方案2 52.1.3 方案选择 52.2数据显示模块 62.2.1 方案1 62.2.2 方案 2 62.3 测速模块: 62.3.1 方案1: 62.3.2 方案2: 62.4 控制模块 7 2.4.1 方案1 72.4.2 方案2 72.4.3 方案3 72.5总体方案 72.6人员分工 83. 硬件电路设计 8 3.1锁存器模块 8 3.2 单片机模块 8 3.3显示模块 93.4驱动模块 93.5整体模块 10 4.系统程序: 10 5. 心得体会 171. 设计任务:设计并制作了一个智能小车,实现小车的加速、减速、前进、后退,并可通过两个电机的不同转速实现左转和右转。

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.3显示模块3.4驱动模块3.5整体模块从单片机输出的信号功率很弱,即使在没有其它外在负载时也无法带动电机,所以在实际电路中我们加入了电机驱动芯片提高输入电机信号的功率,从而能够根据需要控制电机转动。

根据驱动功率大小以及连接电路的简化要求选择L298N,其外形、管脚分布如图所示。

从图中可以知道,一块L298N芯片能够驱动两个电机转动,它的使能端可以外接高低电平,也可以利用单片机进行软件控制,极大地满足各种复杂电路需要。

另外,L298N的驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决了负载能力不够这个问题。

4.系统程序:按照预定的功能,系统实现预定的功能的程序如下所示:#include <reg52.h>#define uchar unsigned charsbit 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;ucharnum1=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++; //加速键按下,速度标志加1num2++;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 elsenum1=1;if(num2!=1)num2--;elsenum2=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/4show_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<di_num2;n++) {pwm2=0;display();}}for(n=0;n<gao_num2;n++) {pwm2=1;display();}pwm2=0;if(di_num1!=0){for(n=0;n<di_num1;n++){pwm1=0;display();}}for(n=0;n<gao_num1;n++){pwm1=1;display();}pwm1=0;}}4.系统程序以及流程图:按键检测Y开启键是否按下速度标志至1NY暂停键是否按下速度标志清0加(减)速键 Y 是否最高 N 速度标志自加(减)是否按下(低)速YN前进(后退)速 Y 速度标志为正(负)键是否按下N左(右)转键 Y 两速度标志不同是否按下N通过速度标识,从而达到控制输出脉冲的占空比来控制电机的转速速码管显示速度值6.心得体会通过这次单片机课程设计,我不仅加深了对单片机理论的理解,将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。

相关主题