当前位置: 首页 > news >正文

51单片机——按键控制LED流水灯

引言

在电子制作和嵌入式系统学习中,51 单片机是一个经典且入门级的选择。按键控制 LED 流水灯是 51 单片机的一个基础应用,通过这个实例,我们可以深入了解单片机的输入输出控制原理。

51 单片机简介

51 单片机是对所有兼容 Intel 8051 指令系统的单片机的统称。它具有体积小、成本低、功能强等特点,广泛应用于各种控制领域。其内部包含中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、定时 / 计数器和多种 I/O 接口等部件。

按键控制 LED 流水灯的功能及作用

功能

通过按键控制 LED 灯按照一定顺序依次点亮和熄灭,形成流水灯效果。按下按键时,流水灯开始工作;再次按下按键,流水灯停止工作。

作用

  1. 学习单片机基础:这个项目是学习单片机 I/O 口控制的绝佳实例,能帮助初学者熟悉单片机的基本编程和硬件连接。
  2. 状态指示:在实际应用中,LED 流水灯可以作为设备状态的可视化指示,例如显示系统的运行状态、数据传输状态等。
  3. 人机交互:按键作为输入设备,实现了人与单片机系统的交互,为更复杂的人机交互设计打下基础。

硬件连接

  1. 单片机:选择常见的 STC89C52 单片机作为核心控制单元。
  2. 按键:一端连接到单片机的 I/O 口(如 P3.2),另一端接地。按键按下时,对应的 I/O 口电平被拉低。
  3. LED 灯:多个 LED 灯的阴极分别连接到单片机的不同 I/O 口(如 P1.0 - P1.7),阳极通过限流电阻连接到电源正极。当 I/O 口输出低电平时,对应的 LED 灯点亮。

软件编程

开发环境

使用 Keil C51 作为开发工具,编写 C 语言代码。

代码实现:

#include <REGX51.H>
#include <intrins.h>unsigned char Keynumber,LEDMode;//延时函数
void delay(unsigned int t)
{unsigned char i;while(t--){for(i=0;i<120;i++);}
}//定时器0初始化
void Timer0Init(void)		
{TMOD &= 0xF0;		TMOD |= 0x01;		TL0 = 0x18;		TH0 = 0xFC;		TF0 = 0;		TR0 = 1;		EA=1;ET0=1;
}//独立按键模块
unsigned int Key()
{unsigned char KeyNum=0;if(P3_0==0){delay(20);while(P3_0==0);delay(20);KeyNum=1;}if(P3_1==0){delay(20);while(P3_1==0);delay(20);KeyNum=2;}if(P3_2==0){delay(20);while(P3_2==0);delay(20);KeyNum=3;}if(P3_3==0){delay(20);while(P3_3==0);delay(20);KeyNum=4;}return KeyNum;
}void main()
{P2=0xFE;Timer0Init();while(1){Keynumber=Key();if(Keynumber){if(Keynumber==1){LEDMode++;if(LEDMode>=2)LEDMode=0;}}}
}void Timer0() interrupt 1
{static unsigned int T0count;TL0 = 0x18;		//??????TH0 = 0xFC;		//??????T0count++;if(T0count>=1000){T0count=0;if(LEDMode==0){P2=_crol_(P2,1);}if(LEDMode==1){P2=_cror_(P2,1);}}
}

总结

通过本文介绍的 51 单片机按键控制 LED 流水灯项目,我们学习了单片机的基本硬件连接和软件编程方法。这个项目不仅是一个有趣的电子制作,更是深入学习嵌入式系统的基石。希望读者通过实践,能够掌握更多单片机应用技巧,开启电子世界的探索之旅。

相关文章:

51单片机——按键控制LED流水灯

引言 在电子制作和嵌入式系统学习中&#xff0c;51 单片机是一个经典且入门级的选择。按键控制 LED 流水灯是 51 单片机的一个基础应用&#xff0c;通过这个实例&#xff0c;我们可以深入了解单片机的输入输出控制原理。 51 单片机简介 51 单片机是对所有兼容 Intel 8051 指…...

【opencv】第9章 直方图与匹配

第9章 直方图与匹配 9.1 图像直方图概述 直方图广泛运用于很多计算机视觉运用当中&#xff0c;通过标记帧与帧之间显著的边 缘和颜色的统计变化&#xff0c;来检测视频中场景的变化。在每个兴趣点设置一个有相近 特征的直方图所构成“标签”,用以确定图像中的兴趣点。边缘、色…...

HTML5 Web Worker 的使用与实践

引言 在现代 Web 开发中&#xff0c;用户体验是至关重要的。如果页面在执行复杂计算或处理大量数据时变得卡顿或无响应&#xff0c;用户很可能会流失。HTML5 引入了 Web Worker&#xff0c;它允许我们在后台运行 JavaScript 代码&#xff0c;从而避免阻塞主线程&#xff0c;保…...

MVCC底层原理实现

MVCC的实现原理 了解实现原理之前&#xff0c;先理解下面几个组件的内容 1、 当前读和快照读 先普及一下什么是当前读和快照读。 当前读&#xff1a;读取数据的最新版本&#xff0c;并对数据进行加锁。 例如&#xff1a;insert、update、delete、select for update、 sele…...

基于ESP32-IDF驱动GPIO输出控制LED

基于ESP32-IDF驱动GPIO输出控制LED 文章目录 基于ESP32-IDF驱动GPIO输出控制LED一、点亮LED3.1 LED电路3.2 配置GPIO函数gpio_config()原型和头文件3.3 设置GPIO引脚电平状态函数gpio_set_level()原型和头文件3.4 代码实现并编译烧录 一、点亮LED 3.1 LED电路 可以看到&#x…...

【优选算法】9----长度最小的子数组

----------------------------------------begin-------------------------------------- 铁子们&#xff0c;前面的双指针算法篇就算告一段落啦~ 接下来是我们的滑动窗口篇&#xff0c;不过有一说一&#xff0c;算法题就跟数学题一样&#xff0c;只要掌握方法&#xff0c;多做…...

LabVIEW太阳能照明监控系统

在公共照明领域&#xff0c;传统的电力照明系统存在高能耗和维护不便等问题。利用LabVIEW开发太阳能照明监控系统&#xff0c;通过智能控制和实时监测&#xff0c;提高能源利用效率&#xff0c;降低维护成本&#xff0c;实现照明系统的可持续发展。 ​ 项目背景 随着能源危机…...

MongoDB中单对象大小超16M的存储方案

在 MongoDB 中&#xff0c;单个文档的大小限制为 16MB。如果某个对象&#xff08;文档&#xff09;的大小超过 16MB&#xff0c;可以通过以下几种方案解决&#xff1a; 1. 使用 GridFS 适用场景&#xff1a;需要存储大文件&#xff08;如图像、视频、文档等&#xff09;。 原…...

三维激光扫描-用智能检测系统提升效率

当下&#xff0c;企业对生产效率和质量控制的要求越来越高。传统的检测方法往往难以满足高精度、快速响应的需求。三维激光扫描技术结合智能检测系统&#xff0c;为工业检测带来了革命性的变革。 传统检测方法的局限性 传统检测方法主要依赖于人工测量和机械检测工具&#xf…...

css遇到的一些问题

1.vw单位&#xff0c;在PC端vw单位是包含右侧滚轮的宽度&#xff0c;而在移动端不会包含滚轮的长度&#xff0c;在PC端运用vw单位进行居中对齐&#xff0c;会比实际偏左盒子偏右一点&#xff0c;因为内容区域并不包含滚轮。 2.运用媒体查询进行响应式布局式&#xff0c;媒体查询…...

【langgraph】ubuntu安装:langgraph:未找到命令

langgraph 在ubuntu24.04 参考:langgraph运行:报错: (05_ep_dev) root@k8s-master-pfsrv:/home/zhangbin/perfwork/01_ai/05_ep_dev/expert# langgraph dev langgraph:未找到命令查看langraph的安装情况 pip show langgraph...

mysql 学习2 MYSQL数据模型,mysql内部可以创建多个数据库,一个数据库中有多个表;表是真正放数据的地方,关系型数据库 。

在第一章中安装 &#xff0c;启动mysql80 服务后&#xff0c;连接上了mysql&#xff0c;那么就要 使用 SQL语句来 操作mysql数据库了。那么在学习 SQL语言操作 mysql 数据库 之前&#xff0c;要对于 mysql数据模型有一个了解。 MYSQL数据模型 在下图中 客户端 将 SQL语言&…...

小识JVM堆内存管理的优化机制TLAB

JVM&#xff08;Java虚拟机&#xff09;在堆内存分配空间时&#xff0c;TLAB&#xff08;Thread Local Allocation Buffer&#xff0c;线程本地分配缓存区&#xff09;是一种重要的内存管理优化技术。以下是对TLAB的详细解释&#xff1a; 一、TLAB的定义 TLAB是JVM堆内存管理…...

ToDesk云电脑、顺网云、网易云、易腾云、极云普惠云横测对比:探寻电竞最佳拍档

一、云电脑&#xff1a;电竞新宠崛起 在电竞游戏不断发展的今天&#xff0c;硬件性能成为了决定游戏体验的关键因素。为了追求极致的游戏画面与流畅度&#xff0c;玩家们往往需要投入大量资金购置高性能电脑。然而&#xff0c;云电脑技术的出现&#xff0c;为玩家们提供了一种…...

学习ASP.NET Core的身份认证(基于JwtBearer的身份认证10)

基于Cookie传递token的主要思路是通过用户身份验证后&#xff0c;将生成的token保存到Response.Cookies返回客户端&#xff0c;后续客户端访问服务接口时会自动携带Cookie到服务端以便验证身份。之前一直搞不清楚的是服务端程序如何从Cookie读取token进行认证&#xff08;一般都…...

vscode环境中用仓颉语言开发时调出覆盖率的方法

在vscode中仓颉语言想得到在idea中利用junit和jacoco的覆盖率&#xff0c;需要如下几个步骤&#xff1a; 1.在vscode中搭建仓颉语言开发环境&#xff1b; 2.在源代码中右键运行[cangjie]coverage. 思路1&#xff1a;编写了测试代码的情况&#xff08;包管理工具&#xff09; …...

OLED--软件I2C驱动__标准库和HAL库

一、标准库---版本一 OLED.c--标准库 #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x…...

【设计模式-行为型】观察者模式

一、什么是观察者模式 说起观察者模式&#xff0c;不得不说一位观察者模式的高级应用者&#xff0c;朱元璋。不知道大家有没有看过胡军演的电视剧《朱元璋》。这部剧背景是元朝末年&#xff0c;天下大乱&#xff0c;朱元璋自幼父母双亡&#xff0c;沦为乞丐&#xff0c;后遁入空…...

从理论到实践:Django 业务日志配置与优化指南

在现代 Web 开发中,日志记录是确保系统可维护性和可观测性的重要手段。通过合理的日志配置,我们可以快速定位问题、分析系统性能,并进行安全审计。本文将围绕 Django 框架,详细介绍如何配置和优化业务日志,确保开发环境和生产环境都能高效地记录和管理日志。 © ivwdc…...

Linux下php8安装phpredis扩展的方法

Linux下php8安装phpredis扩展的方法 下载redis扩展执行安装编辑php.ini文件重启php-fpmphpinfo 查看 下载redis扩展 前提是已经安装好redis服务了 php-redis下载地址 https://github.com/phpredis/phpredis 执行命令 git clone https://github.com/phpredis/phpredis.git执行…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计&#xff1a;let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性&#xff0c;这种设计体现了语言的核心哲学。以下是深度解析&#xff1a; 1.1 设计理念剖析 安全优先原则&#xff1a;默认不可变强制开发者明确声明意图 let x 5; …...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍

文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结&#xff1a; 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析&#xff1a; 实际业务去理解体会统一注…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...