|
本帖最后由 yangcheng84 于 2014-5-21 17:00 编辑
初学贴<1>:http://www.crystalradio.cn/thread-552316-1-1.html
初学贴<2>:http://www.crystalradio.cn/thread-552827-1-1.html
给初学者贴<2> ----学51单片机,点亮一个灯以后 --续 《用软件的方法替代中低速逻辑门电路.》
在数电中,经常要用到组合逻辑门( 与门,或门,非门以及它们组合),对于简单功能的电路来说,去买几片门电路还是可以的,但是
电路稍微复杂一点,那么连线就不好连接了,线太多;另外,当需要多个门电路芯片时,其成本和使用1片单片机完成 成本几乎是一样的。
我一朋友在电离弧焊厂上班,该厂以前一直使用门电路做控制板,但生产坏品和市场返修品,生产车间维修人员表示非常不好修,表现在:
1. 使用的是插件门电路,不好拆
2. 对门电路工作状态不好分析,因此定位难
所以,他们惯用的办法就是大面积更换门 IC ,浪费了人力与物力。
后来朋友向经理谏言,推荐采用单片机做控制,化简电路提高可靠性和可维护能力。起初经理并不太赞成那样做,认为单片机太娇嫩了,但经过后来的
试行,维修人员反映,坏的少,就算坏了也好修,换单片机基本好了.这个是4年前的事情了.
前面说的就是实实在在的例子,好,我们切入正题:用软件的方法替代中低速逻辑门电路.
命题:用组合逻辑电路做一个 “三人表决器”,三人中,只要同意的人数占大多数,输出结构有效.
解:三个人表决看做是三个变量ABC,如果同意,表示变量值为1(高电平输入),否则为0(低电平), 用Y表示输出结果,Y=1(表示通过) Y=0(不通过)
根据以上分析,列出逻辑真值表
黄色的部分就是有效部分,先暂且 不做化简,把同意的情况加起来(图中黄色部分),共有4条, 假定分别用Y0,Y1,Y2,Y3表示它们,
那么最终结论就是Y= Y0+Y1+Y2+Y3 这4钟情况有效
而Y0是由BC产生的;Y1是由AC产生的;Y2是由AB产生的;Y3是由ABC产生的;
所以:
Y=AB+BC+AC+ABC
买芯片组装,至少需要买 四二输入与门 2 PCS, 四输入或门1PCS
如果此处用单片机完成,那么就简单了。可以买8脚的STC15F104E芯片。
#include <AT89X52.H>
#define A P1_0
#define B P1_1
#define C P1_2
#define Y P1_7
main()
{
While(1)
{
Y= (A&B) | (B&C) | (A&C) | (A&B&C) ; //循环检测,判断
}
}
在这里,
两个变量的“与” 比如AB之间与运算,C语言里写: A & B;
两个变量的“或” 比如AB之间或运算,C语言里写: A | B;
如果是非运算,比如A的非,那就是 A= !A "!"就是非,翻译过来就是, A等于A的“非”;
而 括号" () " 表示的意思是优先计算,和数学中 y=3(x+1); 中用括号将3和X隔开道理是一样的. 尽管C语言里也有默认的优先级,但是,作为实用性,我们不去烤练这些东西,没把握默认优先的情况下统一加括号,即简明
又不会产生错误逻辑。
由此我们还可以查看更多的运算符号.用几次会记住了
|
评分
-
2
查看全部评分
-
|