基于proteus的51单片机仿真实例二十六、“万能逻辑电路”实验

来源:互联网 发布:spss数据统计分析 编辑:程序博客网 时间:2024/06/04 18:08
1、本例利用单片机实现逻辑函数“F=(~X)Y+Z",逻辑函数的实现有两个基本途径:一是专门设计数字电路,实现逻辑功能;二是通过单片机编程来实现逻辑功能,即”软件就是硬件“。显然,用软件代替硬件有着很大的灵活性和更广阔的适用范围。也因为如此,单片机有时候会被称为”万能逻辑电路“。
2、因为单片机能够识别的输入量只有两种:高电平(逻辑1)和低电平(逻辑0),所以可以将这3个输入量分别定义为位变量(X定义为P1.5、Y定义为P1.6、Z定义为P1.7),则可以使用位运算符来实现逻辑函数
 
3、在keil c51中新建工程ex15,编写如下程序代码,并编译生成ex15.hex文件。
//实例15:万能逻辑电路“试验
#include <reg51.h>           //包含头文件
sbit F=P1^4;           //将F位定义为P1^4
sbit X=P1^5;     //将X位定义为P1^5
sbit Y=P1^6;    //将Y位定义为P1^6
sbit Z=P1^7;    //将Z位定义为P1^7
void main(void)
{
  while(1)
 {
   F = ((~X) & Y) | Z;  //将逻辑运算结果赋给F
 }
}
 
4、在proteus中新建仿真文件ex15。电路图如下所示。其中搜索按键元件时,输入关键字button进行搜索。

5、在at89c51中载入ex15.hex文件,启动仿真,当按下按键SZ时(在proteus中按下按键的动作为:将鼠标放到按键上,然后按下鼠标左键,可以看到,按键元件上的那个小方框向下移动并接触到了连线部分,这表示按键被按下了,松开鼠标左键后,按键随之被释放),P1.4上的LED点亮了。因为此时SX,SY两个按键没有按下所以X=1,Y=1,而SZ按键被按下了,所以Z=0.根据表达式可以计算F=((~1)&1)|0=0,因为F被定义为P1.4端口,所以P1.4端口上的电平为低,链接到P1.4上的LED被点亮了。
仿真效果图如下:


 
0 0
原创粉丝点击