文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者

一、功能简介

本项目使用Proteus8仿真51单片机控制器,使用数码管、按键、交通信号灯模块等。

系统运行后,交通灯系统开始运行,数码管显示初始时间,默认南北绿灯5S,东西红灯8S,绿灯过后南北黄灯3秒;然后切换东西绿灯5S,南北红灯8S,绿灯过后南北黄灯3秒;如此循环。
可使用K1键进入红绿灯时间设置,K2和K3进行加减调节,设定好后,K4键确定并继续运行。在运行过程中,可通过K2键禁止通行,此时东南西北方向红灯亮,K3键允许南北通行,此时南北绿灯亮,东西红灯亮。
K4键允许东西通行,此时南北红灯亮,东西绿灯亮。此时可按下K1键返回
交通灯自动控制模式运行。
主要功能如下:
1、东西南北红黄绿灯控制
2、交通灯时间设置
3、数码管显示
4、突发状况交通灯控制


二、软件设计

/*
作者:嗨小易(QQ:3443792007)
*///定时器1中断函数
void time1() interrupt 3
{static u8 i=0;TH1=0XDC;  //给定时器赋初值,定时10msTL1=0X00;i++;if(i>=100)//间隔1S{i=0;sys_ctrl.sec++;if(sys_ctrl.led_sta==0)//南北绿灯,东西红灯时间{sys_ctrl.nbled_time=sys_ctrl.gled_time-sys_ctrl.sec;sys_ctrl.dxled_time=sys_ctrl.rled_time-sys_ctrl.sec;//LED灯NB_GLED=1;NB_YLED=0;NB_RLED=0;DX_GLED=0;DX_YLED=0;DX_RLED=1;if(sys_ctrl.sec>=sys_ctrl.gled_time){sys_ctrl.sec=0;sys_ctrl.led_sta=1;sys_ctrl.nbled_time=YLED_TIME-sys_ctrl.sec;sys_ctrl.dxled_time=YLED_TIME-sys_ctrl.sec;//LED灯NB_GLED=0;NB_YLED=1;NB_RLED=0;DX_GLED=0;DX_YLED=0;DX_RLED=1;}    }else if(sys_ctrl.led_sta==1)//南北黄灯,东西红灯时间{sys_ctrl.nbled_time=YLED_TIME-sys_ctrl.sec;sys_ctrl.dxled_time=YLED_TIME-sys_ctrl.sec;    if(sys_ctrl.sec>=YLED_TIME){sys_ctrl.sec=0;sys_ctrl.led_sta=2;sys_ctrl.nbled_time=sys_ctrl.rled_time-sys_ctrl.sec;sys_ctrl.dxled_time=sys_ctrl.gled_time-sys_ctrl.sec;//LED灯NB_GLED=0;NB_YLED=0;NB_RLED=1;DX_GLED=1;DX_YLED=0;DX_RLED=0;} }else if(sys_ctrl.led_sta==2)//南北红灯,东西绿灯时间{sys_ctrl.nbled_time=sys_ctrl.rled_time-sys_ctrl.sec;sys_ctrl.dxled_time=sys_ctrl.gled_time-sys_ctrl.sec;if(sys_ctrl.sec>=sys_ctrl.gled_time){sys_ctrl.sec=0;sys_ctrl.led_sta=3;sys_ctrl.nbled_time=YLED_TIME-sys_ctrl.sec;sys_ctrl.dxled_time=YLED_TIME-sys_ctrl.sec;//LED灯NB_GLED=0;NB_YLED=0;NB_RLED=1;DX_GLED=0;DX_YLED=1;DX_RLED=0;}    }else if(sys_ctrl.led_sta==3)//南北红灯,东西黄灯时间{sys_ctrl.nbled_time=YLED_TIME-sys_ctrl.sec;sys_ctrl.dxled_time=YLED_TIME-sys_ctrl.sec;if(sys_ctrl.sec>=YLED_TIME){sys_ctrl.sec=0;sys_ctrl.led_sta=0;sys_ctrl.nbled_time=sys_ctrl.gled_time-sys_ctrl.sec;sys_ctrl.dxled_time=sys_ctrl.rled_time-sys_ctrl.sec;//LED灯NB_GLED=1;NB_YLED=0;NB_RLED=0;DX_GLED=0;DX_YLED=0;DX_RLED=1;} }}
}//系统数据显示
void sys_data_show(void)
{u8 buf[8];//正常显示while(sys_ctrl.mode==0){buf[0]=gsmg_code[sys_ctrl.nbled_time/10];buf[1]=gsmg_code[sys_ctrl.nbled_time%10];buf[2]=gsmg_code[sys_ctrl.nbled_time/10];buf[3]=gsmg_code[sys_ctrl.nbled_time%10];buf[4]=gsmg_code[sys_ctrl.dxled_time/10];buf[5]=gsmg_code[sys_ctrl.dxled_time%10];buf[6]=gsmg_code[sys_ctrl.dxled_time/10];buf[7]=gsmg_code[sys_ctrl.dxled_time%10];smg_display(buf,1);break;    }//时间设置模式显示while(sys_ctrl.mode==1){buf[0]=gsmg_code[sys_ctrl.gled_time/10];buf[1]=gsmg_code[sys_ctrl.gled_time%10];buf[2]=gsmg_code[sys_ctrl.gled_time/10];buf[3]=gsmg_code[sys_ctrl.gled_time%10];buf[4]=gsmg_code[sys_ctrl.rled_time/10];buf[5]=gsmg_code[sys_ctrl.rled_time%10];buf[6]=gsmg_code[sys_ctrl.rled_time/10];buf[7]=gsmg_code[sys_ctrl.rled_time%10];smg_display(buf,1);break;}//禁止通行显示、//南北通行显示、//东西通行显示while(sys_ctrl.mode==2 || sys_ctrl.mode==3 || sys_ctrl.mode==4){buf[0]=0x40;buf[1]=0x40;buf[2]=0x40;buf[3]=0x40;buf[4]=0x40;buf[5]=0x40;buf[6]=0x40;buf[7]=0x40;smg_display(buf,1);break;    }
}//系统数据设置
void sys_data_set(void)
{u8 key=0;key=key_scan(0);if(sys_ctrl.mode==0){//时间设置if(key==KEY1_PRESS){sys_ctrl.mode=1;time1_stop();//关闭定时器1}  }//非时间设置模式if(sys_ctrl.mode!=1){if(key==KEY1_PRESS){sys_ctrl.mode=0;time1_start();//打开定时器1   }//禁止通行else if(key==KEY2_PRESS){sys_ctrl.mode=2;time1_stop();//关闭定时器1//LED灯NB_GLED=0;NB_YLED=0;NB_RLED=1;DX_GLED=0;DX_YLED=0;DX_RLED=1;}//南北通行else if(key==KEY3_PRESS){sys_ctrl.mode=3;time1_stop();//关闭定时器1//LED灯NB_GLED=1;NB_YLED=0;NB_RLED=0;DX_GLED=0;DX_YLED=0;DX_RLED=1;}//东西通行else if(key==KEY4_PRESS){sys_ctrl.mode=4;time1_stop();//关闭定时器1//LED灯NB_GLED=0;NB_YLED=0;NB_RLED=1;DX_GLED=1;DX_YLED=0;DX_RLED=0;}   }//时间设置模式if(sys_ctrl.mode==1){if(key==KEY2_PRESS)//加{sys_ctrl.gled_time++;if(sys_ctrl.gled_time>90)sys_ctrl.gled_time=0;sys_ctrl.rled_time=sys_ctrl.gled_time+YLED_TIME;        }else if(key==KEY3_PRESS)//减{sys_ctrl.gled_time--;if(sys_ctrl.gled_time<0)sys_ctrl.gled_time=90;sys_ctrl.rled_time=sys_ctrl.gled_time+YLED_TIME;    }else if(key==KEY4_PRESS)//确定{sys_ctrl.mode=0;time1_start();//打开定时器1     }       }
}//应用控制系统
void appdemo_show(void)
{SMG_A_DP_PORT=0;sys_parm_init();//系统参数初始化time1_init();//初始化定时器1time1_start();//打开定时器1while(1){sys_data_show();//系统数据显示sys_data_set();//系统数据设置     }
}

三、实验现象






联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

【Proteus仿真】【51单片机】交通灯控制系统设计相关推荐

  1. 【Proteus】51单片机交通灯信号模拟仿真示例二

    [Proteus]51单片机交通灯信号模拟仿真示例二 Proteus仿真效果 相关篇<[Proteus]51单片机交通灯信号模拟仿真示例一> 程序代码 /*---------------- ...

  2. 简易交通灯控制系统设计c语言,基于单片机交通灯控制系统设计毕业设计.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspJava 基于单片机交通灯控制系统设计毕业设计.doc30页 本 ...

  3. 0010基于单片机交通灯控制系统设计

    资料下载地址!!!!!!! 交通灯,十字路口 /***************************************************** * 王瑾毕设-交通灯 * * * ***** ...

  4. 交通灯控制系统c语言编程,基于单片机的交通灯控制系统设计(本科)毕业论文设计.doc...

    基于单片机的交通灯控制系统设计 摘 要 当你路过一个十字路口时,你是否注意到各个方向车辆和行人有有条不紊的通过十字路口.这样井然有序的情境靠什么来实现的呢?靠的是交通灯控制系统.在论文中我使用单片机S ...

  5. 【毕业设计】基于PLC的十字路口交通灯控制系统设计【仿真+源码+论文】

    摘 要 本次设计的课题是基于PLC的十字路口交通灯控制系统设计,传统的十字路口交通灯多采用单片机集成电路作为控制系统,单片机系统虽然在功能上能够实现十字路口交通灯的各种控制需求,但是单片机控制系统在设 ...

  6. 交通灯控制系统设计左转倒计时protues仿真的c语言程序,交通灯控制系统设计

    内容介绍 原文档由会员 ½ӨӨ 发布 交通灯控制系统设计 1万字 32页 包括程序代码,系统原理图,Proteus仿真过程 摘要 本设计是交通信号灯控制系统,随着社会的不断的进步,社会的不断发展.交通 ...

  7. 基于51单片机交通灯控制系统

    51单片机交通灯控制系统 可调时间+紧急+行人+黄灯5s 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J008 目录标题 51单片机交通灯控制系统 ...

  8. 微型计算机k80,微型计算机原理与接口技术课程设计报告智能交通灯控制系统设计(15页)-原创力文档...

    微型计算机原理与接口技术课程设计报告智能交通灯控制系统设计 摘 要 根据十字路口交通灯的控制要求,采用PLC 设计实现正常交通的时序控制,通过传感器完成对交通异常状况的智能判别及处理.在系统的设计中, ...

  9. 基于机器视觉的交通灯控制系统设计

    基于机器视觉的交通灯控制系统设计 摘 要 Abstract 引言 1 课题背景 1.1概述 1.2传统交通路口信号灯 1.3基于机器视觉的交通灯控制智能系统 1.3.1国内研究现状 1.3.2国外研究 ...

  10. 步进电机的计算机控制系统设计,基于.51单片机的步进电机控制系统设计.doc

    基于51单片机的步进电机控制系统设计 中文摘要 步进电机是一种受,并且能将相应的或者的电动机.由于步进电机具有步距误差不积累.运行可靠.结构简单.惯性小.成本低等优点,因此,被广泛使用于计算机外围电路 ...

最新文章

  1. PHP创建日志记录(已封装)
  2. PostgreSQL远端访问
  3. jquery的contains如何实现精准匹配
  4. 进击的YOLOv3,目标检测网络的巅峰之作 | 内附实景大片
  5. Django框架(12.Django中模型类高阶查询(Q对象以及F对象 和聚合函数查询))
  6. spring 注释_Spring@懒惰注释
  7. Win2003 运行 命令行 快捷操作
  8. Android 初探Retrofit2.0.1(最新版)
  9. 内网穿透工具 FRP Linux 环境搭建安装
  10. 分享超实用的web网页开发框架
  11. 简单好用的Mac截图工具:FinalShot
  12. 解决Failing package is:mysql-community-icu-data-files-8.0.29-1.el7.x86_64 GPG Keys are configured as..
  13. 深度学习中梯度消失和梯度爆炸的根本原因及其缓解方法
  14. 要在textarea文本框中粘贴图片怎么办?
  15. 【Python】打印出所有的“水仙花数”
  16. HFSS威尔金森(Wilkinson)功分器仿真
  17. 拓扑绝缘体 量子计算机,物理所预言立方对称性破缺下的新型拓扑绝缘体材料...
  18. 【MySql】mysql存储毫秒级日期以及PHP时间戳格式转化
  19. kotlin中标准函数的使用(with、also、aply、let、run)
  20. “创业七年,一分股份没拿” 技术出身CEO分享那些分股份的坑

热门文章

  1. 2017-2018世界人工智能企业排名
  2. java跟python学哪个好_Java和python学哪个比较好学点?
  3. 如何成为一名业余程序员
  4. 图解通信原理与案例分析-5:计算机中央处理器CPU与内存芯片之间的二进制数字信号通信
  5. 数据分析——用北极星指标指引方向
  6. 2017年“华信智原杯”安徽省大学生程序设计大赛C题-刷票
  7. 廊坊金彩教育:网店定价要遵循哪些原则
  8. iPhone导出照片到电脑
  9. 智慧物流数字孪生技术建设可视化系统
  10. 利用valgrind定位opencv的cvCloneImage()内存泄漏问题