一、原理部分
以蜂鸣器为例讲解原理(继电器和蜂鸣器类似)
蜂鸣器的一端接到VCC即为高电平,所以另外一个引脚赋予高电平则蜂鸣器关闭,赋予低电平则蜂鸣器打开。现在让蜂鸣器打开即要让N_BUZZ为0。
N_BUZZ连接到ULN2003的OUT7,查阅芯片资料得知,ULN2003是一个非门所以要让OUT7输出为0则IN7=1,IN7和锁存器的Q7相连,即Q7=11。
使Q7=1则要打开锁存器的使能端即Y5C=1且P06=1。
74HC02是一个或非门,即只有当Y5=0且WR=0时,Y5C=1。WR默认为0所以要让Y5为0
Y5为74HC138译码器的一个输出端通过查询真值表可以得知让Y5输出0的方法为A=1 B=0 C=1
即P25=1 P26=0 P27=1。
小结
控制单片机 P06=1 P25=1 P26=0 P27=1即可打开蜂鸣器。
继电器打开方法与蜂鸣器类似 P06=1 P25=1 P26=0 P27=1即可打开继电器。
二、代码部分
实验平台:CT107D
实验芯片:stc15f2k60s2
实验现象:打开蜂鸣器和继电器
代码如下
#include "stc15f2k60s2.h"
sbit buzz = P0^6; //位定义蜂鸣器
sbit relay = P0^4; //位定义继电器
void main()
{
P2 = 0xa0; //打开寄存器
buzz = 1; //1为打开蜂鸣器,0为关闭蜂鸣器
P2 = 0x00;
P2 = 0xa0;
relay = 1; //1为打开继电器,0为关闭继电器
P2 = 0x00;
while(1)
{
;
}
}