1、初识蜂鸣器
相信大多同学拿到板子写入代码的时候,会出现蜂鸣器发响的现象,不知道的还以为板子有问题呢,我们也没有写入蜂鸣器相关操作,那为什么蜂鸣器会响呢?这个问题我们先不急讨论,接下来先看蜂鸣器继电器总体原理图如下:
(1)蜂鸣器
蜂鸣器工作条件是: N BUZZ=0,即为低电平时。
(2)继电器
继电器工作条件是:N RELAY=0,即为低电平。
(3)LED
LED的573使能端由Y4C控制的,所以当LED工作时,要把Y4C=1,即为高电平。
(4)数码管
数码管DS1与DS2由Y6C和Y7C控制。必须使Y6C=1,Y7C=1这样数码管才能工作,而Y7C控制abcdefg和dp;Y6C控制com。
接下来进行逐一了解内部原理图具体含义。
2、了解系统组成原理图
(1)74HC138(俗称38译码器)
74HC138译码器可接受3位二进制加权地址输入(A, B和C),并当使能时,提供8个互斥的低有效输出(Y0至Y7)。
(2)74HC02
WR与GND用跳帽连接起来,即WR为低电平0。
结合(1)(2)从表中可以看出:当ABC输入为101时Y5为低电平,打开Y5C=1控制蜂鸣器继电器等模块。接下来继续了解原理图,现在是蜂鸣器继电器模块已经开始工作,看看继电器与蜂鸣器的控制接口是啥?
(3)ULN2003(反相器)和M74HC573(锁存器)
从图中看出,P06控制着蜂鸣器,P04控制着继电器。二者依次经过了锁存器(数据不变)、反相器(数据取反),在结合上述蜂鸣器继电器工作条件可知:当P06=0、P04=0时,关闭了继电器蜂鸣器。
3、控制继电器蜂鸣器操作步骤
结合上述原理来说,首先设置74HC138译码器A、B、C分别为1、0、1,即:
P25=1;
P26=0;
P27=1;
这是满足了Y5=0;进而得到Y5C=1,打开了573使能端。
然后再控制P06和P04进而对蜂鸣器继电器的控制。大致就这些。
4、继电器、蜂鸣器、LED、数码管初始化代码
初始化继电器蜂鸣器:
void init_buzzer_relay(){
P2=0XA0; //P27=1,P26=0,P25=1,其余为0,此时38译码器中的Y5=0,进而的得到Y5C=1
P0=0X00; //P06=0关闭蜂鸣器,P04=0关闭集电器
}
初始化LED:
void init_led(){
P2=0X80; //P27=1,P26=0,P25=0,其余都为0,此时38译码器中的Y4=0,进而得到Y4C=1
P0=0XFF; //关闭所有LED灯
}
初始化数码管:
void init_DS1_DS2(){
P2=0XC0; //P27=1,P26=1,P25=0,其余为0,此时38译码器中的Y6=0,进而的得到Y6C=1
P0=0X01; //选择数码管位置操作,此时选的为DS1的第一个位置
P2=0XFF; //P27=1,P26=1,P25=1,此时38译码器中的Y7=0,进而的得到Y7C=1
P0=0XFF //数码管显示数字操作,此时是全关闭
}
上述详细的解释了继电器蜂鸣器、LED、数码管的初始化操作,以上就是我们刚开始写代码时候的一些初始化操作,当时并不了解为啥初始化操作是这些,刚开始写的时候都是自己背会,并没有了解其中的原理,每个模块学完时候再去了解这些初始化操作,感觉会豁然开朗。这部分就这么多,关键是自己理解原理图加上实践。