定时红绿灯(C51单片机)

news2024/9/22 11:40:01

一.项目题目:利用中断处理制作的定时LED红绿灯系统

二.项目器件:
红色LED灯
绿色LED灯
黄色LED灯
100R电阻
电源
电容器
C51单片机
接地线

三.项目原理图
请添加图片描述

四.项目实现功能:
使用定时器/计数器T1工作方式1,采用中断方式控制P1口6个单片机串口,实现类似交通红绿灯功能。如图,当3,4两侧红灯亮灯5s,同时1,2两侧绿灯亮灯4s然后黄灯亮灯1s。

五.项目实现思路:
使用中断系统的定时器T1的工作方式,实现50ms一次中断,代码如下:
TH1 = (65536 - 50000) / 256; //定时器的高8位赋初值
TL1 = (65536 - 50000) % 256; //定时器的低8位赋初值

但是发现50ms不够用,于是就想到记录一个全局变量cnt值,每个cnt代表一次定时/中断(即50ms)。这样一来,80个cnt就是4s(表示绿灯),20个cnt就是1s(表示黄灯),100个cnt就是5s(表示红灯),那么这个问题就解决了。

另外就是流程问题,我发现,整个红绿灯系统运行时只有4个时间段,如图:
0 - 3s:3,4侧红灯亮,1,2侧绿灯亮。
4 - 5s:3,4侧红灯亮,1,2侧黄灯亮。
6 - 8s:1,2侧红灯亮,3,4侧绿灯亮。
9 - 10s:1,2侧红灯亮,3,4侧黄灯亮。

对应的cnt值的变化:
0 - 79:3,4侧红灯亮,1,2侧绿灯亮。
80 - 99:3,4侧红灯亮,1,2侧黄灯亮。
100 - 179:1,2侧红灯亮,3,4侧绿灯亮。
180 - 199:1,2侧红灯亮,3,4侧黄灯亮。
在这个过程中系统每中断一次 cnt = (cnt + 1) % 200。

最后是显示结果问题,我用P1的6个串口分别无线连接相邻两侧的红绿黄灯。详细流程如下
cnt 为0 - 79:3,4侧红灯亮,1,2侧绿灯亮。对应P1 = 0x1e。
cnt 为80 - 99:3,4侧红灯亮,1,2侧黄灯亮。对应P1 = 0x1d。
cnt 为100 - 179:1,2侧红灯亮,3,4侧绿灯亮。对应P1 = 0x33。
cnt 为180 - 199:1,2侧红灯亮,3,4侧黄灯亮。对应P1 = 0x2b。

六.项目代码

#include "reg51.h"
unsigned int cnt = 0;

void Time(void) interrupt 3 using 0
{
	if (cnt == 0) {//green and red
		 P1 = 0x1e;
	}else if (cnt == 80) {//yellow and red
		 P1 = 0x1d;
	}else if (cnt == 100) {//red and green
		 P1 = 0x33;
	}else if (cnt == 180) {//red and yellow
		 P1 = 0x2b;
	}
	
	TH1 = (65536 - 50000) / 256;
	TL1 = (65536 - 50000) % 256;
	cnt = (cnt + 1) % 200;
}
void main()
{
	EA = 1;//开总中断
	ET1 = 1;//定时器T1中断允许
	TMOD = 0x10;//使用定时器T1的方式1
	TH1 = (65536 - 50000) / 256;//定时器的高8位赋初值
	TL1 = (65536 - 50000) % 256;//定时器的低8位赋初值
	TR1 = 1;//启用定时器T1
	while (1);
}

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

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

相关文章

【云原生 | Kubernetes 实战】14、K8s 控制器 Statefulset 入门到企业实战应用

目录 一、Statefulset 控制器:概念、原理解读 1.1 什么是有状态服务? 1.2 什么是无状态服务? 二、 Statefulset 资源清单文件编写技巧 三、Statefulset 使用案例:部署 web 站点 3.1 StatefulSet 由以下几个部分组成&#xf…

VMware克隆虚拟机

一、克隆虚拟机 1. 在WMware中,右键虚拟机模板(需要克隆的虚拟机原型),选择:管理 ----> 克隆,如下图所示: 2. 然后,如下图进行操作: 二、扩展:移除、删除…

【Python】 14-CVS文件操作

1.CVS文件 值没有类型,所有东西都是字符串; • 没有字体大小或颜色的设置; • 没有多个工作表; • 不能指定单元格的宽度和高度; • 不能合并单元格; • 不能嵌入图像或图表。 CSV 文件中的每个单元格 有逗…

【JavaSE基础:数据类型和变量】

数据类型一、数据类型1.八大基本数据类型二、变量0.字面常量1.变量1)数值类型a.整型b.浮点型2)字符类型(char)3)布尔类型(boolean)2.类型转换3.类型提升一、数据类型 Java是一种强类型编程语言…

[思维模式-6]:《如何系统思考》-2- 认识篇 - 为什么要系统思考?系统思考是系统架构师、系统设计师的基本技能

目录 前言:系统思考的关键字 第1章 系统思考的作用 1.1 系统思考能够化繁为简 1.2 系统思考是敏捷成长和解决问题的系统方法 第2章 常见缺乏系统思考的表现 2.1 分解思维盛行的不足 2.2 面积上:只见树木,不见深林 2.3 时间上&#xf…

Tippecanoe安装使用

Tippecanoe安装使用 介绍 tippecanoe是mapbox官方提供的一个开源矢量切片工具,用C语言编写的。 Tippecanoe 的目标是为您的数据制作一个与比例无关的视图,以便在从整个世界到单个建筑物的任何级别上,您都可以看到数据的密度和纹理&#xf…

02---前端框架搭建

1、创建项目 1.该有的nodejs 、vue都要安装上,我用的是vuecli3,所以可以使用可视化界面 来创建项目(更加直观),当然你也可以采用命令行的方式创建项目。 2.cmd命令行输入: vue ui 3.在打开的可视化页面中…

基于asp.net193酒店客房预订网站系统-计算机毕业设计

项目介绍 本酒店系统使用asp.net技术制作,在前台为普通用户提供预定和查询等系统使用功能,在后台为酒店管理员提供对系统平台的管理功能。在前台为用户提供的操作功能包括以下内容:站内新闻、用户注册、酒店查看,留言板等功能。此系统为管理…

AMAIZINGIC晶焱科技:Wi-Fi 6E 路由器产品的ESD/EOS防护方案

AMAIZINGIC晶焱科技:Wi-Fi 6E 路由器产品的ESD/EOS防护方案 随着无线网路的发展,IEEE协会于2020年提出了最新的Wi-Fi 6E,此版本为Wi-Fi 6的延伸版本,除了Wi-Fi 6原先支援的2.4GHz及5GHz的频段外,新增了6GHz的频段&…

功能超级强大,Python 命令行解析工具 argparse很好用

在工作中,我们经常需要从命令行当中解析出指定的参数,而 Python 也提供了相应的标准库来做这件事情,比如 sys, optparse, getopt, argparse。这里面功能最强大的莫过于 argparse,下面就来看看它用法。 import argparse # 使用 a…

Java+SSM在线商城系统电商购物系统(含源码+论文+答辩PPT等)

项目功能简介: 该项目采用的技术实现如下 后台框架:Spring、SpringMVC、MyBatis UI界面:BootStrap、jQuery 、JSP 数据库:MySQL 系统分为前台订票和后台管理: 1.前台商城 商品分类展示、商品详情、商品推荐、购物车、下单、支付 客…

课题设计基于nodejs购票系统的设计与实现.zip(论文+源码+ppt文档+视频录制)

第 1 章 绪 论 3 1.1研究现状及存在问题 3 1.2主要工作 4 第 2 章 系统开发技术概述 5 2.1 B/S 架构模式与C/S 架构模式 5 2.2 nodejs框架模式 6 第 3 章 需求分析 7 3.1 系统情况概述 7 3.2 系统功能性需求分析 9 3.3 系统非功能性需求分析 9 3.4 系统用例图 10 第 4 章 系统设…

【JavaSE】文件读写

目录 一、文件 1、文件的概念 1.广义 2.狭义 二、路径 1、绝对路径 2、相对路径 1.进入下一级./ 2.回退上一级../ 三、Java里的文件基本操作----File类 1、说明 2、File类的基本操作 1.基本方法 ​2.创建与删除文件 3.创建目录 4.文件的重命名 四、文件的读写操…

信息安全技术

安全分析模型自动化调优 MLOps(Machine Learning Operations)是一种人工智能 的工程实践,是面向机器学习项目的研发运营管理体系 。旨在实现 ML 管道的操作、ML 模型的部署和管理标准化,支持ML 模型的发布、激活、监控、性能跟踪…

【Spring Cloud】Nacos命名空间Namespace的介绍与使用

本期目录1. Namespace介绍2. 创建Namespace3. 配置Namespace专栏精选文章1. Namespace介绍 Namespace 通常用来做环境隔离。例如开发环境 dev 、测试环境 test 和生产环境 pro 之间的服务/数据相互隔离,无法相互访问。 Nacos 中服务和数据存储的最外层都是 Namespa…

常用性能测试工具的比较

目录性能测试的重要性针对接口的性能测试性能测试基准接口性能测试的主要指标abenchjMeterKelude性能脚本各种监控工具参考总结性能测试的重要性 众所周知性能测试在软件测试中占有举足轻重的作用,尤其是对于互联网产品这种具有大用户量,大数据量&#…

Spring Boot学习篇(一)

Spring Boot学习篇(一) 1 Spring、SpringBoot、SpringCloud有什么区别? spring一般指Spring框架(SpringFramework),它是一个开源、轻量级的Java应用开发框架。其核心是控制反转IOC和面向切面编程AOP。Spring提供了很多包括ORM、…

Kaggle 新赛 | GoDaddy 微型企业密度预测

文章目录一、比赛背景和目标1. 背景2. 比赛目标二、提交、时间线和奖项三、代码要求一、比赛背景和目标 1. 背景 美国政策领导人努力发展更具包容性和抗衰退能力的经济体。他们也意识到,随着科技的进步,创业从来没有像今天这样容易。无论是创造一个更合…

【阙值分割】粒子群算法自适应多阈值图像分割【含Matlab源码 1459期】

⛄一、粒子群算法自适应多阈值图像分割简介 理论知识参考:【基础教程】基于matlab图像处理图像分割【含Matlab源码 191期】 粒子群优化的多阈值图像自分割算法 ⛄二、部分源代码 clc;clear;close all; %% 输入图像; Imag imread(‘24063.jpg’);%29…

【算法】常见的排序算法(插入排序、希尔排序、选择排序、冒泡排序、快速排序、归并排序)

目录一.常见排序类型二.排序详解1.冒泡排序2.选择排序3.插入排序4.希尔排序5.快速排序6.归并排序一.常见排序类型 插入排序:插入排序、希尔排序选择排序:简单选择排序、堆排序交换排序:冒泡排序、快速排序归并排序基数排序(又叫桶排序)八万个…