蓝桥杯电子赛_继电器和蜂鸣器

目录

一 前言

二 继电器和蜂鸣器实物

三 分析部分

(1)bsp_init.c

(2)蜂鸣器和继电器原理图

(3)ULN2003

(4)他们俩所连接的锁存器

四 代码

在这里要特别说一点!!!


一 前言

本章会介绍一些蓝桥杯中 考的不是那么频繁的知识点,但是最好还是要学一学。后续会写一些关于pwm、NE555、串口等,国赛需要的超声波和一些比较难的,后续再写相关博客。

二 继电器和蜂鸣器实物

看上面这张图,继电器和蜂鸣器在官方所提供的右侧,画黄色圈的这部分,一定要把短接帽插在右侧,这样他们俩才能正常工作

关于他们俩的原理图,请看到第三部分,我会一步步进行分析,那么我们想要实现让继电器打开同时蜂鸣器叫,那么我们该如何操作呢,请看下面的分析的部分

三 分析部分

(1)bsp_init.c

在曾经我们写过的初始化函数当中,我们关闭了蜂鸣器和继电器,所以我们本次的主角就集中在了曾经最初学过的地方

void Cls_Peripheral(void)
{
	P0 = 0xFF;				
	P2 = P2 & 0x1F | 0x80;		//0x80ѡͨY4£¬½«Êý¾Ý͸´«¹ýÈ¥£¬½«LED¹Ø±Õ
	P2 &= 0x1F;				//½«Ëø´æÆ÷¹Ø±Õ
	
	P0 = 0;
	P2 = P2 & 0x1F | 0xA0;		//0xA0ѡͨY5£¬½«ÍâÉè´¦Àíµô
	P2 &= 0x1F;				//½«Ëø´æÆ÷¹Ø±Õ	
	
}

注意力集中在了0xA0这三行代码上,而真正决定着蜂鸣器和继电器是否开始工作,我们就应该把P0赋值成某一个数。

(2)蜂鸣器和继电器原理图

 要给buzz和RELAY低电平,才能让蜂鸣器和继电器工作

(3)ULN2003

 关于锁存器上链接的ULN2003,这上面是对应的原理图,可以发现内部说白了就是八个取反器,那么也就是说,在M74HC573M1R锁存器边上接了一个取反器。

(4)他们俩所连接的锁存器

 首先想要让锁存器工作的,就必须要打开Y5C(这块不懂的,请看第一篇文章),其次,观察RELAY和BUZZ,他们所对应的位是P04和P06,如果我想让RELAY和BUZZ输出低电平0,那么15和13部分就得是高电平1,所对应的P04和P06就是高电平1,其他是零,P07到P00,0101 0000那么我就需要将P0赋值成0x50,才可以将对应的继电器和蜂鸣器打开。

四 代码

现在我们已经将最开始的bsp_init.c中的代码改成了如下代码,同时为了保证其他地方不改变,我们要写成P0或上0x50。

	P0 |= 0x50;
	P2 = P2 & 0x1F | 0xA0;	
	P2 &= 0x1F;				

在这里要特别说一点!!!

由于数码管和灯都用到了P0这个位置,所以我们不能直接对P0处进行赋值,最好在mian.c上引入全局变量,unsigned char beep_relay_flag= 0;

我们只需要对全局变量beep_relay_flag赋值即可,不会影响到P0本身~

 代码如下:

switch(Key_Down)
{
	case 11:
		beep_relay_flag |= 0x50;
		P0 = beep_relay_flag;
		P2 = P2 & 0X1F | 0xA0;
		P2 &= 0X1F;				
		break;
	case 10:
    	beep_relay_flag &= (~0x50);
		P0 = beep_relay_flag;
		P2 = P2 & 0X1F | 0xA0;
		P2 &= 0X1F;				
		break;
}

这是在模板的main.c中的Key_Proc(void)函数中添加的代码,实现的是按下按键11打开蜂鸣器和继电器,按下按键10关闭蜂鸣器和继电器,同时,记得在上面添加全局变量unsigned char beep_relay_flag哦。

为什么这里要写成beep_relay_flag &= (~0x50);?

保持其他位置不变,不影响其他设备,如果直接赋值为零,会破坏其他设备的状态,影响正常运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值