51单片机交通灯课设论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基础工程设计(论文)说明书
题目:十字路口交通灯的设计
院(系):电子工程与自动化学院
专业:电子信息科学与技术
学生姓名:
学号:
指导教师:
2013年12月25日
摘要
交通信号灯是我们生活中常见的一种工具,一般的十字路口都会有。
红灯表示车辆需停下来等待,绿灯表示车辆可以通行,而黄灯时红灯和绿灯的过度时间,任何车辆都得注意,不得抢行。
交通灯规范了我们行驶车辆,减少了交通事故的发生,让十字路口的交通能够尽然有序的,让我们的生活更加踏实。
交通灯在生活中已经是不可缺少的了。
交通信号灯控制系统方式很多。
当今时代是一个自动化时代,交通灯控制等很多行业的设备都与计算机密切相关。
随着大规模集成电路及计算机技术的迅速发展,以及人工智能在控制技术方面的广泛运用,智能设备有了很大的发展,是现代科技发展的主流方向。
本次课程设计以模拟交通灯系统利用单片机AT89C51作为核心元件,实现了通过信号灯对路面状况的智能控制。
关键字:交通信号灯控制系统智能设备单片机
目录
引言 (1)
1 设计任务 (2)
2 方案的设计与系统组成 (2)
3 硬件各功能的介绍 (3)
3.1 AT89S52芯片简介 (3)
3.1.1 I/O口 (3)
3.1.2控制口 (3)
3.1.3 电源及时钟 (4)
3.2 数码管 (4)
4 软件设计部分 (4)
4.1 设计应实现的效果 (4)
4.2 延时的设计 (5)
4.3 程序设计的流程图 (5)
5 系统调试与结论 (6)
5.1 系统调试 (6)
5.1.1硬件检测 (6)
5.1.2软件调试 (6)
5.2 结论与体会 (6)
谢辞 (7)
参考文献 (8)
附录 (9)
附录1:原理图 (9)
附录2:PCB图 (9)
附录3:原件清单 (9)
附录4:程序代码 (10)
引言
这次的课程设计主要是利用单片机编程实现生活中的常见的常用的工具。
通过软硬件的结合,提高动手能力和编程能力。
加深对理论学习的理解与应用。
交通信号灯有绿黄红三种颜色,绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
模拟交通灯控制系统的设计,主要以单片机为控制核心的交通灯,利用状态机的思想,通过单片机的定时器产生秒信号,控制十字路口的红绿黄灯交替点亮和熄灭,并且用LED数码管显示十字路口两个方向的剩余时间。
数码管
数
码管
数码管
数码管
北
南
西
东
1 设计任务
利用单片机实现东西方向和南北方向
交叉的十字路口交通灯控制系统的要求: (1)东西方向为主干道,南北方向为干道;东西方向直行时间为9秒,南北方向直行时间为5秒,红灯和绿灯之间转换均有黄灯显示,显示时间2秒。
十字路交通灯模拟图如图1所示
(2)其余功能请参考实际交通灯系统自由
发挥。
图1:十字路口交通灯模拟图
2 方案的设计与系统组成
本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的 信号发生,还能进行倒计时显示。
可以选用AT89C51单片机及外围器件构成最小控制系统,12个发光二极管分成4组红绿黄三色灯构成信号灯指示模块,1个LED 东西南北各两个构成共同倒计时显示模块。
因此,本设计系统以单片机为控制核心,连接成最小系统,信号灯状态模块、LED 数码管倒计时模块接受输出。
单片机上电后,系统进入正常工作状态,执行交通灯状态显示控制,同时将时间数据倒计时输入到LED 数码管上实时显示。
系统的总体框图如2所示。
图2:系统的总体框图
单片机
最小系统
外围接口电
LED 数码管显
红黄绿信号
按键 复位电路
3 硬件各功能的介绍
3.1 AT89S52芯片简介
AT89S52 是美国ATMEL 公司生产的低电压,高性能CMOS 8 位单片机,片内含8k bytes 的可反复擦写的Flash 只读程序存储器和256 bytes 的随机存取数据存储器(RAM),器件采用ATMEL 公司的高密度、非易失性存储技术生产,与标准MCS-51 指令系统及8052产品引脚兼容,片内置通用8 位中央处理器(CPU)和Flash 存储单元,功能强大AT89S52 单片机适合于许多较为复杂控制应用场合。
AT89S52芯片引脚结构如图3所示:
图3:AT89S52芯片引脚图
AT89S52从引脚功能分为三大部分,分别是I/O口、控制口、电源及时钟。
3.1.1 I/O口
其中I/O口有P0,P1,P2,P3这4个8位口,这次设计使用P1口接发光二极管,如下图。
为了是二极管发光的亮度足够亮,所以二极管一段接VCC,又为了保护二极管,它与一个电阻串联。
显示时间的数码管接在P0口。
3.1.2控制口
(1)·EA/VPP:外部访问允许。
欲使CPU 仅访问外部程序存储器(地址为0000H—FFFFH),EA 端必须保持低电平(接地)。
需注意的是:如果加密位LB1 被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc 端),
CPU 则执行内部程序存储器中的指令。
Flash存储器编程时,该引脚加上+12V 的编程允许电源Vpp,当然这必须是该器件是使用12V 编程电压Vpp。
(2)·RST:复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。
3.1.3 电源及时钟
·Vcc:电源电压
·GND:地
·XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。
·XTAL2:振荡器反相放大器的输出端。
3.2 数码管
ED数码管(LED Segment Displays)是由多个
发光二极管封装在一起组成“8”字型的器件,引线
已在内部连接完成,只需引出它们的各个笔划,公共
电极。
LED数码管常用段数一般为7段有的另加一个
小数点。
LED数码管根据LED的接法不同分为共阴和
共阳两类,了解LED的这些特性,对编程是很重要的,
因为不同类型的数码管,除了它们的硬件电路有差异
外,编程方法也是不同的。
7段数码管引脚图如图4
所示。
图4:7段数码管引脚图此次设计用的是共阳数码管,将其公共电极3和8脚接VCC,其余每个引脚控制一段。
段选码与显示字符对应表如表1。
段选码C0H F9H A4H B0H 99H 92H 82H F8H 80H
显示字符0 1 2 3 4 5 6 7 8
段选码90H 88H 83H C6H A1H 86H 8EH
显示字符9 A B C D E F
表1:段选码与显示字符对应表
4 软件设计部分
4.1 设计应实现的效果
设计的交通灯工作过程为:(1)主干道东西通车,干道南北等待,即是东西方向亮绿灯,南北方向亮红灯,时间都为9秒;(2)过度阶段:东西南北方向都闪黄灯,时间为2秒;(3)干道南北通车,主干道东西等待,即是南北方向亮绿灯,东西方向亮红灯,时间都为5秒;(4)过度阶段:东西南北方向都闪黄灯,时间为2秒。
交通状态表如表2。
交通灯工作模式
东西方向绿灯亮9秒红灯亮5秒
南北方向
红灯亮9秒
黄灯闪2秒
绿灯亮5秒
黄灯闪2秒
表2:交通状态图 4.2 延时的设计
51单片机有2个定时器,分别有4种工作方式,。
此次设计选用的是定时器1工作方式1,则TMOD=10H 。
选用延时时间为1ms ,由于使用的晶振是12M 晶振,根据下面式子: ( 2^16-T0)*时钟周期*12=1ms ( 2^16-T0)*1/(12*10^6)*12=1*10^-3 算出T0=64536D=FC18H
由于定时的延时时间为1ms ,而交通灯闪烁的时间间隔为1s ,只需定时延时循环1000次即可。
4.3 程序设计的流程图 N
Y
N
Y
N
Y
N
Y
x
开始 初始化 所有灯都灭
东西方向亮绿灯,南北方向亮红灯 是否到9秒
东西方向、南北方向都闪黄灯
是否到2秒
东西方向亮红灯,南北方向亮绿灯
是否到5秒
是否到2秒
东西方向、南北方向都闪黄灯
桂林电子科技大学基础工程设计论文
图5:程序流程图
5 系统调试与结论
5.1 系统调试
5.1.1硬件检测
第一步:目测,检查外部的各种元件或则电路是否有断点;
第二步:用万用表测试。
先用万用表复核目测中有疑问的连接点,再检测各种电源线与地线之间是否有短路现象;
第三步:加电检测。
给板加电,检测所有的插座或是器件的电源端是否符合要求的值;
第四步:是联机检查。
因为只有用单片机开发系统才能完成对用户系统的调试。
5.1.2软件调试
软件调试是通过对用户程序的编译、连接、执行来发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。
程序后,编辑,查看程序是否有逻辑的错误。
5.2 结论与体会
交通灯基本功能可以实现,数码管显示的倒计时也基本正确,但没有附加功能,自己动手制作的电路板不够美观。
经过这次课程设计,我从实践中学到很多东西,当然也在实践中发现自己的很多的不足,比如:动手能力还需加强,出错了不够耐心,理论知识不够扎实等等。
刚做好第一块板时,急于就成,花费了很多精力和时间,在科协做好板后便迫不及待地焊上元器件,而结果是失败的。
这深深打击了我的积极性,一下子十分浮躁。
理清情绪和思路后,我从新检查了自己的电路图和硬件,发现是下载接口与单片机的接口搞错了,于至于怎么都下载不了,通过在电路板上的简单修改,终于可以下载程序了。
我深深的体会到,理论和实践的中间需要我们的不断努力和尝试,我们不能一下子就被困难吓到,应该耐心地找出问题,解决问题,这才是关键的。
再此过程中,也有很多同学帮忙,也让我体会到了团结互助的重要性。
由于PCB 布线经验不够,做出的板太大,浪费资源;在功能方面还是可以增加和拓展的地方。
希望能在下次的设计中做得更好。
桂林电子科技大学基础工程设计论文
谢辞
感谢学院给我们提供这样的实践动手机会,并通过课程设计使我们能够有机会将书本上学到的知识运用到的实际中去。
在课设过程中于老师给了我很多的指导和帮助,并监督我及时完成了本次课程设计,在此特别感谢胡老师和给予我帮助的同学。
参考文献
[1] 李群芳. 单片微型计算机与接口技术(第三版).电子工业出版社, 2008.5.
[2] 范翠丽.Protel DXP 实用培训教程.清华大学出版社. 2005.4.
[3] 谭浩强C语言程序设计(第2版).清华大学出版社,.2008.11
附录
附录1:原理图
附录2:PCB图
附录3:原件清单
附录4:程序代码
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit EW_red = P1^6;
sbit EW_green = P1^3;
sbit EW_yellow = P1^5;
sbit NS_red = P1^2;
sbit NS_green = P1^0;
sbit NS_yellow = P1^1;
uchar code
table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0 x86,0x8e};
char count=9;
/********以下是延时函数(利用定时器)********/
void Delay_ms(uint xms)
{
while(xms!=0)
{
TMOD=0x11;
TR1=1;
TH1=0xfc;TL1=0x66;
while(TF1!=1);
TF1=0;
xms--;
}
TR1=0;
}
/*********以下是主函数********/
void main(void)
{
EW_red=1; EW_green=1; EW_yellow=1; //东西行NS_red=1; NS_green=1; NS_yellow=1;
while(1)
{
for(count=9;count>-1;count--)
{
EW_red=1; EW_green=0; EW_yellow=1; //东西行
NS_red=0; NS_green=1; NS_yellow=1;
P0=table[count];
Delay_ms(1000);
}
for(count=2;count>-1;count--) //东西南北黄灯闪
{
EW_red=1; EW_green=1; EW_yellow=~EW_yellow;
NS_red=1; NS_green=1; NS_yellow=~NS_yellow;
P0=table[count];
Delay_ms(1000);
}
for(count=5;count>-1;count--) //南北行
{
EW_red=0; EW_green=1; EW_yellow=1;
NS_red=1; NS_green=0; NS_yellow=1;
P0=table[count];
Delay_ms(1000);
}
for(count=2;count>-1;count--) //东西南北黄灯闪 {
EW_red=1; EW_green=1; EW_yellow=~EW_yellow;
NS_red=1; NS_green=1; NS_yellow=~NS_yellow;
P0=table[count];
Delay_ms(1000);
}
}
}。