单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2|回复: 0
收起左侧

51单片机交通灯程序与仿真文件

[复制链接]
凯尔特 发表于 2018-4-28 20:14 | 显示全部楼层 |阅读模式
城市道路错综复杂,相互交错,交通灯是城市交通的重要指挥系统。交通信号灯作为管制交通流量、提高道路通行能力的有效手段,对减少交通事故有明显效果。但是车流量是随时变化的,而传统的交通灯模式采用的是定时控制,反而容易造成交通堵塞。因此设计一种基于Proteus与单片机的交通灯控制系统的设计与仿真,对减少交通事故,缓解交通阻塞,提高畅通率具有很重要的现实意义

东西、南北两干道交于一个十字路口,各干道有一组交通指示灯,每一个状态方向上均有一组红、绿灯,即一组交通指示灯都有左转、直行、右转3组红、绿灯和一个黄灯,指示车辆和行人安全通行.红灯点亮禁止通行,绿灯点亮允许通行.黄灯闪烁提示人们注意交通灯状态即将切换

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code smg_dw[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳0-9
sbit beiR=P0^0;
sbit beiY=P0^1;
sbit beiG=P0^2;
sbit nanR=P0^3;
sbit nanY=P0^4;
sbit nanG=P0^5;
uint a,b,c,type,j,i;
void Delay(uint x)                   //延时
{
        uchar i;
        while(x--)for(i=0;i<120;i++);       

}
void delay_ms(uint q)           //延时
{        
        uint i,j;
        for(i=q;i>0;i--)
        for(j=141;j>0;j--);
}
void shumaguan(uint k)           //数码管显示
{
                b=k/10;
                c=k%10;
                P3=11111101;
                P2=smg_dw;//选段码
        delay_ms(20);//延时5ms
                P3=11111110;
                P2=smg_dw[c];//选段码
                delay_ms(20);//延时5ms
}
main()
{
        TMOD=0x01;                                   //设置定时器T0为工作方式1定时
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TR0=1;                                          //启动T0计数
        ET0=1;                                          //允许T0中断
        EX0=1;                                          //允许外部中断0中断
        EA=1;                                          //开中断
        IT0=1;                                          //允许外部中断0为边沿触发方式
        a=10;                                          //倒计时10s
        type=1;
        while(1){
                switch(type)
                {
                        case 1: //东西向绿灯与南北向红灯亮
                                beiR=0;beiY=1;beiG=1;
                                nanR=1;nanY=1;nanG=0;
                                shumaguan(a);
                        break;
                        case 2: //东西向黄灯闪烁,绿灯关闭       
                                if(a%2!=0)
                                {
                                beiR=1;beiY=0;beiG=1;
                                }
                                if(a%2==0)
                                {               
                                beiR=1;beiY=1;beiG=1;
                                }
                                shumaguan(a);
                        break;
                        case 3: //东西向红灯,南北向绿灯亮
                                beiR=1;beiY=1;beiG=0;
                                nanR=0;nanY=1;nanG=1;
                                shumaguan(a);
                        break;
                        case 4: //南北向黄灯闪烁3次
                                if(a%2!=0)
                                {
                                nanR=1;nanY=0;nanG=1;
                                }       
                                if(a%2==0)
                                {       
                                nanR=1;nanY=1;nanG=1;
                                }
                                shumaguan(a);
                        break;
                }
                        }
}
void T0_int0(void) interrupt 1                   //中断
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        i++;
        if(i==20)
        {
                i=0;
                a--;
                        if(a==0)
                        {
                                if(type==1||type==3)
                                {
                                        a=5;
                                }
                                if(type==2||type==4)
                                {
                                        a=10;
                                }
                                type++;
                                if(type==6)
                                {
                                        type=1;
                                }
                        }
        }       
}


本文地址:http://www.drawyourideal.com/bbs/dpj-115455-1.html
文章摘要:51单片机交通灯程序与仿真文件 ,捞月亮纪实潜濡默被,称王称霸中间件皲手茧足。

交通灯

交通灯

交通灯.rar

51.68 KB, 下载次数: 0, 下载积分: 黑币 -5

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛

Powered by 单片机教程网

快速回复 赌球网|真人赌球网|世界杯赌球网 返回列表