一、如何实现对蜂鸣器与继电器的控制
继电器
继电器是一种电控制器件,可以给予规定输入量并保持足够长的时间,在电气输出电路中使被控量发生预定的阶跃变化。当输入量降至一定程度并保持足够长的时间后,再恢复到初始状态。(弱电控制强电)
图中二极管可以保护电路防止线圈被烧坏。当RELAY接上低电平0时,继电器闭合。
蜂鸣器
蜂鸣器的发声原理由振动装置和谐振装置组成,而蜂鸣器又分为无源他激型与有源自激型。
图中只要使N BUZZ接上低电平0,则蜂鸣器鸣叫。
在电路中如何控制继电器与蜂鸣器
图中ULN2003为非门。通过控制74HC138译码器时的M74HC573MIR的LE保持高电平1,再控制P04和P06,从而控制N RELAY与N BUZZ使继电器/蜂鸣器工作。
二、任务内容及程序
任务内容:
让八路LED亮三下,再使继电器闭合,随后LED一个一个亮,再使蜂鸣器鸣叫一下,最后LED一个一个灭。
程序:
通过函数,程序可读性提高了,main函数也变得更简洁。
#include <REG52.H>
void HC138P2(unsigned char n)
{
switch(n)
{
case 4:P2=(0x1f&P2)|0x80;
break;
case 5:P2=(0x1f&P2)|0xa0;
break;
case 6:P2=(0x1f&P2)|0xc0;
break;
case 7:P2=(0x1f&P2)|0xe0;
break;
}
}
void Delay(unsigned char xms) //@11.0592MHz
{
unsigned char data i, j;
while(xms--){
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}
}
void InitP0()
{
HC138P2(5);
P0=0x00;
}
void OutPutP0(unsigned char n,unsigned char m)
{
HC138P2(n);
P0=m;
}
void LEDRunning()
{
unsigned char i,t;
InitP0();
for(i=0;i<3;i++)
{
OutPutP0(4,0x00);
Delay(1000);
OutPutP0(4,0xff);
Delay(1000);
}
for(t=0;t<8;t++)
{
OutPutP0(4,(0xff<<t));
}
OutPutP0(5,0x40);
for(t=0;t<8;t++)
{
OutPutP0(4,~(0xff<<t));
}
OutPutP0(5,0x10);
}
void main()
{
while(1)
{
LEDRunning();
}