定时红绿灯(C51单片机)

这篇具有很好参考价值的文章主要介绍了定时红绿灯(C51单片机)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

三.项目原理图
定时红绿灯(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。

六.项目代码文章来源地址https://www.toymoban.com/news/detail-450060.html

#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);
}

到了这里,关于定时红绿灯(C51单片机)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AT89C51单片机红绿灯控制源代码(C语言版)附带Proteus电路图

    这个代码需要稍微改一下才能运行,看得懂的不超过1分钟应该能够搞好。看不懂的无法运行

    2024年02月07日
    浏览(26)
  • 基于单片机的红绿灯智能控制系统设计

    收藏和点赞,您的关注是我创作的动力   随着社会经济的快速发展以及人们生活水平的提高 ,机动车数量也在急剧增加 ,交通问题逐渐成为人们关注的重点对象,因城市发展所带来的交通拥堵等问题,利用智能交通来解决传统交通日渐出现的问题成为大势所趋。本设计基

    2024年02月04日
    浏览(30)
  • 【WinForm项目】C#模拟交通信号灯|WinForm交通红绿灯

    交通信号灯十字路口通行原理图。 实际上归类为四大类: 南北双向直行 东西双向直行 一对黑色粗线的左转 一对红色粗线的左转。 状态逻辑图如下图所示: 假定通行顺序为:南北直行、南北左转、东西直行、东西左转。 南北行人只在南北车流绿灯和黄灯的时候可以通行,

    2024年02月09日
    浏览(33)
  • 【红绿灯识别】计算机视觉红绿灯识别【含GUI Matlab源码 2713期】

    ✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。 🍎个人主页:海神之光 🏆代码获取方式: 海神之光Matlab王者学习之路—代码获取方式 ⛳️座右铭:行百里者,半于九十。 更多Matlab仿真内容点击👇 Matlab图像处理(进阶版) 路径规划

    2024年01月19日
    浏览(37)
  • C语言课设项目-51单片机-定时器和计数器

     (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、定时器的原理 1、CPU时序的有关知识 2、在学习定时器之前需要明白的  3、定时/计数器的工作原理 4、51单片机定时器结构  二、定时/计数器的控制  1、工作方式

    2023年04月18日
    浏览(50)
  • 交通信号灯课程设计(红绿灯)

    一、设计指标 1.1对设计课题进行简要阐述        由一条主干道和一条支干道的汇合点形成十字交叉路口,为确保车辆安全、迅速地通行,在交叉路口的每个人口处设置了红、绿、黄三色信号灯。        (1)用红、绿、黄三色发光二极管作信号灯,用传感器或逻辑开关

    2024年02月09日
    浏览(38)
  • 基于OpenCV的红绿灯识别

    为了实现轻舟航天机器人实现红绿灯的识别,决定采用传统算法OpenCV视觉技术。 航天机器人的红绿灯识别主要基于传统计算机视觉技术,利用OpenCV算法对视频流进行处理,以获取红绿灯的状态信息。具体而言,该系统通过连接工控机摄像头读取视频流,将视频帧转换成HSV色彩

    2024年02月15日
    浏览(26)
  • 基于STM32的红绿灯设计

    基于protrus8设计电路原理图 先要思考明白十字路口红绿灯的逻辑 东西是一样的,南北是一样的。 东西红灯,南北就是绿灯,反之一样的,弄明白这些写代码就有思路了 中间的两个数码管是模拟真实红绿灯倒计时的用的,放置4个也行,但是为了方便观看就放一个了 下面放几

    2024年02月11日
    浏览(26)
  • FPGA十字路口红绿灯控制器

    课程设计:十字路口红绿灯控制器 1.要求双方向8个灯的时序控制 2.要求显示倒计时 verilog hdl代码模块 测试程序模块 注意: 选择比较好的器件 测试文件命名为testbench.vt,否则不行。 采用BCD倒计时,经测试时序无错,代码结构清晰。 EDA课设,感谢论坛其他大佬的代码,基于

    2024年02月11日
    浏览(33)
  • 高德地图红绿灯读秒是怎么实现的?(一)

    关于这个读秒实现功能众说风云,目前有两种说法,一种说是靠大数据分析,一种说是靠交管部门数据。 我们先看一下 官方的回应 :可以自行去抖音看官方号的解释。 以下为原答: 有人说是接入了地方交管数据,其实政策难度很大且没必要。合理推测一下: 其实一个路口

    2024年02月02日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包