基于51单片机的交通灯设计

一.硬件方案

本设计能模拟基本的交通控制系统,用红绿黄灯表示禁行,通行和等待的信号发生,还能进行倒计时显示。按键可以控制禁行、深夜模式、复位、东西通行、南北通行、时间加、时间减、切换等功能。共四个二位阴极数码管,东南西北各一个显示时间,四个数码管的阴极都接到STC89C51的P1口,阳极接到74HC245芯片上,通过P0口控制74HC245芯片,起到驱动放大作用。
主要电路:51单片机+最小系统+数码管显示模块+LED指示灯模块+按键模块;

二.设计功能

(1)本设计采用四方向数码管显示时间的设计,更加符合真实的交通信号灯设计;
(2)7个按键:复位、夜间模式、紧急模式、设定时间、时间加、时间减、调试确定键;
(3)夜间模式:按下“夜间模式”按键后,四个方向的黄灯闪烁;
(4)紧急模式:当救护车、救火车等通过时,按下“紧急模式”按键,四个方向的红灯全部亮起;
(5)东西方向和南北方向的通行时间可以分开设置。就是模拟实际交通中的主干道和支干道。

三.设计原理图

(1)原理图主要采用AD软件进行设计,如图:
在这里插入图片描述
(2)Protues仿真图如下:
在这里插入图片描述

四.软件设计

主程序源码:

//主程序
void main()
{TMOD=0X11;	   				//定时器设置TH1=0X3C;		TL1=0XB0;TH0=0X3C;					//定时器0置初值 0.05STL0=0XB0;EA=1;						//开总中断ET0=1;						//定时器0中断开启ET1=1;					   //定时器1中断开启TR0=1;						//启动定时0TR1=0;						 	//关闭定时1logo();						//开机初始化P2=0Xc3;					// 开始默认状态,东西绿灯,南北黄灯   sec_nb=sec_dx+5; 			//默认南北通行时间比东西多5秒while(1)					  //主循环{	 key(); 					//调用按键扫描程序display(); 				//调用显示程序}	
}
//函数的定义部分
void key(void)	//按键扫描子程序
{	 if(k1!=1)							//当K1(时间加)按下时{display();       				//调用显示,用于延时消抖if(k1!=1)							//如果确定按下{TR0=0;	       				//关定时器	shanruo=0;					//闪烁标志位关P2=0x00;					//灭显示TR1=0;							//启动定时1if(set==0)					//设置键按下set_timedx++;   		//南北加1Selseset_timenb++;    		//东西加1Sif(set_timenb==100)set_timenb=1;if(	set_timedx==100)set_timedx=1;   		//加到100置1sec_nb=set_timenb ; 		//设置的数值赋给东西南北sec_dx=set_timedx;			do{ display();				 //调用显示,用于延时}while(k1!=1);			 //等待按键释放}}if(k2!=1)							//当K2(时间减)按键按下时{		display();       				//调用显示,用于延时消抖  if(k2!=1)						//如果确定按下{	TR0=0;         				//关定时器0	shanruo=0;					//闪烁标志位关P2=0x00;					//灭显示TR1=0;						//关定时器1	if(set==0)set_timedx--;  			//南北减1Selseset_timenb--;  			//东西减1Sif(set_timenb==0)set_timenb=99;	if(	set_timedx==0 )set_timedx=99;   		//减到1重置99sec_nb=set_timenb ;	 		//设置的数值赋给东西南北sec_dx=set_timedx;do	{ display();       		//调用显示,用于延时}while(k2!=1);			   //等待按键释放}}if(k3!=1)							//当K3(确认)键按下时{	display();       				//调用显示,用于延时消抖if(k3!=1)						//如果确定按下{TR0=1;  						//启动定时器0sec_nb=set_timenb;				//从中断回复,仍显示设置过的数值sec_dx=set_timedx;				//显示设置过的时间TR1=0;							//关定时器1	if(set==0)						//时间倒时到0时{ P2=0X00;					 //灭显示Green_dx=1;						//东西绿灯亮Red_nb=1;					//南北红灯亮sec_nb=sec_dx+5; 			//回到初值}else { P2=0x00;					//南北绿灯,东西红灯Green_nb=1;Red_dx=1;sec_dx=sec_nb+5; }}}if(k4!=1)							//当K4(切换)键按下{display();       				//调用显示,用于延时消抖if(k4!=1)						//如果确定按下{  TR0=0;						//关定时器0	set=!set;					//取反set标志位,以切换调节方向TR1=0;						//关定时器1dx_nb=set;do{display(); 			   //调用显示,用于延时}				while(k4!=1);			  //等待按键释放}}	if(k5!=1)							//当K5(禁止)键按下时{display();       				//调用显示,用于延时消抖if(k5!=1)						//如果确定按下{ 	TR0=0;						//关定时器P2=0x00;					//灭显示Red_dx=1;Red_nb=1;					//全部置红灯TR1=0;sec_dx=00;					//四个方向的时间都为00sec_nb=00;do{display(); 				//调用显示,用于延时}	while(k5!=1);			//等待按键释放	}}if(k6!=1)							//当K6(夜间模式)按下 {display();       				//调用显示,用于延时消抖 if(k6!=1)						//如果确定按下{ 	TR0=0;						//关定时器P2=0x00;TR1=1;sec_dx=00;					//四个方向的时间都为00sec_nb=00;do{display(); 			  //调用显示,用于延时}	while(k6!=1);			//等待按键释放	}}
}

资料链接:https://pan.baidu.com/s/1RTF58-hWut5EEv6ZgvnFiw?pwd=gkv0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/335721.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能初识

🌞欢迎来到人工智能基础的世界 🌈博客主页:卿云阁 💌欢迎关注🎉点赞👍收藏⭐️留言📝 🌟本文由卿云阁原创! 📆首发时间:🌹2024年5月1…

C#多线程同步lock、Mutex

C#使用多线程可以通过System.Threading命名空间下的Thread类来实现 lock和Mutex用于实现线程同步的机制&#xff1a; 上代码&#xff1a; class People{public People(int idd){id idd;}public int id;public int age;}class TestHelper{public TestHelper() { }List<Peo…

uniapp h5项目切换导航栏及动态渲染按钮颜色

1.效果图 2.html,动态渲染按钮样式---三元判断 <!-- 切换栏 --><view class"statusList"><block v-for"(item,index) in list" :key"index"><view class"swiper-tab-list" :class"current item.id?activ…

【STL】C++ stack(栈) 基本使用

目录 一 stack常见构造 1 空容器构造函数&#xff08;默认构造函数&#xff09; 2. 使用指定容器构造 3 拷贝构造函数 二 其他操作 1 empty 2 size 3 top 4 push && pop 5 emplace 6 swap 三 总结 一 stack常见构造 1 空容器构造函数&#xff08;默认构造…

西储大学数据集学习

数据集下载地址&#xff1a;CWRU凯斯西储大学轴承数据数据集——附&#xff1a;下载链接_西储大学轴承数据集下载-CSDN博客 最近研究故障诊断&#xff0c;先对使用比较多的西储大学数据集研究。以资料【1】中的内容展开研究。 1、轴承的结构 轴承分为外圈、内圈、保持架和滚珠…

202474读书笔记|《我自我的田渠归来》——愿你拥有向上的力量,一切的好事都应该有权利发生

202474读书笔记|《我自我的田渠归来》——愿你拥有向上的力量 《我自我的田渠归来》作者张晓风&#xff0c;被称为华语散文温柔的一支笔&#xff0c;她的短文很有味道&#xff0c;角度奇特&#xff0c;温柔慈悲而敏锐。 很幸运遇到了这本书&#xff0c;以她的感受重新认识一些事…

端口扫描利器--nmap

目录 普通扫描 几种指定目标的方法 TCP/UDP扫描 端口服务扫描 综合扫描 普通扫描 基于端口连接并响应(真实) ​ nmap -sn 网段(0/24)-sn 几种指定目标的方法 单个IP扫描 IP范围扫描 扫描文件里的IP 扫描网段,(排除某IP) 扫描网段(排除某清单IP) TCP/UDP扫描 -sS …

windows系统电脑外插键盘驱动出现感叹号或者显示未知设备,键盘无法输入的解决办法

笔记本外插的键盘不能用&#xff0c;鼠标可以使用。 查找故障&#xff0c;结果打开设备管理器看到键盘那项里是一个的黄色惊叹号显示未知设备&#xff01;[图片]如下图所示 其实解决办法很简单&#xff0c;不要相信网上的一些博主说删除什么注册表&#xff0c;我开始跟着他们操…

C++笔试强训day36

目录 1.提取不重复的整数 2.【模板】哈夫曼编码 3.abb 1.提取不重复的整数 链接https://www.nowcoder.com/practice/253986e66d114d378ae8de2e6c4577c1?tpId37&tqId21232&ru/exam/oj 按照题意模拟就行&#xff0c;记得从右往左遍历 #include <iostream> usi…

React基础知识笔记

Reat简介 React&#xff1a;用于构建用户界面的 JavaScript 库。由 Facebook 开发且开源。是一个将视图渲染为html视图的开源库 第一章&#xff1a;React入门 相关js库 react.development.js &#xff1a;React 核心库react-dom.development.js &#xff1a;提供 DOM 操作的…

【分享】3种方法取消PPT的“限制保护”

PPT如果设置了有密码的“只读方式”&#xff0c;每次打开PPT&#xff0c;都会出现对话框&#xff0c;提示需要输入密码才能修改文件&#xff0c;否则只能以“只读方式”打开。 以“只读方式”打开的PPT就会被限制&#xff0c;无法进行编辑修改等操作。那如果后续不需要“限制保…

【Linux进程篇】Linux进程管理——进程创建与终止

W...Y的主页 &#x1f60a; 代码仓库分享&#x1f495; 目录 进程创建 fork函数初识 写时拷贝 fork常规用法 fork调用失败的原因 进程终止 进程退出场景 _exit函数 exit函数 return退出 进程创建 fork函数初识 在linux中fork函数时非常重要的函数&#xff0c;它从已…

Python Selenium 详解:实现高效的UI自动化测试

落日余辉&#xff0c;深情不及久伴。大家好&#xff0c;在当今软件开发的世界中&#xff0c;自动化测试已经成为保障软件质量和快速迭代的重要环节。而在自动化测试的领域中&#xff0c;UI自动化测试是不可或缺的一部分&#xff0c;它可以帮助测试团队快速验证用户界面的正确性…

huggingface的self.state与self.control来源(TrainerState与TrainerControl)

文章目录 前言一、huggingface的trainer的self.state与self.control初始化调用二、TrainerState源码解读(self.state)1、huggingface中self.state初始化参数2、TrainerState类的Demo 三、TrainerControl源码解读(self.control)总结 前言 在 Hugging Face 中&#xff0c;self.s…

Kong网关的负载均衡

安装java环境 查询 java安装包 196 yum list java* 安装java8197 yum install -y java-1.8.0-openjdk.x86_64 检验java8是否安装成功。198 java -version2个tomcat准备 另外一个tomcat区别在于&#xff1a;配置文件。conf/server.xml 启动tomcat [rootlocalhost bin]# ./…

JDBC使用步骤-小白入门

一.JDBC开发流程 加载并注册JDBC驱动创建数据库连接创建Statement对象遍历查询结果关闭连接,释放资源 import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;public class StandardJDBCSample {public static …

【busybox记录】【shell指令】unlink

目录 内容来源&#xff1a; 【GUN】【unlink】指令介绍 【busybox】【unlink】指令介绍 【linux】【unlink】指令介绍 使用示例&#xff1a; 删除文件 - 默认 常用组合指令&#xff1a; 指令不常用/组合用法还需继续挖掘&#xff1a; 内容来源&#xff1a; GUN &#x…

element-ui 实现输入框下拉树组件(2024-05-23)

用element-ui的 el-input&#xff0c;el-tree&#xff0c;el-popover组件组合封装 import url("//unpkg.com/element-ui2.15.14/lib/theme-chalk/index.css"); <script src"//unpkg.com/vue2/dist/vue.js"></script> <script src"//…

单链表经典算法题理解

目录 1. 前言&#xff1a; 2. 移除链表元素 3. 反转链表 4. 合并两个有序链表 5. 链表的中间节点 6. 环形链表的约瑟夫问题 7. 分割链表 1. 前言&#xff1a; 当我们学习了单链表之后&#xff0c;我能可以尝试的刷一下题了&#xff0c;以下分享一下几道题的解法 2. 移…

HR招聘面试测评,哪些工作岗位需要测评创新能力?

什么是创新能力&#xff1f; 创新能力指在现有的物质基础上&#xff0c;通过某些特定的条件&#xff0c;促成满足未来社会发展的新事物。无论是个人还是国家都需要巨大的创新能力&#xff0c;因为创新是一切发展的根基&#xff0c;离开了创新&#xff0c;所有的发展都是原地踏…