一、原理图分析
从电路可知,当继电器的N RELAY 端接低电平时,继电器吸合;蜂鸣器的N BUZZ端接低电平时,蜂鸣器啸叫。
ULN2003是高耐压、大电流复合晶体管阵列,由七个硅NPN 复合晶体管组成,ULN2003是一个非门电路,包含7个单元,见下图:
若使继电器吸合,则P04接高电平;若使蜂鸣器啸叫,则P06接高电平
二、程序编写
实现功能:首先让8个LED灯闪烁3次然后熄灭,接着依次点亮LED灯,继电器吸合一会后断开,然后依次熄灭LED灯,蜂鸣器鸣叫一会后关闭,程序循环实现上述功能。
#include <reg51.h>
unsigned char i;
void delay()//延时函数
{
int i,j;
for(i=0;i<300;i++)
for(j=0;j<400;j++);
}
void main()
{
P2=0X80;//选中Y4C(100),打开LED模块
for(i=0;i<=3;i++)//LED交替闪烁
{
P0=0X00;
delay();
P0=0Xff;
delay();
}
for(i=0;i<=8;i++)//LED依次闪烁
{ delay();
P0=0xff<<i;
delay();
}
P2=0XA0;P0=0X10;delay();delay();P0=0x00;//选中Y5C(101);P04为1,打开继电器,P04为0关闭继电器
P2=0X80;//选中Y4C(100),打开LED模块
for(i=0;i<=8;i++)//LED依次熄灭
{ delay();
P0=~(0xff<<i);
delay();
}
P2=0XA0;P0=0X40;delay();delay();P0=0x00;//选中Y5C(101);P06为1,打开蜂鸣器,P06为0关闭蜂鸣器
}