74hc138译码器制作火灾报警器

利用74HC138三线-8线译码器和若干门电路设计一多传感器火灾报警系统,设有烟雾传感器、一氧化碳传感器、温度传感器和紫外光传感器,为了防止误报,有三个或三个以上传感器数值超过设定阈值,或者有两个传感器数值超过设定阈值,但其中一个是温度传感器时,报警系统轰鸣器报警。

假设a是温度,则有一下真值表和卡诺图

 

ea0e80c8ecbb4e71aff94228c3cb8514.jpeg

 

接下来通过卡诺图化简得到最小值相加的表达式

ed4c3db11ca444a9b2af44e3edefa8bb.jpeg

可以看出需要两个138译码器才能将m7-15(没有m8)信号容纳

c622d2ef7db6456da51aa579d3bee05e.png

74hc138译码器引脚图

 

 

 

 

 

 

 

 

因为138译码器可以将三个输入信号按照a2a1a0的顺序的二进制输出在y0-6引脚上(输出低电平,正好与化简的式子契合)(二进制的值即y0-6的下标),所以最小项的下标就反应在了y0-6的引脚上,因为最小项的下标即abcd输入信号的二进制值。

而需要容纳7-15(缺少8)这八个信号需要两个138译码器实现,即第一个译码器装下m7,第二个译码器装下m9-15。最后将这些信号相乘再取非即可,所以最后汇总到一个与非门即可。

根据138译码器的引脚图可知,e3高电平触发,e1.e2低电平触发,所以只需将第一个138的e1接电源,e2接地,e3接温度信号,然后将第二个138的e1接温度信号,e2e3接地就可以实现温度出0时第一个工作温度出1时第二个工作(因为由最小项可知,温度信号a是最高位,当他出1时二进制转十进制就是加8,因此可以让a控制两个138的使能端,控制两个138的其一工作,当a出0,即只有m7的信号输出时便只需启用第一个138,当a出1时启用第二个138即可输出m9-15:;相当于扩展了输出端口,因为有a的出1,使得最小项下标加8,a也通过对使能端的控制,使第二个138的y0-7变成了y8-15,从而使最小项下标和两个138的输出端下标对应)。解决了最高位a控制使能端(因为7-15跨越了八个数,所以只能用最高位a控制使能端)其他三个信号只要按照写最小项时的ABCD的顺序排入a2a1a0即可。

b667f94091c540df97a5172e2b13bc08.jpeg

a3是温度信号

 

个人认为这个对138译码器的总结对数电入门很有帮助,写到这里顿悟:1、可以将最小项的高位和地位分开来看,看做是独立的处理,这样可以对选择芯片和引脚配对哪个信号有帮助,如本次就将高位信号a和bcd分离看待,因为两个138芯片相同,所以可以将bcd的信号直接与两个相同下标的引脚连一起,然后通过最高位a来控制最小项下标加减和输出端下标加减(即1第二个138的扩展) 。

2、对于m1m2这些只是一个信号,他是一个最小项,一个组合形式,也是abcd与的形式。

3、另一个思路就是将a和bcd分别看待,因为138译码器只有a2a1a0三个输入端可以输入二进制值,所以可以将最小项下标7-15从7这里断开,因为bcd最大值就是7,右边9-15这一段a出1,所以第一个138当a出0时启用,第二个138当a出1时启用。

 

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是基于74HC138译码器的实验C语言程序: ```c #include<reg52.h> sbit led=P2^0; //定义LED引脚 sbit s0=P1^0; //定义S0引脚 sbit s1=P1^1; //定义S1引脚 sbit s2=P1^2; //定义S2引脚 void main() { while(1) { s0=s1=s2=1; //将S0、S1、S2引脚都置为高电平 P0=0x00; //将P0口输出0 led=0; //LED亮 DelayMs(1000); //延时1秒 s0=0; //将S0引脚置为低电平 P0=0xFF; //将P0口输出FF led=1; //LED灭 DelayMs(1000); //延时1秒 s0=1; //将S0引脚置为高电平 s1=0; //将S1引脚置为低电平 P0=0xAA; //将P0口输出AA led=0; //LED亮 DelayMs(1000); //延时1秒 s1=1; //将S1引脚置为高电平 s2=0; //将S2引脚置为低电平 P0=0x55; //将P0口输出55 led=1; //LED灭 DelayMs(1000); //延时1秒 s0=0; //将S0引脚置为低电平 s1=0; //将S1引脚置为低电平 s2=0; //将S2引脚置为低电平 P0=0xFF; //将P0口输出FF led=0; //LED亮 DelayMs(1000); //延时1秒 } } void DelayMs(unsigned int ms) //延时函数 { unsigned int i,j; for(i=0;i<ms;i++) for(j=0;j<114;j++); } ``` 以上程序实现的功能是:通过74HC138译码器控制LED的亮灭。程序中通过改变S0、S1、S2三个引脚的电平来选择74HC138译码器的输出口,然后通过P0口输出控制LED的亮灭。 实验步骤如下: 1. 将74HC138译码器的S0、S1、S2三个引脚分别连接到P1.0、P1.1、P1.2三个引脚; 2. 将74HC138译码器的Y0、Y1、Y2、Y3四个输出口分别连接到LED的正极; 3. 将LED的负极连接到单片机的GND引脚; 4. 将单片机的P0口连接到74HC138译码器的A0、A1、A2三个引脚。 通过上述实验可以深入了解74HC138译码器的工作原理及其应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值