蓝桥杯51单片机-蜂鸣器和继电器的基本控制

基本功能:控制继电器吸合和断开,蜂鸣器响和不响

以上为控制蜂鸣器和继电器的基本模块

注意:需要蜂鸣器响得把跳帽盖上,此跳帽连接了蜂鸣器的N_BUZZ和ULN2003的N_BUZZ

接下来我们一步步分析如何实现,根据原理图,我们发现控制蜂鸣器和继电器与LED的控制大同小异,可以参考上一篇博客,唯一的区别在于多了一个ULN2003,它的OUT1-OUT8是将IN1-IN8进行取反操作,其中OUT5和OUT7分别为继电器和蜂鸣器。根据原理图,我们要关闭继电器和蜂鸣器,就需要将OUT5和OUT7取高电平,则IN5和IN7需要取低电平。

#include "reg52.h"


void InitHC138(unsigned char n)
{
	switch(n)
	{
		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;
	}
}

void OutPutP0(unsigned char channel, unsigned char dat)
{
	InitHC138(channel);
	P0 = dat;
}



void InitSystem()
{
	OutPutP0(5,0x00);
}

void main()
{
	InitSystem();
    while(1);
}

通过以上代码,就能关闭继电器和蜂鸣器(蜂鸣器不响,继电器指示灯熄灭)

值得注意的是,我们这里使用了新的选择功能函数InitHC138,我们来分析分析

void InitHC138(unsigned char n)
{
	switch(n)
	{
		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;
	}
}

4,5,6,7分别对应着原理图的Y4,Y5,Y6,Y7

我们再来分析 P2端口,以P2 = (P2 & 0X1f) | 0x80;为例,首先这行代码先对P2进行了与操作(当A,B都为1时,其值为1,否则为零),我们拆开来看

P2.7/P2.6/P2.5/P2.4/P2.3/P2.2/P2.1/P2.0&00011111

我们可知,与操作是将P2.7,P2.6,P2.5初始化为0,其他端口置1

再看或操作(当A,B都为0时,其值为0,否则为1)

P2.7/P2.6/P2.5/P2.4/P2.3/P2.2/P2.1/P2.0|10000000

我们可知,或操作是将P2.7置1,其他端口不变

最终P2端口为0X8f,拆开为10001111,根据HC138译码器,是将Y4置0,打开关于LED的锁存器

其他的同理

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值