蓝桥杯单片机组备赛——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){}
}

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

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

相关文章

Spring MVC 异常处理器

异常处理器 如果不加以异常处理&#xff0c;错误信息肯定会抛在浏览器页面上&#xff0c;这样很不友好&#xff0c;所以必须进行异常处理。 异常处理思路 系统的dao、service、controller出现都通过throws Exception向上抛出&#xff0c;最后由springmvc前端控制器交由异常处…

解决跨域问题的8种方案(最新最全)

什么是跨域: 浏览器对于javascript的同源策略的限制,例如http://a.cn下面的js不能调用http://b.cn中的js,对象或数据(因为http://a.cn和http://b.cn是不同域),所以跨域就出现了.同域&#xff1a;简单的解释就是域名相同,端口相同,协议相同 为什么需要跨域&#xff1f; 在最一…

LeetCode 590. N 叉树的后序遍历

590. N 叉树的后序遍历 给定一个 n 叉树的根节点 root &#xff0c;返回 其节点值的 后序遍历 。 n 叉树 在输入中按层序遍历进行序列化表示&#xff0c;每组子节点由空值 null 分隔&#xff08;请参见示例&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [1,null,…

C桑(Cython)从入门到入土(2): np数组操作对比

C桑(Cython)从入门到入土 2. np数组操作对比 Node sc518 Copy has image data of type unsigned long long实际上, &#x1f446;&#x1f3fb;这个错误是我探索Cython的缘起… code1: Form: 更现代的方法是使用内存视图而不是指针&#xff1a; cdef np.uint32_t[:,:,::1] …

【昕宝爸爸小模块】深入浅出之Java 8中的 Stream

深入浅出之Java 8中的 Stream 一、&#x1f7e2;典型解析1.1 &#x1f7e0;Java 8中的Stream 都能做什么1.2 &#x1f7e0;Stream的创建 二、✅ Stream中间操作2.1 &#x1f7e0;Filter2.2 &#x1f7e0;Map2.3 &#x1f7e0;limit / skip2.4 &#x1f7e0;sorted2.5 &#x1…

CCF模拟题 202309-1 坐标变换(其一)

问题描述 试题编号&#xff1a; 202309-1 试题名称&#xff1a; 坐标变换&#xff08;其一&#xff09; 时间限制&#xff1a; 1.0s 内存限制&#xff1a; 512.0MB 问题描述&#xff1a; 对于平面直角坐标系上的坐标&#xff08;x,y&#xff09;&#xff0c;小P定义了一个包含…

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

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

程序员找不到工作原因以及解决办法

程序员找不到工作原因以及解决办法 程序员当前就业环境真的很差&#xff0c;所以找工作跳槽一定要讲究方式方法&#xff0c;接下来我讲一下你找不着工作的原因以及解决办法&#xff0c;大家先点赞收藏&#xff0c;内容敏感我怕你刷不到 沟通200个全是未读那就是你的城市没有招聘…

安全强化学习笔记

这里写自定义目录标题 参考资料环境算法CPO 2017 ICMLPCPO 2019 ICLRFOCOPS 2020 NIPSCRPO 2021 ICMLCUP 2022 NIPS TRPO 如何看懂TRPO里所有的数学推导细节? - 小小何先生的回答 - 知乎 参考资料 Safe Reinforcement Learning 安全/约束强化学习路线图&#xff08;Safe RL…

Java的NIO

Java NIO&#xff08;New I/O&#xff0c;新 I/O&#xff09;是 Java 1.4 版本引入的一组用于进行非阻塞 I/O 操作的 API。相比于传统的 Java I/O&#xff08;或称为 IOStream&#xff09;&#xff0c;Java NIO 提供了更为灵活、可扩展和高性能的 I/O 处理方式。 Java NIO 的核…

Python-动态烟花【附完整源码】

烟花代码 运行效果&#xff1a;Python动态烟花代码 import pygame from random import randint from random import uniform from random import choice import math vector pygame.math.Vector2 # 重力变量 gravity vector(0, 0.3) # 控制窗口的大小 DISPLAY_WIDTH DISP…

C#核心--实践小项目(贪吃蛇)

C#核心实践小项目 -- 贪吃蛇 必备知识点--多脚本文件 &#xff08;可观看CSharp核心--52集进行了解&#xff09; 必备知识点--UML类图 必备知识点--七大原则 贪吃蛇 项目展示 控制方向的是&#xff1a;WSAD 确定键是&#xff1a;J 需求分析&#xff08;UML类图&#xff09…

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

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

【网络安全】【密码学】【北京航空航天大学】实验二、数论基础(中)【C语言和Java实现】

实验二、数论基础&#xff08;中&#xff09; 一、实验内容 1、扩展欧几里得算法&#xff08;Extended Euclid’s Algorithm&#xff09; &#xff08;1&#xff09;、算法原理 已知整数 a , b ,扩展的欧几里得算法可以在求得 a , b 的最大公约数的同时&#xff0c;找到一对…

LeetCode[105] 从前序与中序遍历序列构造二叉树

给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,null,15,7] …

使用Java连接MongoDB (6.0.12) 报错

报错&#xff1a; Exception in thread "main" com.mongodb.MongoCommandException: Command failed with error 352: Unsupported OP_QUERY command: create. 上图中“The client driver may require an upgrade”说明了“客户端驱动需要进行升级”&#xff0c;解…

What does `rpm -ivh` do?

rpm -ivh 安装 并 显示安装进度 (–install–verbose–hash) rpm -ivh /media/cdrom/RedHat/RPMS/samba-3.0.10-1.4E.i386.rpm 安装rpm -ivh --relocate //opt/gaim gaim-1.3.0-1.fc4.i386.rpm 指定安装到 /opt/gaim[Ref] rpm -uvh和-ivh有什么区别以及zabbix 安…

使用BeanShell写入内容到文件【JMeter】

一、前言 ​ 在我们日常工作中&#xff0c;可能会遇到需要将请求返回的数据写入到文件中。在我们使用JMeter进行性能测试时&#xff0c;就经常能够遇到这种情况。要想达到这种目的&#xff0c;我们一般采取BeanShell后置处理器来将内容写入到文件。 二、提取 ​ 在目前大多数的…

基于多智能体点对点转换的分布式模型预测控制

matlab2020正常运行 基于多智能体点对点转换的分布式模型预测控制资源-CSDN文库

对于软件测试的认识和了解

对软件测试的认识&#xff1a; 软件测试要求开发人员避免测试自己开发的程序。从心理学角度讲&#xff0c;这是很有道理的。特别是一个相对复杂的系统&#xff0c;开发人员在刚刚开发完成的时候&#xff0c;尚沉浸于对自己设计的回味之中。此时去测试的话往往会侧重于程序本身的…