基于51单片机的交通信号灯设计

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

void delay( )
//延时程序
{
unsigned tt;
for(tt=0;tt<1000;tt++);
}
display(int zt)
//显示子程序
{
char chr[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};
char i,lie,a[4];
a[3]=zt%10;
zt=zt/10;
a[2]=zt%10;
zt=zt/10;
a[1]=zt%10;
zt=zt/10;
a[0]=zt%10;
lie=0x01;
for(i=0;i<4;i++)
{
P2=lie;
P0=~chr[a[i]];
delay( );
lie=lie<<1;
}
}
void EX0_INT() interrupt 0
//紧急情况中断子程序
{
ห้องสมุดไป่ตู้i=~i;
}
//////////////////////////////////////////////////////////////////////////////////////////////////
void main()
{
TMOD=0x01;
//初始换化
TH0=0x3c;
(二)、部分电路设计
1、时钟电路 时钟是一切微处理器、微控制器内部电路工作的基础。单片机内部有一个自
激振荡电路,它是定时控制部件中的一部分,可以通过内部自激振荡或外部提供 振荡源这两种方式,驱动内部时钟电路产生系统时钟信号。
内部方式:在 XTAL1、XTAL2 跨接定时元件和两个电容就构成了自激振荡器, C1、C2 取 5-30PF,起微调和稳定作用。
周期分别为 1µs 和 2µs。 这里使用 12MHZ 晶振和两个电容就构成的自激振荡器。如图:
2、复位电路 复位电路一般有 2 种复位操作方式:上电位复位方式和手动复位,两种复
位的操作电路形式不同,如下图。
上电自动复位:通过电容充电来实现的,VCC 的上升时间不超过 1ms,就可 以实现上电位复位。
手动开关复位:手动开关复位在系统出现操作错误或程序运行出错时使用。 在单片机系统运行过程中,按下复位键,单片机被强制执行复位操作,系统可以 退出错误运行状态,恢复正常工作。
此次设计选择的为第二种手动开关复位。 3、时间显示电路
在单片机应用系统中通常使用由八个 LED 器件组成的七段 LED 显示器,其中 七个 LED 构成七笔字形,另一个 LED 构成小数点(故有时称八段显示器)。如图 所示,其接法共有两种:共阴极与共阳极,前者是输入高电平有效(LED 发光),
的测试,发现问题出在焊接上,在焊接时因疏忽而没能将左拐灯与电路焊在一起, 连上以后四个左拐灯都可正常亮灭。
3、数码显示管显示数字,最初以为模拟与实际电路有差别,对刷屏的灵敏 度不同,但通过改变刷屏频率,还是不亮,最终发现是电路板的插孔顺序插反了, 经改正,数码管可正确显示数字,但亮度不够,可能是因为电路板上的 245 驱动 电压不够高。
(一),方案比较与论证
方案一:应用 CPLD 器件。采用 CPLD 器件设计起来结构清晰,各个模块从硬 件上设计起来相对简单,控制与显示模块间的连接也会比较方便,但是考虑到成 本,EDA 在功能扩展上比较受限制,而且 EDA 占用的资源也相对多一些,从成本 上来讲,用 CPLD 器件来设计没有什么优势。
(二)、具体设计思路
作为一个交叉路口交通信号灯控制器,其东西、南北两个方向除了设置红、 黄、绿、左拐 4 盏信号灯指示是否允许通行外,还设有时钟,以倒计时方式显示 每条路允许通行或禁止通行的时间。
东西、南北两个方向各种信号灯的亮、灭时间能非常方便地进行设置和修改, 使控制器既可用于两方向通行时间相同的普通交叉路口,也可通过参数的设置或 修改用于通行时间不同的主辅路口。正常运行时,交通等亮灯的状态转换如表所 示。表中:ag、ay、al、ar 分别为东西方向亮绿灯、黄灯、左拐灯、红灯的时
间;bg、by、bl、br 分别为南北方亮绿灯、黄灯、左拐灯、红灯的时间;显然 要求 ag+ay+al+ar=br,而 bg+by+bl+br=ar。亮灯状态由 S1→S2→S3→S4→S5→ S6→S7→S0→S1 不断循环,黄灯用于亮绿灯和亮左拐灯后进行缓冲,提示该方 向即将禁行。
对应上述亮灯情况的车辆通行方式如下图:
三电实验工程设计报告
项目名称:交通信号控制器
作者: 2012.2.27
一、功能和性能要求
(1)设计一个交通信号灯控制器,由一条主干道和一条支干道汇合成十字 路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮允许 通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
(2)主干道处于常允许通行的状态,支干道有车来时才允许通行。主干道 亮绿灯时,支干道亮红灯;支干道亮绿灯时,主干道亮红灯。
方案二:应用单片机。单片机有丰富的中断源,方便本实验的设计,它的准 确度相当高,并且 C 语言和汇编兼容的编程环境也很方便来实现一些调用。I/O 口功能也比较强大,方便使用,方便对设计进行扩展,使设计更加完善,成本也 相对低一些,虽然在控制与显示的结合上有些复杂,但和前者相比用单片机设计 还是比较可行的。
4、道路通行方式四时的显示情况,此时东西南北方向车辆均禁止直行;南 北路口车辆可以左拐;各个路口车辆均可右拐,人行可通过。
5、紧急情况时,所有路口均亮红灯,禁止所有普通车辆通行,人行道显示 禁止通行。数码管显示‘no’字样。
七、程序源代码
#include<reg52.h>
sbit P1_0 = P1^0;
(三)、系统程序流程图
1、主程序流程图
2、子程序流程图
方式一流程图 方式二流程图
方式三流程图
三、系统设计
(一)、系统的组成
方式四流程图
本设计利用单片机最小系统设计交通控制器。主要元器件是单片机 89S51, 由它控制车辆通行时显与交通信号显示控制。主要由单片机、时钟电路、复位电 路、时间显示电路、信号灯控制五部分组成。各部分关系如下图。
利用 89S51 单片机控制交通灯系统工作。其中 P0 口接数据输出口,与外部 数码管连接,P2 口与数码管的 COM 口连接,用于选择数据输出的地址,这样就 可以实现时间的动态显示,并且节省了端口数。P1 口作为红黄绿灯的控制口, 通过上拉电阻将红黄绿灯的正极接高电平,负极接在 P1 口上,我们可以利用控 制单片机的 P1 口的输出数据控制红黄绿灯的亮灭。紧急情况处置使用外部中断 0 进行管理,当检测到 P3.2 端口出现一次负脉冲,系统进入紧急响应程序,时 钟停止计时。当再次检测到负脉冲,程序从紧急响应中跳出,从断点处继续执行。
晶振频率:f=1.2-12MHZ,常用频率为 6、12、11、0592MHZ。 外部方式:外部振荡脉冲信号直接由 XALT1 端输入,此时,XALT2 端悬浮。 这种方式常用于多片单片机系统,以使相互的时钟信号保持同步。 晶振周期:为振荡器输出的时钟脉冲频率的倒数。是单片机中最小、最基本 的时间单位。 状态周期:也叫时钟周期,是振荡频率经 2 分频后获得的信号周期,称 S, 显然,S 为晶振周期的 2 倍。 机器周期:12 个晶振周期为一个机器周期,对应计算机执行一个基本操作 所需的时间。 指令周期:执行一条指令所需的时间,至少包含一个机器周期。 指令字节:指令占用存储空间的字节数,有单字节、双字节、三字节三类。 当时钟频率为 12MHZ 和 6MHZ 时,晶振周期分别为 1/12µs 和 1/16µs,机器
(二)、 调试的步骤如下:接通电源,观察电路现象,与仿真效果相比较,找 出出错的地方,并逐步按照合理顺序,由简单到复杂逐渐解决问题。
(三)、调试中出现的问题及解决方案: 1、南路红灯不亮,通过万用表测试电路的通断状况,及用做电源检测二极
管是否坏掉,发现红灯二极管引脚出现虚焊,经重新补焊,红灯可正常发光。 2、东西路和南北路的四个左拐灯都不亮,通过对电路板的检查,和万用表
//东西红灯
sbit P1_1 = P1^1;
//东西黄灯
sbit P1_2 = P1^2;
//东西绿灯
sbit P1_3 = P1^3;
//南北红灯
sbit P1_4 = P1^4;
//南北黄灯
sbit P1_5 = P1^5;
//南北绿灯
sbit P1_6 = P1^6;
//东西左转灯
sbit P1_7 = P1^7;
后者是输入低电平有效。其工作原理是:控制其中各段 LED 的亮与暗即可显示出 相应的数字、字母或符号。
七段显示器进行显示的信息称为七段代码,不同接法的七段代码显然是不相 同的,共阴极和共阳极的七段代码的相同字符相加为 FFH。两种代码分别如图所 示:
应此次设计要求,这里用并行口动态显示,电路如图。
六、 测试结果及分析
1、道路通行方式一时的显示情况,此时东西方向车辆可以直行;南北路口 车辆禁止直行,人行可通过;各个路口车辆均可右拐。
2、道路通行方式二时的显示情况,此时东西南北方向车辆均禁止直行;东 西路口车辆可以左拐;各个路口车辆均可右拐,人行可通过。
3、道路通行方式三时的显示情况,此时南北方向车辆可以直行;东西路口 车辆禁止直行,人行可通过;各个路口车辆均可右拐。
他车辆需要优先放行时,即可中断正常运行,进入特殊运行状态。此时两条道路 上所有车辆都停止通行,红灯全亮,时钟停止计时,数码管显示”no”字样。当 特殊状态结束后,系统恢复中断时的状态,继续正常运行。
为实现上述功能要求,可设计一个基于单片机的交通控制系统。单片机有丰 富的中断源,方便本实验的设计,它的准确度相当高,并且 C 语言和汇编兼容的 编程环境也很方便来实现一些调用。I/O 口功能也比较强大,方便使用,方便对 设计进行扩展,使设计更加完善,成本也相对低一些。根据题目要求本组选用 LED 发光二极管,并把 LED 发光管排成十字型,作为直行和左右拐弯指示,形象 直观;选择 LED 发光二极管可以从颜色上区别认得通行和停止。
(3)主、支干道均有车时,两者交替允许通行,主干道每次放行 40 秒,支 干道每次放行 40 秒,左转允许 20 秒。
(4)在每次由绿灯亮到红灯亮的转换过程中,要亮 5 秒黄灯作为过渡,使 行驶中的车辆有时间停到禁行线外,设立 5 秒计时、显示电路。
(5)设置紧急情况处置方案。
二、总体设计方案,方案比较,比较结论。
TL0=0xb0;
TR0=1;
EA=1;ET0=1; EX0=1;IT0=1; //开中断
while(1)
四、材料及费用明细表
名称 单片机 发光二极管 六位 LED 数字显示器 石英晶体振荡器 电阻
五、调试方案设计
数量 一个 20 个 1个 一个 12 个
元件说明 89C51 型单片机 红色 4 个、黄色 4 个、绿色 12 个 分段式数字显示器(共阳极) 12 兆振荡频率
100 欧
(一)、调试的目的在于检查所设计电路是否能达到照仿真出来的效果,若发现 问题,找出出现问题的原因并进行修改。
3、信号控制电路
根据题目要求选用 LED 发光二极管,并把 LED 发光管排成十字型,作为直行、 左拐弯和人行道指示,形象直观;选择 LED 发光二极管可以从颜色上区别认得通 行和停止。
4、系统电路图
显示器左边两位显示东西方向的倒计时,右边的两位显示南北方向的倒 计时。(图中略去了时钟电路与复位电路部分)
//南北左转灯
sbit D1=P3^0;
//东西路口人行道灯
sbit D2=P3^1;
//南北路口人行道灯
char point=15,time=120,out=0x01,i=1;//定义变量
/////////////////////////////////////////////////////////////////////////////////////////////////
对应于交通信号灯则分如下几种情况:
状态 S S1 S2 S3 S4 S5 S6 S7
S0
东西方向 绿灯 黄灯 左拐灯 黄灯 红灯 红灯 红灯 红灯
亮灯时间 ag ay al ay
ar
南北方向 红灯 红灯 红灯 红灯 绿灯 黄灯 左拐灯 黄灯
亮灯时间
br
bg by bl
by
当东西南北方向中任意方向出现特殊情况,例如消防车、警车执行任务或其
相关文档
最新文档