基于51单片机模拟交通灯程序
基于51单片机模拟交通灯程序
系统概要:由于该交通系统设计一个十字路口,A道为主干道,B道为支干道。由于主干道的交通压力较大车流量大,所以A道的通行时间(即A道的绿灯与黄灯的时间应该比B道的绿灯与黄灯时间长),只有A道的通行时间比B道的通行时间长才能合理的分配十字交通路口的交通压力。并且该系统应该有紧急的交通情况,也就是遇到交通的紧急情况,A道与B道的交通灯应该为红色,禁止A道与B道的车辆通过,使紧急车辆通过后。重新恢复到A道与B道红绿灯状态。
首先a道方向绿灯亮,b到方向红灯亮,同时开始计时60s,在段数码管上显示时间60秒倒数。当时间少于10s倒计时A道方向切换黄灯,B道依然为红灯。当60s倒计时结束后,A道方向黄灯开始转变为红灯,B道方向红灯开始转变为绿灯。并开始倒计时30秒,当时间少于5s时B道方向由绿灯转变为黄灯,A道方向还是红灯亮。当5s倒计时结束后B道黄灯转变为红灯,A道开始由红灯转变为绿灯。接着又开始循环以上步骤。应该还包含一个紧急车辆的情况,当有紧急车辆通过时,AB道都应该为红灯。(绿灯用亮3个灯,黄灯亮一个灯,红灯则不亮,紧急情况用按下按键K3)
废话不多说直接上代码:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned intsbit DU=P2^0;//段码锁存器开关
//sbit DU1=P2^0;
//sbit DU2=P2^0;
sbit WE=P2^1;//位码锁存器开关
sbit beep=P2^3;
sbit gd=P2^2;//sbit B_red=P1^5sbit anniu=P3^2;unsigned int pp;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d, //0到6显示0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//7到f显示
uchar j,k,l=255;
uchar a1,a0;
uchar shijian,deng=1;
void delay(unsigned int i) //位码的转换 3*5*125=1875ms=1.875s
{for(j=i;j>0;j--)for(k=125;k>0;k--);
}void display(unsigned char sh_c,unsigned char g_c)
{ gd=0;DU=0;P0=table[sh_c]; //时间十位DU=1;DU=0;WE=0;P0=0xfe;WE=1;WE=0;delay(5);P0=table[g_c];//时间个位DU=1;DU=0;P0=0xfd;WE=1;WE=0;delay(5);
}void int0(void) interrupt 0 //interrupt是声明函数为中断服务函数,0是编译器对中断的编号
{ //外部中断0
P1=0Xff; //特殊情况A,B道都为红灯
while(anniu==0); //低电频触发
}void main()
{TMOD=0x01;//使用定时器T0的工作方式一TR0=1;//使用定时器T0;TH0=(65536-46080)/256;// 由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12EA=1; //打开中断总允许ET0=1;//定时器0允许位EX0=1;//外部中断0允许位PX0=1;//外部中断0优先级PT0=1;//定时器0优先级while(1){ if(shijian==0){switch(deng){/* case 0: shijian=50; //红灯deng=1;break;case 1: shijian=15; //黄灯deng=2;break; */case 1: shijian=60; //A道行驶,B道禁止 //绿灯deng=2;break;case 2: shijian=30; //A道禁止,B道行驶 //黄灯deng=1;break;}}if(pp==20){ pp=0;shijian--;}a0=shijian%10; //时间个位a1=shijian/10; //时间十位display(a1,a0);switch(deng){/*case 1: /*P1=0X00; //红灯break;P1=0xde;break;case 2: //黄灯/*if(shijian%2==0)P1=0x00;if(shijian%2==1)P1=0xff; 1break;P1=0xee;break;*/ case 2: //绿灯/*if(shijian%2==0)P1=0x55;if(shijian%2==1)P1=0xaa;break; */P1=0xdc;if(shijian<=10){ //当时间<=10,A道进入黄灯P1=0xfe;}break;case 1: /*if(shijian%2==0) //黄灯P1=0x00;if(shijian%2==1)P1=0xff;break;*/P1=0xe3;if(shijian<=5){//当时间<=5,B道进入黄灯P1=0xf7;}break; }}
}void time0() interrupt 1 //定时器T0溢出中断
{ TH0=(65536-46080)/256; //fc(计数器频率)=fosc(晶振频率)/12;TL0=(65536-46080)%256; //T=1/f;T为周期;pp++; //X=2的十六次方-T/T机;
}
本项目较为困难的是段位码、定时器和外部中断0的使用,多看几遍相信大家都能看懂
如果大家想看整个完整项目可以到我博客上传资源那里下载链接如下:
点击此处下载:(https://download.csdn.net/download/weiweiweiIT/12166055
基于51单片机模拟交通灯程序相关推荐
- 基于51单片机十字路口交通灯_5s黄灯闪烁
基于51单片机十字路口交通灯_5s黄灯闪烁 目录标题 基于51单片机十字路口交通灯_5s黄灯闪烁 功能要求 仿真图 程序 主要程序代码 程序讲解 倒计时的产生 红黄绿灯状态处理 倒计时显示处理 资料清 ...
- 基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s
基于51单片机十字路口交通灯_只显示绿灯时间+黄灯5s (程序+仿真+参考报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 编号J011 目录标题 基于5 ...
- 【019】基于51单片机的交通灯Proteus仿真设计
一.资料内容 (1).基于51单片机的交通灯proteus仿真设计一份: (2).基于51单片机的交通灯proteus仿真设计keli源代码一份: (3).基于51单片机的交通灯proteus仿真设计 ...
- 基于51单片机的交通灯(资源链接见末尾)
1.控制要求 (1) 东西南北双向红绿灯显示,红灯30s,绿灯27s,黄灯闪烁3s. (2)夜间模式:黄灯闪烁 (3)禁行模式:一侧红灯,一侧绿灯 (4)时间调节:改变红绿灯时间 2.仿真 (1) ...
- 基于51单片机的交通灯控制系统课程设计(含proteus仿真图及代码)
一.设计要求: 1,十字路口的交通控制系统指挥着人和各种车辆的安全运行,对交叉口实行科学的管理与控制是交通控制工程的重要研究课题,是保障交叉口的交通安全和充分发挥交叉口的通行能力的重要措施,是解决城市 ...
- 51单片机STM32交通灯红绿灯十字路口信号灯类设计功能要求汇总
51单片机STM32交通灯红绿灯十字路口信号灯类设计功能要求汇总 浏览必读: 使用关键词搜索可以达到事半功倍的效果. 电脑浏览器CTRL+F可以使用搜索查找 设计编号J000 功能说明: 1.四路交通 ...
- 声控灯程序C语言,基于51单片机的声控灯设计设计-包含完整设计与指导文件.doc...
基于51单片机的声控灯设计设计-包含完整设计与指导文件 工 学 院 毕 业 设 计(论文) 题 目:基于单片机的智能光控路灯的设计 专 业: 机电技术教育 班 级: *** 姓 名: *** 学 号: ...
- 基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警)
基于51单片机十字路口交通信号灯(启动按键+绿灯同亮报警) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J013 目录标题 基于51单片机十字路口 ...
- 51单片机模拟交通信号灯控制系统设计
51单片机模拟交通信号灯控制系统设计 设计要求: 1.用LED灯模拟十字路口交通灯控制 2.正常情况下双方向轮流通行 3.特殊情况时,A方向通行 4.紧急情况时,A和B方向都不通行 本任务涉及定时控制 ...
- 单片机c语言交通灯源程序,基于80C51单片机的交通灯C语言源程序
<基于80C51单片机的交通灯C语言源程序>由会员分享,可在线阅读,更多相关<基于80C51单片机的交通灯C语言源程序(5页珍藏版)>请在人人文库网上搜索. 1.include ...
最新文章
- java中pc寄存器的作用是什么_既然有PC寄存器,栈帧里的返回地址的作用是什么?...
- python推荐书-Python 阅读书目推荐
- 如何实现在O(n)时间内排序,并且空间复杂度为O(1)
- 转载:工程师笔记|STM32F030在低温下无法启动
- duilib消息机制的介绍
- java 过滤器 过滤文件中的文件_Java 使用FileFilter过滤器对文件进行搜索
- hive 修改cluster by算法_Hive基础之导出数据
- 【异常检测】Isolation forest 的spark 分布式实现
- matlab struct 结构体
- ssm图书馆管理系统
- 常大宿舍路由器安装教程
- 世界上最大的计算机硬盘,全球最大机械硬盘:8碟12TB、充氦封装
- 百面机器学习03-经典算法
- ios11对比android8.0,谁的设计更好?iOS11正式版多图详尽对比安卓8.0
- matlab把图片制作成视频
- ctfshow-命令执行-web37
- 您即将提交的信息不安全
- mp3与wav格式的互转
- 2021最近的新闻大事10条简短 今天的新闻大事10条汇总
- 使用Tiny作为工具进行图片压缩