单片机课设小车.docx

上传人:b****5 文档编号:14375638 上传时间:2023-06-22 格式:DOCX 页数:17 大小:48.34KB
下载 相关 举报
单片机课设小车.docx_第1页
第1页 / 共17页
单片机课设小车.docx_第2页
第2页 / 共17页
单片机课设小车.docx_第3页
第3页 / 共17页
单片机课设小车.docx_第4页
第4页 / 共17页
单片机课设小车.docx_第5页
第5页 / 共17页
单片机课设小车.docx_第6页
第6页 / 共17页
单片机课设小车.docx_第7页
第7页 / 共17页
单片机课设小车.docx_第8页
第8页 / 共17页
单片机课设小车.docx_第9页
第9页 / 共17页
单片机课设小车.docx_第10页
第10页 / 共17页
单片机课设小车.docx_第11页
第11页 / 共17页
单片机课设小车.docx_第12页
第12页 / 共17页
单片机课设小车.docx_第13页
第13页 / 共17页
单片机课设小车.docx_第14页
第14页 / 共17页
单片机课设小车.docx_第15页
第15页 / 共17页
单片机课设小车.docx_第16页
第16页 / 共17页
单片机课设小车.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

单片机课设小车.docx

《单片机课设小车.docx》由会员分享,可在线阅读,更多相关《单片机课设小车.docx(17页珍藏版)》请在冰点文库上搜索。

单片机课设小车.docx

单片机课设小车

 

单片机原理及应用课程设计

 

专业:

电气工程及其自动化

设计题目:

寻迹小车设计

班级:

学生姓名:

学号:

指导教师:

分院院长:

教研室主任:

 

电气工程学院

 

一、课程设计任务书

1.课程设计项目

寻迹小车设计

2.设计内容

1)设计题目总体设计方案

2)硬件电路设计

3)C语言程序编制与调试

4)电路系统的综合调试

5)撰写课程设计论文

6)完成课程设计论文答辩

3.设计要求

1)设计一台自动寻电动小车。

2)电动车能自动寻迹,按设定好的轨迹前进。

3)寻迹由小车前端左右两个光电开关完成,通过调整RW2和RW4可以改变光电开关的灵敏度。

4)设计结束学生应撰写课程设计报告一份,完成课程设计答辩;

5)课程设计报告内容包括:

课程设计题目;设计计划与方案论证;设计方案实现(含程序);课程设计心得。

6)课程设计报告的撰写格式应符合单片机实用技术课程设计报告格式要求。

4、参考资料

[1]李广弟,朱月秀,王秀山编著.单片机基础.北京:

北京航空航天大学出版社,2001

[2]何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:

北京航空航天大学出版社,1999

[3]蔡美琴等编著.MCS-51单片机系统及应用.北京:

高等教育出版社.1992

5.设计进度(2011年6月13日至2011年6月24日)

时间

设计内容

第1-2天

查阅资料,方案比较、设计与论证,理论分析与计算

第3-5天

硬件电路调试

第6-8天

系统调试

第9-10天

书写报告、答辩

6.设计地点

新实验楼323微机实验室

 

二、评语及成绩

评分项目

评分标准

量化

分数

1.独立分析与解决问题的能力

很强

较强

一般

不具有

10

2.课程设计的答辩情况

有见解

回答准确

回答正确

基本正确

有错误

25

3.课程设计论文及插图的规范程度

规范

整洁

正确

杂乱

有错误

25

4.工具软件的使用

熟练使用

会使用

需要学习

10

5.辅导答疑

积极

认真

应付

消极

10

6.设计态度

积极

认真

应付

消极

10

7.出勤

全勤

缺勤次数

10

附加评语

量化总分

成绩:

指导教师

单片机原理及

应用课程设计

 

班级:

姓名:

学号:

指导教师:

撰写日期:

 

目录

目录7

第一章课程任务内容与要求分析1

1.1课程设计内容1

1.2课程设计要求分析1

1.2.1直流电机调速原理1

1.2.2PWM基本原理2

第二章程序设计5

总结10

参考文献11

 

第一章课程任务内容与要求分析

1.1课程设计内容

设计一台自动循迹电动小车,要求:

电动车能自动寻迹,按设定好的轨迹从区域1前进至区域3,并在黑线末端停车,小车前进路线图如图1-1所示。

在区域1和区域3内,小车缓慢前进,在区域2内小车全速前进。

寻迹用小车前端左右两个光电开关完成,通过调整RW2和RW4可以改变光电开关的灵敏度。

区域一

区域二

区域三

图1-1

1.2课程设计要求分析

本项目为典型的电机控制。

利用定时器T0产生PWM波形,用于速度调节。

通过传感器输入信号,对电机进行控制,改变小车的运行状态,使小车按照预定轨迹前进。

电机控制用L293D实现,L293D是电机控制专用芯片,接口简单如图5-2所示。

用P0.0—P0.5进行控制。

P0.0—EN3、P0.1—IN1、P0.2—IN2、P0.3—IN4、P0.4—IN3、P0.5—EN4。

传感器信号输入分别为P0.6——S1、P0.7——S2

1.2.1直流电机调速原理

依据直流电动机转速公式:

n=(U-IR)/Kφ

其中U为电枢端电压,I为电枢电流,R为电枢电路总电阻,φ为磁通量,K为电动机结构参数。

由公式可以看出,可以通过改变励磁磁通量φ、电枢电路总电阻R、电枢端电压U三种方法来调节转速。

(1)改变励磁磁通量主要是针对励磁式直流电机(定子上也为绕组,通电产生磁场,相当于电磁铁),改变励磁电流进而改励磁磁通量,而我们用的直流电极是永磁式直流电机(定子为永久磁铁),所以不能通过改变励磁磁通量的方法改变速度。

(2)通过改变电枢电路的总电阻R来调速,由n=(U-IR)/Kφ可知,当R变大时,n变小。

(3)通过改变电枢端电压U来调速,调节电枢端电压可以实现无级调速,是应用范围最为广泛的调速方法。

1.2.2PWM基本原理

采样控制理论中有一个重要结论:

冲量相等而形状不同的窄脉冲加在具有惯性的环节上时,其效果基本相同。

PWM控制技术就是以该结论为理论基础,对半导体开关器件的导通和关断进行控制,使输出端得到一系列幅值相等而宽度不相等的脉冲,用这些脉冲来代替正弦波或其他所需要的波形。

按一定的规则对各脉冲的宽度进行调制,既可改变逆变电路输出电压的大小,也可改变输出频率。

通俗的说PWM是采用数字量对模拟量进行合成的方法。

由于电压UAB的正、负变化,使电流波形存在两种情况:

电动机负载较重(如id1),这时平均负载电流大,在续流阶段电流仍维持正方向,电机始终工作在第Ⅰ象限的电动状态;

电动机负载较轻(如id2),平均电流小,在续流阶段电流很快衰减到零,于是VT2和VT3集一射极两端失去反压,在负的电源电压(-Us)和电枢反电动势的共同作用下导通,电枢电流反向,沿回路3流通,电动机处于制动状态。

与此相仿,在0≤t

双极式可逆PWM变换器电枢平均端电压用公式表示为:

仍以ρ=Ud/Us来定义PWM电压的占空比,则ρ与ton的关系为:

 

调速时,ρ的变化范围为—l≤ρ≤1;

当ρ为正值时,电动机正转;

ρ为负值时,电动机反转;

ρ=0时,电动机停止。

直流脉宽调速系统中包括一个具有继电特性的脉宽调制变换器,它在本质上是一个开关控制系统。

产生波动电压,如图1-2

图1-2

PWM调速程序编写

定时器初始化程序

voidpwm_init()

{

TMOD=0X01;//定时器0,方式1//

TH0=(65536-200)/256;//200us中断一次//

TL0=(65536-200)%256;

EA=1;//开总中断//

ET0=1;//开定时器中断//

TR0=1;//启动定时器//

en1=1;

en2=1;

}

voidT0_Ser()interrupt1using1

{

TH0=(65536-200)/256;

TL0=(65536-200)%256;//重装初值//

flag1++;

flag2++;

/****************PWM1设定*************************/

if(flag1<=pwm1)//PWM1占空比//

{

en1=1;

}

if(flag1>pwm1)

{

en1=0;

}

if(flag1==100)//设定周期为20ms//

{

flag1=0;

}

/******************PWM2设定***********************/

if(flag2<=pwm2)

{

en2=1;

}

if(flag2>pwm2)//PWM2占空比//

{

en2=0;

}

if(flag2==100)//PWM周期为20ms//

{

flag2=0;

}}

第二章程序设计

为实现循迹小车的动作要求,设计程序如下:

#include

sbiten1=P0^0;//右边电机

sbitRIN1=P0^1;

sbitRIN2=P0^2;

sbitLIN1=P0^3;//左边电机

sbitLIN2=P0^4;

sbiten2=P0^5;

sbitR_CQG=P0^6;//接收信号处理口

sbitL_CQG=P0^7;

unsignedcharnum;

unsignedcharLPWM,RPWM;

unsignedchardisp[4];//定义4个显示缓冲单元

unsignedcharcodedtab[]={0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,

0x01,0x09,0xff};

//共阳极接法的数字0~F段码表

voidDelayms(unsignedintx);//定义xms延时函数,x就是形式参数

/***************************************************

显示函数:

用串行口方式0驱动74L164

***************************************************/

voidDisply164(void)//显示函数

{

unsignedchari;

for(i=0;i<4;i++)//循环4次(4个数码管)

{

SBUF=dtab[disp[i]];//查表取段码,串行送出

Delayms

(2);

while(TI==0);

TI=0;

}

}

voidtimer0(void)interrupt1//定时器中断

{

staticunsignedcharclick=0;//中断次数计数器变量

TH0=0Xff;//恢复定时器初始值

TL0=0Xf6;

++click;

if(click>=100)

{

click=0;

}

if(click<=LPWM)/*当小于占空比值时输出低电平,高于时是高电平,从而实现占空比的调整*/

LIN1=0;

else

LIN1=1;

if(click<=RPWM)

RIN1=0;

else

RIN1=1;

}

voidtimer1(void)interrupt3

{

staticunsignedcharnum,aa;//中断次数计数器变量

TH1=0X3c;//恢复定时器初始值

TL1=0Xb0;

if(++num>=10)

Disply164();

if(++num>=20)

{

aa++;

disp[2]=aa%10;

disp[3]=aa/10;

num=0;

}

}

voidinit()

{

SCON=0X00;

TMOD=0X11;

TH0=0Xff;

TL0=0Xf6;

TH1=0X3c;//恢复定时器初始值

TL1=0Xb0;

EA=1;

ET0=1;

TR0=1;

ET1=1;

TR1=1;

}

voidmain()

{

init();

en1=1;

en2=1;

LIN2=1;

RIN2=1;

disp[0]=0;

disp[1]=0;

disp[2]=0;

disp[3]=0;

while

(1)

{

if(L_CQG==0&&R_CQG==0)

{

Delayms(550);

if(L_CQG==0&&R_CQG==0)

{

num++;

if(num>=3)

{

num=3;

}

}

}

if(num==0)

{

LPWM=70;

RPWM=70;

if(L_CQG==1&&R_CQG==1)

{LPWM=70;RPWM=70;}

elseif(L_CQG==0&&R_CQG==1)

{LPWM=10;RPWM=70;}

elseif(L_CQG==1&&R_CQG==0)

{LPWM=70;RPWM=10;}

}

if(num==1)

{

LPWM=99;//改速度

RPWM=99;//改速度

if(L_CQG==1&&R_CQG==1)

{LPWM=90;RPWM=90;}

elseif(L_CQG==0&&R_CQG==1)

{LPWM=30;RPWM=99;}

elseif(L_CQG==1&&R_CQG==0)

{LPWM=80;RPWM=30;}

}

if(num==2)

{

LPWM=70;//改速度

RPWM=70;//改速度

if(L_CQG==1&&R_CQG==1)

{LPWM=70;RPWM=70;}//改速度

elseif(L_CQG==0&&R_CQG==1)

{LPWM=30;RPWM=70;}

elseif(L_CQG==1&&R_CQG==0)

{LPWM=70;RPWM=30;}

}

disp[0]=num%10;

disp[1]=num/10;

if(num==3)

{

LPWM=0;

RPWM=0;

TR1=0;

}

}

}

/**************************************************************

函数功能:

延时函数

**************************************************************/

voidDelayms(unsignedintx)//定义xms延时函数,x就是形式参数

{

unsignedinti;

unsignedcharj;

for(i=x;i>0;i--)

for(j=110;j>0;j--);

}

总结

为时近两个星期的课程设计为大家搭建了一个自己动手实践的平台。

使我们对于单片机的实际运用有了更大的进步和理解。

特别是根据要求编制程序,使大家对于C语言编程有了更深刻的认识。

实践环节虽然困难重重,但是最终还是在答辩及演示环节中得到了很好的成绩。

最为深刻的记忆就是在答辩的前一天下载并运行了程序,一切顺利,但是第二天全组进行试验演示时小车却突然不动了,找同学帮忙也没查出什么问题,折腾了一中午才发现是芯片插针接触不实,换了个芯片才好用。

不过还好,一切都算比较顺利吧。

很感谢帮忙解决问题的同学,不吝中午休息时间热心帮忙。

也非常感谢同学的积极配合和协作,使得组内的工作一切顺利。

 

总结人姓名:

参考文献

[1]李广弟,朱月秀,王秀山编著.单片机基础.北京:

北京航空航天大学出版社,2001

[2]何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:

北京航空航天大学出版社,1999

[3]蔡美琴等编著.MCS-51单片机系统及应用.北京:

高等教育出版社.1992

[4]唐耀武主编,51单片机应用设计与实践.2013.3

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2