【51单片机】02LED流水灯实验

news/2025/1/8 11:31:55 标签: 51单片机, mongodb, 嵌入式硬件

点亮你的LED

  • 一、点亮第一个LED
    • 1.GPIO介绍
    • 2.P1、P2、P3端口
  • 二、LED实验
    • 2.尝试点亮LED
    • 3.LED流水灯

一、点亮第一个LED

1.GPIO介绍

这块内容这里可以做简单的了解,与数电知识强相关。后续可以再回过头来学习

  • GPIO (general purpose input output) 通用输入输出端口的简称,可以通过软件来控制其输入与输出
    在这里插入图片描述

  • GPIO的工作原理
    在这里插入图片描述

  • P0口作为输出端口的时候,多路开关是连接到D锁存器的
    在这里插入图片描述

  • P0作为输入端口时,直接与读缓冲器相连
    在这里插入图片描述

2.P1、P2、P3端口

  • P1口只能作为单独的IO口使用,他有上拉电阻,可以输出高电频
    在这里插入图片描述
  • P2端口同时具有P0和P1的特点,有上拉电阻、也有多路选择开关
    在这里插入图片描述
  • P3口,相比P1多了一个第二功能的输入端口
    在这里插入图片描述

二、LED实验

2.尝试点亮LED

  • D1-D8的LED和单片机的P2端口相连,原理图如下,只要让P2.x的引脚为低电平,就能使发光二极管导通
    在这里插入图片描述
  • 设计实验目标:点亮D1指示灯(P2.0输出低电平),间隔点亮、熄灭
#include <reg52.h>

const int TIME_MS = 100;

sbit LED1 = P2^0;    // 定义LED1对应到P2.0引脚

void delay_10us(int delay_time) {  // 比较暴力的延时方法,执行一个--循环耗时大概是10us
	while(delay_time--);
}

void main() {
    while(1) {
	    LED1 = 0;  // 引脚输出低电平,可以驱动LED点亮
		delay_10us(500 * TIME_MS);   //  约500ms
		LED1 = 1;	 
		delay_10us(500 * TIME_MS);
	}
}

3.LED流水灯

  • 结合之前讲的知识,可以直接操作P2端口的输出值来操控LED的状态,可以实现如下流水灯程
#include "reg52.h"
// 小灯循环跑
const int TIME_MS = 100;

void delay_10us(int time_us) {
    while(time_us--);
}

void main() {
    int count = 0; 
	P2 = 0xff;	// 将P2口赋初值,高电平,小灯全部熄灭  
	while(1){
	    P2 = ~(0x01<<count);  // 这里用低位为1开始移动,取反之后就可以变为移动0
		if (count >= 8){ 
		    count = 0;	  // 重置计数
		} else  {
		    count++;
		    delay_10us(100 * TIME_MS);
		}
	}
}
#include "reg52.h"
// 小灯来回跑
const int TIME_MS = 100;

void delay_10us(int time_us) {
    while(time_us--);
}

void main() {
    int count = 0; 
	char flag = 0;
	P2 = 0xff;	// 将P2口赋初值,高电平,小灯全部熄灭

	while(1){
	    switch(flag) {
		    case 0:
			    P2=~(0x01<<count);
				count++;
				if (count > 8) flag = 1;
			    break;
			case 1:
			    P2=~(0x80>>(8 - count));
				count--;
				if (count < 0) flag = 0;
			    break;
		}
		delay_10us(30 * TIME_MS);
	}
}

源码+实验程序
学习视频来源:B站-普中官方视频


http://www.niftyadmin.cn/n/5816262.html

相关文章

AI赋能金融服务:效率与安全的新高度

引言 金融服务行业正经历着前所未有的变革。日益增长的客户需求、日趋复杂的金融产品以及日益严峻的监管环境&#xff0c;都对金融机构提出了更高的要求。它们面临着提升效率、有效管控安全风险以及优化用户体验等诸多挑战。传统的人工操作模式已难以满足快速发展的市场需求。…

无人设备遥控器之防水等级篇

无人设备遥控器的防水性能通常通过防水等级来衡量&#xff0c;常见的防水等级标准有IPX等级和IEC 60529标准。 一、IPX等级 IPX等级专注于防水性能&#xff0c;从IPX0&#xff08;无保护&#xff09;到IPX8&#xff08;长时间浸水无损害&#xff09;不等。对于无人设备遥控器而…

多模态论文笔记——GLIDE(DALL·E 2模型的核心部件)

大家好&#xff0c;这里是好评笔记&#xff0c;公主号&#xff1a;Goodnote&#xff0c;专栏文章私信限时Free。本文详细介绍了OpenAI的DALLE 2模型中重要的组成部分&#xff0c;用于图像生成的GLIDE模型及其论文。 文章目录 论文背景扩散模型&#xff08;Diffusion Models&…

Vulkan 学习(12)---- Vulkan pipeline 创建

目录 Vulkan 渲染管线顶点输入阶段输入装配阶段顶点着色器阶段细分控制、评估着色器阶段(可选)几何着色器阶段(可选)图元装配阶段光栅化阶段片段着色器片段测试阶段混合阶段 Vulkan 渲染管线 渲染管线可以看作是一条生产流水线&#xff0c;定义了从输入顶点到输出图像的所有步…

常见的开源网络操作系统

常见的开源网络操作系统有很多,它们通常用于路由器、交换机、网络设备和服务器等场景,具有灵活、可定制、易于扩展的特点。以下是一些常见的开源网络操作系统: OpenWRT 用途:主要用于路由器、无线接入点和网络设备。提供了广泛的定制选项和高级功能,如防火墙配置、VPN 支持…

Android Studio创建新项目并引入第三方jar、aar库驱动NFC读写器读写IC卡

本示例使用设备&#xff1a;https://item.taobao.com/item.htm?spma21dvs.23580594.0.0.52de2c1bbW3AUC&ftt&id615391857885 一、打开Android Studio,点击 File> New>New project 菜单&#xff0c;选择 要创建的项目模版&#xff0c;点击 Next 二、输入项目名称…

Elasticsearch:聚合操作

这里写目录标题 一、聚合的概述二、聚合的分类1、指标聚合&#xff08;Metric Aggregation&#xff09;2、桶聚合&#xff08;Bucket Aggregation&#xff09;3、管道聚合&#xff08;Pipeline Aggregation&#xff09; 三、ES聚合分析不精准原因分析四、聚合性能优化1、ES聚合…

Taro地图组件和小程序定位

在 Taro 中使用腾讯地图 1.首先在项目配置文件 project.config.json 中添加权限&#xff1a; {"permission": {"scope.userLocation": {"desc": "你的位置信息将用于小程序位置接口的效果展示"}} }2.在 app.config.ts 中配置&#x…