蓝桥杯单片机组备赛——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; 在最一…

关于java方法定义的回顾

关于java方法定义的回顾 我们在上一篇文章中&#xff0c;对java的面向对象有了一个初步的理解&#xff0c;因为类里面方法是必不可少的&#xff0c;我们本篇文章对方法进行一个回顾&#xff0c;以便加深一下对方法的了解程度和使用&#x1f600;。 我们把前面讲解到方法的文章…

LeetCode 590. N 叉树的后序遍历

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

Redis优化和解决缓存问题

目录 redis的2种持久化方式 RDB持久化 AOF持久化 redis优化 redis的三大缓存问题 缓存雪崩的解决方案&#xff1a; 缓存穿透的解决方案&#xff1a; 缓存击穿的解决方案&#xff1a; 如何保证 MySQL 和 redis 的数据一致性&#xff1f; redis的2种持久化方式 RDB持久化…

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] …

The True Beauty; What is beauty;

Tiny syposis on Beauty Standards I) webpage addressII) text content excerption I) webpage address URL route II) text content excerption I am forensic artist 素描师&#xff08;法医的&#xff09;, worked for the San Jose Police Department 警局&#xff0c;f…

一个神奇的SQL聚合查询案例

今天给大家分享一个 SQL 案例&#xff0c;假如存在以下两个表&#xff1a; CREATE TABLE t1 (val1 INT); INSERT INTO t1 VALUES (1), (2), (3);CREATE TABLE t2 (val2 INT); INSERT INTO t2 VALUES (10), (20), (30);每个表包含 3 条数据。请问&#xff0c;以下查询返回结果是…

在C++中控制调试信息的输出通常通过预处理指令(如 #define)和条件编译指令(如 #ifdef、#ifndef、#endif)来实现。

文章目录 在C中&#xff0c;控制调试信息的输出通常通过预处理指令&#xff08;如 #define&#xff09;和条件编译指令&#xff08;如 #ifdef、#ifndef、#endif&#xff09;来实现。这种方法提供了一种灵活的方式来包含或排除调试代码&#xff0c;而无需对代码本身进行大量修改…

【昕宝爸爸小模块】深入浅出之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定义了一个包含…

props传值问题

父组件和子组件同时展现 同步任务无需添加额外的代码&#xff0c;正常写&#xff0c;而异步任务需要添加下面的解决方案&#xff0c;因为异步任务需要等待响应才能进行赋值。 父组件&#xff1a; <div><UploadFile ref"child" :data"tableData"…

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

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

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

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

静态长效代理IP和动态短效代理IP有哪些用途?分别适用场景是什么?

静态长效代理IP和动态短效代理IP是两种常见的代理IP类型&#xff0c;它们在用途和适用场景上存在一定的差异。了解它们的特性以及使用场景有助于我们更好地利用代理IP&#xff0c;提高网络访问的效率和安全性。 一、静态长效代理IP 1. 用途 静态长效代理IP是指长期保持稳定的代…

安全强化学习笔记

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

JVM相关问题及答案(2024)

1、什么是JVM&#xff0c;它是如何工作的&#xff1f; JVM&#xff08;Java虚拟机&#xff09;是Java编程语言的核心组件之一&#xff0c;它是一个虚拟机器&#xff0c;用于执行Java字节码。JVM的主要任务是将Java字节码翻译成特定平台的机器码&#xff0c;并在特定平台上运行…

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…