单片机实验报告模板1Word下载.docx
- 文档编号:19191721
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:14
- 大小:63.70KB
单片机实验报告模板1Word下载.docx
《单片机实验报告模板1Word下载.docx》由会员分享,可在线阅读,更多相关《单片机实验报告模板1Word下载.docx(14页珍藏版)》请在冰豆网上搜索。
整个系统中,微控制器采用了Microchip公司的PIC16F877,软件设计中涉及PORTA、PORTD用作普通数字I/O脚和PORTC端口的CCP模块的PWM脉宽调制输出功能。
本实验用单片机PORTA接收来自车头前方三个红外探测器检测到的路况信息,由此确定小车下一刻的走向,再通过PORTDT输出端口高电平或者低电平控制小车的前行或者后退,需要转弯时产生中断,用CCP模块的PWM脉宽调制功能进行左轮或者右轮的速度,进而实现小车的转弯。
概括来说,本实验就是用单片机控制直流电机输出相应的电平控制车辆的前行或者后退,用PWM输出端口控制小车的转向,进而实现小车的智能循迹功能。
(宋体五号)
Abstract
Inthisexperiment,wemadeavehiclebaseoninfrareddetectabletechnology.Itcanautomaticallynavigateitselfwiththehelpofthreeinfrareddetectorsfixedunderitsfront.The
theoryhasbeenwidelyusedinagreatnumberofvehiclescontrolingthemselvesautomaticallyaswellasothersystemsavoidingimpediments.Andinfrareddetectorsarerathercheapandapplied.
ThesystemusestheproductionoftheMicrochipcord--PIC16F877asthemicrocontroller.ThedesignincludesthedriveofPORTAandPORTDasgeneraldigitalports,thedriveofPORTCasPWM(pulsewidthmodulation)function.Thevehiclecanascertainnextroutebasingontheinformationfromthreeinfrareddetectors,andthenitputouthighorlowvoltagestomakeitselfgoforwardorbackward.WhenswervesneededitwillusethefunctionofPWMtoadjustthewheels’speedandaccomplishleftorrightturning.
Inconclusion,thisexperimentusesPIC16F877cordtocontrolvoltsd.c.andaccomplishcontroling’sconditionofthevehile,andPWMfunctiontocontrolitsturn.Andthisissocallednavigatingaptitudinally.(五号)
关键字
单片机——microcontroller芯片——CMOSchip
红外探测——infrareddetector
脉宽调制——pulsewidthmodulation(宋体五号)
一.实验论证与比较(小三黑体)
1.检测路况信息模块(小四黑体)
智能小车采用两个直流电机各驱动一个轮子,寻路用的传感器采用红外反射式传感器。
控制系统的硬件电路部分主要包括控制器,传感器和电机驱动部分。
微控制器采用的是PIC16F877,红外反射式传感器输出的是TTL电平,直接接入单片机I/O引脚。
循迹小车的驱动采用直流电机,芯片为L293D,可提供两个直流电机的驱动器功能。
驱动控制电路可以使车模产生前进、向前右转、向前左转、原地右转、原地左转、后退等功能。
智能小车左右的电机驱动,调制两个后面两个轮子的转速从而达到控制转向的目的,后轮是万象轮,起支撑的作用。
将三个红外线光电传感器分别装在车体前方的左中右,黑线的宽度不大于左右传感器的距离。
当车左边的传感器检测到黑线的边界时,主控芯片控制左轮电机减速,车向左修正;
当车右边的传感器检测到黑线时,主控芯片控制右轮电机减速,车向右修正,中间的传感器起附带修正的作用,黑线在车体的中间,若小车行驶路线正确,中间的传感器一直检测到黑线,当偏离黑线时,中间的传感器检测不到黑线,此时应再次检测左右路况信息,从而使小车左转或者右转一定角度,沿着黑色的轨道行走,装中器是为了控制电路能够正常工作。
这样就完成了小车的自动循迹功能。
(五号宋体)
2.PWM脉宽调制模块
当单片机接受到来自小车前方的红外传感器的信息后,判断小车是否正确行驶。
如果小车偏离正确路线,单片机就执行相应的程序,经过PWM脉宽调制功能输出相应的高、低电平,驱动两个直流电机,进而调节小车左、右轮的速度,实现适时转弯的功能,至此,就完成了小车的自动循迹。
我们考虑左转时,让小车左轮的速度从最小增加,在它增加到正常速度时,如果小车还没有回到正确的轨道上来,再让它继续减小,直至车模正确行驶为止。
PWM脉宽调制模块实现了小车转向的车轮调速功能。
二.系统总体设计(小三黑体)
⒈系统模块总体框图如下:
(小四宋体)
单片机分析和处理
红外传感器采集
左轮动作
电机一
驱动电路
路况信息
右轮动作
电机二
⒉路况信息模块框图
该模块要不断检测小车行驶过程中的路况信息,并做出相应的判断和处理,因此,需要一个无限循环,在单片机上电后,持续执行,操控小车沿着正确的轨道行驶。
(五号)
框图如下:
开始
初始设置
扫描传感器采集路况信息
传给单片机处理
右侧检测到黑线?
N
左侧检测到黑线?
Y
Y
NN
中间检测到黑线?
YY
N
右转
前行
左转
后退
无限循环
注:
在执行左转、右转时,单片机还要随时检测小车是否回到正确的轨道上了,若是,则跳回继续检测路况信息,否则,单片机就一直执行左转或者右转的指令。
同样,在三个红外传感器都检测不到黑线时,就让小车后退,在后退的过程中一直检测小车的行驶状况,当有传感器检测到黑线后,单片机就及时做出处理,使小车能够正常行驶。
即上图中左转、右转和后退不仅仅包含了调速,还要包含随时检测和处理路况信息的功能。
该功能正如下图所示:
左转过程中的流程框图:
产生中断,调节左轮转速
Y
N
中断返回
右转过程中的流程框图:
产生中断,调节右轮转速
后退过程中的流程框图:
中间是否检测到黑线?
返回
⒊PWM脉宽调速模块(小四宋体)
模块应用PIC16F877的输入捕捉/输出比较/脉宽调制CCP功能,将CCP1和CCP2设置为PWM模式,用于小车转弯过程中的调速功能。
本实验中,应用CCP1调节右轮转速,用CCP2调节左轮转速。
脉宽调制模式的工作原理:
当CCP工作于PWM模式时,相应的RC引脚可以输出分辨率高达10位的PWM信号波形。
由于CCP引脚与RC端口引脚是复用的,因此必须事先将TRISC清0寄存器的bit1和bit2以设置CCP引脚为输出状态。
CCP模块连续产生的PWM信号模型,产生PWM波形得需要确定两个基本参数:
一个是周期(高电平和低电平持续时间之和);
另一个是脉宽(高电平持续时间)。
对于CCP模块,为了得需要一个自由运行的时基定时器和两个可以由用户程序随意改写的参数寄存器(即周期寄存器和脉宽寄存器)。
周期周期
脉宽
TMR2=周期值时TMR2=周期值时
TMR2=脉宽值时
在PIC16系列单片机中,当CCP模块工作于PWM模式时,确定PWM信号周期所用的定时器就是8位宽的时基定时器TMR2,而确定PWM信号脉宽所用到的定时器则是10位宽的时基定时器(由定时器TMR2的8位和其低端扩展的两位共同组成)。
在本实验中,用CCP1模块控制右轮转速,CCPR1L减小时,右轮转速减慢;
CCPR1L增加时,右轮速度加快。
合理调节CCPR1L的变化就可以有效地控制小车实现右转。
同理,用CCP2模块控制左轮转速,CCPR2L减小时,左轮转速减慢;
CCPR2L增加时,左轮速度加快。
合理调节CCPR2L的变化就能及时控制小车实现左转。
两者合理结合就能用单片机控制小车实现智能循迹的功能。
程序流程图如下:
中断
左转?
NY
关闭CCP2模块
关闭CCP1模块
递增标志为1
CCPR1L加1
CCPR1L减1
CCPR2L减1
CCP2RL加1
最大否?
最小否?
NNN
YYYY
递增标志位取反
三.硬件连接(小三黑体)
⒈红外传感器模块连接(小四宋体)
红外传感器靠发射和接收红外线来工作,根据接受到红外线的强弱来判断路况信息,对车模的行驶状况给出反应。
红外传感器检测到黑线,输出高电平,否则输出低电平。
三个红外传感器(左、中、右)分别接入单片机的RA0、RA1和RA2端口。
单片机随时扫描这三个端口的电平值,来判断车模是否正确行驶,倘若不然,就控制PWM模块调节相应的直流电机,实现小车的转向功能。
⒉PWM模块和单片机连接(小四宋体)
本实验中应用CCP1和CCP2的脉宽调制功能实现小车左轮和右轮的调速问题,用CCP1输出RC2控制右轮转速,CCP2输出RC1控制左轮转速。
整个系统连接模块如下:
单片机PIC16F877
左侧传感器
RA0
控制右轮
RC2
中间传感器
RA1
控制左轮
右侧传感器
RC1
RA2
四.调试过程(小三黑体)
程序开始就进入main,执行初始设置后,单片机就开始执行扫描路况信息的阶段,根据采集到的路况信息,做出分析,控制小车沿着路线行走。
调试过程中我遇到了很多问题,也就是在这些问题中,逐渐学会了MPLAB的使用和用汇编语言编程。
在此,列举几个调试过程中比较典型的问题。
⒈对RB6和RB7引脚的理解(小四宋体)
刚开始学单片机的时候,没有学到家,翻看过的内容,也只是记得一些皮毛,没有做到较为深刻或者说是真正的理解。
在我们决定红外传感器应用哪个输入/输出引脚时,汪东乔提议用RB端口产生电平中断的方法,如果检测到输入到单片机的红外传感器有电平变化,就产生中断,对此时的路况信息做出判断,并给出下一刻小车的行驶控制信息。
但是,他同时也提出,在《PIC单片机实用教程》――基础篇第6章中指出,MPLAB-ICD的局限性包括,RB6和RB7引脚必须保留为在线编程和在线调试时的通信专用。
我当初理解的是在实验箱上进行模拟是RB6和RB7引脚必须保留,至于将单片机取出进行现场“演练”就不必一定要保留这两个引脚了。
经过询问老师,我们得知RB6和RB7引脚必须保留。
同时,我考虑到RE端口只有3个可以作为输入/输出的端口,然而我们的实验项目也正好只有三个传感器,需要向单片机中输入3个随时都有可能变化的电平信号,因此我提议不妨用RE端口。
有了先前的教训,我们这次比较认真,查看提高篇之后发现书中没有介绍RE端口作为普通输入/输出引脚的例子,而且RE端口有三种不同的工作方式:
ADC模块的模拟输入通道、通用数字输入/输出引脚、PSP并行从动端口的控制线。
和RE端口相关的寄存器有3个,用起来比较麻烦,书中也没有典型的实例,然而RA端口作为普通数字输入/输出引脚的指令代码书中有明确的解释和现成的例子,为了保险我们采用RA端口作为三个红外传感器和单片机的通道,实时检测路况信息。
⒉RA端口的输入和输出问题
上述提到我们用RA0、RA1和RA2作为三个红外传感器输出信号和PIC单片机的接口,通过这三者将红外传感器的输出电平传给单片机,继而才能完成之后控制小车行走的操作。
但是,我在编写好程序进行单步调试时,发现尽管我用异步激励将这三个端口设置为高电平,在观察窗口中RA的值没有丝毫变化。
经过思考,并联系提高篇中讲到的RA端口兼备5条数/模转换器的模拟量输入通道,在将RA端口当作普通数字输入/输出端口时需要将其控制寄存器ADCON1的低四位送入011x(x取0或1均可)。
因此,修改程序后,再次编译和调试,问题得到解决。
这看似是一个小问题,但它却告诉我,在学习单片机的过程中一点点微小的过失可能就会导致自己的程序看不到结果,不能忽略学习过程中的一点一滴疑问。
也只有这样才能真正学会、学到和学好知识。
⒊应用TMR2产生中断的问题
汪东乔最初应用CCP模块的PWM输出来调车速时,只是模仿提高篇中《按钮控制灯具调光器》的源程序,单单是调速这一模块,这个源代码没有问题。
但是和检测路况信息该模块的代码合起来一起调试就出现问题了。
因为源代码中的循环语句在整体的程序中不能仅仅依靠loop和gotoloop两条语句来完成,还需要在减速的过程中随时扫描路况信息,查看小车是否已经转弯完毕,若是,则需要回到主程序中,继续扫描RA的变化,否则就要继续产生中断,控制相应的脉宽进行减速或者适当的加速。
根据这种情况,我们修改完程序后,进行SIM在线调试,发现,程序并不象我们所期望的那样在检测到小车行驶路线错误时进入相应的模块后,产生中断进行减速,而是要经过一段时间才能产生中断,虽然在程序运行时,指令执行速度很快,但是如果就这样不进行修改处理的话,不单单是程序浪费了指令周期,而且小车的灵敏度毫无疑问也会受到影响,这自然是我们不希望看到的。
经过查阅课本,汪东乔提议,可以先将tmr2的初值赋为255,这样在检测到小车行驶出错进入相应的模块并开启tmr2后就能及时产生中断,对脉宽进行调节,从而达到调节车轮转速和转弯的目的。
⒋RC1和RC2引脚电平变化问题
我们最初进行模块设计时只是应用CCP1调节右轮转速,将一个CCP模块的设计和功能实现之后,才能比较顺利的实现两个模块分别控制左、右车轮的速度。
但是在该模块的指令编写完毕并进行SIM在线调试通过后,将该程序烧些到单片机后,我们发现在调节右轮速度时,左轮即使在初始设置将其设为向前行,此刻它也会静止,因此我们在进入相应的中断后,有用了一条语句将左轮调速端口电平设置为1。
同理,在调节左轮转速时,也需要一条语句将右轮调速端口电平设置为1。
在完整的程序雏形编出来后,我们进行SIM在线调试,发现在对RD端口设置为输出后,端口RC会自动清0,然而在将CCP设置为PWM脉宽调制输出模式后,端口RC1和RC2又会相继变为1。
由于我们在本实验中要用到端口RC1和RC2的输出调节车轮的速度,这两个端口的变化很有可能影响到小车左右车轮的转速。
因此,我们请教老师。
在老师的指导下,我们编写了一个比较简短的程序,发现单单给RD端口设置为输出时,RC端口电平值不会发生变化。
然而,用汇编语句将CCP设置为PWM脉宽调制输出模式后,端口RC1和RC2的电平值又会相继变为1。
这是一种有规律的变化。
周老师说可能是PIC单片机内部的设置问题,我们只是在程序进入中断进行脉宽调制输出时应用它来控制输出,应该不会有太大的影响。
经过烧些程序和现场实验,发现小车可以按照我们的要求进行有效的调速了。
这个小波折告诉我,知识的积累和掌握不能仅仅依靠课本,还要结合实践进一步理解,这样才能加深印象,融会贯通,也只有这样才能真正学以致用。
⒌路况信息的检测问题
至于路况信息的检测问题,我们当初只是想到如果左侧检测到黑线,小车就左转,右侧检测到黑线小车就右转,如果小车左右都没有检测到黑线,继续检测中间的红外传感器输出的电平信号,如果检测到黑线,就控制小车前行,否则让其停止。
可是在用单片机控制时发现小车速度比较快,容易还没有转弯完毕就冲出跑道了,这时中间的红外传感器检测不到黑线,小车就会停止;
因此我们在此基础上修改程序,在中间的传感器也检测不到黑线时,再次检测小车左右的传感器输出电平,如果也检测不到,小车再停止,若能检测到,就控制小车左转或者右转。
修改程序后,小车可以初步实现循迹功能。
但是由于我们的程序是控制小车在出现故障后停止,而且我们的路线也比较复杂,这样就导致小车很容易停止。
经张老师提醒,我们决定在安装小车上的三个红外传感器都检测不到黑线时,设置程序,让小车实现后退,以继续寻找黑线,直到小车中间的传感器检测到黑线为止。
此后再返回扫描路况信息模块,对小车下一刻的走向做出分析和控制。
修改程序后,小车似乎可以按照我们的要求实现自动循迹的功能,但是有时候小车仍旧不能正常纠正行驶错误。
汪东乔最初的想法是人为控制黑线的宽度,使黑线的宽度超过两个红外传感器的间距,但是不会超过或者等于左右传感器的距离――这是我们最初编写程序时的想法。
但是,在将PIC16F877烧些完毕,安装在小车装载的硬件电路板上进行结果检验时,我们才发现,小车容易冲出跑道等一些我们最初没有考虑到的问题。
为了确定小车在何时容易行驶出错,汪东乔用黑色签字笔将原来画好的黑线进行了修正,但是这样一来,原先的黑线有的地方被加粗了,可能超过了小车前方左右两个红外传感器的间距,这样的话,单片机复位后,如果在起始点小车左侧或者右侧就检测到了黑线,程序就会进入相应的左转或者右转模块,从而控制小车左转或者右转,这样自然不是我们希望看到的。
因此,原来的汇编程序可以说是人为地加上了外部控制条件,在真正的现实环境中是非常容易产生bug的。
真正完美的程序是要考虑到各种情况的。
因此,我们应当在检测路况信息的模块上加以修改,同时检测三个传感器给出的信息。
当左右两侧都检测不到黑线时,检测中间的传感器,如果检测不到,才说明小车行驶出错,需要后退以返回正确的线路;
但是如果检测到了,只是说明该段线路比较窄,但是小车的行驶状况是正确的,只需要向前行走就可以了。
当右侧检测不到而左侧检测到时,说明小车需要左转以回到正确的线路;
同理,左侧检测不到而右侧检测到使小车需要右转,这样才能继续正确行走。
当左侧和右侧都检测到黑线时,只是说明在这段路线中黑线画得比较粗而已,小车依然正确行驶,只需向前,不需要转弯。
这样,小车才能在更多更实际的场合实现自动循迹的功能。
这个小挫折告诉我只有联系实际,在实践中才能真正找出自己的错误,理论联系实际才能真正学到知识。
⒍软硬件联合调试(小四宋体)
我们从知道小车如何才能受单片机的控制,如何实现前进、后退、左转和右转的功能,到实现小车的自动循迹,期间充满了挫折。
从初始简单定时地控制小车行走,到一步一步逐渐实现小车自动在单片机的控制下遵照路线行走,我们反复地修改程序,反复地调节左右轮的螺丝,使左右轮的控制电平均为高电平时,两轮的转速相同;
从简单地向前行走寻找路线,到小车由于速度太快不慎冲出跑到后能够自动后退以寻找正确的跑道,我们迷茫过,无奈过,庆幸的是,我们在老师的指导下坚持了下来,完成了我们的实验项目。
真的非常开心。
五.参考文献:
PIC单片机实用教程——基础篇(五号宋体)
李学海
北京航空航天大学出版社
使用说明:
的确是一本不可或缺的教材,本书列举了很多实用的具有实战意义的例子,单片机入门就是通过把这本书里的好例子一字一行敲进电脑去来实现的。
PIC单片机实用教程——提高篇
继承了前面基础篇的风格,例子也具有实战意义,主要讲RA、TMR2的使用和CCP模块的PWM脉宽调制功能。
六.实验心得体会(小三黑体)
对于整个实验的心得体会,上面已经提到很多了,不过,还是有好深刻的感觉和触动。
其一,在刚刚接触到单片机时,我可以说是一窍不通,甚至对于单片机究竟是什么也不能很精确地表达出来。
汪东乔建议说我们做一个能够自动循迹的小车时,说实在话,我当时心里也没有太大的信心和勇气,这次合作式的小学期也让我体会出团队的团结、相互的默契和彼此的信任在团队(尽管这个团队也许只有两三个人)的协作中是多么重要,同时也为我们步入社会、参加工作提供了一次很好的“演练”机会。
其二,4星期单片机的学习让我增强了自信心。
这也许是大学期间对我触动最大的事情了。
我是来自农村的孩子,从乡村的小学到市重点中学,我一直很努力,中小学的我一直相信只要努力再努力,就能达到自己梦想的高度――比如考上北邮。
可是自从进入大学,尤其是来到北京后,我一天天地发现我身边的同学都是我从小梦想成为的角色,他们好多好多人都懂得音乐,会跳舞,拿过很多很多奖,还有的练就了一口漂亮的口语……总而言之,我的自信心就这样一直受到挫败,久而久之,在决定作一件事情前,我就下意识地问自己我到底可不可以、能不能做到,万一做不到我又会很沮丧,总是给自己打退堂鼓。
学习单片机的过程中,我也不是没有怀疑过自己的能力,而是我在学习的过程中,从对单片机的一无所知,对繁琐的汇编语言的畏惧,到一步一步进行单步调试,再到能够发现问题并经过思考来解决问题,我感觉到自己在进步,也感受到只要每天努力一点点,希望就会再接近一点点,离成功的距离也就会再接近一点点,也就是这些一点点的努力和距离告诉我要继续坚持,告诉我要相信自己,因为只有相信自己,不断努力,才能战胜自己的弱势,得到自己想要的结果。
有人说“自信是成功的第一步”,感谢08年的小学期,感谢单片机的学习,它带给了我信心,带给了我希望和曙光。
其三,在北邮两年了,我终于发现了学习中的乐趣。
选择北邮,选择通信的过程我比其他人多了一份波折。
我是从文法经济学院转专业到通信工程的。
当初选择学国际经济与贸易,很大一部分是父母的要求,他们认为女孩子还是学经济比较好,而且高中毕业我也没有发现自己真正的兴趣和爱好,于是就听他们的话,选择学经济。
可是大一上学期的课程,让我这个习惯计算和逻辑思维的理科生很痛苦,还好我获得了转专业的机会,又转学通信了。
可是当时对通信工程也没有太深的认识,只知道是工科专业,而且是北邮的强项。
于是,我就到了电信工程学院。
但是,大一和大二的课程中我们也只是学习了一些基础课,信号与系统、模拟电子电路、数字电路设计与数字系统、数据结构等,这些课程中我只是当作任务来执行,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 实验 报告 模板