(二)搞定烦人的蜂鸣器和继电器

2023-12-30 19:21:56


内容:

1.38译码器–74HC138

2.或非门–74HC02

3.锁存器–M74HC573M1R

4.非门(复合管-达林顿结构-ULN2003)

呈现代码


提供proteus 仿真

资源网盘链接:

链接:https://pan.baidu.com/s/1XbxxYbm1DMEoM5C3zfvbmg
提取码:zhua

在这里插入图片描述


38译码器–74HC138

在这里插入图片描述

这里原理大家自行去了解

仅提供自己的见解

**简单分析:需要Y1路输出(低电平有效也就是0),Y1对应的编号为1,则1对应的三个二进制数为:001,则P27-P25赋值就为001,P2剩余位补0,即P2赋值0x20;

例如:需求Y5输出0,则对应编号5,5的二进制数为101,剩余位补0,则P2 赋值为:0xA0;**

在这里插入图片描述


或非门–74HC02

在这里插入图片描述

个人见解:

简单分析:由于板子上默认WR接GND的,只需Y7-Y4输入为0,则输出就为1

例如 Y5C输出为1,则对应的Y5就为0,同理Y4C输出为1,则对应的Y4就为0


锁存器–M74HC573M1R

在这里插入图片描述
一句话:LE控制“开门或关门”,LE=1,P0的数据可以从D1-7侧送至Q1-7侧,反之不能传送。


非门(复合管-达林顿结构-ULN2003)

在这里插入图片描述

就当作非门使用


关闭蜂鸣器和代开继电器的代码

#include <STC15F2K60S2.H>

typedef unsigned char u8;

void DeviceCtrl(u8 p2data,u8 p0data)
{
	P0 = p0data;	//给数据
	P2 = (P2&0x1f)|p2data;	// (开门)
	P2 &= 0x1f;		//(关门)
}
void main()
{
	DeviceCtrl(0xa0,0x10);//buzz --close   relay --open
	while(1){		
	}
}



----- 如有错误欢迎大家批评指正!!!

文章来源:https://blog.csdn.net/m0_52555663/article/details/135294679
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。