【蓝桥杯—单片机】蜂鸣器与继电器的基本控制 | 备赛 | 笔记

前言

学习资料参考

课程资料
【【小蜜蜂笔记】蓝桥杯大赛-单片机设计与开发基础技能与进阶强化教程】https://www.bilibili.com/video/BV1Bt41187hw?p=3&vd_source=c7e5b42e6c1438daf4523dc34387738c

LED基本控制可以参考以下笔记
https://blog.csdn.net/zicheng_G/article/details/142025188?fromshare=blogdetail&sharetype=blogdetail&sharerId=142025188&sharerefer=PC&sharesource=zicheng_G&sharefrom=from_link

本节训练重点

让8路LED指示灯闪烁3遍后熄灭,接着依次点亮LED指示灯,继电器吸合一会后断开,然后依次熄灭LED指示灯,蜂鸣器鸣叫一会后关闭,程序循环实现上述操作。

蜂鸣器与继电器的基本控制

1.原理图

在平台上调用蜂鸣器与继电器时,要注意板子上J6的连接情况。

1.1 继电器

在这里插入图片描述
NRELAY为低电平时,继电器通电吸合。

NRELAY受到ULM2003控制,ULM2003又受到了CH573控制,CH573又受到Y5C控制。
在这里插入图片描述
Y5C受到或非门控制,或非门受到Y5控制。
在这里插入图片描述
Y5受到三八译码器的控制。
在这里插入图片描述
关于三八译码器、或非门的内容可以参看LED基本控制的笔记。

ULM2003

2003也是一个7路反向器电路,即当输入端为高电平时,ULN2003输出端为低电平。
在这里插入图片描述

关于ULM2003的详细介绍,可以参考下方资料:
https://yngzmiao.blog.csdn.net/article/details/79787766?fromshare=blogdetail&sharetype=blogdetail&sharerId=79787766&sharerefer=PC&sharesource=zicheng_G&sharefrom=from_link

1.2 蜂鸣器

在这里插入图片描述
NBUZZ为低电平时,蜂鸣器响。
关于NBUZZ受控情况参看继电器。

2.编程思路

/*头文件声明区域*/
#include <REGX52.H>

/*变量声明区域*/
sbit HC138_A0_A = P2^5;
sbit HC138_A1_B = P2^6;
sbit HC138_A2_C = P2^7;
unsigned char i;

/*延时函数*/
void Delay(unsigned int xms)		//@12.000MHz
{
	while(xms--);
	while(xms--);
}

/*138译码器Y口选中情况*/
void HC138_NumberY(unsigned char x)
{
	switch(x)
	{
		case 4:
		{
			HC138_A0_A=0;
			HC138_A1_B=0;
			HC138_A2_C=1;
			break;
		}
		case 5:
		{
			HC138_A0_A=1;
			HC138_A1_B=0;
			HC138_A2_C=1;
			break;
		}
	}
}

/*初始化设置关闭无关影响*/
void Init()
{
	HC138_NumberY(5);
	
	P0=0x00;
}

/*LED基本控制*/
void LED_StartShow() //LED指示灯闪烁3遍后熄灭,接着依次点亮LED指示灯
{
	HC138_NumberY(4); //选中138译码器
	
	for(i=1;i<=3;i++) //闪烁三次
	{
		P0=0x00;
		Delay(10000);
		P0=0xff;
		Delay(10000);
	}
	
	for(i=0;i<9;i++) //依次点亮LED
	{
		P0=0xff>>i;
		Delay(10000);
	}
}

void LED_EndShow() //依次熄灭LED指示灯
{
	HC138_NumberY(4); //选中138译码器
	
	for(i=0;i<9;i++) 
	{
		P0=~(0xff>>i);
		Delay(10000);
	}
}

/*继电器的基本控制*/
void Relay()
{
	HC138_NumberY(5); //选中CH573
	
	P0=0x10; //继电器吸合
	Delay(10000);
	P0=0x00; //继电器断开
}

/*蜂鸣器的基本控制*/
void Bell()
{
	HC138_NumberY(5); //选中CH573
	
	P0=0x40; //蜂鸣器响
	Delay(10000);
	P0=0x00; //蜂鸣器不响
}

/*主函数*/
void main()
{
	while(1)
	{
		Init();
		LED_StartShow();
		Delay(1000);
		Relay();
		LED_EndShow();
		Delay(1000);
		Bell();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值