蓝桥杯单片机_蜂鸣器和继电器的控制和使用

一、原理图详解

蜂鸣器:

在这里插入图片描述
在这里插入图片描述

N_BUZZ引脚为低电平时,则蜂鸣器打开,但是由于N_BUZZ引脚前面接了ULN 2003芯片,该芯片为非门芯片,则若要打开蜂鸣器,则要使P0^6引脚为高电平

即蜂鸣器为P0^6引脚高电平打开

继电器:
继电器原理图
当N_RELAY引脚为低电平时,继电器打开,同样的由于N_RELAY引脚前面接了ULN 2003芯片,该芯片为非门芯片,则若要打开继电器,则要使P0^4引脚为高电平
(继电器打开后,开关K1被吸附m2处,由于开关一端接地,则此时m2为接地,则右边的LED 灯接地则LED点亮,所以继电器旁的LED小灯亮则表示继电器处于工作状态

二、引脚控制方案

控制蜂鸣器和继电器前要先将锁存器配置为Y5C打开,即P25=1; P26 = 0;P27=1;,然后分别控制P04和P06口来控制蜂鸣器和继电器

P04口为高电平则继电器工作
P06口为高电平则蜂鸣器打开

三、详细代码

代码如下(示例):

//通过板载按键S6和S7来控制继电器和蜂鸣器
#include <reg52.h>
#include <intrins.h>

sbit hc138_A=P2^5;
sbit hc138_B=P2^6;
sbit hc138_C=P2^7;

sbit RELAY = P0^4;	//继电器控制引脚、高电平工作
sbit BUZZ = P0^6;	//蜂鸣器控制引脚、高电平工作
sbit S6 = P3^1;		//板载S6按键
sbit S7 = P3^0;		//S7按键

void HC138(unsigned int n)	//锁存器配置函数
{
    switch(n)
    {
        case 4:
        hc138_A=0 ; hc138_B=0 ; hc138_C=1; break;
        case 5:
        hc138_A=1 ; hc138_B=0 ; hc138_C=1; break;
        case 6:
        hc138_A=0 ; hc138_B=1 ; hc138_C=1; break;
        case 7:
        hc138_A=1 ; hc138_B=1 ; hc138_C=1; break;
    }
}

void delay(unsigned int k)	//延时函数
{
    while(k--);
}
/*****按键扫描函数*****/
void key_scan(void)		
{
	if(S6 == 0)
	{
		delay(100);		//延时消抖
		if(S6 == 0)
		{
			HC138(5);		//打开Y5C
			BUZZ = ~BUZZ;	//蜂鸣器引脚电平取反
		}
		while(!S6);		//等待按键松开
	}
	if(S7 == 0)		
	{
		delay(100);		//延时消抖
		if(S7 == 0)
		{
			HC138(5);		//打开Y5C
			RELAY = ~RELAY;	//蜂鸣器引脚电平取反
		}
		while(!S7);		//等待按键松开
	}
}

void main()
{
	HC138(5);
	P0=0x00;	//蜂鸣器和继电器初始化、、全关
	HC138(4);
	P0= 0xff;	//LED小灯初始化、、全关
	while(1)
	{
		key_scan();	//按键扫描
	}
}
  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值