【Proteus仿真】【51单片机】交通灯控制系统设计
文章目录
- 一、功能简介
- 二、软件设计
- 三、实验现象
- 联系作者
一、功能简介
本项目使用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单片机】交通灯控制系统设计相关推荐
- 【Proteus】51单片机交通灯信号模拟仿真示例二
[Proteus]51单片机交通灯信号模拟仿真示例二 Proteus仿真效果 相关篇<[Proteus]51单片机交通灯信号模拟仿真示例一> 程序代码 /*---------------- ...
- 简易交通灯控制系统设计c语言,基于单片机交通灯控制系统设计毕业设计.doc
您所在位置:网站首页 > 海量文档  > 计算机 > Java 基于单片机交通灯控制系统设计毕业设计.doc30页 本 ...
- 0010基于单片机交通灯控制系统设计
资料下载地址!!!!!!! 交通灯,十字路口 /***************************************************** * 王瑾毕设-交通灯 * * * ***** ...
- 交通灯控制系统c语言编程,基于单片机的交通灯控制系统设计(本科)毕业论文设计.doc...
基于单片机的交通灯控制系统设计 摘 要 当你路过一个十字路口时,你是否注意到各个方向车辆和行人有有条不紊的通过十字路口.这样井然有序的情境靠什么来实现的呢?靠的是交通灯控制系统.在论文中我使用单片机S ...
- 【毕业设计】基于PLC的十字路口交通灯控制系统设计【仿真+源码+论文】
摘 要 本次设计的课题是基于PLC的十字路口交通灯控制系统设计,传统的十字路口交通灯多采用单片机集成电路作为控制系统,单片机系统虽然在功能上能够实现十字路口交通灯的各种控制需求,但是单片机控制系统在设 ...
- 交通灯控制系统设计左转倒计时protues仿真的c语言程序,交通灯控制系统设计
内容介绍 原文档由会员 ½ӨӨ 发布 交通灯控制系统设计 1万字 32页 包括程序代码,系统原理图,Proteus仿真过程 摘要 本设计是交通信号灯控制系统,随着社会的不断的进步,社会的不断发展.交通 ...
- 基于51单片机交通灯控制系统
51单片机交通灯控制系统 可调时间+紧急+行人+黄灯5s 仿真:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:J008 目录标题 51单片机交通灯控制系统 ...
- 微型计算机k80,微型计算机原理与接口技术课程设计报告智能交通灯控制系统设计(15页)-原创力文档...
微型计算机原理与接口技术课程设计报告智能交通灯控制系统设计 摘 要 根据十字路口交通灯的控制要求,采用PLC 设计实现正常交通的时序控制,通过传感器完成对交通异常状况的智能判别及处理.在系统的设计中, ...
- 基于机器视觉的交通灯控制系统设计
基于机器视觉的交通灯控制系统设计 摘 要 Abstract 引言 1 课题背景 1.1概述 1.2传统交通路口信号灯 1.3基于机器视觉的交通灯控制智能系统 1.3.1国内研究现状 1.3.2国外研究 ...
- 步进电机的计算机控制系统设计,基于.51单片机的步进电机控制系统设计.doc
基于51单片机的步进电机控制系统设计 中文摘要 步进电机是一种受,并且能将相应的或者的电动机.由于步进电机具有步距误差不积累.运行可靠.结构简单.惯性小.成本低等优点,因此,被广泛使用于计算机外围电路 ...
最新文章
- PHP创建日志记录(已封装)
- PostgreSQL远端访问
- jquery的contains如何实现精准匹配
- 进击的YOLOv3,目标检测网络的巅峰之作 | 内附实景大片
- Django框架(12.Django中模型类高阶查询(Q对象以及F对象 和聚合函数查询))
- spring 注释_Spring@懒惰注释
- Win2003 运行 命令行 快捷操作
- Android 初探Retrofit2.0.1(最新版)
- 内网穿透工具 FRP Linux 环境搭建安装
- 分享超实用的web网页开发框架
- 简单好用的Mac截图工具:FinalShot
- 解决Failing package is:mysql-community-icu-data-files-8.0.29-1.el7.x86_64 GPG Keys are configured as..
- 深度学习中梯度消失和梯度爆炸的根本原因及其缓解方法
- 要在textarea文本框中粘贴图片怎么办?
- 【Python】打印出所有的“水仙花数”
- HFSS威尔金森(Wilkinson)功分器仿真
- 拓扑绝缘体 量子计算机,物理所预言立方对称性破缺下的新型拓扑绝缘体材料...
- 【MySql】mysql存储毫秒级日期以及PHP时间戳格式转化
- kotlin中标准函数的使用(with、also、aply、let、run)
- “创业七年,一分股份没拿” 技术出身CEO分享那些分股份的坑