无锡市网站建设/app推广一手单平台
御风以翔
破浪以飏
🎥个人主页
🔥个人专栏
目录
点亮一盏LED灯
LED的组成原理
LED的硬件模型
点亮一盏LED灯的程序设计
LED灯闪烁
LED流水灯
独立按键控制LED灯亮灭
独立按键的组成原理
独立按键的硬件模型
独立按键控制LED灯状态
按键的抖动
独立按键控制LED灯移位
位移的原理
点亮一盏LED灯
LED的组成原理
<1>LED即发光二极管,是一种有方向性的半导体固体发光器件,在单片机上是贴片形式
<2>LED的 阳极 串联一个电阻,然后连接到电源VCC,而LED的 阴极 连接到单片机的P2口,如果想把LED灯点亮,就把单片机相关的 I/O 口赋为低电平
<3>单片机中,用 0 表示低电频,用 1 表示高电频
LED的硬件模型
我们可以看到LED连上了单片机的管脚。而单片机需要通过CPU控制寄存器的值,进而通过驱动器加大控制力度,由控制电路输出高低电平
CPU访问寄存器为 1 输出高电频,为 0 输出低电频
点亮LED灯的程序就是让 LED = 0 (低电平),熄灭LED灯的程序就是 LED = 1(高电平)
所以我们只要在对应的寄存器上写 0 或 1 ,即可控制LED的亮灭
点亮一盏LED灯的程序设计
根据硬件原理图和寄存器定义,来对操作寄存器地址,实现灯的点亮
因为单片机只能识别十六进制,所以 1111 1110 要写成0xFE
#include <REGX52.H>void main() {while(1){P2 = 0xFE;} }
我们发现这里编译器并没有报任何的错误
于是我们选择生成文件,将代码下载到板子上
我们找到对应板子的型号,然后打开程序文件,点击下载
这样我们就点亮了一盏LED灯啦
LED灯闪烁
<1>通过STC-ISP拷贝延时代码
<2>加入延时,方便观察灯的闪烁
<3>加上while循环,循环的表达式的值为真,LED就会反复不停的亮和灭
#include <REGX52.H> #include <INTRINS.H>void Delay500ms(void) //@12.000MHz {unsigned char data i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i); }void main() {while(1){P2 = 0xFE;Delay500ms();P2 = 0xFF;Delay500ms();} }
单片机闪烁
LED流水灯
我们学习了点亮LED小灯闪烁,现在我们就可以进一步的让LED灯依次亮起来
这就是我们日常中的流水灯
从之前的代码操作可知,我们可以通过对P2的控制来实现8个LED灯的亮灭
我们只要对P2依次赋值就可以啦:
0xFE、0xFD、0xFB、0xF7、0xEF、0xDF、0xBF、0x7F
#include <REGX52.H> #include <INTRINS.H>void Delay500ms(void) //@12.000MHz {unsigned char data i, j, k;_nop_();i = 4;j = 205;k = 187;do{do{while (--k);} while (--j);} while (--i); }void main() {while(1){P2=0xFE; //1111 1110Delay500ms();P2=0xFD; //1111 1101Delay500ms();P2=0xFB; //1111 1011Delay500ms();P2=0xF7; //1111 0111Delay500ms();P2=0xEF; //1110 1111Delay500ms();P2=0xDF; //1101 1111Delay500ms();P2=0xBF; //1011 1111Delay500ms();P2=0x7F; //0111 1111Delay500ms();} }
每次延迟500毫秒太单调了,我们可以让流水灯想延迟多少行秒就可以延迟多少行秒
51单片机的数据类型
我们先将 1毫秒 的代码拷贝到我们的编译器上
然后将代码改成 传参类型
void Delay1ms(unsigned int xms) //@12.000MHz {unsigned char data i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;} }
这样我们传多少毫秒就延迟多少毫秒
void main() {while(1){P2=0xFE; //1111 1110Delay1ms(100);P2=0xFD; //1111 1101Delay1ms(200);P2=0xFB; //1111 1011Delay1ms(300);P2=0xF7; //1111 0111Delay1ms(400);P2=0xEF; //1110 1111Delay1ms(400);P2=0xDF; //1101 1111Delay1ms(300);P2=0xBF; //1011 1111Delay1ms(200);P2=0x7F; //0111 1111Delay1ms(100);} }
独立按键控制LED灯亮灭
独立按键的组成原理
独立按键直接用 I/O 口线构成的单个按键电路,其特点是每个按键单独占用一根 I/O 口线,每个按键的工作不会影响其他 I/O 口线的状态
独立按键的硬件模型
<1>独立按键电路构成是由各个按键的一个管脚连接在一起接地,按键其他引脚分别接到单片机 IO 口
<2>单片机的 IO 口既可作为输出也可作为输入使用,当检测按键时用的是它的输入功能,独立按键的一端接地, 另一端与单片机的 I/O 口相连
<3>开始时先给该 IO 口赋一高电频,然后让单片机不断地检测该 I/O 口是否变为低电频,当按键闭合时,即相当于该 I/O 口通过按键与地相连,变成低电频,程序一旦检测到I/O 口变为低电频则说明按键被按下,然后执行相应的指令
当按下k1时,LED小灯D1亮起,松开按键时D1灭掉
#include <REGX52.H>void main() {P2_0 = 1; while(1){if(P3_1 == 0) //检测按键判断是否点亮LED灯{P2_0 = 0; }else{P2_0 = 1; }} }
独立按键控制LED灯状态
按键的抖动
通常按键所用的开关都是机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上就稳定接通,在断开时也不会一下子彻底断开,而是在闭合和断开的瞬间伴随了一连串的 抖动
按键的效抖
<1>硬件消抖:按键上并联一个电容,利用电容的充放电特性对抖动过程中产生的电压毛刺进行平滑处理,从而实现消抖
<2>软件消抖:通过对按键状态进行两次检测,并引入适当的延时,从而忽略前沿抖动的影响
#include <REGX52.H>void Delay(unsigned int xms) //单位毫秒的延时函数 {unsigned char i, j;while(xms){i = 2;j = 239;do{while (--j);} while (--i);xms--;} }void main() {while(1){if(P3_1 == 0) //当按键按下时K1会与地相连 引脚处会被置低电频,D1点亮{Delay(20); //延迟20毫秒while(P3_1 == 0); //当再次按下K1键,引脚处会被置高电频Delay(20);P2_0 =~P2_0; //D1按位取反,回到高电频,D1关闭}} }
首先检测按键是否处于按下状态,然后进行一段较短时间的延时,再次检测按键状态。如果确认按键仍然被按下,则执行相应的操作(在示例中为 取反 操作),并延时一段时间来避免连续按下造成的快速闪烁。最后,使用一个 while循环 来等待按键被释放
独立按键控制LED灯移位
通过控制独立按键K1、K2来实现左右移位
位移的原理
#include <REGX52.H>void Delay(unsigned int xms) //1毫秒的延迟函数 {unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);} }unsigned char LEDNum; //全局变量初始化为0 void main() {P2 = ~0x01; //给P2按位取反就是点亮D1while(1){if(P3_1 == 0) //检测K1键有没有按下{Delay(20); while(P3_1 == 0); //消抖Delay(20);LEDNum++; //LEDNum自增//随着K1按键按下,LEDNum二进制变大,LED灯也会往右依次亮起if(LEDNum>=8) //处理边界问题LEDNum = 0;P2 = ~(0x01<<LEDNum); //LED的第LEDNum位点亮}if(P3_0 == 0){Delay(20);while(P3_0 == 0);Delay(20);if(LEDNum == 0)LEDNum = 7;elseLEDNum--;P2 = ~(0x01<<LEDNum);}} }
相关文章:

51单片机之LED灯模块篇
御风以翔 破浪以飏 🎥个人主页 🔥个人专栏 目录 点亮一盏LED灯 LED的组成原理 LED的硬件模型 点亮一盏LED灯的程序设计 LED灯闪烁 LED流水灯 独立按键控制LED灯亮灭 独立按键的组成原理 独立按键的硬件模型 独立按键控制LED灯状态 按键的抖动 独立按键…...

springboo冬奥会科普平台源码和论文
随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理平台应运而生,各行各业相继进入信息管理时代…...

改进神经网络
Improve NN 文章目录 Improve NNtrain/dev/test setBias/Variancebasic recipeRegularizationLogistic RegressionNeural networkother ways optimization problemNormalizing inputsvanishing/exploding gradientsweight initializegradient checkNumerical approximationgrad…...

HarmonyOS 开发学习笔记
HarmonyOS 开发学习笔记 一、开发准备1.1、了解ArkTs语言1.2、TypeScript语法1.2.1、变量声明1.2.2、条件控制1.2.3、函数1.2.4、类和接口1.2.5、模块开发 1.3、快速入门 二、ArkUI组件2.1、Image组件2.2、Text文本显示组件2.3、TextInput文本输入框组件2.4、Button按钮组件2.5…...

maven java 如何打纯源码zip包
一、背景 打纯源码包给第三方进行安全漏洞扫描 二、maven插件 项目中加入下面的maven 插件 <!-- 要将源码放上去,需要加入这个插件 --><plugin><artifactId>maven-source-plugin</artifactId><version>2.4</version><con…...

Altium Designer(AD)原理图库添加阵列管脚图文教程及视频演示
🏡《专栏目录》 目录 视频演示1,概述2,添加方法3,总结视频演示 Altium Designer(AD24)原理图库添加阵列管脚 欢迎点击浏览更多高清视频演示 1,概述...

P3647 题解
文章目录 P3647 题解OverviewDescriptionSolutionLemmaProof Main Code P3647 题解 Overview 很好的题,但是难度较大。 模拟小数据!——【数据删除】 Description 给定一颗树,有边权,已知这棵树是由这两个操作得到的࿱…...

Vivado Tri-MAC IP的例化配置(三速以太网IP)
目录 1 Tri-MAC IP使用RGMII接口的例化配置1.1 Data Rate1.2 interface配置1.3 Shared Logic配置1.4 Features 2 配置完成IP例化视图 1 Tri-MAC IP使用RGMII接口的例化配置 在网络设计中,使用的IP核一般为三速以太网IP核,使用时在大多数场景下为配置为三…...

交友系统---让陌生人变成熟悉人的过程。APP小程序H5三端源码交付,支持二开。
随着社交网络的发展和普及,人们之间的社交模式正在发生着深刻的变革。传统的线下交友方式已经逐渐被线上交友取而代之。而同城交友正是这一趋势的产物,它利用移动互联网的便利性,将同城内的人们连接在一起,打破了时空的限制&#…...

uni-app 经验分享,从入门到离职(三)——关于 uni-app 生命周期快速了解上手
文章目录 📋前言⏬关于专栏 🎯什么是生命周期🧩应用生命周期📌 关于 App.vue/App.uvue 🧩页面生命周期📌关于 onShow 与 onLoad 的区别 🧩组件生命周期 📝最后 📋前言 这…...

PostgreSQL 与 MySQL 相比,优势何在?
我们将通过一张对比表格详细列出 PostgreSQL 与 MySQL 在不同方面的对比: 对比表格 特性/数据库PostgreSQLMySQL数据类型支持支持JSON/JSONB、数组、区间等高级数据类型基本数据类型支持,JSON支持较普通遵循SQL标准更严格遵循,支持复杂查询…...

Linux(三)--文件系统
Linux命令简介 [rootlocalhost ~]# 表示 Linux 系统的命令提示符。 []:这是提示符的分隔符号,没有特殊含义。 root:显示的是当前的登录用户,笔者现在使用的是 root 用户登录。 :分隔符号,没有特殊含义。 l…...

DC-8靶机渗透详细流程
信息收集: 1.存活扫描: arp-scan -I eth0 -l └─# arp-scan -I eth0 -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:dd:ee:6a, IPv4: 192.168.10.129 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.10…...

SolidWorks学习笔记——入门知识2
目录 建出第一个模型 1、建立草图 2、选取中心线 3、草图绘制 4、拉伸 特征的显示与隐藏 改变特征名称 5、外观 6、渲染 建出第一个模型 1、建立草图 图1 建立草图 按需要选择基准面。 2、选取中心线 图2 选取中心线 3、草图绘制 以对称图形举例,先画出…...

Elasticsearch:通过 ingest pipeline 对大型文档进行分块
在我之前的文章 “Elasticsearch:使用 LangChain 文档拆分器进行文档分块” 中,我详述了如何通过 LangChain 对大的文档进行分块。那个分块的动作是通过 LangChain 在 Python 中进行实现的。对于使用版权的开发者来说,我们实际上是可以通过 i…...

数据库管理-第148期 最强Oracle监控EMCC深入使用-05(20240208)
数据库管理148期 2024-02-08 数据库管理-第148期 最强Oracle监控EMCC深入使用-05(20240208)1 性能主页2 ADDM Spotlight3 实时ADDM4 数据库的其他5 主机总结 数据库管理-第148期 最强Oracle监控EMCC深入使用-05(20240208) 作者&am…...

Bug2- Hive元数据启动报错:主机被阻止因连接错误次数过多
错误代码: 在启动Hive元数据时,遇到了以下错误信息: Caused by: java.sql.SQLException: null, message from server: "Host 192.168.252.101 is blocked because of many connection errors, unblock with mysqladmin flush-hosts&qu…...

HarmonyOS 鸿蒙应用开发(十、第三方开源js库移植适配指南)
在前端和nodejs的世界里,有很多开源的js库,通过npm(NodeJS包管理和分发工具)可以安装使用众多的开源软件包。但是由于OpenHarmony开发框架中的API不完全兼容V8运行时的Build-In API,因此三方js库大都需要适配下才能用。 移植前准备 建议在适…...

Docker- chapter 1
note 1: docker 利用 volume 进行 presist data。 eg : compose.yaml: volumes:database: //# named db by self list golbal volumes: docker volume ls # the volumes on the disk inpect someone volume: docker volume inspect m…...

解决IntellIJ Idea内存不足
突然有一天我在IDEA打开两个项目时,发生了报错,说我内存不足,我这电脑内存16G怎么会内存不足。下面是我的解决方案。 IntelliJ IDEA 报告内存不足的原因通常与以下几个因素有关: 项目规模较大:如果您正在开发的项目非…...

【网络技术】【Kali Linux】Nmap嗅探(二)多设备扫描
上期实验博文:(一)简单扫描 一、实验环境 本次实验进行Nmap多设备扫描,实验使用 Kali Linux 虚拟机(扫描端)、Ubuntu 22.04虚拟机(被扫描端1)、Ubuntu 18.04虚拟机(被扫…...

简化版SpringMVC
简化版SpringMVC web.xml xml version"1.0" encoding"UTF-8"?> <web-app version"2.5" xmlns"http://java.sun.com/xml/ns/javaee" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation&quo…...

Java密码校验(正则表达式):密码由这四种元素组成(数字、大写字母、小写字母、特殊字符),且必须包含全部四种元素;密码长度大于等于8个字符。
1. 需求 对用户密码的强度进行校验,要求用户密码达到一定的强度,符合安全性要求。 1.1. 基础版需求 密码必须由字母和数字组成(同时包括数字和数字);密码长度大于等于8个字符。 1.2. 进阶版需求 密码由这四种元素…...

【AMI】2400 环境安装步骤
2400 环境安装步骤 ----------Ubuntu14.4 MDS4.0 加载代码需要勾上Update Installing SPX related packages sudo apt install gcc-multilib mtd-utils:i386 subversion patch patchutils bison sudo apt install libc6-dev libxml-dom-perl zlib1g zlib1g-dev libcurl4-ope…...

AI:124-基于深度学习的人体遮挡物体重建技术
🚀点击这里跳转到本专栏,可查阅专栏顶置最新的指南宝典~ 🎉🎊🎉 你的技术旅程将在这里启航! 从基础到实践,深入学习。无论你是初学者还是经验丰富的老手,对于本专栏案例和项目实践都有参考学习意义。 ✨✨✨ 每一个案例都附带有在本地跑过的关键代码,详细讲解供…...

23种设计模式之单例模式
目录 什么是单例模式 单例模式的优点 创建单例模式的三大要点 单例模式的实现方式 饿汉模式 懒汉模式 使用场景 什么是单例模式 单例模式是一种创建型设计模式,它的核心思想是保证一个类只有一个实例,并提供一个全局访问点来访问这个实例。 什…...

leetCode 30天
题太难了,就来一个N皇后吧 51. N 皇后 class Solution { private:vector<vector<string>> res;void backtracking(int n, int row, vector<string>& chessboard){if (row n){res.push_back(chessboard);return;}for (int col 0; col<n;…...

vue3+vite+ts 配置commit强制码提交规范配置 commitlint
配置 git 提交时的 commit 信息,统一提交 git 提交规范 安装命令: npm install -g commitizen npm i cz-customizable npm i commitlint/config-conventional commitlint/cli -D 文件配置 根路径创建文件 commitlint.config.js module.exports {// 继承的规…...

PlateUML绘制UML图教程
UML(Unified Modeling Language)是一种通用的建模语言,广泛用于软件开发中对系统进行可视化建模。PlantUML是一款强大的工具,通过简单的文本描述,能够生成UML图,包括类图、时序图、用例图等。PlantUML是一款…...

自然语言处理(NLP)——使用Rasa创建聊天机器人
1 基本概念 1.1 自然语言处理的分类 IR-BOT:检索型问答系统 Task-bot:任务型对话系统 Chitchat-bot:闲聊系统 1.2 任务型对话Task-Bot:task-oriented bot 这张图展示了一个语音对话系统(或聊天机器人)的基本组成部分和它们之间的…...