当前位置: 首页 > news >正文

蓝桥杯备战——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.lryc.cn/news/289114.html

相关文章:

  • Redis高级特性之地理空间索引
  • R语言【taxlist】——as():将 taxlist 对象强制转换为 list 对象
  • 使用POI生成word文档的table表格
  • C# 继承、多态性、抽象和接口详解:从入门到精通
  • python在线聊天室(带聊天保存)
  • jenkins+gitlab实现Android自动打包填坑之旅
  • 洛谷B3625迷宫寻路
  • GPT-SoVITS 测试
  • 人工智能:更多有用的 Python 库
  • Linux BIO如何下发到HDD?
  • 《动手学深度学习(PyTorch版)》笔记4.6
  • Hadoop-MapReduce-源码跟读-客户端篇
  • 《游戏-03_3D-开发》之—新输入系统人物移动攻击连击
  • 滴水逆向三期笔记与作业——02C语言——10 Switch语句反汇编
  • 燃烧的指针(三)
  • 微服务架构实施攻略:如何选择合适的微服务通信机制?
  • 【jetson笔记】解决vscode远程调试qt.qpa.xcb: could not connect to display报错
  • 网络安全产品之认识安全隔离网闸
  • Java通过模板替换实现excel的传参填写
  • 眼底增强型疾病感知蒸馏模型 FDDM:无需配对,fundus 指导 OCT 分类
  • 代码随想录算法刷题训练营day17
  • Java集合如何选择
  • 简单介绍----微服务和Spring Cloud
  • Jenkins邮件推送配置
  • 硬件知识(1) 手机的长焦镜头
  • 华为机考入门python3--(3)牛客3-明明的随机数
  • vue父子组件传值问题
  • Rider 打开Unity项目 Project 全部显示 load failed
  • Maven(下):依赖管理、依赖传递、依赖冲突、工程继承及工程聚合
  • 网络基础---初识网络