蓝桥杯(2)——蜂鸣器与继电器的使用
作者:互联网
目录
蜂鸣器与继电器的使用
一、原理
首先,如何去控制蜂鸣器与继电器呢,必须要知道的是蜂鸣器与继电器的各个引脚图(如下):
来源于CT107D单片机综合训练平台原理图
1.(1).蜂鸣器BUZZER,控制端口在N BUZZ,接着找对应的端口
(2).找到对应的M74HC573MIR锁存器,它控制的Q7连接ULN2003(达林顿管
引脚图入下,实际内部为非门;即输入1,输出0)
OUT7口再连接N BUZZ,那再要去找控制锁存器Y5C的端口
(3)对应找到74HC02或非门,对应第一节LED里的芯片Y5
(4)即找到74HC138译码器
2.(1)继电器DIODE:
(2)接下来找N RELAY,同样在上面的第二个图锁存器的OUT5引脚。接下来的操作同上;
由上图可以知道,继电器的开关闭合在一个LED显示出来
二、代码控制
(1)打开Y5口:P2=(P2&0x1f)|0xa0;
关闭Y5口:P2&=0x1f;
(2)打开蜂鸣器:P0=0100 0000;或者P0=0x40;
关闭蜂鸣器:P0=1011 1111;或者P0&=0xb0
(3)打开继电器:P0=1110 1111;或者P0=0xef;
关闭继电器:P0=0001 0000;或者P0=0x10
三、与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();
}
}
标签:P2,P0,HC138,继电器,LED,蓝桥,蜂鸣器 来源: https://blog.csdn.net/weixin_46706926/article/details/122413985