在本实验中我们选择一对工作在“不可见光”波段的对管,除了避免灯光和日光的干扰外,即使在黑暗中入侵者也看不到探测光束,具有很强隐蔽性。
电路如下图所示。在电路左半部分是发射管电路,电源通过限流电阻R1接到发射光电二极管IR-D1上,电流通过光电二极管到地线,光电二极管发射光束,我们将这部分电路安装到走廊的一面墙壁上;电路右半部分是接收管电路,团中PT1是光电三极管,三极管Q1的作用是增加光电三极管接收的灵敏度,UIA是施密特反相器,作用是对A点的电平进行整形,保证送到单片机P3.2口的电平只能是OV或+5V,我们将接收管电路安装在发射电路对面的墙壁上,调节光电三极管的位置使它正对发射光电二极管的位置。
没有人走过时,光电二极管IR-D1发射出的光照射到光电三极管PT1,光感应的电流直接馈入PT1的基极,PT1发射极和集电极导通便Q1导通,这时A点为低电平OV,P3.2为高电平+5V:
如果有人走过,光电二极管IR-D1发射出的光被遮挡,不能照射到光电三极管PT1,因为PT1只对IR-D1发出的光敏感,PT1的基极没有电流镣入,PT1发射极和集电极截止使Q1截止,这时A点为高电平+5V,P3.2变为低电平OV。
由此看出,没有人走过时P3.2为高电平+5V,有人走过时P3.2会变为低电平OV。简单地说,单片机P3.2口变为低电平OV说明有人走过这段走廊。
在干簧管的程序中,介绍了P3.2是单片机外部中断0的端口,当P3.2的电平从高变为低时(下降沿跳变)会触发中断,程序会自动转入外部中断0的服务程序中。在本实验中,有人走过时就会使P3.2端口的电平从高电平变为低电平,从而触发中断,我们可以将处理报警的程序放在中断服务程序中。程序如下:
#include
voidalarm(void)interrupt0//中断服务程序
//【注1】
//主程序
voiDMAin(void)
{
TCON=OxO1;//将外部中断0设置为边沿触发
IE=Ox81://使能外部中断0
for(;:)
{
【注1】:如果有人走过,程序就会跳到该处,我们可以在这里加入处理程序,如驱动警铃报警等。0