基于51单片机交通灯控制器(东西通行_南北通行_按键启动)

这篇具有很好参考价值的文章主要介绍了基于51单片机交通灯控制器(东西通行_南北通行_按键启动)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

基于51单片机交通灯控制器

管制+启动+黄灯闪烁

仿真:proteus 7.8

程序编译器:keil 4/keil 5

编程语言:C语言

设计编号:J012

功能说明

LED灯的定时控制;数码管的显示及闪烁;独立按键的读取与判断;定时器的设置与应用。
单片机控制东西、南北这两组交通灯LED,同时在数码管上显示剩余时间,当剩余时间少于5s时,数码管以每秒2次的速度闪亮,黄灯闪烁5s。

  1. 当“暂停”按键按下时,交通灯暂停变化,再次按下就继续变化;
  2. 当东西键按下时,东西方向灯全绿,南北方向全红;
  3. 当南北键按下时,南北方向灯全绿,东西方向全红;
  4. 具体秒数可在程序改数字实现。

仿真图

正常运行模式

基于51单片机交通灯控制器(东西通行_南北通行_按键启动)

南北方向通行

当南北键按下时,南北方向灯全绿,东西方向全红;

基于51单片机交通灯控制器(东西通行_南北通行_按键启动)

东西方向通行

当东西键按下时,东西方向灯全绿,南北方向全红;

基于51单片机交通灯控制器(东西通行_南北通行_按键启动)

程序设计

基于51单片机交通灯控制器(东西通行_南北通行_按键启动)

程序讲解

主要的核心点是倒计时,和LED灯亮灭控制

倒计时的产生

记住这个点就可以设计软件了。首先要有时间基础,倒计时从哪来呢?

一般两个来源:

1,延时

delay(1000ms);

通过死循环卡主软件的运行来达到延时效果,程序执行效率极低,不可取。

2,定时

通过定时器产生时基。软件设置50ms产生一次定时中断,在中断执行函数中做计数。

	TMOD |=0X01;
	TH0=0X4C;
	TL0=0X00;
	ET0=1;
	TR0=1;//打开定时器中断

20ms执行一次中断函数,通过count1s累加到50判断时间过去了一秒。设置一秒标志位all_mode_flag1s置一。

	void Timer0() interrupt 1
{
	TH0=0XBB;
	TL0=0X00;
	KeyScan();
 	
	if(++count500ms<12){
	
	}else{
	  count500ms = 0;
		if(FilteFlag){//闪烁标志位
			FilteFlag = 0;
		}else{
			FilteFlag =1;
		}
	} 

	if(++count1s<50)	return;
	count1s=0;
	if(StaSysterm==NormalRun) flag1s=1;	 //非正常运行时,不红绿灯数值不减一	
	all_mode_flag1s =1;
}

在主函数while循环里判断标志位,如果是1,则倒计时计数值减一,即完成了倒计时的软件设计思路

LEDScan();				  		
//数码管即LED扫描
KeyDriver();			  		
//键盘驱动扫描
if(flag1s)//1S执行一次
{
    flag1s=0;
    NS_time--;			  		
    //红绿灯倒计时时间减
    WE_time--;
}	
红黄绿灯状态处理

正常红绿灯运行分有四个模式

1.东西方向绿灯通行,南北方向红灯

2.东西方向黄灯通行,南北方向红灯

3.南北方向绿灯通行,东西方向红灯

4.南北方向黄灯通行,东西方向红灯

5.执行第一步

基于51单片机交通灯控制器(东西通行_南北通行_按键启动)

   if(StaSysterm==NormalRun)	//状态切换
    {
   	if(NS_time==0 || WE_time==0)//当东西或者南北方向通行时间倒数到0,切换状态
   	{
   		switch(index)				 //改变红绿灯的状态,状态机
   		{
   			case 0:
   			{
   				index=1;
   				NS_time=main_green_straight_cnt;//南北方向绿灯通行时间
   				WE_time=main_green_straight_cnt+yellow_cnt;//东西红灯方向通行时间       注意!红灯时间要长一点
   				P2=0X09;	//需要亮的灯转换为二进制位0000 1001,对应P2口的P2^0和P2^3,
   				          //对应仿真图的绿灯L0和红灯L3亮。

   			}break;
   			case 1:
   			{
   				index=2;
   				NS_time = yellow_cnt;
   				P2=0X0A;

   			}break;
   			case 2:
   			{
   				index=3;
   				NS_time=sec_green_straight_cnt+yellow_cnt;//南北方向红灯时间 
   				WE_time=sec_green_straight_cnt;//东西方向绿灯时间 
   				P2=0X24;	

   			}break;
   			case 3:
   			{
   				index=0;
   				WE_time=yellow_cnt;
   				P2=0X14;

   			}break;
   			default:break;
   		}
   	}
倒计时显示处理

实际上倒计时显示就是显示NS_time–; WE_time–;设计函数通过数码管分别显示A方向的NS_time和B方向的WE_time即可

					Seg_Display(NS_time/10,0);
Seg_Display(NS_time%10,1);
Seg_Display(WE_time/10,2);
Seg_Display(WE_time%10,3);
按键处理

void KeyScan()						        	//键盘扫描
{
	static uchar keybuf[3]={0XFF,0XFF,0XFF};
	uchar i;
	keybuf[0]=(keybuf[0]<<1)|KEY1;
	keybuf[1]=(keybuf[1]<<1)|KEY2;
	keybuf[2]=(keybuf[2]<<1)|KEY3;

	for(i=0;i<3;i++)
	{
		if(keybuf[i]==0X00)			keystr[i]=0;
		else if(keybuf[i]==0XFF) 	keystr[i]=1;
	}
}
void KeyAction(uchar key)					 	//键盘执行
{
	switch(key)
	{
		case 0:	
			if(StaSysterm == NormalRun){
				StaSysterm=Stop;
				LedState = P2;
			}else if(StaSysterm == Stop){
				StaSysterm = NormalRun;
				P2 = LedState;
			}

			break;	
		
		case 1:	
			if(StaSysterm == NormalRun){
				StaSysterm=NSRun;
				LedState = P2;
			}else if(StaSysterm == NSRun){
				StaSysterm = NormalRun;
				P2 = LedState;
			}

			break;
		
		case 2:	
			if(StaSysterm==NormalRun){
				StaSysterm=WERun;
				LedState = P2;
			}else if(StaSysterm==WERun){
				StaSysterm = NormalRun;
				P2 = LedState;
			}

			break;
			
			  default:break;
	}
}
void KeyDriver()								 //键盘驱动
{
	uchar i;
	for(i=0;i<3;i++)
	{
		if(keystr[i]!=backup[i])
		{
			if(keystr[i]==0)
				KeyAction(i);//这里适当修改程序可以实现组合按键的效果
		}
		backup[i]=keystr[i];
	}
}

资料清单

资料下载

基于51单片机交通灯控制器(东西通行_南北通行_按键启动)文章来源地址https://www.toymoban.com/news/detail-441549.html

到了这里,关于基于51单片机交通灯控制器(东西通行_南北通行_按键启动)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于51单片机简易十字路口交通灯_5s全黄闪烁

    (程序+仿真+参考报告) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J007 交通灯运行状态: (1)模式1:东西向红灯与南北向绿灯亮5s; (2)模式2:东西南北方向均黄灯闪烁5s(5次); (3)模式3:东西向绿灯与南北向红灯各5s; (4)模式4:东西南

    2024年02月07日
    浏览(52)
  • 基于AT89C51单片机的交通灯设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87763760?spm=1001.2014.3001.5503 源码获取 主要内容: 设计一个能够控制十二盏交通信号灯的模拟系统,:利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用LED灯显示倒计时间。 基本要

    2024年02月08日
    浏览(39)
  • 基于AT89C51单片机的十字路口交通灯设计

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87849986?spm=1001.2014.3001.5503 源码获取 主要内容: 本项目中采用单片机 AT89C51为中心器件来设计交通信号灯控制器, 系统实用性强、操作简单、扩展性强。本设计系统就是由单片机最小系统、交通灯

    2024年02月09日
    浏览(40)
  • 51单片机——交通灯

      1、基本功能就是如同红绿灯一般,不做赘述。   2、红灯时长和绿灯时长可通过按键设置,即按键列中的上面4个,当这4个按键有一个按下后便进入时长设置功能,设置完成后按最下面两个按键(紧急控制按钮)任意一个便可退出该功能。   3、有紧急控制功能,按下

    2024年02月11日
    浏览(27)
  • 基于51单片机十字路交通灯仿真_黄灯闪烁_正常模式+夜间模式+紧急模式

    (程序+仿真+仿真视频) 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J002 51单片机十字路交通灯仿真_黄灯闪烁+夜间+紧急 通过单片机模拟交通灯,东西方向黄绿红,南北方向黄绿红的工作方式。 1、显示时间倒计时; 2、夜晚能够进行所有黄灯闪烁;

    2024年02月10日
    浏览(30)
  • 51单片机LED模拟交通灯

    实验软件 : Keil5 + Proteus7 实验元件 : AT89C51 * 1, LED-GRD * 3, LED-YELLOW * 3, LED-GREEN * 3, RES * 9 (用来限流可以不要)

    2024年02月11日
    浏览(34)
  • 51单片机的交通灯控制系统(仿真+程序+报告+原理图)

    该系统由AT89C51单片机+数码管模块+LED指示灯模块+按键模块构成。 可实现基本功能: 1、红绿灯正常切换,黄灯会闪烁 2、红灯30s,绿灯25s,黄灯5s(时间不同只需修改变量,简单) 按键功能: 1、南北向红灯时间可调,东西向绿灯时间可调 2、东西方向紧急模式:按下东西方向变

    2024年02月05日
    浏览(44)
  • 基于单片机的交通灯设计

    本系统由单片机系统、键盘、LED 显示、交通灯演示系统组成。系统包括人行道、左转、右转、以及基本的交通灯的功能。系统除基本交通灯功能外,还具有倒计时、时间设置、紧急情况处理、分时段调整信号灯的点亮时间以及根据具体情况手动控制等功能。随着社会经济的发

    2024年02月06日
    浏览(69)
  • 75、基于51单片机交通灯+人行道+左转系统设计(程序+原理图+Proteus仿真+参考论文+开题报告+任务书+元器件清单等)

    近 年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。 十字路口车辆

    2024年02月11日
    浏览(32)
  • 基于单片机控制的交通灯系统设计

    本设计是交通灯的控制实验,必须要先了解实际交通灯的变化规律。假设一个路口为东西南北走向,即十字路口,初始状态零为东西南北灯都熄灭。然后转状态一东西绿灯通车,南北为红灯。过段时间转状态二,东西绿灯闪几次转黄灯,延时几秒,南北仍为红灯。再转状态三

    2024年02月08日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包