AT89C51单片机十字路口交通灯设计

2019-12-03来源: 51hei关键字:AT89C51  单片机  十字路口交通灯

制作出来的实物图如下:
 

这是一个十字路口的交通灯设计仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
 

keil单片机源程序如下:

#include


sbit NS_GRE = P2^5;      

sbit NS_YEL = P2^4; 

sbit NS_RED = P2^3;   

sbit EW_GRE = P2^2;  

sbit EW_YEL = P2^1;  

sbit EW_RED = P2^0;   




uint8  EW_Timer = unused8;  //东西方向红灯定时器

uint8  NS_Timer = unused8;  //南北方向红灯定时器

uint8  YEL_Timer = unused8; //黄灯 5s定时器


int main(void)

{


    Timer_Init();    //定时器初始化

    INT0_Init();     //外部中断初始化    

    EA=1;            //打开全局中断

    

    NS_GRE = OFF;    //所有的灯都灭    

    NS_YEL = OFF; 

    NS_RED = OFF;   

    EW_GRE = OFF;  

    EW_YEL = OFF;  

    EW_RED = OFF;   

    P3 = 0xFF;      //所有显示灭


    //先让东西方向红灯亮 南北方向通行

    EW_Timer = EWTime_Count;//东西方向开始计时


    while(1)

    {

           

           if((EW_Timer != unused8) && (EW_Timer != 0)){ //东西方向做红灯倒计时

                display1(EW_Timer/10, EW_Timer%10);      //东西方向显示时间 南北方向不显示

                EW_RED_ON();                             //东西方向保持红灯

                NS_GRE_ON();                             //南北方向保持绿灯

           }

           else if((EW_Timer != unused8) && (EW_Timer == 0) && (YEL_Timer == unused8)){//东西方向红灯计时到 东西方向保持红灯 南北方向变黄灯 开始黄灯5s计时

                EW_RED_ON();                             //东西方向红灯

                NS_YEL_ON();                             //南北方向黄灯

                YEL_Timer = YELTime_Count;               //5s计时

           }

           if((EW_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){

                display1(YEL_Timer/10, YEL_Timer%10);    //东西方向显示时间 南北方向不显示

           }

           if((EW_Timer != unused8) && (YEL_Timer == 0)){    //东西方向红-南北方向黄灯5s计时到 东西红灯定时器关 黄灯定时器关 南北红灯 东西绿灯 南北计时器开

                EW_Timer = unused8;                      //东西红灯定时器关

                YEL_Timer = unused8;                     //黄灯定时器关

                NS_RED_ON();                             //南北变红灯

                EW_GRE_ON();                             //东西变绿灯

                NS_Timer = NSTime_Count;                 //南北红灯定时器开

           }




           if((NS_Timer != unused8) && (NS_Timer != 0)){ //南北红灯定时器正在计时

                display2(NS_Timer/10, NS_Timer%10);      //南北方向显示时间 东西方向不显示

                EW_GRE_ON();                             //东西保持绿灯

                NS_RED_ON();                             //南北保持红灯

           }

           else if((NS_Timer != unused8) && (NS_Timer == 0) && (YEL_Timer == unused8)){ //南北方向红灯计时到 南北方向保持红灯 东西方向变黄灯 开始黄灯5s计时

                NS_RED_ON();                             //南北方向保持红灯

                EW_YEL_ON();                             //东西方向变黄灯

                YEL_Timer = YELTime_Count;               //5s计时

           }

           if((NS_Timer != unused8) && (YEL_Timer != unused8) && (YEL_Timer != 0)){   

                display2(YEL_Timer/10, YEL_Timer%10);   //南北方向显示时间 东西方向不显示

           }

           if((NS_Timer != unused8) && (YEL_Timer == 0)){  //南北方向红-东西方向黄灯5s计时到 南北方向定时器关 黄灯定时器关 东西方向变红灯 南北方向变绿灯 东西方向红灯计时器开始计时

                NS_Timer = unused8;

                YEL_Timer = unused8;

                EW_RED_ON();                           //东西方向变红灯

                NS_GRE_ON();                           //南北方向变绿灯

                EW_Timer = EWTime_Count;               //东西方向开始计时

           }



           if(Flag_Key == 1){        //如果急停按键按下 则全红灯 显示灭

                P3 = 0xFF;           //所有显示灭

                EW_RED_ON();         //东西方向红灯

                NS_RED_ON();         //南北方向红灯

                

                EW_Timer = unused8;  //关闭所有定时器

                NS_Timer = unused8;

                YEL_Timer = unused8;

……………………



关键字:AT89C51  单片机  十字路口交通灯 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic481795.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:单片机电子时钟和led流水灯的结合(仿真+程序)
下一篇:单片机低频信号发生器Proteus仿真程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

单片机电子密码锁门禁系统设计 AT24C02保存密码
该设计基于STC单片机设计,电路主要由51单片机最小系统和按键部分、蜂鸣器报警部分、LCD液晶显示部分等组成。该电路设计简单,单层板加上几根跳线即可完成,适合电子初学者DIY制作。电子密码锁具体功能介绍:1、该电子密码锁默认密码为1234567890,密码通过键盘输入,若密码正确,则将锁打开。2、密码可以由用户自己修改设定(只支持6位密码),锁打开后才能修改密码。修改密码之前必须再次输入密码,在输入新密码时候需要二次确认,以防止误操作。3、报警、锁定键盘功能。密码输入错误显示器会出现错误提示,若密码输入错误次数超过3次,蜂鸣器报警并且锁定键盘。4、AT24C02保存密码,支持复位保存,掉电保存功能。附件内容包括:整个电子密码锁
发表于 2019-12-02
单片机电子密码锁门禁系统设计 AT24C02保存密码
基于AT89c51密码锁设计
;                         钟,防止他人的非法操作*/#include"reg51.h"        #include"intrins.h"#define uint unsigned int#define uchar unsigned char#define ulong unsigned longsbit bj = P3^0;              
发表于 2019-12-02
基于AT89c51密码锁设计
NRF24L01的使用方法和简单操作介绍(附参考程序)
实际程序测试出来的,比如以下程序:#include<reg51.h>#define k 0xfevoid main(){P1=k;}则会出现此类结果:MOSI = (uchar & 0x80);         // output 'uchar', MSB to MOSI                            uchar = (uchar <
发表于 2019-11-29
NRF24L01的使用方法和简单操作介绍(附参考程序)
AT89C51单片机对直流电动机的驱动仿真加汇编语言源程序
电机驱动仿真原理图如下单片机汇编语言源程序如下:ADC                EQU                35HCLOCK        BIT                P2.4                       &
发表于 2019-11-27
AT89C51单片机对直流电动机的驱动仿真加汇编语言源程序
2440 I2C存储卡读写实验 AT24c08a
,让IIC状态改为开始状态,准备下一次读写操作。    指定内存读函数,首先配置设备为发送模式,写入要读的设备地址,写入要读的设备内存,设置为主机接收模式,发送接收设备地址,此后从设备会返回一个要读的内存地址,读取该地址抛弃后,连续读取指定内存数据,读到最后一个数据不再产生应答,停止接收,改为准备状态。    AT24C08 的地址格式为: 1 0 1 0 A2 P1 P0 W/R    A2为设备地址位、P1,P0为片内页寻址  LSB=0 写    LSB=1 读其中mini2440读写位为自动标记无需配置。/*51实验24: I2C
发表于 2019-10-21
PIC系列单片机的优势是什么
一、引言据统计,我国的单片机年容量已达1-3亿片,且每年以大约16%的速度增长,但相对于世界市场我国的占有率还不到1%。这说明单片机应用在我国才刚刚起步,有着广阔的前景。培养单片机应用人才,特别是在工程技术人员中普及单片机知识有着重要的现实意义。当今单片机厂商琳琅满目,产品性能各异。针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行
发表于 2019-12-05
PIC系列单片机的优势是什么
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved