一.原理图
二.原理图分析
如上图,前半部分和之前相同,此不再赘述。此八个LED灯为共阳极连接,即LED灯的正极与VCC相连,锁存器的输出口与LED的负级相连。输出为0是LED亮,输出为1时LED灭。与LED串联的电阻是为了限流,防止电流过大烧坏LED。
控制逻辑:
(1).当P2.7、P2.6、P2.5分别为1、0、0时,即对应的输出端Y4输出低电平。
(2).由于跳线帽连接了J13中的WR和GND,即WR为低电平。因此或非门B的输出端Y5C即为高电平,使能锁存器。
(3).此时如果令P0.0为0,锁存器的输出端Q1为0,LED1亮,反之则灭。其他LED相同。
三.代码
此代码实现流水灯实验
#include "stc15.h"
#include "intrins.h"
//200ms软件延时函数
void Delay200ms()
{
unsigned char i, j, k;
_nop_();
i = 2;
j = 103;
k = 147;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
unsigned char i=0; //main函数中定义的变量为局部变量,不会自动赋初值0
while(1)
{
P2=(P2&0x1f)|0x80;
P0=~(0x01<<i);
P2&=0x1f;
i++;
if(i==8)
i=0;
Delay200ms();
}
}