蓝桥杯备战——4.继电器/蜂鸣器

1.分析原理图

最好自己先去查查138以及ULN2003的使用方法,我这里直接讲思路。
在这里插入图片描述
在这里插入图片描述
由上图我们可以看到如果138输入ABC=101,则输出Y5=0,此时若WR通过跳线帽接地则Y5C=1
,于是573(U9)处于输出跟随输入P0状态,此时若P06=1,则573输出Q7=1,ULN2003输入IN7=1,但是由于ULN2003输入后芯片内部先经过非门在输入到达林顿管,所以输出OUT7=0,蜂鸣器响。然后我们再改变138输入ABC的值使Y5=1,则573进入锁存状态,此时无论P0口为任何值,蜂鸣器都会一直响。

在这里我遇到一个很奇怪的问题:如果在573(U9)锁存的时候ABC=000,573(U6)不知道为啥会解锁。但是我用ABC=110去锁存就不会出现这个情况。理论上用只要用ABC =000~110去锁存都可以啊,为什么用000去锁存就会短暂出现一些不定态时U6解锁呢,后面试试换一颗138试试吧

2.封装代码

//1打开 0关闭
void Set_Beep(bit Status)
{//选中蜂鸣器所在573P25=1;P26=0;P27=1; //74HC138-->Y5=0,else=1-->Y5C=1,else=0P06=Status;	//ULN2003输入经过非门送入达林顿管,低电平有效P25=1;P26=1;P27=0;//锁存数据
}void Set_Relay(bit Status)
{//选中蜂鸣器所在573P25=1;P26=0;P27=1; //74HC138-->Y5=0,else=1-->Y5C=1,else=0P04=Status;	//ULN2003输入经过非门送入达林顿管,低电平有效P25=1;P26=1;P27=0;//锁存数据
}

这里我也发现一个小问题,如果上次的P0口状态已经改变了,假如现在运行Set_Beep(),那在解锁后,输出会立即跟随输入,那继电器的状态就会改变,所以我觉得这里需要用全局变量来暂存旧的状态,这是修改过后的代码:

#include "BeepRelay.h"
bit Beep_Status=0;	//初始关闭
bit Relay_Status=0;	//初始关闭//1打开 0关闭
void Set_Beep(bit Status)
{//选中蜂鸣器所在573P25=1;P26=0;P27=1; 	//74HC138-->Y5=0,else=1-->Y5C=1,else=0P04=Relay_Status;		//使继电器保持原状态P06=Status;	//ULN2003输入经过非门送入达林顿管,低电平有效Beep_Status=Status;	//记录蜂鸣器状态P25=1;P26=1;P27=0;//锁存数据
}void Set_Relay(bit Status)
{//选中蜂鸣器所在573P25=1;P26=0;P27=1; //74HC138-->Y5=0,else=1-->Y5C=1,else=0P06=Beep_Status;P04=Status;	//ULN2003输入经过非门送入达林顿管,低电平有效Relay_Status=Status;P25=1;P26=1;P27=0;//锁存数据
}

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

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

相关文章

Vue好看的组件库:Element

文章目录 1、什么是Element2、Element快速入门3、Element布局3.1、 Layout 局部3.2、容器布局 1、什么是Element Element:是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库,用于快速构建网页 Element 提供了很多组件(组成网页的部件…

怎么隐藏磁盘或U盘分区?

隐藏分区需求确实存在! 某用户将自己的U盘驱动器分为两个分区,一个是可引导的活动主分区,另一个分区包含服务包和其他用于技术支持的内容,他一直被以下两个问题所困扰: 是否可以隐藏U盘分区? 如果想更改内…

关于Spring和缓存雪崩、穿透、击穿、预热的最常见的十道面试题

面试题一:什么是缓存雪崩?如何解决缓存雪崩? 缓存雪崩指的是在短时间内,有大量的请求直接查询术后句酷,从而对数据库造成大量的压力,严重情况下可能导致数据库宕机的情况叫做缓存雪崩 我们可以看一下正常…

【CANoe使用大全】——DBC数据库制作

文章目录 1.DBC数据库选择1.1.DBC模板选择1.3. 新建报文1.4. 新建信号1.5.数值表建立 2. DBC导入 1.DBC数据库选择 首先找到DBC编辑器入口 1.1.DBC模板选择 举例说明: 新建选择CANFD的模板 1.3. 新建报文 注意上图中报文周期“Cycle Time”处于不可编辑状态…

初探二分法

推荐阅读 智能化校园:深入探讨云端管理系统设计与实现(一) 智能化校园:深入探讨云端管理系统设计与实现(二) 文章目录 推荐阅读题目解法一解法二 题目 题目:给定一个 n 个元素有序的&#xff0…

BGP路由反射-数据中心IDC项目经验

一、背景描述 R1,R2,R3在AS200区域内,R1和R2,R1和R3建立OSPF,宣告接口互联. AS200区域内,R1和R2建立IBGP, R1和R3建立IBGP R2和R4建立EBGP, R3和R5建立EBGP。 网络拓扑: 二、故障现象 R1和R2可以收到来自AS100区域R4的E…

nsenter比docker exec更底层的命令

文章目录 nsenter介绍安装方法简单使用 nsenter介绍 nsenter命令是一个可以在指定进程的命令空间下运行指定程序的命令。它位于util-linux包中。典型的用途就是进入容器的网络命令空间。相当多的容器为了轻量级,是不包含较为基础的命令的,比如说ip addr…

系统移植,GNU命令,Uboot移植

一.GNU命令 1、addr2line 把程序地址转换为文件名和行号 做调试 2、ar 建立,修改,提取归档文件 3、Id:GNU arm-none-linux-gnueabi-ld start.o main.o -Tmap.lds -o uart.elf 链接器 4、as 主要用来编译GNU编译器gcc输出的汇编文件&a…

嵌入式-stm32-江科大-EXTI外部中断

一:EXTI外部中断(external interrupt) 1.1 STM32 中断系统 中断是指在主程序运行过程中,出现了特定的中断触发条件(中断源),使得CPU暂停当前的程序,转而去处理中断程序,…

字符金字塔(C语言刷题)

个人博客主页:https://blog.csdn.net/2301_79293429?typeblog 专栏:https://blog.csdn.net/2301_79293429/category_12545690.html 题目描述 请打印输出一个字符金字塔,字符金字塔的特征请参考样例 输入描述: 输入一个字母,保…

5.6 误差相关统计与计算

文章目录 1、平均值2、首次作为参考基准3、绝对差值4、方差、均方差、CV值4.1 方差(variance)4.2 均方差、标准差(Standard Deviation)4.3 CV值 1、平均值 Excel 公式:AVERAGE(C4:C20) 2、首次作为参考基准 Excel 操作…

ITSS服务工程师:开启IT职业生涯的金钥匙

🔥ITSS是中国电子技术标准化研究院推出的,涵盖了“IT服务工程师”和“IT服务经理”的系列培训。它不仅满足GB/T 28827.1的符合性评估要求,还助力IT服务资质升级。 🎯“IT服务工程师”培训从服务技术、服务技巧和服务规范三大板块&…

java复习篇 数据结构:链表第二节 哨兵

目录 单向链表哨兵 初始 头插 思路 代码 尾插 思路 遍历 遍历验证头插 尾插代码 尾插测试 get 思路 代码 测试 insert 思路 代码 测试 remove 移除头结点 提问 移除指定位置 测试 单向链表哨兵 单向链表里面有一个特殊的节点称为哨兵节点,…

C# AsyncLocal 是如何实现 Thread 间传值

一:背景 1. 讲故事 这个问题的由来是在.NET高级调试训练营第十期分享ThreadStatic底层玩法的时候,有朋友提出了AsyncLocal是如何实现的,虽然做了口头上的表述,但总还是会不具体,所以觉得有必要用文字图表的方式来系统…

强化数据资产管理,迎接数据资产 “入表” 新时代

2024年伊始,数据要素产业利好政策密集出台,数据资产“入表”成为了大势所趋。数据要素顶层设计方案加速落地,推动企业数字化转型提档加速,提升数据管理能力、实现数据资产价值成为企业下一阶段核心竞争力构建的关键。 01 数据资产…

pytorch与tensorflow如何选择?

目录 1.动态图和静态图1.1 tensorflow是静态图1.2 pytorch动态图 2. 易用性3. 编程语言4. 性能和扩展性5. 社区支持和生态系统 1.动态图和静态图 1.1 tensorflow是静态图 如上图: 定义计算图(公式,包括定义变量x,y ,zx*y)给公式…

Docker中安装 RabbitMQ

1、下载 RabbitMQ 镜像 下载最新版本的镜像: docker pull rabbitmq更多版本的镜像可以访问 Docker 官网:https://hub.docker.com/_/rabbitmq?tabtags 2、创建并运行 RabbitMQ 容器 启动命令: docker run -d -p 15672:15672 -p 5672:567…

垃圾回收小程序:环保与便捷的完美结合

一、引言 随着科技的发展,移动应用程序已经成为人们日常生活中不可或缺的一部分。其中,废品回收小程序以其独特的价值和功能,日益受到人们的关注和青睐。本文将探讨废品回收小程序开发的重要性、功能特点、技术实现和未来发展趋势。 二、废…

爬虫笔记(二):实战58二手房

第一:给大家推荐一个爬虫的网课哈,码起来 第二:今夜主题:通过xpath爬取58二手房的title信息,也就是标红的位置~ 第三:先分析一波title所在的位置 打开按下f12打开抓包工具,即可看到网站的源码…

JVM-初始JVM

什么是JVM JVM 全称是 Java Virtual Machine,中文译名 Java虚拟机。JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。 Java源代码执行流程如下: JVM的功能 1 - 解释和运行 2 - 内存管理 3 - 即时编译 解释和运行 解释…