一、介绍
1.蜂鸣器
单片机自带的蜂鸣器是有源蜂鸣器(内置震荡源),也就是说给N_BUZZ蜂鸣器在低电平时会发出声音。
N_BUZZ = 0;
让我们谈谈无源蜂鸣器。无源蜂鸣器没有冲击源。直接给出直流信号蜂鸣器不会发出声音,因此我们应该手动给出方波信号。 如何实现?
while(1){
N_BUZZ = 0; delay_ms(200);(不同的时间会发出不同的声音) N_BUZZ = 1; delay_ms(200); }
2.继电器
继电器就是用小电流控制大电流的一种自动化的开关 当N_RELAY输出低电平时,K此时将被吸合m支路2接通。 至于二极管,应该用来保护电路。一些储能元件在继电器中是不可或缺的,但当继电器断开时,继电器肯定会放电。
二. 控制
在了解了继电器和蜂鸣器之后,让我们来看看如何在这个单片机中控制它们。
1.ULN2003
74HC138译码器和M我们之前已经介绍过74锁存器了。让我们来看看新的。ULN2003有什么用? 从数据手册中,我们可以看出这个芯片不是反相器。 所以这不是我们之前说的P0口对应的IO低电平开口,高电平开口。
2.代码
当我们上电时,我们会发现蜂鸣器在吠叫,所以我们最好在每个程序之前关掉蜂鸣器
P2 = (P2&0x1f)|0x10; //打开锁存器 P0.6 = 0; P2 =P2&0x1f;关闭锁存器
最后,附上一总代购,控制继电器循环开关开管的效果。具体效果是继电器关闭断开,继电器旁边的小灯闪烁。
# include "reg52.h" sbit HC138_A = P2^5 ; sbit HC138_B= P2^6 ; sbit HC138_C= P2^7 ;
sbit buzz = P0^6;
sbit relay = P0^4;
void init_H138(unsigned char n){
// 选择38译码器输出,现在我们只用到了两个,就写了两个
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; }
}
}
void ouputP0(unsigned char n,unsigned char dat){
init_H138(n);
P0 = dat;
}
void systeminit(){
//初始化,关闭蜂鸣器和继电器,别没事乱响
ouputP0(5,0x00) ;
}
void delay(unsigned int t ) {
while(t--);
while(t--);
}
void main(){
systeminit();
while(1){
ouputP0(4,0xff) ; // 关闭LED,亮着真烦
ouputP0(5,0x00);
delay(60000);
delay(60000);
ouputP0(5,0x10); // 0001 0000
delay(60000);
delay(60000);
} }
最后希望大家一起学习进步哦!
最后欢迎大家访问我的博客 希望大家都能坚持学习,一起进步!