前言
STC15的学习主要在CT107D训练平台上进行实操,这个CT07D开发板中有许多基础的模块,有许多知识是与数电有关的,这也可以让我们可以将数电学到的知识运用到这个平台上。
基础
这个M74HC573是锁存器,所以你不能够直接通过P0口来控制LED的亮灭,你要通过锁存器的连通来控制LED灯的亮灭。
M74HC573是八路三态输出的非反转透明锁存器
当锁存使能端LE为低电平时,这个器件的锁存对数据时透明的,
也就是P00输出1,Q1就输出1
也就是P04输出0,Q5就输出0
真值表来看,通过对A0 A1 A2进行输入赋值,来单独选择输出端(当输出为低电平)。
可以将输入数据看作二进制,输出数据看作十进制
A2 A1 A0 ——x (选择Yx
0 0 0 —— 0(选择Y0
0 0 1 —— 1(选择Y1
0 1 1 —— 3(选择Y3
A0——P25
A1——P26
A2——P27
这个锁存器的控制端(LE)是通过74HC138译码器来选择控制的,当LE引脚处于高电平时锁存器工作
74HC02或非门,我们在使用CT107D时使用的时IO控制模式,所以WR引脚时处于低电平状态,只要Y4为低电平,Y4C就会输出高电平。
主要思路:
首先通过138译码器来选择Y4端口(Y4端口处于低电平,Y4C输出高电平)
然后通过向P0口赋值来点亮对应的LED
代码实现
#include <STC15F2K60S2.H>
sbit HC138_A = P2^5;//端口定义
sbit HC138_B = P2^6;
sbit HC138_C = P2^7;
void delay(unsigned int t)//延时函数
{
while(t--);
while(t--);
}
void LED_on()//选定LED模块
{
HC138_A = 0;
HC138_B = 0;
HC138_C = 1;
P0 = 0x00;//全灭
delay(6000);
delay(6000);
P0 = 0xff;//全亮
delay(6000);
delay(6000);
}
void main()
{
while(1)
{
LED_on();
}
}