首页 > 其他分享 >基于 51 单片机的交通灯控制系统设计与实现

基于 51 单片机的交通灯控制系统设计与实现

时间:2024-12-20 22:27:52浏览次数:5  
标签:定时器 LED void 51 交通灯 单片机

1. 系统概述

交通灯控制系统是一个典型的嵌入式应用,它通过控制不同方向的信号灯来管理交通流,确保交通安全和流畅。本项目将使用51单片机实现一个简单的交通灯控制系统。

2. 硬件设计

2.1 硬件组件
  • 51单片机:作为系统的控制核心。
  • LED灯:用于模拟交通信号灯的红、黄、绿灯。
  • 电阻:限流保护LED。
  • 晶振:为单片机提供时钟信号。
  • 按键:用于手动控制交通灯状态。
2.2 电路连接
  • LED灯分别连接到单片机的三个I/O端口,例如P1.0、P1.1、P1.2。
  • 按键连接到单片机的另一个I/O端口,例如P3.2,并接上拉电阻。

3. 软件设计

3.1 初始化

首先,初始化单片机的I/O端口和定时器。

#include <reg51.h>

#define LED_RED P1_0
#define LED_YELLOW P1_1
#define LED_GREEN P1_2

void Timer0_Init() {
    TMOD |= 0x01; // 定时器0模式1
    TH0 = 0xFC;   // 定时器初值,控制定时时间
    TL0 = 0x18;
    ET0 = 1;     // 开启定时器0中断
    EA = 1;      // 开启全局中断
    TR0 = 1;     // 启动定时器0
}

void Delay(unsigned int time) {
    unsigned int i, j;
    for (i = 0; i < time; i++)
        for (j = 0; j < 120; j++);
}
3.2 交通灯控制逻辑

实现交通灯的控制逻辑,包括红灯、绿灯和黄灯的切换。

void TrafficLightControl() {
    while (1) {
        LED_RED = 1; // 红灯亮
        LED_YELLOW = 0;
        LED_GREEN = 0;
        Delay(500); // 延时,模拟红灯时间

        LED_RED = 0; // 红灯灭
        LED_YELLOW = 1; // 黄灯亮
        LED_GREEN = 0;
        Delay(100); // 延时,模拟黄灯时间

        LED_RED = 0; // 红灯灭
        LED_YELLOW = 0; // 黄灯灭
        LED_GREEN = 1; // 绿灯亮
        Delay(500); // 延时,模拟绿灯时间
    }
}
3.3 手动控制

通过按键实现手动控制交通灯状态。

void External0_ISR() interrupt 0 {
    if (P3_2 == 0) { // 检测到按键按下
        while (P3_2 == 0); // 等待按键释放
        TrafficLightControl(); // 手动控制交通灯
    }
}

4. 主函数

在主函数中,初始化系统并进入主循环。

void main() {
    LED_RED = 0;
    LED_YELLOW = 0;
    LED_GREEN = 0;
    Timer0_Init(); // 初始化定时器
    TrafficLightControl(); // 控制交通灯
}

5. 总结

通过上述步骤和代码示例,我们实现了一个基于51单片机的交通灯控制系统。该系统能够自动控制交通灯的红、黄、绿灯切换,并且可以通过按键手动控制。希望这篇文章能够帮助您快速上手51单片机的交通灯控制系统开发。

✅作者简介:热爱科研的嵌入式开发者,修心和技术同步精进

❤欢迎关注我的知乎:对error视而不见

代码获取、问题探讨及文章转载可私信。

☁ 愿你的生命中有够多的云翳,来造就一个美丽的黄昏。

标签:定时器,LED,void,51,交通灯,单片机
From: https://blog.csdn.net/weixin_66608063/article/details/144621099

相关文章

  • AT_arc151_b A < AP
    Tag:并查集,数学题目描述给定一个\(1\simN\)的排列\(P\),找到符合以下条件的\(A\)数组的数量\(\bmod998244353\)。对于\(1\simN\)的每一个\(i\),\(1\leA_i\leM\)。\(A\)数组字典序小于\((A_{P_1},A_{P_2},\cdots,A_{P_n})\)数组。制約$1\\leq\N\\le......
  • 基于springboot+vue旧物回收管理系统-计算机毕设 附源码 35122
    基于springboot+vue旧物回收管理系统摘 要随着社会的快速发展和人们生活水平的不断提高,旧物产生量也在逐年增长。传统的旧物回收方式往往依赖于人工登记、分类和存储,这不仅效率低下,而且难以保证数据的准确性和实时性。同时,由于旧物种类繁多、信息复杂,传统的管理方式很......
  • 「CF1517G」 Starry Night Camping
    题意平面上有\(n\)个点,给出点的坐标和权值\(w_i\)。你需要删去一些点,使得对于每个点\((x,y)\),不存在另三个点\((x_1,y_1),(x_2,y_2),(x_3,y_3)\)满足:对于所有 \(j\in\{1,2,3\}\),\(|x_j−x|,|y_j−y|\le1\)四点构成一个平行四边形(包括矩形),并有一条边平行于\(x\)轴......
  • 22.基于51单片机的蓝牙密码锁设计(实物)
    22.基于51单片机的蓝牙密码锁设计(实物)通过百度网盘分享的文件:资料详解链接:https://pan.baidu.com/s/1zPXLcLmqZAljkgMeU2RT7w?pwd=597l 提取码:597l 本设计以STC89C52单片机为核心控制器,加上其他的模块一起组成蓝牙密码锁的整个系统,其中包含中控部分、输入部分和输出部分......
  • 【小白51单片机专用教程】protues仿真AT89C51入门
    课程特点无需开发板0基础教学软件硬件双修辅助入门        本课程面对纯小白,因此会对各个新出现的知识点在实例基础上进行详细讲解,有相关知识的可以直接跳过。课程涉及protues基本操作、原理图设计、数电模电、kell使用、C语言基本内容,所有涉及知识都将建立在实例的......
  • 单片机实物成品-001农业大棚监测(代码+硬件+论文)
     stm32 农业大棚监测系统(温度+湿度+烟雾+光照+二氧化碳+空调降温+加湿+报警+灯光+排风+自动模式+手动模式+wifi传输控制+送小程序源码)本系统基于STM32F103C8T6单片机,设计了一个集环境监测、智能控制与远程通信于一体的大棚环境监测系统。通过MQ-2气体传感器、DHT11温湿度......
  • 单片机毕业设计项目分享(2)
    已经为大家整理了上万个STM32、51的毕设项目,还没确定选题方向的同学可以参考一下毕设项目1: stm32智能饮水机控制系统项目介绍:主要功能:使用STM32为主控制器,LCD1602显示当前信息:水温、模式、设置水温。DS18b20检测当前饮水机水温,水位传感器检测是否有水,无水情况下蜂鸣器......
  • 关于单片机中断的认识(1)
    中断服务函数的地址存储在中断向量地址的范围中,中断向量地址存储空间有四个字节。硬件NVIC轮询中断向量地址,如果使能了中断,NVIC检测到中断向量被使能,就会进入中断函数。中断函数的名字是固定的,不能自己重新取。注意中断函数的执行内容不能太复杂,然后快要退出中断时记得清除......
  • wsxy96w2032_hcip555(551).txt
    wsxy96w2032_hcip555(551).txt第1、(单选题)5.区域间路由汇总功能在什么路由器上配置A:ABR;B:ASBR;C:IR;D:BR;解析:这道题考察的是对网络设备功能的理解。在OSPF(开放最短路径优先)协议中,区域边界路由器(ABR)负责将一个区域的路由信息汇总后发送到其他区域,实现区域间的路由汇总功能。因......
  • AT24C02密码锁,51单片机。
    #include<REGX52.H>#include<Buttons.h>#include<AT24C02.h>#include<LCD1602.h>#include<Delay.h>#include<security.h>#include<Buzzer.h>unsignedcharOriginal_Password[6]={0};//原始密码数组unsignedcharN......