单片机课程设计交通灯控制系统C51版副本.docx
《单片机课程设计交通灯控制系统C51版副本.docx》由会员分享,可在线阅读,更多相关《单片机课程设计交通灯控制系统C51版副本.docx(17页珍藏版)》请在冰豆网上搜索。
单片机课程设计交通灯控制系统C51版副本
湖南工业大学
课程设计
资料袋
电气与信息工程学院3学年第1学期
课程名称单片机系统课程设计指导教师凌云职称教授
学生姓名刘宝雨专业班级测控1002班学号***********
题目交通灯控制系统(C51版)
成绩起止日期2012年12月10日~2012年12月28日
目录清单
序号
材料名称
资料数量
备注
1
课程设计任务书
2
课程设计说明书
3
课程设计图纸
张
4
心得体会
5
6
湖南工业大学
课程设计任务书
2012—2013学年第1学期
电气与信息工程学院测控技术与仪器专业102班
课程名称:
单片机系统课程设计
设计题目:
交通灯控制系统(C51版)
完成期限:
自2012年12月17日至2012年12月28日共2周
内
容
及
任
务
1.1倒计时定时器设计
1.1.120s倒计时定时器:
倒计时由按钮启动,计时精度0.1s,在数码管中显示倒计时值。
1.1.30分钟倒计时定时器:
倒计时由按钮启动,计时精度1s,在数码管中显示倒计时值。
1.2交通灯控制系统设计
4个方向的交通信号灯总数不少于24个,不同路口的交通控制方案(包括信号灯数量、各方向的通行顺序与通行时间)通过修改数据表改变(不允许改程序),每个方向用2位数码管显示倒计时时间。
1.3在Proteus中仿真,分析仿真结果
1.4用C51语言编写单片机程序
1.5撰写课程设计说明书(课程设计报告)
进
度
安
排
起止日期
工作内容
2012.12.17-2012.12.21
讲述设计内容及基本原理,进行系统的设计
2012.12.24-2012.12.28
完成系统调试,课程设计的验收
主
要
参
考
资
料
[1]欧伟明、何静.单片机原理与应用系统设计.电子工业出版社,2009年
[2]刘苗生、潘宗预.单片机测控系统设计.中国物质出版社,2006年
单片机系统课程设计说明书
交通灯控制系统(C51版)
起止日期:
2012年12月17日至2012年12月28日
学生姓名
刘宝雨
班级
测控1002班
学号
10401600244
成绩
湖南工业大学电气与信息工程学院
2012年12月10日
◆前言-----------------------------------------------------------------------2
一、总体设计要求----------------------------------------3
1.硬件、框图--------------------------------------------3
2.软件、模块及任务---------------------------------------3
二、硬件设计--------------------------------------------4
1.硬件原理图---------------------------------------------4
2.器件选择-----------------------------------------------4
3.电路设计-----------------------------------------------6
三、软件设计--------------------------------------------7
1.程序流程图---------------------------------------------7
2.程序编写-----------------------------------------------8
四、仿真调试-------------------------------------------14
五、实验总结-------------------------------------------15
六、参考文献-------------------------------------------16
前言
如今随着人们生活水平的提高,车辆越来越多,交通事故频繁发生。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量,提高道路通行能力,减少交通事故有明显效果。
交通灯在城市交通中起着重要的作用,它与人们日常生活密切相关,是人们出行的安全保障。
因此提供一个可靠、安全、便捷的多功能交通灯控制系统有着现实的必要性。
为了解决这些问题,我们更应该提高交通控制和管理水平,合理使用现有交通设施,充分发挥其能力,提高交通效率,促进和谐交通的建立。
近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。
本系统设计一个基于单片机的交通灯控制系统。
通过对交通灯的设计仿真和模拟,来加强对单片机的应用的了解和学习,加强对课堂理论知识的学习,同时为以后的进一步深造打下一个良好的基础。
一、总体设计要求
1.硬件方案
根据设计的要求可知,系统的硬件原理框图如下图所示。
系统硬件框图
单片机可选用AT89C51,它与8052系列单片机全兼容,但其内部带有4KB的FLASHROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。
南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。
若单片机的IO口不够用时,可以考虑用扩展来满足系统的要求。
2.软件方案
根据设计要求,程序框图如图1所示。
软件可由C语言完成,也可由C语言完成。
软件设计可以分为以下几个功能模块:
主程序:
初始化
计时程序模块:
为定时器的中断服务子程序,完成0.1秒(或其他时间)和1秒的时间定时。
显示程序模块:
完成24个发光二极管和8个LED数码管的显示驱动。
软件设计程序流程图
3、硬件设计
1、原件选择
◆AT89C51芯片
AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,可以按照常规方法对其进行编程,也可以在线编程。
其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。
◆共阴极数码管
共阴极数码管的管脚如图所示,其中标注共极的管脚接电源和地,标注字母的管脚分别接译码器的对应输出端;DP控制小数点的显示,若不需要显示,则该端口接电平或是悬空,若需要显示,则接高电平;共阴极数码管当输入高电平时显示。
2、电路设计
ATMEL公司生产的AT89C52单片机它是硬件电路的核心部分,时钟电路晶振使用12MHz
◆时钟电路设计如下图所示:
单片机系统的时钟电路
◆复位电路如下图所示:
单片机系统的复位电路
◆电源电路设计
电源用5V直流变压器直接供电。
供电电路
显示电路采用8个共阴数码管,P1口作为数码管的输入,分别作为东西南北四路数码管的位选端。
数码管显示电路
三、软件设计
1、程序流程图
主程序流程图
2、程序编写
#include
#defineuintunsignedint
#defineucharunsignedchar
sbitdula=P2^0;
sbitwela=P2^1;
ucharcodetable[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};ucharnum,deng,dengl,shi,ge,lshi,lge;
intshijian,shijianl;
voiddelay(uintz)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
voiddisplay(ucharshi,ucharge)
{
dula=1;
P0=table[shi];
dula=0;
P0=0x00;
wela=1;
P0=0xfe;
wela=0;
P0=0x00;
delay(5);
dula=1;
P0=table[ge];
dula=0;
P0=0x00;
wela=1;
P0=0xfd;
wela=0;
P0=0x00;
delay(5);
}
voiddisplayl(ucharlshi,ucharlge)
{
dula=1;
P0=table[lshi];
dula=0;
P0=0x00;
wela=1;
P0=0xfb;
wela=0;
P0=0x00;
delay(5);
dula=1;
P0=table[lge];
dula=0;
P0=0x00;
wela=1;
P0=0xf7;
wela=0;
P0=0x00;
delay(5);
}
voiddx()
{
if(shijian==0)
{
switch(deng)
{
case0:
shijian=20;//左转弯绿灯
deng=1;
break;
case1:
shijian=5;//左转弯黄灯
deng=2;
break;
case2:
shijian=30;//直走绿灯
deng=3;
break;
case3:
shijian=5;//直走黄灯
deng=4;
break;
case4:
shijian=60;//禁止通行
deng=0;
break;
}
}
if(shijianl==0)
{
switch(dengl)
{
case0:
shijianl=60;//禁止通行
dengl=1;
break;
case1:
shijianl=20;//左转弯绿灯
dengl=2;
break;
case2:
shijianl=5;//左转弯黄灯
dengl=3;
break;
case3:
shijianl=30;//直行绿灯
dengl=4;
break;
case4:
shijianl=5;//直行黄灯
dengl=0;
break;
}
}
if(num==20)
{
num=0;
shijian--;
shijianl--;
}
lshi=shijianl/10;
lge=shijianl%10;
displayl(lshi,lge);
shi=shijian/10;
ge=shijian%10;
display(shi,ge);
switch(deng)
{
case1:
P3=0x21;//左转弯绿灯直行红灯
break;
case2:
if(shijian%2==0)//左转弯黄灯闪烁直行红灯
P3=0x22;
if(shijian%2==1)
P3=0x20;
break;
case3:
P3=0x0c;//直行绿灯左转弯红灯
break;
case4:
if(shijian%2==0)//直行黄灯闪烁左转弯红灯
P3=0x14;
if(shijian%2==1)
P3=0x04;
break;
case0:
P3=0x24;//直行红灯左转弯红灯
break;
}
switch(dengl)
{
case1:
P1=0x24;//直行红灯左转弯红灯
break;
case2:
P1=0x21;//左转弯绿灯直行红灯
break;
case3:
if(shijian%2==0)//左转弯黄灯闪烁直行红灯
P1=0x22;
if(shijian%2==1)
P1=0x20;
break;
case4:
P1=0x0c;//直行绿灯左转弯红灯
break;
case0:
if(shijian%2==0)//直行黄灯闪烁左转弯红灯
P1=0x14;
if(shijian%2==1)
P1=0x04;
break;
}
}
voidmain()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
while
(1)
{
dx();
}
}
voidtime()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}
四、仿真调试
五、总结
这是我第一次次做单片机课程设计,可想而知结果也很糟糕,虽然遇到了很多的困难与问题,但是在自己的自学和同学的帮助之下,圆满的完成任务。
本设计采用的是软硬件结合的方案,所以对软件编程有一定的要求,而且这也是我第一次自己写C语言程序,刚开始思路很僵硬也不知道机械语言的那种很强的逻辑性,最后通过多看程序,多思考和改进终于实现软件功能。
虽然硬件电路比较简单,但是首先要有比较好的布局,这关系到美观和走线的方便,再一个就是电路的排查方面,第一次设计出来的电路总是或多或少有一些问题这就需要细心与耐心的排查。
通过这次课程设计使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。
使我在单片机的基本原理、单片机应用系统开发过程以及在常用编程设计思路技巧特别是C语言的掌握方面都能向前迈了一大步。
本次课程设计的过程是艰辛的不过收获却是很大的.
总体觉得这次的课程设计对自己自学能力动手能力是一个很大的考验和检查。
六、参考文献
[1]朱承高.电工及电子技术手册.北京:
高等教育出版社,1990
[2]周润景.PEOTEUS在MCS-51&ARM7系统中的应用百例.北京:
电子工业出版社,2006
[3]李朝青.单片机原理及接口技术(第三版).北京:
北京航空航天大学出版社,2005
[4]郭天祥.十天学会单片机