蓝桥杯单片机组备赛——LED指示灯的基本控制

🎈教程介绍:博客依据b站小蜜蜂老师的教程进行编写,文中会对老师传授的知识进行总结并加入自己的一些理解。教程链接

文章目录

  • 一、点灯介绍
  • 二、相关数字芯片介绍
    • 2.1 74HC138介绍
    • 2.2 74HC573介绍
    • 2.3 74HC02介绍
  • 三、代码设计思路
  • 四、代码编写
  • 五、小蜜蜂老师的课后作业题目以及答案
    • 5.1题目
    • 5.2 答案

一、点灯介绍

打开开发板原理图我们可以知道LED灯并不是直接接到IO口上的,而是经过了74HC573来实现间接控制。此外74HC573不能直接使用必须使能LE引脚才能使用,使能的工作又需要通过74HC13874HC02来配合完成。所以,在点亮一个LED前,我们需要学习74HC573、74HC138、74HC02。

二、相关数字芯片介绍

2.1 74HC138介绍

74HC138是一个三八译码器,也就是三个输入控制八路互斥的低有效输出。互斥的意思是只能有一个是低电平,不可能存在两个及以上同时输出低电平。
在这里插入图片描述
在开发板上G_1和G_2已经帮我们设计好了,不需要我们去操作什么。我们的任务就是知道A B C和8个Yx之间的联系就好

在数字电路中,我们以低电平(L)表示0,高电平(H)表示1,所以当C B A=0 0 0,也就是0(二进制转十进制)的时候,第0号口(Y0=0)就输出低电平;当C B A=0 0 1时,第1号口(Y1=0)就输出低电平。反过来我们想要Y4输出低电平就让C B A=1 0 0,也就是P27=1,P26=0,P25=0。
这里需要一些数电知识,不懂得b站搜索二进制转进制

2.2 74HC573介绍

当给LE引脚高电平时,输入什么就输出什么,当给LE引脚低电平时,输出不随输入变化,保持不变。

2.3 74HC02介绍

74HC02是或非门,也就是当两个输入都为低电平(0)的时候,输出才为高电平,否则一直是低电平。

三、代码设计思路

在这里插入图片描述

假设让L1亮起来其他全灭,那么就需要令Q1=0,Q2~Q7=1
也就是D1=0,D2~D7=1,也就是P00=0,P02~P07=1
上面介绍573的时候也说到了输出要和输入一样需要让LE引脚为高电平,也就是Y4C要为低电平。
因为WR引脚接的是GND,所以要让Y4C为低电平,就要138的Y4=0,也就是C B A=1 0 0,也就是P27=1,P26=0,P25=0
总结:要控制LED灯,我们就要控制P00~P07P27、P26、P25这几个引脚

四、代码编写

#include <stc15.h>
#include <intrins.h>
/*
num从4到7,分别对应
4:LED灯
5:蜂鸣器、继电器、电机
6:数码管段选
7:数码管位选
*/
void selectHC573(unsigned char num)  
{
	switch(num)
	{
		case 4:
			P2=(P2 & 0x1f) | 0x80;
			break;
		case 5:
			P2=(P2 & 0x1f) | 0xa0;
			break;
		case 6:
			P2=(P2 & 0x1f) | 0xc0;
			break;
		case 7:
			P2=(P2 & 0x1f) | 0xe0;
			break;
		case 0:
			P2=(P2 & 0x1f) | 0x00;
			break;
	}
}
void system_Init()  // 因为单片机上电时IO口状态不稳定,可能会导致蜂鸣器鸣叫(很吵)
{
	selectHC573(5);
	P0=0x00;
}
void L1()
{
    selectHC573(4);
    P0=0xfe;
}
void main(){
	system_Init();
    L1();
	while(1)
	{
	}
}

五、小蜜蜂老师的课后作业题目以及答案

5.1题目

在这里插入图片描述

5.2 答案

#include <stc15.h>
#include <intrins.h> // 利用stc软件生成的软件延时代码中_nop_();需要用到这个头文件。
/*
num从4到7,分别对应
4:LED灯
5:蜂鸣器、继电器、电机
6:数码管段选
7:数码管位选
*/

void Delay1000ms()		//@12.000MHz
{
	unsigned char i, j, k;

	_nop_();
	_nop_();
	i = 14;
	j = 174;
	k = 224;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}




void selectHC573(unsigned char num)  
{
	switch(num)
	{
		case 4:
			P2=(P2 & 0x1f) | 0x80;
			break;
		case 5:
			P2=(P2 & 0x1f) | 0xa0;
			break;
		case 6:
			P2=(P2 & 0x1f) | 0xc0;
			break;
		case 7:
			P2=(P2 & 0x1f) | 0xe0;
			break;
		case 0:
			P2=(P2 & 0x1f) | 0x00;
			break;
	}
}

void all_Led_Blink()
{
	int i;
	selectHC573(4);
	for(i=0;i<3;i++)
	{
		P0=0x00;
		Delay1000ms();
		P0=0xff;
		Delay1000ms();
	}
}

void system_Init() // 因为单片机上电时IO口状态不稳定,可能会导致蜂鸣器鸣叫(很吵)
{
	selectHC573(5);
	P0=0x00;
}

void main(){
	system_Init();
	all_Led_Blink();
	while(1)
	{

	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C#】当重复使用一段代码倒计时时,使用普通类和静态方法,实现简单的封装性、可扩展性、可维护性

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是《C#》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌握。…

代码随想录刷题第四十八天| 198.打家劫舍 ● 213.打家劫舍II ● 337.打家劫舍III

代码随想录刷题第四十八天 今天是打家劫舍三部曲&#xff0c;最后一题树形dp有点难&#xff0c;其他还好 打家劫舍 (LC 198) 题目思路&#xff1a; 代码实现&#xff1a; class Solution:def rob(self, nums: List[int]) -> int:dp [0 for _ in range(len(nums)1)]dp[1…

Go并发快速入门:Goroutine

Go并发&#xff1a;Goroutine 1.并发基础概念&#xff1a;进程、线程、协程 (1) 进程 可以比作食材加工的一系列动作 进程就是程序在操作系统中的一次执行过程&#xff0c;是由系统进行资源分配和调度的基本单位&#xff0c;进程是一个动态概念&#xff0c;是程序在执行过程…

【生产者消费者模型的 Java 实现】

文章目录 前言传统派维新派 前言 题目&#xff1a;一个初始值为零的变量&#xff0c;多个线程对其交替操作&#xff0c;分别加1减1 实现步骤&#xff1a; 线程操作资源类判断&#xff0c;干活&#xff0c;通知防止虚假唤醒机制&#xff0c;即&#xff1a;多线程的判断需要用…

车规MCU开发之E2E协议

啥是E2E&#xff1f; E2E的原理&#xff1a; 1. 发送端&#xff1a;发送数据包添加E2E保护头 2. 接收端&#xff1a;接收数据包校验E2E保护头 E2E例子 - profile 11为例 E2E_P11ConfigType wk_stP11Cfg { .CounterOffset 8, .CRCOffset 0, .DataID …

2024年免费服务器活动整理汇总

随着科技的发展&#xff0c;服务器在各行各业的应用越来越广泛&#xff0c;而免费服务器活动也成为了许多企业和个人关注的焦点。目前有许多免费服务器活动可供选择&#xff0c;本文将为大家整理汇总免费服务器活动&#xff0c;帮助大家更好地了解和参与。 一、腾讯云免费服务器…

C语言指针相关知识(初阶)

目录 指针是什么 指针变量的大小 指针和指针类型 指针类型的意义 野指针 指针运算 指针-整数 指针-指针 指针的关系运算 指针和数组 二级指针 二级指针定义 指针数组 指针数组的定义 指针是什么 如下图所示&#xff08;右侧编号为内存地址&#xff09;&#xff1…

修改Echarts图表的标题和副标题的内容

直接上代码 var graphicConfig [ { type: "text", left: "center", top: "center", style: { text: "包日", // 初始化为空字符串 textAlign: "center", fill: "#000", fontSize: 14, fontWeight: "bold&qu…

Casper Labs 与 IBM Consulting 合作,AI透明度、审计能力的新方案

​ “全新解决方案&#xff0c;旨在帮助企业更有效地管理训练数据&#xff0c;这些数据由不同的组织通过生成式人工智能系统产生” 企业区块链软件和服务提供商 Casper Labs 与 IBM Consulting 共同宣布&#xff0c;它们将联手推出新的解决方案&#xff0c;以帮助客户在其人工…

day-07 统计出现过一次的公共字符串

思路 用哈希表统计words1和words2中各个字符串的出现次数&#xff0c;次数皆为1的字符串符合题意 解题方法 //用于存储words1中各个字符串的出现次数 HashMap<String,Integer> hashMap1new HashMap<>(); //用于存储words2中各个字符串的出现次数 HashMap<Stri…

活动 | Mint Blockchain 将于 2024 年 1 月 17 号启动 MintID 限量发行活动

MintID 是 Mint Blockchain 生态的超级权益卡&#xff0c;用于探索 NFT PASS 在未来各种应用场景下的可能性。MintID 将通过限时限量有价发售的方式对外释放&#xff0c;持有人将成为 Mint Blockchain 的核心权益用户。 MintID 总量&#xff1a;10,000 枚 铸造价格&#xff1a…

方波 离散傅里叶级数 MATLAB

%方波 离散时间傅里叶变换 L 5; N 10; k [-N/2:1:N/2]; %占空比 基本周期 离散时间的参数 xn [ones(1,L),zeros(1,N-L)]; %生成方波序列 XK dfs(xn,N); magXK abs([XK(N/21:N),XK(1:N/21)]); subplot(2,2,3); stem(k,magXK); axis([-N/2,N/2,-0.5,5.5]); xlabel(k); y…

【Linux】 nohup命令使用

nohup命令 nohup是Linux和Unix系统中的一个命令&#xff0c;其作用是在终端退出时&#xff0c;让进程在后台继续运行。它的全称为“no hang up”&#xff0c;意为“不挂起”。nohup命令可以让你在退出终端或关闭SSH连接后继续运行命令。 nohup 命令&#xff0c;在默认情况下&…

python两种办法对二叉树判断是否对称

对于给定的一颗二叉树&#xff0c;需要判断其是否是对称二叉树&#xff0c;可以使用两种办法来对这个进行实现&#xff0c;分别使用深度优先搜索算法和广度优先搜索算法都可以完成。 首先考虑一下二叉树的对称&#xff0c;什么样的二叉树是对称二叉树&#xff0c;就是如果对所…

第11章 GUI Page495~496 步骤三十一:另存为别的文件

当前的TrySaveFile(bool hint_on_dirty true)有两个特征无法满足“另存”的需求&#xff1a; 一&#xff0c;TrySaveFile仅在数据为“新”的时候才提问用户输入文件名。而“另存”总是要求用户输入一个文件名&#xff0c;多以它总应该弹出一个文件选择对话框&#xff0c;这也…

2024年CES展会都有些啥?亮点集锦都在这里

&#x1f4a1; 大家好&#xff0c;我是可夫小子&#xff0c;《小白玩转ChatGPT》专栏作者&#xff0c;关注AIGC、读书和自媒体。 CES在科技界是一场盛会&#xff0c;被誉为科技界的春晚&#xff0c;展会上前沿的技术、概念的产品吸引不少关注。2024年CES是在2023年大语言模型…

Java SE入门及基础(9)

if选择结构 1. 基本if选择结构 语法 if ( 条件 ){ // 如果条件满足&#xff0c;则执行代码块 //代码块 } 案例 从控制台输入一个整数&#xff0c;如果该数字小于 10 &#xff0c;则输出 10 与该数字的差值。 流程图 代码实现 public class Example1 { public s…

如何实现网页当前页面刷新功能

类似于这样的页面 实现思路如下&#xff1a; 首先我们在pinia中定义一个刷新状态的字段&#xff0c;点击按钮的时候&#xff0c;改为相反的值对主页面的路由跳转Router-view绑定一个v-if,它绑定一个自定义的一个响应的参数&#xff0c;我们在主页面监听pinia的刷新状态数据&am…

紫光展锐5G扬帆出海 | Blade系列勇当拉美5G先锋

5G对拉丁美洲&#xff08;简称“拉美”&#xff09;绝大多数消费者来说还是一个新鲜技术。GSMA报告显示&#xff0c;过去五年&#xff0c;拉美运营商在移动网络方面的资本开支大部分用于部署4G网络。但在5G网络方面拉美也在积极大力投入中&#xff0c;紧跟全球5G发展大潮&#…

软件测试|Beautiful Soup库详细使用指南

简介 Beautiful Soup是一款强大的Python库&#xff0c;广泛用于解析HTML和XML文档&#xff0c;从中提取数据并进行处理。它的灵活性和易用性使得数据抽取变得简单&#xff0c;本文将详细介绍Beautiful Soup库的基本用法和示例。 安装Beautiful Soup 首先&#xff0c;需要确保…