控制流水灯程序
在ct107d原理图上找到对应的led模块
这里能发现这个led灯的控制并不像其他单片机开发平台的一样,不单单是控制几个LED实现流水灯这么简单。因为在这个平台上要掌握74CH138译码器和74HC573锁存器的使用才能实现对LED的基本控制。因此,这个单元的重点不是LED的控制,而是掌握译码器和锁存器的基本使用。
1、74HC138:三八译码器
用非专业的语言来解释,这个芯片实现的功能就是用3个输入引脚,实现8个输出引脚,而且这个八个输出引脚中只要一个低电平。对于这个芯片,你不需要搞清楚它的内部结构和工作原理,只需要把真值表记住就行了。注意:是要记住
2、74HC573:锁存器
用非专业的语言来解释,锁存器就是能够把输出的数据保存住,不会受到输入变化的影响。
573锁存器有20个引脚,D1D8是数据输入端,Q1Q8是数据输出端,LE为锁存控制端。当锁存使能端LE为高时,573的锁存对于数据是透明的(也就是说输出同步)。当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
简单的说就是,LE为高电平时,Q1Q8输出和D1D8输入是一样的;LE为低电平时,Q1Q8输出不受D1D8输入的变化影响。明白这个就掌握了该锁存器的使用。
3、74HC02:或非门
从电路原理图上可以分析出,单片机的WR引脚或者GND和译码器的Y4引脚作为74HC02的输入。可以通过J13的跳帽选择是WR还是GND作为74HC02的输入。如果译码器的Y4输出低电平,那么74HC02的输出Y4C将为高电平,而该引脚接到74HC573锁存器的LE引脚,这时候锁存器处于数据联通的开放状态,也就是单片机可以控制LED灯。如果单片机不向外设输出数据,或者译码器的Y4没有输出低电平的话,则74HC573处于锁存状态,即单片机不能控制LED灯。
控制led的基本思路1:打通74HC573锁存器
如何打通:即让74HC573锁存器的第11管脚Y4C为高电平即可
2:那么要找Y4C对应的标号,如原理图所示在74HC02这个或非门中,在此之前要设置单片机的io模式即j13的2,3管脚接地。那么根据或非门若让Y4C输出高电平既让Y4输入低电平即可。
3:控制Y4的是一个74HC138三八译码器,根据这个译码器的真值表可知,让1,2,3管脚输入L,L,H的电平就能输出低电平的Y4。
步骤:
1:让led的锁存器打通——Y4C为高电平——74HC573锁存器
2:控制或非门中Y4的输入来控制Y4C——74HC02或非门
3:通过控制译码器中p2.5 p2.6 p2.7管脚让Y4输出0——74HC138译码器
即让p2.5 p2.6 p2.7 输出 0 0 1即可控制led的选通此时给p0口送数输出就是po
代码:
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define led P0
uint i;
sbit HC138_A=P2^5;
sbit HC138_B=P2^6;
sbit HC138_C=P2^7;
void delay(uint a)
{
while(a--);
}
void ledrun()
{
for(i=0;i<8;i++)
{
led=~(0x01<<i);
delay(50000);
}
}
void main()
{
P2=0XA0;
P0=0X00;
P2=0X00;
HC138_A=0;
HC138_B=0;
HC138_C=1;
P0=0X01;
while(1)
{
ledrun();
}
}
如发现错误请诸位雅正!