[蓝桥杯-138译码器和74hc573锁存器的关系]

[蓝桥杯-138译码器和74hc573锁存器的关系]

在这里插入图片描述

一、点亮开发板上的一个小灯

在这里插入图片描述

(一)M74HC573的使能端—>Y4C端开启—>Y4端被138译码器选中—>P25/P26/P27三端输入控制

在这里插入图片描述

在这里插入图片描述

#include "STC15F2K60S2.h"

typedef unsigned int uint;
typedef unsigned char uchar;

void main()
{
	P2 = 0xA0;	P0 = 0X00;	//选中Y5C,关闭蜂鸣器
	P2 = 0X80;	P0 = 0XFF;	//选中Y4C,关闭8个LED
	
	P2 = 0X80;	P00 = 0;	//选中Y4C
	
	while(1);
} 

二、打开蜂鸣器,打开继电器

在这里插入图片描述

在这里插入图片描述

  • 继电器和蜂鸣器都是低电平开启

(一)继电器的开启

在这里插入图片描述

  1. 继电器低电平开启
  2. IN5输入值需要为1,OUT5的值才为0
  3. P04的值需要为1,P0=0x10;

(二)蜂鸣器的开启

  1. 蜂鸣器低电平开启
  2. IN6输入值需要为1,OUT的值才为0
  3. P06的值需要为1,P0=0x40;

三、化繁为简——宏定义

(一)原则

  • 与零相或,不改其值
  • 与1相与,不改其值
#include "STC15F2K60S2.h"

typedef unsigned int uint;
typedef unsigned char uchar;

void main()
{
	P2 = 0xA0;	P0 = 0X00;
	P2 = 0X80;	P0 = 0XFF;
	/**
	P2 = 0X9F&(P2|0XE0);	//Y4
	P2 = 0XBF&(P2|0XE0);	//Y5
	P2 = 0XDF&(P2|0XE0);	//Y6
	P2 = 0XFF&(P2|0XE0);	//Y7
	**/
	
	P2 = 0X9F&(P2|0XE0);	//Y4
	P0 = 0X11;
	P2 = 0XBF&(P2|0XE0);	//Y5
	P0 = 0X10;
	
	while(1);
} 

(二 )原理解释

  1. 138译码器对应着Y4Y5Y6Y7,对应着十进制的4、5、6、7
  2. 所以P2的高三位,P27、P26、P25所组成的三位二进制的值分别为,100b=4,101b=5,110b=6,111b=7

(三)宏定义写法

#include "STC15F2K60S2.h"

#define					Y4			P2 = 0X9F&(P2|0XE0)			
#define 				Y5  		P2 = 0XBF&(P2|0XE0)			
#define 				Y6			P2 = 0XDF&(P2|0XE0)			
#define 				Y7			P2 = 0XFF&(P2|0XE0)			

typedef unsigned int uint;
typedef unsigned char uchar;

void main()
{
	Y4;	P0 = 0XFF;
	Y5;	P0 = 0X00;
	
	Y4;	P0 = 0X00;	//点亮LED	
	
	while(1);
} 


版权声明:本文为AISc_O原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。