基于at89c51的交通信号灯控制系统

基于at89c51的交通信号灯控制系统

ID:21497616

大小:25.00 KB

页数:5页

时间:2018-10-22

基于at89c51的交通信号灯控制系统_第1页
基于at89c51的交通信号灯控制系统_第2页
基于at89c51的交通信号灯控制系统_第3页
基于at89c51的交通信号灯控制系统_第4页
基于at89c51的交通信号灯控制系统_第5页
资源描述:

《基于at89c51的交通信号灯控制系统》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、基于AT89C51的交通信号灯控制系统  摘要随着经济的发展我国汽车保有量不断增加,道路交通问题日益凸显。本文主要研究以AT89C51单片机作为控制系统,实现对十字路口交通信号灯的控制。以东西向为例,绿灯亮80秒、黄灯亮3秒、红灯亮60秒、绿灯亮80秒依次循环实现对于东西向车流的控制。采用AT89C51单片机控制交通信号灯具有简单可靠等优点。  【关键词】单片机设计  1AT89C51?纹?机概述  1.1AT89C51单片机简介  AT89C51单片机是ATMEL公司出品的一款与MCS51兼容的一款单片机,属于第三代

2、单片机。AT89C51提供4K的Flash存储器,128字节RAM,4个IO口,2个16位定时器,一个中断系统,一个串行通信口,片内震荡器和时钟电路。AT89C51支持两种软件可选的节电工作模式。空闲模式停止CPU的工作但允许其他功能部件如RAM,中断系统等继续工作,掉电模式保持RAM中的内容不丢失其他所有部件都将停止工作一直到下一个硬件复位。  1.274HC138译码器简介  74HC138译码器是一个高速CMOS器件,具有三个输入端ABC及其3个特有的使能输入端两个低有效(E1和E2)一个高有效(E3)。只有E1

3、,E2置低电平,E3置高电平时译码器才能正常译码。否则译码器输出将全为高电平。74HC138译码器按照输入端三位二进制输入码的条件从8个输出端译出一个低电平输出。  2方案论证  利用单片机设计一个十字路口交通灯控制系统。利用用单片机控制LED灯模拟指示。东西向通行时间为8秒,南北向通行时间为60秒,缓冲时间为3秒。以东西向为例,东西向绿灯亮80秒,黄灯亮3秒,红灯亮60秒,绿灯再亮80秒依次循环。  3设计原理  3.1硬件原理分析  本系统主要由单片机控制系统、译码模块、数码管显示模块、交通灯模块等组成。  单片机

4、控制控制模块:选用AT89C51单片机,外加震荡电路为单片机提供脉冲信号。将51单片机的P3.0,P3.1,P3.2用作普通IO口使用,利用这三个口控制交通信号灯模块。P3.0口输出为高电平绿灯亮,P3.1口输出为高电平黄灯亮,P3.2口输出为高电平红灯亮。利用P1.0,P1.1,P1.2控制译码模块(3-8译码器)。利用P2口与译码模块控制数码管显示,P2口输出值即为译码器选中的当前数码管所显示的值。  译码模块:由一个3-8译码器构成。输出端只利用Y0,Y1,Y2,Y3四个口。输入端由单片机的P1.0,P1.1,P

5、1.2控制。如:当前P1.0输出为高,P1.1输出为高,P1.2输出为低,则Y3输出为低选中最右端数码管显示。P1口不断输出不同值,依次轮流选中四个数码管进行显示,在整个系统运行过程中都要不断地进行选中即进行扫描。  数码管显示模块:由单片机P2口与译码器共同控制。由译码器选中当前的数码管,当前数码管显示P2口传过来的值。  交通灯模块:由红黄绿三个LED灯组成。由单片机的P3.0,P3.1,P3.2控制。P3.0口输出为高电平绿灯亮,P3.1口输出为高电平黄灯亮,P3.2口输出为高电平红灯亮。  3.2软件原理分析 

6、 单片机的控制程序主要由条件标志位g的判断模块、绿灯显示模块、黄灯显示模块、红灯显示模块构成。  条件标志位g判断模块:设条件标志位g,若g=0执行绿灯显示程序,若g=1执行黄灯显示程序,若g=2执行红灯显示程序。  绿灯显示模块:首先进行一段时间的延时,然后对f进行判断(f初始值为80)若f>0则直接输出f值,采用不断取余的方式显示f的十位个位。若f<=0则将f重新赋值并修改条件标志位g再输出显示一次f后返回转入黄灯显示程序执行。  黄灯显示模块:基本步骤与绿灯显示模块相同,只是显示所赋f初始值(f初值为3)不同。 

7、 红灯显示模块:基本步骤与绿灯显示模块相同,只是显示所赋f初始值(f初值为60)不同。  3.3相应程序代码  //控制程序以绿灯为例  if(g==0)  {  for(c=0;c<250;c++);//做一个0-250的循环,不执行其他操作,只为延时  for(c=0;c<250;c++);  if(++e>250)//做一个延时,时间到将显示内容加1  {  e=0;//清零,为下一次延时做准备  if(f<=0)  {  f=81;//循环结束后初始化  g=1;//标志位置位  }  f--;  }  P2=

8、0;//关一次显示,以免显示出鬼影  if(++d>1)d=0;//先将d加1,然后判断是否大于1,大于1归零  if(d==0)//如果d=0,显示十位  {  P1=0x01;  P2=LED[(f%100)/10];//将要显示的f的十位提取出来查表后送显示  }  else//如果d=1,显示个位  {  P1=0x00;

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。