寻迹小车设计单片机原理及应用课程设计Word下载.docx
- 文档编号:16787691
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:25
- 大小:154.08KB
寻迹小车设计单片机原理及应用课程设计Word下载.docx
《寻迹小车设计单片机原理及应用课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《寻迹小车设计单片机原理及应用课程设计Word下载.docx(25页珍藏版)》请在冰豆网上搜索。
强
一
般
较差
不
行
20
2.仿真设计能力
较强
一般
3.硬件设计能力
4.设计报告规范程度
规范
整洁
正确
杂乱
有错误
5.设计态度
积极主动
比较认
真
应
付
不认真
10
6.出勤情况
全勤
缺勤
次数
附加
评语
量化总分
成绩:
指导教师:
单片机原理及
应用课程设计
班级:
自动化0942
姓名:
马爽
学号:
37
方健
撰写日期:
2012.6.13
目录
第一章设计任务与方案论证1
1.1.设计任务1
1.2.方案论证1
1.3.系统总体方案2
第二章硬件模块设计3
2.1STC10F04XE单片机系列单片机简介3
2.2电机模块4
2.3黑线检测模块5
2.31LM339主要特点6
2.32LM339引脚图及功能7
2.4数码显示模块8
2.5电机驱动模块8
2.6电动机调速9
2.7信号采集模块9
2.8系统流程图10
第三章程序下载与调试12
3.1程序下载12
3.2程序调试12
3.21调试过程出现的问题12
单片机课程设计总结16
参考文献17
附录18
第一章设计任务与方案论证
1.1.设计任务
设计一台自动寻迹电动小车,要求:
电动车能自动寻迹,按设定好的轨迹从区域1前进至区域3,并在黑线末端停车,小车前进线路如图所示。
在区域1和区域3内,小车缓慢前进,在区域2内小车全速前进。
寻迹用小车前端左右两个光电开关完成,通过调整RW2和RW4可以改变光电开关的灵敏度。
图1-1寻迹小车路线
1.2.方案论证
单片机是整个系统的处理中心,也是整个设计的核心。
选取我们也综合分析了几种方案。
方案一:
采用MCSE-51系列单片机。
AT89C51是美国ATMEL公司生产的低电压、高性能CMOS8位单片机,片内含2kbytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元。
传统的51单片机具有价格低廉,使用简单等特点,但存在预算速度低,功能单一,RAM,ROM空间小等缺点。
方案二:
STC10F04XE单片机。
STC10F04XE是与MCS-51指令完全兼容。
STC10F04XE采用流水线结构,别适合用于对实时性要求极高的控制系统。
同时STC10F04XE内置看门狗电路提高了系统的稳定性。
多个I/O口和丰富的外设资源使得STC10F04XE单片机使用更加方便使用。
为了能够实现系统的快速处理传感器数据要求。
本设计采用方案二STC10F04XE作为系统的处理芯片。
1.3.系统总体方案
基于题目要求实现的各项功能及难易程度,车辆性能良好,易于控制,运行稳定。
在处理器方面,寻迹小车采用STC10F04XE单片机作为核心的控制系统,结合STC10F04XE单片机实现小车沿黑线正常前进、后退、停止等功能。
模块电路主要包括:
检测电路、电机驱动电路、键盘和数码管显示电路等。
第二章硬件模块设计
2.1STC10F04XE单片机系列单片机简介
主要性能:
(1)高速:
1个时钟/机器周期,增强型8051内核,速度比普通8051快8~12倍
(2)宽电压:
5.5~4.1V/3.7V,3.6V~2.4V/2.1V(STC11/10L系列)
(3)低功耗设计:
空闲模式(可由任意一个中断唤醒)
(4)低功耗设计:
掉电模式(可由任意一个外部中断唤醒,可支持下降沿/低电平和远程唤醒,STC11xx系列还可通过内部专用掉电唤醒定时器唤醒)工作频率:
0~35MHz,相当于普通8051:
0~420MHz
(5)时钟:
外部晶体或内部RC振荡器可选,在ISP下载编程用户程序时设置
(6)1/2/3/4/5/6/8/16/32/52/62K字节片内Flash程序存储器,擦写次数10万次以上
(7)1280/256字节片内RAM数据存储器
(8)芯片内EEPROM功能,擦写次数10万次以上
(9)ISP/IAP,在系统可编程/在应用可编程,无需编程器/仿真器
(10)2个16位定时器,兼容普通8051的定时器T0/T1
(11)1个独立波特率发生器(故无需T2做波特率发生器),缺省是T1做波特率发生器
(12)可编程时钟输出功能,T0在P3.4输出时钟,T1在P3.5输出时钟,BRT在P1.0输出时钟
(13)硬件看门狗(WDT)
(14)具有片内VDD监视器、看门狗定时器和时钟振荡器的STC10F04XE单片机是真正能独立工作的片上系统。
所有模拟和数字外设均可由用户固件使能/禁止和配置。
FLASH存储器还具有在系统重新编程能力,可用于非易失性数据存储,并允许现场更新8051固件。
该调试系统支持观察和修改存储器和寄存器,支持断点、观察点、单步及运行和停机命令。
在使用JTAG调试时,所有的模拟和数字外设都可全功能运行。
每个MCU都可在工业温度范围(-45℃到+85℃)内用2.7V-3.6V的电压工作。
端口I/O、/RST和引脚都容许5V的输入信号电压。
图2-1STC10F04XE
2.2电机模块
采用直流减速电机。
直流减速电机具有优良的调速特性,调速平滑、方便,而且制动能力好,调整范围广;
过载能力强,能承受频繁的冲击负载,可实现频繁的无极快速启动、制动和反转。
能满足各种不同的特殊运行要求。
同时,直流减速电机价格适宜,更易于购买,并且电路相对简单。
图2-2电机模块
2.3黑线检测模块
寻迹模块是整个设计的关键部分,小车能够通过检测黑线运行。
光电对管,也叫光电开关,其实内部结构就是一个发光二极管和一个光敏三极管,分为反射式和直射的,都是通过集聚光线来控制光敏三极管的导通与截止。
无论如何原理都是光电的转化。
光电开关一般都具有良好的回差特性,因而即使被检测物在小范围内晃动也不会影响驱动器的输出状态,从而可使其保持在稳定工作区。
同时,自诊断系统还可以显示受光状态和稳定工作区,以随时监视光电开关的工作。
采用红外反射式探测。
用红外对管发射红外线垂直射到板面,白色会反射大部分红外线,黑色吸收大部分红外线。
红外对管在黑白交界处产生跳变信号,信号经过电压比较器处理后送入单片机可以在程序里实现相应的功能。
经过测试,光电开关对环境的适应性较强。
在这里我们采用红外发射管和红外接收管一对一配对使用。
图2-3对管和比较器
2.31LM339主要特点
(1)电压失调小,一般是2mV;
(2)共模范围非常大,为0v到电源电压减1.5v;
(3)他对比较信号源的内阻限制很宽;
(4)LM339vcc电压范围宽,单电源为2-36V,双电源电压为±
1V-±
18V;
(5)输出端电位可灵活方便地选用。
(6)差动输入电压范围很大,甚至能等于vcc;
2.32LM339引脚图及功能
图2-4LM339引脚图
表2-1LM339引脚功能排列表:
引脚功能
符号
引
输出端2
OUT2
8
反向输入端3
1N-(3)
输出端1
OUT1
9
正向输入端3
1N+(3)
电源
VCC+
反向输入端4
1N-(4)
反向输入端1
1N-
(1)
11
正向输入端4
1N+(4)
正向输入端1
1N+
(1)
12
Vcc-
反向输入端2
1N-
(2)
13
输出端4
OUT4
正向输入端2
OUT2
(2)
14
输出端3
OUT3
表2-2LM339主要参数表:
JGU838电子-技术资料-电子元件-电路图-技术应用网站-基本知识-原理-维修-作用-参数-电子元器件符号-各种图纸
参数名称
数值
单位
电源电压
VCC
±
18或36
V
差模输入电压
VID
36
共模输入电压
VI
-0.3~VCC
功耗
Pd
570
mW
工作环境温度
Topr
0to+70
℃
贮存温度
Tstg
-65to150
2.4数码显示模块
本实验采用四位共阳极数码管进行数码显示,它有四个位选,由于本实验只需显示小车在每个区域运动时的值,因而只需选通以为位选线,当各阴极上的电平为“0”时,该段点亮,电平为“1”时,该段熄灭。
数码管与单片机之间通过反相器74LS04连接,具体电路见图。
图2-5数码显示原理图
2.5电机驱动模块
采用L293D芯片的驱动模块。
L293D采用16引脚DIP封装,其内部集成了双极型H-桥电路,所有的开量都做成n型。
这种双极型脉冲调宽方式具有很多优点,如电流连续;
电机可四角限运行;
电机停止时有微振电流,起到“动力润滑”作用,消除正反向时的静摩擦死区:
低速平稳性好等。
L293D通过内部逻辑生成使能信号。
H-桥电路的输入量可以用来设置马达转动方向,使能信号可以用于脉宽调整(PWM)。
另外,L293D将2个H-桥电路集成到1片芯片上,这就意味着用1片芯片可以同时控制2个电机。
每1个电机需要3个控制信号EN12、IN1、IN2,其中EN12是使能信号,IN1、IN2为电机转动方向控制信号,IN1、IN2分别为1,0时,电机正转,反之,电机反转。
选用一路PWM连接EN12引脚,通过调整PWM的占空比可以调整电机的转速。
选择一路I/O口,经反向器74HC14分别接IN1和IN2引脚,控制电机的正反转。
图2-6驱动芯片L293D
2.6电动机调速
直流调速方式有电平调速、脉频调速(PFM)及脉宽调速(PWM)等多种方式。
电平调速原理比较简单,但要实现较好的控制会使电路比较复杂。
如果需要通过数模转换实现步进控(PFM)计中需要的并行数据线太多,接线麻烦,实际调试复杂,故不用此方案。
脉频调速(PFM)一般用于大电动机,对于本设计要求并不适合。
而脉宽调速(PWM)接线方便、控制简单,采用光电耦合隔离,系统干扰在三种方式中也最小。
因此,选择PWM调速。
2.7信号采集模块
在底板上安装信号采集模块如下:
图2-7信号采集
2.8系统流程图
流程图如下:
图2-8系统流程图
第三章程序下载与调试
3.1程序下载
打开下载软件,出现下载窗口。
步骤1:
在MCUType中选择STC10F04XE芯片。
步骤2:
点击OpenFile/打开文件,找到aa.hex文件,双击此文件再点击保存。
即文件打开成功。
步骤3:
选择串行口,COM栏中选择COM3。
步骤4:
设置一些选项,,具体见下图。
步骤5:
下载程序。
直到出现程序下载成功即可。
下载软件窗口图如图3-1所示。
图3-1下载软件窗口图
3.2程序调试
3.21调试过程出现的问题
1.变量i设置重复
出现的现象是:
程序检测无误但是小车不转。
为了方便程序检测加动态显示程序,小车运行可以显示区域,如果没出现证明这段程序有误。
经过下载调试发现主函数定义的变量i和显示函数定义的变量i重复。
voidmain()
{uinti;
pwm_init();
P1=0X00;
while
(1)
{
Disp
(2);
}
:
voidDisp(uintdisp_value)
{
uchari;
Bcd(disp_value);
for(i=0;
i<
4;
i++)
P1=led_point[i];
SBUF=LED_Val[num[i]];
while(TI==0);
TI=0;
Delay_ms(5);
P1=0xff;
}
2.小车不能停止
解决方案:
让单片机停止调用显示就不能做别的事情了。
if(qq>
=3)//检测到第三个黑线小车停止。
{stop();
while
(1){Disp(qq);
}}
图3-2车不停止
3.小车前进速度不明显
将电机速度改的差异大点。
循迹速度:
{pwm1=60;
pwm2=20;
缓慢前进:
pwm2=60;
全速前进:
{pwm1=99;
pwm2=99;
}
4.数码显示过快
小车开始的时候时间太短,会造成显示过快,效果不是很明显。
延时时间。
if(s1==0&
&
s2==0)///传感器小灯相当于消除抖动
{pwm1=40;
pwm2=40;
Delay_ms(100)
{while(s1==0&
s2==0)
{Disp(qq);
{qq++;
Delay_ms(200)}}}
改成200,300。
图3-3显示过快
5.调试成功
最后编写整个完整的函数,编译无错误后,生成“.hex”文件,下载后进行硬件调试,通过返回信息对程序进行相。
图3-4调试成功
单片机课程设计总结
实习几天以来,我学到了很多书上所学不到的,也体验到了许多以前未体会过的辛苦。
总的来说,受益良多!
通过这次课程设计,我学到了很多书本上没有的实际知识,通过上网和去图书馆查找有关资料一一解决,对将使我今后的学习和工作是很有帮助的。
最重要的是我学会了方法,这将使我今后离开学校踏上社会是相当有帮助的。
其次,是进一步熟悉地掌握和运用了相关的专业软件。
提高了我们自身的专业素质。
同时也深深的体会到,我们书本上所学的知识和实际的东西相差甚远,我们所不懂的知识还有很多,因此今后要更加注重实际方面的锻炼和运用。
在本次实习中,感谢老师对我们不厌其烦的指导和严格要求,使我们学到了很多实用的知识,增强我们的自信心,同时也使自己明白自己存在着很大的不足,认识到了自己的缺点。
在以后的学习中,不断完善自己,成为一个真正具有综合能力的人才。
马爽
2012年6月13日
参考文献
附录
//========================================================
//文件名称:
//作者:
马爽
//版本:
1.0
//说明:
C51数据类型
//修改记录:
2012-6-20
#include"
stc10f04xe.h"
#defineucharunsignedchar
#defineuintunsignedint
sbitIN1=P0^1;
sbitIN2=P0^2;
sbitIN3=P0^4;
sbitIN4=P0^3;
sbiten1=P0^0;
sbiten2=P0^5;
sbits1=P0^6;
sbits2=P0^7;
voidgo();
//声明小车的启动函数//
voidstop();
//声明小车的停止函数//
uintflag1,flag2,pwm1,pwm2,qq;
voidpwm_init();
ucharcodeLED_Val[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};
//0-9//
uchardatanum[4];
uchardataled_point[4]={0xef,0xdf,0xbf,0x7f};
voidDisp(uintdisp_value);
//声明数据显示函数//
voidBcd(uintbcd_value);
//声明数据分离函数//
voidDelay_ms(uintdelay);
//声明延时函数//
voidkey_scan();
//声明按键扫描函数//
//=============================================================
//函数名称:
pwm_init()
//函数功能:
电机的初始化
//入口参数:
void
//出口参数:
void
//备注:
无
voidpwm_init()//电机的初始化//
TMOD=0X01;
//定时器0,方式1//
TH0=(65536-200)/256;
//200中断一次//
TL0=(65536-200)%256;
EA=1;
//中断允许总开关控制位开放//
TR0=1;
//定时器允许T0溢出中断//
ET0=1;
//定时器允许T0运行控制位//
en1=1;
//L293D始能端//
en2=1;
Ser()
//函数功能:
中断
voidTO_Ser()interrupt1using1
//重装初值T0的寄存器高八位显示的数值//
TL0=(65536-200)%256;
//T0的寄存器低八位显示的数值//
flag1++;
flag2++;
/********************PWM1设定*****************/
if(flag1<
=pwm1)//PWM1占空比//
if(flag1>
pwm1)
en1=0;
}
if(flag1==100)//设定周期为20ms//
{
flag1=0;
//清零//
/*****************PWM2设定*******************/
if(flag2<
=pwm2)//PWM2占空比//
if(flag2>
pwm2)
en2=0;
if(flag2==100)//PWM周期为20ms//
flag2=0;
go()
电机的启动函数
voidgo()//小车前进两个轮子都是向前转,每个轮子对应的电机输入端都是一个高电平一个低电平//
IN1=0;
//使能端1接低电平//
IN2=1;
//使能端2接高电平//
IN3=0;
//使能端3接低电平//
IN4=1;
//使能端4接高电平//
stop()
电机的停止函数
voidstop()//小车停止时两个轮子都停止。
IN1=1;
//使能端1接高电平//
IN3=1;
//使能端3接高电平//
Disp()
显示函数
voidDisp(uintdisp_value)
uchari;
Bcd(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小车 设计 单片机 原理 应用 课程设计