C51学习归纳1 --- led点亮、led闪烁、led流水灯

        第一节主要是针对LED的控制学习。这个过程中我们需要掌握的:1、控制的实现方法,控制实现的方法在后续的学习中是通用的。2、如何知道谁控制谁,通过查找开发板原理图获取,原理图的阅读的能力,在日后也是非常常用的。

一、原理图阅读

        以我买的板子为例,打开我的板子的原理图(我们学的是方法,不妨先按我的学习,然后去对照自己的板子进行修改理解),原理图如下

        从这个图纸中,我们很容易看出,我们的LED通过VCC、和P2_X(X代表数字)控制。一端是高电平,所以很显然当P2_X是低电平的时候我们可以点亮某一路小灯。

        那么我们要关注,P2_X如何控制,我们继续查询开发板原理图

        不难看出P2_X对应接在C51芯片的P2_0~7端口。

        所以我们只需要对应的控制端口P2_X即可。

二、点亮一个灯

#include <REGX52.H>void main()
{P2=0xFE;	//1111 1110while(1){}
}

         这一段代码,就是直接控制P2,一次控制8位。1111 1110,让P2_0输出低电平,剩余输出高电平,我们就实现了D1小灯的亮。

三、LED闪烁

        基于上一个电灯控制,现在加一些些难度,我们实现一个小灯的闪烁功能。

        思路就是小灯亮一下,暗一下。但是此时我们去直接

void main()
{while(1){P2=0xFE;	//1111 1110P2=0xFF;	//1111 1111}
}

        我们会发现小灯一直是亮的,这是为什么?因为单片机的处理速度非常快,小灯在我们人眼可以查觉之外的时候已经完成了亮暗变化,我们就一直以为是亮的。

        为了解决这个问题,我们需要引入延时函数,可以借助stc-isp软件帮忙生成:

         我们可以写出下面的代码:

#include <REGX52.H>
#include <INTRINS.H>void Delay500ms()		//@12.000MHz
{unsigned char 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=0xFF;	//1111 1111Delay500ms();}
}

        看着很多东西,其实我们自己书写的只有main函数的while部分。

四、流水灯

        难度再次升级,我们能够控制一个灯的闪烁,我们是不是就可以控制一排灯按照顺序点亮的操作,视觉上我们看到的就是,一个灯像流水一样流动。

        思路其实很简单,第一个量完,第二个亮,。。。以此类推。

#include <REGX52.H>
#include <INTRINS.H>void Delay500ms()		//@12.000MHz
{unsigned char 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();}
}

        至此我们学会了如何直接控制输出端口操作LED小灯了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/20900.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于 c++ cout << endl; 的源码解释

这行语句非常常用。以前在王老师课上&#xff0c;老师提到过 endl 是一个函数模板。现给出这行语句的相关源码&#xff1a; 反汇编的依据如下&#xff1a; 接着是 谢谢

(2)svelte 教程:点击操作,输入框和数据绑定

&#xff08;2&#xff09;svelte 教程&#xff1a;点击操作&#xff0c;输入框和数据绑定 点击操作 以下是对这段代码的逐行解释&#xff1a; <script>export let name;let beltColour "black";const handleClick () > {beltColour "orange&quo…

[RK3588_Android12] 关于IMX415摄像头模组 awb出现偏蓝的问题

问题描述 IMX415摄像头模组 有些场景偏色&#xff0c;主要是偏蓝色。 解决方案&#xff1a; 使用一下效果文件imx415_CMK-OT2022-PX1_IR0147-50IRC-8M-F20-0415.json //链接&#xff1a;https://pan.baidu.com/s/1YMToOxKv9bcTuZntJHdKeg //提取码&#xff1a;6njl另外如果偏…

yolov8使用:数据格式转换(目标检测、图像分类)多目标跟踪

安装 yolov8地址&#xff1a;https://github.com/ultralytics/ultralytics git clone https://github.com/ultralytics/ultralytics.git安装环境&#xff1a; pip install ultralytics -i https://pypi.tuna.tsinghua.edu.cn/simple目标检测 标注格式转换 若使用 labelimg…

【PPT】根据字体大小自动缩放文本框大小

【PPT】根据字体大小自动缩放文本框大小 一般我们新建文本框输入文字后&#xff0c;文本框的大小是不会自动缩放的&#xff0c;是根据你一开始拖动的尺寸固定的 你可以设置文本框的长度随着文字的变化而自动调整。这样&#xff0c;无论你输入多少文字&#xff0c;文本框都会自…

数据库漫谈-infomix

infomix数据库知名度不高&#xff0c;主要跟它的定位有关&#xff0c;它主要用于unix操作系统&#xff1a;Informix便是取自Information和Unix的结合&#xff0c;它也是第一个支持linux系统的数据库。它其实在金融、电信行业使用率非常高。98年&#xff0c;当时我在做银行领域的…

pytorch之训练实例

PyTorch 训练机器学习模型的一般流程 数据准备 收集并处理训练数据集和验证/测试数据集 使用 PyTorch 的数据加载器 DataLoader 将数据集转换为可用于训练的格式 模型定义 使用 PyTorch 的 nn.Module 定义模型的结构 例如,对于一个简单的全连接神经网络: import torch.nn …

二分学习·P10389 [蓝桥杯 2024 省 A] 成绩统计

P10389 成绩统计 当时在考场上完全没有头绪&#xff0c;想暴力枚举&#xff0c;结果都不知道怎么写&#xff0c;果然还是有妙法在其中。 题目的描述如下&#xff08;省流不了&#xff09;&#xff1a;   小蓝的班上有 n n n 个人&#xff0c;一次考试之后小蓝想统计同学们的…

pqgrid的使用

npm安装pqgrid npm install pqgridf --registryhttps://registry.npmmirror.com npm install jquery-ui --registryhttps://registry.npmmirror.comvue文件 <template><div><div id"grid_json"></div></div> </template><s…

Nested KVM Hypervisor Support

Description Nested KVM是指基于虚拟化技术的虚拟机管理系统。 Nested KVM在Intel处理器上&#xff0c;KVM使用Intel的vmx&#xff08;virtualmachine eXtensions&#xff09;来提高虚拟机性能&#xff0c;即硬件辅助虚拟化技术。如果一台虚拟机能够和物理机一样支持vmx&…

[数据集][目标检测]数据集VOC格式岸边垂钓钓鱼fishing目标检测数据集-4330张

数据集格式&#xff1a;Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件&#xff0c;仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数)&#xff1a;4330 标注数量(xml文件个数)&#xff1a;4330 标注类别数&#xff1a;1 标注类别名称:["fishing"] 每…

论文阅读笔记(十二)——Augmenting large language models with chemistry tools

论文阅读笔记(十二)——Augmenting large language models with chemistry tools TOC Abstract 大型语言模型&#xff08;LLMs&#xff09;在跨领域任务中表现出色&#xff0c;但在化学相关问题上却表现不佳。这些模型也缺乏外部知识源的访问权限&#xff0c;限制了它们在科…

自定义线程池,实现父线程MDC的自动拷贝

1、思路 创建线程池时&#xff0c;我们需要一个创建线程的工厂类&#xff0c;一般都是重写这个工厂类来实现的&#xff0c;这里我们用一个更简单的方法。 线程在执行前&#xff0c;可以先通过MDC.getCopyOfContextMap()获取父线程的MDC的拷贝&#xff0c;执行时&#xff0c;判…

数据中台设计方案(原版word获取)

通过中台建设实现企业能力复用&#xff0c;包括能力整合、业务创新、业务和数据闭环、组织模式演进等。 数字能力整合 企业的数字能力一般包括数字化营销、数字化产品、数字化供应链、数字化生产、数字化运营等。企业的数字化能力的充分利用&#xff0c;从而达到可持续发展。数…

基于语音识别的智能电子病历(四)语音识别的要求 3

前一章讲的是不同医院对语言识别结果的个性化需求&#xff0c;现在说一下不同的医生对于识别结果的需求。我们看下面的这个例子&#xff0c;例子中对很多细节都有明确的要求。 004X医院4811XX医生 规范 医生基本信息&#xff1a;4811XX--dictating doctXXXX H. LXXXXX MD-CARD …

使用IDEA在WSL2的Ubuntu的docker中运行项目

1、新建项目 1.1 从远程仓库拉取代码 2、配置环境 2.1 配置IDEA运行环境 2.1.1 配置JDK 注意&#xff1a;Ubuntu 20.04运行项目请使用JDK11&#xff0c;使用JDK8会编译报错&#xff0c;报错如下&#xff1a; 2.1.2 配置Maven 2.1.3 配置运行环境 2.1.4 配置远程Debug 2.2、配…

基础—SQL—DQL(数据查询语言)分组查询

一、引言 分组查询的关键字是&#xff1a;GROUP BY。 二、DQL—分组查询 1、语法 SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ]; 注意&#xff1a; 1、[ ] 里的内容可以有可以没有。 2、这条SQL语句有两块指定条件的地方&#…

抖音小店如何经营无货源产品!

一、开店 店铺类型要选择个体店&#xff0c;不要选择个人店或者企业店铺。 个人店的限制太多&#xff0c;没有发展的空间&#xff0c;企业店不适合新手操作&#xff0c;而且还涉及复杂的税务问题。 我们直接在抖音小店官网按照系统的要求&#xff0c;一步步提交营业执照&…

GPT-4o:人工智能新纪元的启航者

引言 随着人工智能技术的不断进步&#xff0c;我们见证了从简单的自动化工具到复杂的决策支持系统的演变。在这一演变过程中&#xff0c;OpenAI的GPT系列无疑占据了领导地位。最近&#xff0c;GPT-4o的推出再次引发了关于AI能力的广泛讨论。本文将对GPT-4o进行详细评价&#x…

代码随想录算法训练营第二十五天 | 216.组合总和III、17.电话号码的字母组合

216.组合总和III 题目链接&#xff1a;https://leetcode.cn/problems/combination-sum-iii/ 文档讲解&#xff1a;https://programmercarl.com/0216.%E7%BB%84%E5%90%88%E6%80%BB%E5%92%8CIII.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1wg411873x 思路 未剪…