蓝桥杯单片机基础学习部分(2)——蜂鸣器和继电器

一、前言

在蓝桥的比赛里,在上电之前一般都要系统初始化,关闭蜂鸣器,继电器之类不需要用到的设备

在第十三届省赛考了继电器,蜂鸣器大部分都是要关闭的。

十三届省赛题目(部分)

二、原理图

在开发板上面,蜂鸣器是一个上面贴着一张白色字片的黑色圆柱形,旁边那个黄色长方体的就是继电器。

原理图上面,他们都连接在ULN2003复合晶体管的输出端,CMOS端与VCC高电平相连,E端接GND,采用了集电极开路输出,输出电流大,故可直接驱动继电器。

在74HC573锁存器输出端,LE连接的是Y5C,所以我们需要回到SM74HC138译码器

三路输入

我们需要控制Y5,所以我们只需要控制P25=1,P26=0,P27=1,就可以控制锁存器通道指向蜂鸣器和继电器

关于锁存器和译码器笔者在上一篇笔记提到,感兴趣的读者可以去看看蓝桥杯单片机基础学习部分(1)——LED灯(点亮一盏LED灯及流水灯)-CSDN博客

在开发板上面,需要用键帽把J6的2,3端口短接,VCC供电给蜂鸣器和继电器

三、代码实现功能

1、蜂鸣器响起

#include <STC15F2K60S2.H>

void main()
{
	P2 = (P2 & 0x1f) | 0xa0;
	while(1)
	{
		P0 = 0x40;
	}
}

P2 = (P2 & 0x1f) | 0xa0;就是对译码器进行Y5端口输出控制

十六进制的0x40就是二进制的 0100 0000(高位在左右,低位在右)对应图1控制7C~1C的高低电平

图1

2、蜂鸣器滴答滴答

#include <STC15F2K60S2.H>
void Delay10ms(void)	//@11.0592MHz
{
	unsigned char data i, j;

	i = 108;
	j = 145;
	do
	{
		while (--j);
	} while (--i);
}

void main()
{
	P2 = (P2 & 0x1f) | 0xa0;
	while(1)
	{
		P0 = 0x40;                    //开启蜂鸣器
		Delay10ms();
		P0 = 0x00;                    //关闭蜂鸣器
		Delay10ms();        	
    }
}

要蜂鸣器滴答滴答,只需要开启蜂鸣器,一段时间后关闭,再一段时间后,再开启......就可以了

3、继电器开启

#include <STC15F2K60S2.H>
void main()
{
	P2 = (P2 & 0x1f) | 0xa0;
	while(1)
	{
		P0 = 0x10;
	}
}

控制继电器只需要P0 = 0x10;

十六进制的0x10就是二进制的 0001 0000(高位在左右,低位在右)对应图1控制7C~1C的高低电平

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值