简单交通灯控制系统案例..pdf

上传人:tbuqq 文档编号:5355826 上传时间:2020-04-22 格式:PDF 页数:5 大小:284.15KB
返回 下载 相关 举报
简单交通灯控制系统案例..pdf_第1页
第1页 / 共5页
简单交通灯控制系统案例..pdf_第2页
第2页 / 共5页
简单交通灯控制系统案例..pdf_第3页
第3页 / 共5页
简单交通灯控制系统案例..pdf_第4页
第4页 / 共5页
简单交通灯控制系统案例..pdf_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《简单交通灯控制系统案例..pdf》由会员分享,可在线阅读,更多相关《简单交通灯控制系统案例..pdf(5页珍藏版)》请在三一文库上搜索。

1、简单交通灯控制系统案例 1确定任务针对本任务给出一个简化的交通灯控制系统,即在单片机最小系 统下,由 P2、P0 口连接 12 个发光二极管,分别代表四个路口的红、绿、黄灯,初 始态为四个路口的红灯全亮之后,东西路口的绿灯亮20 秒,南北路口的红灯亮,东 西路口方向通车;延时一段时间后,东西路口的绿灯熄灭,黄灯开始闪烁,每隔1s 闪烁 1 次,闪烁 3 次后,东西路口红灯亮,而同时南北路口的绿灯亮20 秒,南北路 口方向开始通车;延时一段时间后,南北路口的绿灯熄灭,黄灯开始闪烁,每隔1s 闪烁 1 次,闪烁 3 次后,再切换到东西路口的绿灯亮,东西方向通车;之后重复以 上过程。 2硬件电路图设

2、计根据本任务的要求,选用AT89S51,配备晶振电路和复位 电路,晶振频率为12MHz,设计的原理图如下图所示。为了方便线路连接,P0口的 低 6 位分别接西、北路口的红、黄、绿灯(发光二极管,采用共阳极的连接方式), P2 口的低 6 位分别接东、南路口的红、黄、绿灯。 简单交通灯控制系统硬件电路图 3 软件设计根据本任务要求及设计的硬件电路图, 各路口的灯亮的规律与P2、 P0 口的取值有关系到,其规律如下表所示。 交通灯控制系统真值表 规律 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 十六 进制东绿东黄东红南绿南

3、黄南红西绿西黄西红北绿北黄北红 红灯全亮1 1 0 1 1 0 1 1 0 1 1 0 0x36 东 西 绿 灯 亮, 南北红 灯亮 0 1 1 1 1 0 0 1 1 1 1 0 0x1E 东 西 黄 灯 亮, 南北红 灯亮 1 0 1 1 1 0 1 0 1 1 1 0 0x2E 东 西 红 灯 亮, 南北绿 灯亮 1 1 0 0 1 1 1 1 0 0 1 1 0x33 东 西 红 灯 亮, 南北黄 灯亮 1 1 0 1 0 1 1 1 0 1 0 1 0x35 本任务涉及两个定时时间,一是每个路口的绿灯亮20s,另一个是黄灯闪烁时间 间隔 1s (每隔 0.5s黄灯状态转换一次),显然

4、最容易实现的方法就是利用定时器,可 以用定时器 0 控制路口绿灯亮的时间,用定时器1 控制黄灯状态转换的时间间隔, 但是两个定时器的定时都不可达到20s或 0.5s, 所以可以让两个定时器都工作于方式 1,定时时间为 50ms,引进两个变量time(初值为 400)和 timey(初值为 20) ,当 定时器发出中断时,这两个变量分别减1,直到为 0 则达到定时时间。 根据以上分析, TMOD 应赋值为 0x11,两个定时器计数次数为50000。源程序 如下: #include unsigned char time=20*20,timey=10,county=6; /绿灯亮 20s,黄灯状态转

5、换时间间 隔 0.5s,转换 6 次 unsigned char allr=0x36; /所有路口的灯全红 unsigned char ewg_snr=0x1e; /东西路口绿灯亮,南北路口红灯亮 unsigned char ewy=0x2e; /东西路口黄灯亮 , 南北路口红灯亮 unsigned char sng_ewr=0x33; /南北路口绿灯亮,东西路口红灯亮 unsigned char sny=0x35; /南北路口黄灯亮,东西路口红灯亮 sbit P01=P01; sbit P04=P04; sbit P21=P21; sbit P24=P24; bit ewg=1; /刚才是否

6、是东西路口绿灯亮过 void isr_time0(); main() unsigned int i; P0=P2=allr; for(i=50000;i0;i-); P0=P2=ewg_snr; TMOD=0x11; /定时器 1 和定时器 0 均工作于方式 1 TL0=-50000;TH0=-500008; /两个定时器均定时50ms TL1=-50000;TH1=-500008; EA=1;ET0=1;ET1=1; TR0=1; while(1); void isr_time0() interrupt 1 /定时器 0 的中断服务程序 TL0=-50000;TH0=-500008; tim

7、e-; if(time=0) TR0=0;TR1=1; /定时器 0 停止定时,启动定时器1,以便黄灯每隔 0.5s转换 一次状态 time=400; if(ewg) P0=ewy;P2=ewy; else P0=sny;P2=sny; void isr_time1() interrupt 3 /定时器 T1 的中断服务程序 TL1=-50000;TH1=-500008; timey-; if(timey=0) timey=10; county-; if(county) if(ewg) P04= P04;P24=P24; else P01= P01;P21=P21; else county=6; if(ewg) P0=sng_ewr;P2=sng_ewr; else P0=ewg_snr;P2=ewg_snr; TR1=0;TR0=1; ewg = ewg;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1