基于51单片机的交通灯控制电路设计.doc

基于51单片机的交通灯控制电路设计.doc

ID:50915821

大小:77.00 KB

页数:5页

时间:2020-03-15

基于51单片机的交通灯控制电路设计.doc_第1页
基于51单片机的交通灯控制电路设计.doc_第2页
基于51单片机的交通灯控制电路设计.doc_第3页
基于51单片机的交通灯控制电路设计.doc_第4页
基于51单片机的交通灯控制电路设计.doc_第5页
资源描述:

《基于51单片机的交通灯控制电路设计.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、交通灯一、功能要求要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为25秒,黄灯先亮5秒钟,才能变换运行车道;黄灯亮时,要求每秒钟闪亮一次。二、电路图说明:1)每一位数码管位选要分开,对应IO口参照程序中红色部分2)图示数码管为共阳,没加驱动数码管显示较暗,建议加驱动三、程序//TrafficLight.c#include"reg52.h"//IO口定义sbitred_1=P2^0;//南北方向sbitred_2=P2^3;//东西方向sbityellow_1=P2^1;sbityellow_2=P2^4;sbitgreen_1=P2^2;sbitgreen_2=P2^

2、5;sbitcom1_1=P3^6;//十位南北方向数码管位选sbitcom1_2=P3^7;//个位南北方向sbitcom2_1=P3^4;//十位东西方向sbitcom2_2=P3^5;//个位东西方向//全局变量chartime=30;//倒计时unsignedcharnum1=0,num2=0;//辅助计时unsignedcharflag1=0,flag2=0;//黄灯闪标志位unsignedcharshi1,shi2,ge1,ge2;//数码管十位个位constunsignedcharledNum[]={//0123456789AbcdEF不显示-o(18)H(19)h(20

3、)C(21)0(22)n(23)0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xA7,0xA1,0x86,0x8e,0xFF,0xbf,0xa3,0x89,0x8b,0xc6,0xc0,0xab};//共阳数码管//中断优先级别T0>T1,数码管显示中断间隔2ms,计时时间间隔50ms//计时要求比较精确,间隔长,不应该被打断,故中断优先级要高,使用T0//数码管中断可以被打断,打断时间较短,不会影响显示,使用T1//在交通灯中,计时和数码管显示一直进行,故定时器开启后不用停止voidInitInter(voi

4、d){TMOD=0x11;//设置定时器工作方式为16位计时器TH0=(65535-45872)/256;//11.0592M晶振,50msTL0=(65535-45872)%256;TH1=(65535-1835)/256;//11.0592M晶振,2msTL1=(65535-1835)%256;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;}voidDisplay(void){staticunsignedchari=1;switch(i){case1:com2_2=0;P0=ledNum[shi1];com1_1=1;break;case2:com1_1=0;P0=le

5、dNum[ge1];com1_2=1;break;case3:com1_2=0;P0=ledNum[shi2];com2_1=1;break;case4:com2_1=0;P0=ledNum[ge2];com2_2=1;break;default:;}i++;if(i>4)i=1;}//红灯可以直接变成绿灯,但绿灯必须先变成黄灯再变红灯voidmain(void){biti=0;InitInter();while(1){red_1=0;//0为亮red_2=1;green_2=0;time=30;while(time>5){shi1=time/10;ge1=time%10;shi2=(

6、time-5)/10;ge2=(time-5)%10;}green_2=1;yellow_2=0;flag2=1;num2=0;while(time>0){shi1=time/10;ge1=time%10;shi2=time/10;ge2=time%10;}flag2=0;yellow_2=1;red_2=0;red_1=1;green_1=0;time=30;while(time>5){shi2=time/10;ge2=time%10;shi1=(time-5)/10;ge1=(time-5)%10;}green_1=1;yellow_1=0;flag1=1;num2=0;while

7、(time>0){shi2=time/10;ge2=time%10;shi1=time/10;ge1=time%10;}flag1=0;yellow_1=1;//red_1=0;//green_2=0;}}voidTimer_0(void)interrupt1//计时{TH0=(65535-45872)/256;TL0=(65535-45872)%256;num1++;if(num1>=20){num1=0;time--;//if(time<0

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

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

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