单片机模拟交通灯_第1页
单片机模拟交通灯_第2页
单片机模拟交通灯_第3页
单片机模拟交通灯_第4页
单片机模拟交通灯_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

模拟交通灯

随着我国经济的高速发展,人们对各种交通车辆的需求量不断增大,城市的交通拥护问题日益严重,目前,大部分城市的十字路口的交通控制灯,通常的做法是:事先经过车辆流量的调查,利用传统的方法设计好红绿灯的延时,然而,实际上的车流量是不断变化的,有的路口在不同的时间段车流量的大小甚至有很大的差异,所以说,统计的方法己不能适应迅速发展的交通现状,这时智能交通灯应运而生。背景设计要求1、南北方向为主干道,东西方向为支路;主干路绿灯时间为45秒,红灯时间为35秒;支路绿灯时间30秒,红灯时间为50秒,两个方向的黄灯时间都为4秒;2、使用定时器实现时间的倒计时;用显示部件显示主干道路的倒计时变化;3、设计三个外部按钮,分别用以手动控制紧急情况下两个方向同时禁通过;南北方向长时间通过(不显示时间倒计时变化);东西方向长时间通过;释放按钮后则正常通行。单片机最小系统外围接口电路LED数码管显示红黄绿信号灯按键控制电路建立模型十字路口交通灯分为南北两个走向,其中南北为主干道,东西方向为支路,每个方向使用三个发光二极管用来表示交通灯颜色的变化。交通灯需要实现以下转换:

南北(红)东西(绿)南北(红)东西(红)

南北(黄)东西(红)南北(绿)东西(红)

南北(黄)东西(黄)30s4s4s45s4s硬件介绍STC89C52STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KBEEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。信号灯部分的工作原理如图所示,横向的为东西方向,纵向的为南北方向。二极管的阳极均接在220Ω的电阻上),电阻的另一头全共同接在+5V的电源上。二极管的阴极分别接在单片机P0口上,RED_A=P0^0;YELLOW_A=P0^1;GREEN_A=P0^2;RED_B=P0^3;YELLOW_B=P0^4;GREEN_B=P0^5;构成了单片机通过P0口来控制交通信号等的闪烁。C语言程序代码#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintuchara=20,Operation_Type=1;ucharb=35,c=5,d=1,e=45,f=4;sbitRED_A=P0^0;sbitYELLOW_A=P0^1;sbitGREEN_A=P0^2;sbitRED_B=P0^3;sbitYELLOW_B=P0^4;sbitGREEN_B=P0^5;sbitkey1=P3^2;sbitkey2=P3^3;sbitkey3=P3^4;uchardsy_code[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};C语言程序代码voidmain(){TH1=(65535-50000)/256;TL1=(65535-50000)%256;EA=1;ET1=1;IT1=0;ET0=1;TMOD=0x11;TR1=1;RED_B=0;YELLOW_B=1;GREEN_B=1;while(1) { while(key1==0){RED_A=0;RED_B=0;YELLOW_A=1;YELLOW_B=1;GREEN_A=1;GREEN_B=1; }

C语言程序代码while(key2==0){RED_A=0;RED_B=1;YELLOW_A=1;YELLOW_B=1;GREEN_A=1;GREEN_B=0;}while(key3==0){RED_A=1;RED_B=0;YELLOW_A=1;YELLOW_B=1;GREEN_A=0;GREEN_B=1; } }}C语言程序代码voidtime2_()interrupt3 {TH1=(65535-50000)/256;TL1=(65535-50000)%256;a--;if(a==0){ a=20;if(key1==1&&key2==1&&key3==1) { switch(Operation_Type) { case1: RED_B=0;YELLOW_B=1;GREEN_B=1; RED_A=1;YELLOW_A=1;GREEN_A=0; P1=dsy_code[b/10]; P2=dsy_code[b%10]; b--;a=20; if(b==5){Operation_Type=2;b=35;} break;C语言程序代码case2: RED_B=0;YELLOW_B=1;GREEN_B=1; RED_A=1;YELLOW_A=0;GREEN_A=1; P1=dsy_code[c/10]; P2=dsy_code[c%10]; c--;a=20; if(c==1){Operation_Type=3;c=5;} break; case3: RED_B=0;YELLOW_B=1;GREEN_B=1; RED_A=0;YELLOW_A=1;GREEN_A=1; P1=dsy_code[d/10]; P2=dsy_code[d%10]; d--;a=20; if(d==0){Operation_Type=4;d=1;} break;

C语言程序代码case4: RED_B=1;YELLOW_B=0;GREEN_B=1; RED_A=0;YELLOW_A=1;GREEN_A=1; P1=dsy_code[f/10]; P2=dsy_code[f%10]; f--;a=20; if(f==0){Operation_Type=5;f=4;} break; case5: RED_B=1;YELLOW_B=1;GREEN_B=0; RED_A=0;YELLOW_A=1;GREEN_A=1; P1=dsy_code[e/10]; P2=dsy_code[e%10]; e--;a=20; if(e==0){Operation_Type=6;e=45;} break;

C语言程序代码

case6: RED_B=1;YELLOW_B=0;GREEN_B=1; RED_A=1;YELLOW_A=0;GREEN_A=1; P1=dsy_code[f/10]; P2=dsy_code[f%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论