推荐下载单片机交通灯实训报告.docx
《推荐下载单片机交通灯实训报告.docx》由会员分享,可在线阅读,更多相关《推荐下载单片机交通灯实训报告.docx(22页珍藏版)》请在冰豆网上搜索。
推荐下载单片机交通灯实训报告
(完整word版)单片机交通灯实训报告
编辑整理:
尊敬的读者朋友们:
这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)单片机交通灯实训报告)的内容能够给您的工作和学习带来便利。
同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。
本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)单片机交通灯实训报告的全部内容。
物理与机电工程学院课程设计报告
课程名称:
单片机课程设计
系部:
物理与机电工程学院
专业班级:
学生姓名:
指导教师:
完成时间:
报告成绩:
一、设计任务与要求………………………………………………………
二、方案设计与论证………………………………………………………
三、硬件电路设计
1)单片机模块…………………………………………………………。
2)时钟震荡电路………………………………………
3)复位电路……………………………………………
四、软件设计……………………………………………………………………。
.
程序………………………………………………………………………………。
五、仿真过程与仿真结果……………………………………………………
软件仿真………………………………………………………………………。
.
六、安装与调试………………………………………………………………………
硬件调试………………………………………………………………………….
七、原理图与PCB图……………………………………………
八、结论与心得……………………………………………………………………….。
九、参考文献……………………………………………………………………………..
交通灯设计
一、设计任务与要求
设计基本要求:
(1)车辆通行繁忙的十字交叉路口,设计一交通灯控制器,设东西方向通行时间为40秒,当剩余3秒时黄灯亮,南北方向通行时间为25秒,当剩余3秒时黄灯亮。
(2)东西、南北方向各用三个(绿、黄、红)LED表示,并用数码管显示东西、南北方向的剩余时间。
(3)可利用按键修改时间参数。
二、方案设计与论证
1电源提供方案
为使模块稳定工作,须有可靠电源。
我们考虑了两种电源方案
方案一:
采用独立的稳压电源。
此方案的优点是稳定可靠,且有各种成熟电路可供选用;缺点是各模块都采用独立电源,会使系统复杂,且可能影响电路电平。
方案二:
采用单片机控制模块提供电源。
改方案的优点是系统简明扼要,节约成本;缺点是输出功率不高。
综上所述,我们选择第二种方案.
2显示界面方案
该系统要求完成倒计时、状态灯等功能。
基于上述原因,我们考虑了三种方案:
方案一:
完全采用数码管显示.这种方案只显示有限的符号和数码字苻,无法胜任题目要求.
方案二:
完全采用点阵式LED显示。
这种方案实现复杂,且须完成大量的软件工作;但功能强大,可方便的显示各种英文字符,汉字,图形等。
方案三:
采用数码管与点阵LED相结合的方法因为设计既要求倒计时数字输出,又要求有状态灯输出等,为方便观看并考虑到现实情况,用数码管与LED灯分别显示时间与提示信息。
这种方案既满足系统功能要求,又减少了系统实现的复杂度。
权衡利弊,第三种方案可互补一二方案的优缺,我们决定采用方案三以实现系统的显示功能。
3输入方案:
题目要求系统能手动设灯亮时间、紧急情况处理,我们讨论了两种方案:
方案一:
采用8155扩展I/O口及键盘,显示等.该方案的优点是:
使用灵活可编程,并且有RAM,及计数器.若用该方案,可提供较多I/O口,但操作起来稍显复杂。
方案二:
直接在IO口线上接上按键开关。
因为设计时精简和优化了电路,所以剩余的口资源还比较多,我们使用四个按键,分别是K1、K2、K3、K4.
由于该系统对于交通灯及数码管的控制,只用单片机本身的I/O口就可实现,且
本身的计数器及RAM已经够用,故选择方案二。
三、硬件电路设计
系统总体设计
本系统采用STC89C52RC单片机中的一个定时器完成了交通指示灯的所有切换过程,该系统能根据实际车流量的情况进行东西和南北方向的切换,采用点亮发光二极管模拟交通灯的实际情况。
该系统具有实用性强,操作简单,扩展性好等特点.
1.单片机作为微型计算机的一个重要分支,应用面很广,发展很快,单片机最小系统。
或者称为最小应用系统。
是指用最少原件组成的单片机可以工作的系统,对51系列单片机来说。
最小系统一般应该包括:
单片机,时钟电路,复位电路等。
1)单片机模块
单片机模块是整个系统的核心,完成以下功能:
输入数据的采集转换,驱动发光二极管的显示等功能,根据系统的要求和现实的考虑,选用宏晶公司生产的STC89C52RC通用单片机,STC89C52RC是一种带8K字节闪烁可编程可擦除只读存储器FPEROM的低电压,高性能CMOS8位微处理器,俗称单片机,该器件采用高密度非意失存储器制造技术制造,与工业标准的MCS—51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中。
它是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且廉价的方案,与Intel公司的MCS—51系列单片机相兼容,是广泛应用的单片机之一。
P3。
0:
RXD,串行通信输入
P3.1:
TXD,串行通信输出
P3.2:
INT0,外部中断0输入
P3.3:
INT1,外部中断1输入
P3.4:
T0,计时计数器0输入
P3。
5:
T1,计时计数器1输入
P3.6:
WR:
外部数据存储器的写入信号
P3.7:
RD,外部数据存储器的读取信号
2)时钟震荡电路
单片机的时钟信号用来提供单片机内各种微操作的时间其准,这个时钟信号可由单片机内时钟电路产生。
可以直接使用外部时钟信号。
因此,单片机时钟电路通常可以有两种形式内部振荡方式和外部振荡方式。
a)外部振荡方式就是把外部自己有时钟信号引入单片机内。
这种方式是用来使单片机的时钟与外部信号保持同步。
外部振荡方式电路如图所示。
b)内部振荡方式
MCS单片机内存有一个用于构成振荡器的高增益反向放大器,引脚XTAL1和XTAL2分别是此大器的输入端和输出端.把放大器与作为反馈原件的晶体振荡器或陶瓷振荡器连接就构成了内部自激振荡器并产生振荡时钟脉冲,这种方式为内部振荡方式,如图所示.
外部振荡方式内部振荡方式
晶振两边的电容主要以下作用:
晶振后面的电容是负载电容,可以用来微调晶体震荡频率。
电容的取值一般来说是30pF或33pF
的瓷片电容.本次用30pF的瓷片电容
3)复位电路
复位操作可以使单片机初始化,也可以使死机状态下得单片机重新启动,计算机在启动时,都需要复位,使CPU和系统中其它部件都处于一个确定的初始状态.从这个状态开始工作,在振荡器正在运行的情况下.复位是靠在RST引脚处至少保持2个机器周期(24个振荡器周期)的高电平而实现的。
可以分为上电自动复位和按键手动复位
a)上电自动复位
对于MCS-51系列来说,最简单的上电复位电路如图所示,就是由一个电阻和一个电容构成的。
在系统上电时,经C1与R1充电,使RST端为高电平,持续时间大于两个机器周期完成复位。
电容充电结束后,系统复位结束,开始正常工作。
b)按键手动复位
按键手动复位有电平方式和脉冲方式两种。
在本系统中采用按键手动电平自动复位如图如下。
上电自动复位方式手动电平复位电路
位电容的作用主要如下:
单片机复位电路要求有一个持续时间,加上电容可以利用其两端电压不能突变的特性,使复位电平维持一定时间,使单片机复位.单片机复位电平在其手册里可以看到。
另外这个电容还可以去除一些杂波的干扰,防止单片机被错误复位.本次取4。
7uF的电解电容。
四、软件设计
硬件平台上构成,完成各部分硬件的控制和协调,系统功能是由软件硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。
因此软件是本系统的灵魂。
软件采用模块化设计方法,不仅易于编程和调试,也可减少软件故障率和提高软件的可靠性.同时对软件进行全方面的测试也是检查错误排除故障的重要手段。
流程图如下:
程序如下:
#include#defineuintunsignedint
#defineucharunsignedchar
sbitred1=P2^0;//定义六个灯分别为P1.0~7
sbityellow1=P2^1;
sbitgreen1=P2^2;
sbitred2=P2^5;
sbityellow2=P2^4;
sbitgreen2=P2^3;
sbitkey1=P3^0;//模式选择键
sbitkey2=P3^1;//数值+
sbitkey3=P3^2;//数值-
sbitkey4=P3^3;//暂停开始键
ucharaa,qian,bai,shi,ge,bb,shu1,shu2;
uintnum,key1num,key4num;
//定义数组0~9
ucharcodetable[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
//延时函数z毫秒
voiddelay(uintz)
{
uintx,y;
for(x=z;x〉0;x--)
for(y=110;y〉0;y-—);
}
//初始化函数
voidinit()
{
TMOD=0x01;//设置定时器T0为工作方式1
TH0=(65536-50000)/256;//赋初值
TL0=(65536—50000)%256;
EA=1;//开总中断
ET0=1;
TR0=1;//开定时器
num=40;//数码管初始显示40
qian=num/10;
bai=num%10;
red1=1;//起始状态为南北绿灯,东西红灯
yellow1=1;
green1=0;
green2=1;
yellow2=1;
red2=0;
bb=1;
key1num=0;
//key4num=0;
shu1=40;//南北通行时间初始为40s,东西通行时间初始为25s
shu2=25;
}
//数码管显示函数
voiddisplay(ucharqian,ucharbai)
{
P0=table[bai];
delay
(1);
P1=table[qian];
delay
(1);
}
//键盘扫描函数
voidkeyscan()
{
if(key1==0)
{
delay(10);//消抖
if(key1==0)
{
key1num++;
if(key1num==4)
{
key1num=1;
}
while(!
key1);
if(key1num==1)//按下第一次进入设置南北通行时间模式
{
TR0=0;
num=40;
qian=num/10;
bai=num%10;
display(qian,bai);
green1=0;
yellow1=0;
red1=0;
green2=1;
yellow2=1;
red2=0;
}
if(key1num==2)//按下第二次进入设置东西通行时间模式
{
TR0=0;
num=25;
qian=num/10;
bai=num%10;
display(qian,bai);
//key1num=0;
green1=0;
yellow1=0;
red1=1;
green2=1;
yellow2=0;
red2=0;
}
}
}
if(key1num!
=0)//当key1键被按下
{
if(key2==0)
{
delay(10);
if(key2==0)//按下key2键调整南北通行时间
{
num—-;
qian=num/10;
bai=num%10;
display(qian,bai);
shu1=num;//将设置后的时间赋给shu1
if(shu1==0)
{
shu1=40;
num=shu1;
qian=num/10;
bai=num%10;
display(qian,bai);
}
}
while(!
key2);
}
if(key3==0)
{
delay(10);
if(key3==0)//按下key3键设置东西通行时间
{
num--;
qian=num/10;
bai=num%10;
display(qian,bai);
shu2=num;//将设置后的值赋给shu2
if(shu2==0)
{
shu2=25;
num=shu2;
qian=num/10;
bai=num%10;
display(qian,bai);
}
}
while(!
key3);
}
}
/*if(key4==0)
{
delay(10);
if(key4==0)
{
key4num++;
while(!
key4);
if(key4num==1)
{
TR0=1;
}
if(key4num==2)
{
TR0=0;
key4num=0;
}
}
}*/
if(key1num==3)
{
TR0=1;
}
}
//主函数
voidmain()
{
init();
while
(1)
{
display(qian,bai);
keyscan();
}
}
//定时器中断函数
voidtimer0()interrupt1
{
TH0=(65536—50000)/256;//重赋初值
TL0=(65536—50000)%256;
aa++;
if(aa==20)//定时到达1S
{
aa=0;
num--;
qian=num/10;
bai=num%10;
display(qian,bai);
if(bb==1)
{
if(num==3)
{red1=1;//起始状态为南北绿灯,东西红灯
yellow1=0;
green1=1;
green2=1;
yellow2=0;
red2=1;
}
if(num==0)
{
red1=0;//起始状态为南北绿灯,东西红灯
yellow1=1;
green1=1;
green2=0;
yellow2=1;
red2=1;
num=shu2;
qian=num/10;
bai=num%10;
display(qian,bai);
bb++;
}
}
if(bb==2)
{
if(num==3)
{red1=1;//起始状态为南北绿灯,东西红灯
yellow1=0;
green1=1;
green2=1;
yellow2=0;
red2=1;
}
if(num==0)
{
num=shu1;
qian=num/10;
bai=num%10;
display(qian,bai);
red1=1;//起始状态为南北绿灯,东西红灯
yellow1=1;
green1=0;
green2=1;
yellow2=1;
red2=0;
bb=1;
}
}
}
}
五、仿真过程与仿真结果
软件仿真
软件程序的调试一般可将重点放在分模块调试上,统调是最后一环,软件调试可以采取离线和在线调试两种方式。
前者不需要硬件仿真器,可借助于软件仿真器即可:
后者一般需要仿真系统的支持。
本次课题,用Keil软件来调试程序,通过各个模块的但不或跟踪调试,使程序逐渐趋于正常,最后统调程序.仿真
采用proteus软件,此软件功能强大且操作较为简单,可以很容易的实现各种系统的仿真。
首先打开proteus软件,在元件库中找到要选用的所有元件,然后进行原理图的绘制,绘制好后再选用Keil软件已近编译好的“。
hex文件,选择运行,观察显示结果,根据显示的结果和课题的要求再修改程序,再进行检查,直到满足为止。
1、仿真一开始,所有的灯全部都亮,数码管显示00,这是程序设计的初始状态,复位之后的状态亦如此。
2、按下开始键,程序开始进入循环的状态,首先东西向绿灯亮,南北向红灯亮,同时数码管进行从40s开始进行倒计时,剩余3s时,红绿灯都不亮,转为四个方向的黄灯,每隔一秒亮一次,3秒倒计时后,即主干通车停止,转入南北向通车,数码管倒计时25秒,待到3秒转为黄灯亮,红绿灯都不亮,进行循环。
仿真图如下:
六、安装与调试
首先制作电路板:
在PROTELDXP软件上画出实训原理图,接着导入制作PCB电路板,最后经打印、热转印、腐蚀、打孔,最后做出电路板.
步骤如下:
第一步:
利用一个能生成图像的软件生成一些图像文件,这里使用版本为Altium2004组织SCH文件,再利用网络表生成相应PCB图(可自动布线,也可手工布线),接着画PCB图,以备打印;
第二步:
将PCB图打印到热转印纸上;
第三步:
将打印好PCB的转印纸平铺在覆铜板上,准备转印;
第四步:
用热应机加温将转印纸上黑色油墨粉压在覆铜板上形成高精度的抗腐;
第五步:
热应机加温加压成功转印后的效果;
第六步:
准备好三氯化铁溶液进行腐蚀;
第七步:
腐蚀结束,清洗干净,晾干之后进行打孔。
第八步:
将焊盘铣刀装到台钻上,清理出焊盘部分,剩下的部分用于阻焊;
第九步:
安装所需预定原件并焊接好。
硬件调试
拿到电路板后,首先要检查加工质量,在确保没任何质量问题时再安装元器件。
元器件在安装前要足逐一检查,用万用表测其数值,看是否与所需相同,完成焊接后应先空载上电(芯片座不插芯片),并检查各引脚的电位是否正确。
若一切正常,方可在断电的情况下将芯片插入,再次检查各引脚的电位及其逻辑关系。
将万用表的探针放到单片机接电源的引脚上检测一下,看是否符合要求.
在调试时我遇到了一个问题:
用STC下载器无法将程序下载到单片机中,经检查,是COM端口和波特率选的不正确,应更改STC下载器的COM端口使之与电脑的COM端口相对应,波特率改为9600~115200即可下载成功。
七、原理图与PCB图
八、结论与心得
在实验过程中,片机作为核心控制元件,使得电路的可靠性比较高,功能也比较强大.而且可以随时的更新系统,进行不同状态的切换,进行不同状态的组合,但是在设计和调试过程中,也发现一些问题,譬如红绿灯的切换速度不够,黄灯时亮时而不亮,红绿灯规则效率偏低,数码管亮度不够等,亮度不够是因为排阻的阻值用的较大了.
还有,老师说我的排版不是很好,例如电阻,因为我是用手折弯的,而不是用镊子,所以这是我以后需要注意的地方.还有一个晶振焊接的不是很整齐,应该从新焊一下,但因为我怕麻烦,也怕重焊之后会影响美观,所以就没再去重试了。
另外,由于画PCB时,我漏画了一条线,以至于转化为板时那边出了问题,后来我就得自己对照着PCB再用导线把遗漏的导线连接上,花了不少时间,增加了许多工作量,所以说这些都还需要我们在实践中继续加强改进,得到进一步的完善.
这次课程设计,我发现单片机原理应用性很强,只靠老师的课堂讲解是远远不够的,只有自己动手去做才能发现自己的不足。
许多的余力和程序看似简单,但真正去做才知道知识并没有自己想的那样扎实,从而懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学理论与实际结合起来,才能真正提高自己的动手能力与思考能力,树立自己的工作信心。
相信会对今后的学习工作和生活有非常重要的影响
在设计过程中我们还得到了老师的帮助与意见.在学习过程中不是每个问题都能自己解决,向老师请教或向同学讨论也是一个解决问题,让自己更快进步和增强学习能力很好的办法。
九、参考文献
[1]苏家健,曹柏荣,汪志锋。
单片机原理及应用技术.北京:
高等教育出版社,2004,
[2]李广弟.单片机基础[M]。
北京:
北京航空航天大学出版社,1994.
[3]阎石.数字电子技术基础(第三版).北京:
高等教育出版社,1989。
[3]朱清慧Proteus教程—-电子线路设计、制版与仿真清华大学出版社2008版
[4]蒋亮ProtelDXP电路设计入门与应用机械工业出版社2005版
[5]王秋爽单片机开发基础与经典设计实例机械工业出版社2008版