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

news2025/1/12 12:06:31

点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/87855439?spm=1001.2014.3001.5503
在这里插入图片描述

源码获取
一、实验目的
掌握单片机的综合应用设计。加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、模块化编程等多项知识。学会用单片机模拟实现具体应用,使个人设计能够真正使用。提高利用已学知识分析和解决问题的能力,把理论知识与实践相结合,充分发挥个人能力,提高实践动手能力并在实践中锻炼。
二、实验仪器、材料
PC机、 keil 软件、proteus软件
三、实验内容及要求
实验内容:利用proteus画出仿真图,在keil中编写好程序并调试,然后下载到单片机内实现仿真
实验要求:十字路口的交通灯控制系统,四组灯(红黄绿)对应十字路口的四个方向,用两位的数码管显示剩余的时间。
四、实验原理
用51单片机的P1.0-P1.5端口来控制两个方向的红黄绿三种颜色的灯,在高电平时对应的灯亮,P0.0-P0.6端口用来显示数码管倒计时,每秒跳变一次。本实验采用共阳极的的数码管,在低电平下相应的数码管段亮。P2.0和P2.1控制东西方向两个数码管的位选,P2.2和P2.3控制南北方向两个数码管的位选,高电平则为选中。本实验采用51单片机定时中断控制LED的跳转和数码管的倒计时,时长为50ms。
五、实验过程及原始记录(包括原理图或程序代码)
实验方案:
初始时南北方向为红灯,时间为18s,东西方向为绿灯,时间为15s,绿灯倒计时完毕后会有3s的黄灯时间,黄灯结束后,南北方向变为绿灯,东西方向变为红灯。

原理图:
在这里插入图片描述

代码:

#include "reg51.h"

sbit hg=P1^0;
sbit hy=P1^1;
sbit hr=P1^2;
sbit sr=P1^3;
sbit sy=P1^4;
sbit sg=P1^5;
sbit h1=P2^0;
sbit h2=P2^1;
sbit s1=P2^2;
sbit s2=P2^3;

typedef unsigned int u16; //对数据类型进行声明定义

int count=0;
int time1=15,time2=18;
int t1=15,t2=18;
int number=1;
int num[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阴

void delay(u16 n)
{
	while(n--);
}

void show(int n,int m)//数码管显示函数
{
	int a,b,c,d;
	a=n/10;
	b=n%10;
	c=m/10;
	d=m%10;
	P0=0xff;
	h1=1;
	h2=s1=s2=0;
	P0=num[a];
	delay(50);	
	P0=0xff;
	h1=s1=s2=0;
	h2=1;
	P0=num[b];
	delay(50);
	s1=1;
	s2=h1=h2=0;
	P0=num[c];
	delay(50);
	s1=h1=h2=0;
	s2=1;
	P0=num[d];
	delay(50);
}


void main()
{	
	P1=0x00;
	hg=1;sr=1;
	show(time1,time2);
	delay(100);	
	TMOD=0x01;//设置定时器0工作方式1
	TL0=0x3C;//定时50ms
	TH0=0xB0;
	ET0=1;//定时器0中断
	EA=1;//开总中断
	TR0=1;//开始计时
	while(1)
	{
		show(time1,time2);
	}
}

void timer() interrupt 1      //定时器中断
{
	TH0=0x3C;
	TL0=0xB0;
	count=count+1;
	if(count==20)
	{
		count=0;		
		time1--;
		time2--;
		show(time1,time2);
		if(time1==0&&time2!=0)
		{
			 P1=0x00;hy=1;sr=1;
			 time1=3;
			 show(time1,time2);
		}
		if(time1!=0&&time2==0)
		{
			 P1=0x00;hr=1;sy=1;
			 time2=3;
			 show(time1,time2);
		}
		if(time1==0&&time2==0)
		{
			if(number%2==1)
			{
				P1=0x00;hr=1;sg=1;
				time1=t2;time2=t1;
				number=0;
			}
			else
			{
				P1=0x00;hg=1;sr=1;
				time1=t1;time2=t2;
				number=1;
			}
		}

	}
}

六、实验结果及分析(程序运行结果或硬件仿真分析)
开始运行时南北方向为红灯,时间为18s,东西方向为绿灯,时间为15s

在这里插入图片描述

东西方向绿灯倒计时完毕后会有3s的黄灯时间
在这里插入图片描述

黄灯结束后,南北方向变为绿灯,东西方向变为红灯
在这里插入图片描述

南北方向绿灯倒计时完毕后会有3s的黄灯时间

在这里插入图片描述

黄灯结束后,南北方向变为红灯,东西方向变为绿灯,以此重复循环

七、实验体会
在这次综合性实验过程中我加深了从编程、软件使用到调试这一过程,逻辑思维和动手能力都得到了很大的提高,对于平时所学的书本知识也有了进一步的巩固与运用。本实验要解决的主要问题就是程序的设计和仿真,虽然初期在设计和布局、编程时有了大致的想法,但是在实现的过程中也还是遇到了一些问题,但是我通过查阅资料或者与同学交流主动去解决了这些问题,我认为在这个过程中是收获最大的。虽然只是完成了最基本的功能,但是整个仿真和代码的编写都是由自己亲自完成,对于以前理解不到位的知识也更加清楚,后面也会对本次设计不断完善,争取做到更好。通过这次系统实验,我对以前学过的知识进行了巩固,加深了理解,提高了应用的能力,而且提高了我的发现、分析、解决问题的能力,同时提高了对专业的认识及兴趣,对于以后的学习有很大的帮助
八、实验改进(即区别于实验指导书的内容)
我的设计方案只是完成了最基本的倒计时与灯光变化功能,没有增加额外的功能,如紧急情况的处理,夜间车流量少时的方案等等,在实用性方面不够完善,应更多地贴合实际,考虑实际情况。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

华为防火墙双机热备外线vrrp地址和接口地址非同网段

主防火墙FW1: HRP_Mdis current-configuration 2023-06-02 15:51:48.270 08:00 !Software Version V500R005C10SPC300 sysname USG6000V1 l2tp domain suffix-separator undo info-center enable ipsec sha2 compatible enable undo telnet server enable undo telnet ipv6 se…

Office Visio 2007安装教程

哈喽,大家好。今天一起学习的是Visio 2007的安装,这是一个绘制流程图的软件,用有效的绘图表达信息,比任何文字都更加形象和直观。Office Visio 是office软件系列中负责绘制流程图和示意图的软件,便于IT和商务人员就复杂…

ROS:客户端Client的编程实现

目录 一、话题模型二、创建功能包三、创建代码并编译运行(C)3.1步骤3.2创建客户端Client代码3.3编译 四、运行 一、话题模型 Sever端是海龟仿真器/turtlesim,Client端是待实现的程序,其作为Response的节点,并产生Requ…

wav格式怎么转换?介绍三个转换wav格式的方法

在音乐制作或者编辑过程中,可能需要将录制的音频文件转换成特定的格式以便于后期处理。例如,你可能拍摄了一段演奏视频,想要提取其中的音频,并将其转换为wav或者flac等无损格式,以便于进行音频编辑和修复。那么你知道w…

【正点原子STM32连载】 第二十四章 OLED显示实验 摘自【正点原子】STM32F103 战舰开发指南V1.2

1)实验平台:正点原子stm32f103战舰开发板V4 2)平台购买地址:https://detail.tmall.com/item.htm?id609294757420 3)全套实验源码手册视频下载地址: http://www.openedv.com/thread-340252-1-1.html 第二十…

VMWare安装Ubuntu

VMWare安装Ubuntu 安装前 准备 访问https://cn.ubuntu.com/download(下载需要版本/以16.04为例)操作系统上安装VMWare 基本安装 下载映像文件后,按照一步一步操作即可安装注意选中映像文件安装结束,登录进入系统可看到以下画面 设置语言环境 进入系…

OpenMMLab-AI实战营第二期-课程笔记-Class 2:人体姿态估计与MMpose

Class 2:人体姿态估计与MMpose 文章目录 Class 2:人体姿态估计与MMpose**人体姿态估计概述****what?****下游任务** **2D 姿态估计****主流算法****基于回归坐标的方法****基于热图(heatmap)的方法** **多人姿态估计****基于回归…

5. 垃圾收集器G1ZGC详解

JVM性能调优 1. G1收集器(-XX:UseG1GC) 本文是按照自己的理解进行笔记总结,如有不正确的地方,还望大佬多多指点纠正,勿喷。 课程内容: 1、G1垃圾收集器详解 2、每秒几十万并发的系统JVM级别如何优化 3、ZGC垃圾收集器详解 4、…

设置 session rdp 时间限制

起因:一台服务器 2016版本,每当退出远程桌面后,过一段时间,用户所有的进程就会自动关闭,导致后台运行的任务出现异常。 运行 gpedit.msc, 根据以下资料设置后,记得重启,不然不会生效 前三个选…

汽车出海势头旺,汽车零部件企业如何破浪前行?

随着国内汽车市场逐渐饱和,中国汽车企业开始寻求“汽车出海”的新市场增长点。在政府加大汽车出海政策支持力度下,根据中汽协数据,一季度的新能源汽车出口达24.8万辆,同比增长1.1倍。中国汽车行业持续深耕海外市场,出口…

节省公司资源,可以使用生产力分析系统!

经常出现有人下班后忘记关机的情况,不仅给公司造成损失,还浪费电力资源。虽说公司内通常会装有摄像头,可以看到具体是哪台电脑忘记关,但总不能让已经到家的职工,又返回公司关机吧。使用生产力分析系统,可以…

测量不确定度

不确定度与误差区别 相同点:都是评价测量结果质量高低的重要指标,都可以作为测量结果的精度评定参数。 不同点:测量误差是结果与真值之差,以真值为约定中心;而不确定度则是以估计值为约定中心,因此误差是…

SpringBoot使用SSE进行实时通知前端

SpringBoot使用SSE进行实时通知前端 说明maven依赖SSE工具类代码 Controller测试代码测试结果如下:注意将超时时间由原来的0改为默认的30秒,会报错。将springboot降为低版本如1.4.2.RELEASE。 说明 项目有个需求是要实时通知前端,告诉前端这个任务加载好…

数字孪生:让ECU在数字环境中“栩栩如生”

很多汽车广告中都会展示这样一个画面:在快要猛烈撞击障碍物之时,汽车所配备的防撞预警功能在最后关头实现停驶,守护车内老少一家人的生命安全。 近年来,汽车安全性能成为众多厂商广告中的主打,侧面印证了安全在当下消…

【传感器】最小二乘法实现磁力计椭球校准

总体思路 磁力计的数据在实际中是椭球的形状,在此之前使用了球体拟合进行校准,也就是简化为正球体的模型,得出的结果比较差,航向计算不准,还是需要用椭球的模型来估计偏移量,先使用标准的椭球方程&#xf…

微信小程序相关问题整理(一)

文章目录 1、引入 vant-weapp UI2、配置小程序 tabBar3、小程序登录授权流程4、小程序支付(微信支付)5、小程序分享6、小程序打开内置地图(腾讯地图)7、小程序打开app8、小程序打开其他小程序9、小程序获取当前地理位置额外&#…

项目上线出Bug:我踩过的4个大坑及事后反思

最近参与的拥有7大模块的系统项目,从去年11月开始开发,共5个月左右。 该项目是用JavaNode.js开发,开发人员含外包将近10位,测试人员A从头跟到尾,其他测试人员都是紧急时刻从其他项目临时调来,包含兄弟部门…

【LeetCode】HOT 100(2)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

精通编辑和校对:避免常见错误的实用方法

编辑和校对是提高写作质量的关键环节。为了精通编辑和校对,我们需要了解常见的错误并学会避免它们。 以下是一些实用方法,帮助你在编辑和校对过程中避免常见错误。 1.充分理解文本内容和目的 在开始编辑和校对之前,确保充分理解文本的内容和…

今天教会你如何在Chrome中正确使用ChatGPT!

🚀 个人主页 极客小俊 ✍🏻 作者简介:web开发者、设计师、技术分享博主 🐋 希望大家多多支持一下, 我们一起进步!😄 🏅 如果文章对你有帮助的话,欢迎评论 💬点赞&#x1…