[蓝桥杯-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);
}
二、打开蜂鸣器,打开继电器
- 继电器和蜂鸣器都是低电平开启
(一)继电器的开启
- 继电器低电平开启
- IN5输入值需要为1,OUT5的值才为0
- P04的值需要为1,
P0=0x10;
(二)蜂鸣器的开启
- 蜂鸣器低电平开启
- IN6输入值需要为1,OUT的值才为0
- 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);
}
(二 )原理解释
- 138译码器对应着Y4Y5Y6Y7,对应着十进制的4、5、6、7
- 所以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版权协议,转载请附上原文出处链接和本声明。