蓝桥杯(2)——蜂鸣器与继电器的使用

目录

蜂鸣器与继电器的使用

一、原理

 二、代码控制

三、与LED的连接控制举例


蜂鸣器与继电器的使用

一、原理

首先,如何去控制蜂鸣器与继电器呢,必须要知道的是蜂鸣器与继电器的各个引脚图(如下):

来源于CT107D单片机综合训练平台原理图

1.(1)蜂鸣器BUZZER(低电平有效),控制端口在N BUZZ,接着找对应的端口

(2).找到对应的M74HC573MIR锁存器,它控制的Q7连接ULN2003(达林顿管

引脚图入下,实际内部为非门;即输入1,输出0)

ULN2003芯片引脚图

OUT7口再连接N BUZZ,那再要去找控制锁存器Y5C的端口

(3)对应找到74HC02或非门,对应第一节LED里的芯片Y5

(4)即找到74HC138译码器

 

2.(1)继电器DIODE(低电平有效):

 (2)接下来找N RELAY,同样在上面的第二个图锁存器的OUT5引脚。接下来的操作同上;

由上图可以知道,继电器的开关闭合在一个LED显示出来

 二、代码控制

【注】ULN2003里面是非门;

(1)打开蜂鸣器:P0=0100 0000;或者P0=0x40;

关闭蜂鸣器:P0=1011 1111;或者P0&=0xb0

(2)打开继电器:P0=0001 0000;或者P0=0x10;

        关闭继电器:P0=1110 1111;或者P0=0xe8;

三、与LED的连接控制举例

首先让8路LED指示灯闪烁3遍后熄灭,接着依次点亮LED,继电器吸合一会断开,然后依次熄灭LED,蜂鸣器鸣叫一次后关闭,程序循环实现以上功能。(借鉴B站UP主小蜜蜂老师的干货铺)

#include<reg51.h>

sbit HC138_A=P2^5;  
sbit HC138_B=P2^6;
sbit HC138_C=P2^7; //定义引脚

void Delay(unsigned int t)	  //定义延时函数
{
 while(t--);
 while(t--);
 }

void InitHC138(unsigned char n)//使用Switch语句以方便以下语句的重复使用
{
 switch (n)
 {
 case 4:
    HC138_C=1;
	HC138_B=0;
	HC138_A=0;	  //让Y4输出低电平
	break;
 case 5:
    HC138_C=1;
	HC138_B=0;
	HC138_A=1;	  //让Y5输出低电平
	break;
 case 6:
    HC138_C=1;
	HC138_B=1;
	HC138_A=0;	  //让Y6输出低电平
	break;
 case 7:
    HC138_C=1;
	HC138_B=1;
	HC138_A=1;	  //让Y7输出低电平
	break;
 }
}



void LEDRunning() //运行LED函数
{
    unsigned char i;
	InitHC138(4);

	for(i=0;i<3;i++) //闪烁三次
	{
	P0=0x00; //led亮,低电平有效
	Delay(60000)  ;//延时
	Delay(60000)  ;

	P0=0xff;
	Delay(60000)  ;
	Delay(60000)  ;
	}

	InitHC138(4);

	for(i=0; i<8;i++)//依次点亮8个LED
	{
	P0 = 0xff <<i;
	Delay(60000)  ;
	}
	
	InitHC138(5) ;

	P0 = 0x10; 		//继电器 吸合
	Delay(60000)  ;
	Delay(60000)  ;
	P0 = 0x00; 
	
	InitHC138(4)   ;
	

	for(i=0; i<8;i++)
	{
	P0 =~ 0xff <<i;
	Delay(60000) ;

	}		 //依次点亮8个LED
	
	
	InitHC138(5) ;
	

	P0 = 0x40; 	//蜂鸣器打开
	Delay(60000)  ;
	Delay(60000)  ;
	P0 = 0x00; 	
}	
void InitSystem()
{
	InitHC138(5) ;
		  
	P0 = 0x00;

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

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在STM32F103RBT6芯片上,蜂鸣器引脚PB4是属于JTAG下载调试相关的端口,需要进行一些额外的配置才能当作普通IO使用。根据资料查阅,STM32F103RBT6总共有51个IO口,其中部分IO被板载的功能芯片占用,只有部分IO口被引出,包括PB4引脚。PB4的主要功能是NJTRST,即仿真器调试时的JTAG对内核的调试复位信号引脚,一般用于信号调试。因此,在完全复位状态下,包括PA13、PA14、PA15、PB3和PB4这些引脚都不能直接用作普通IO或其他功能的引脚。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [关于stm32中引脚的复用,重映射问题](https://blog.csdn.net/weixin_47042449/article/details/122458913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [NANO-stm32F103-HAL库基础指南--开发板硬件介绍](https://blog.csdn.net/Kattlin_gsc/article/details/106674021)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值