数码管实验

原理:数个LED灯形成的数码管


主板上LED接口:

LED数码管上的接口:

主板和LED数码管插口的对应接线图:

74HC573锁存器:

74HC573锁存器的特点:
1. OE非等于0,LE等于1的时候,输入和输出是相同的;
2. 当LE等于低电平(0),不管D0-D7怎么改变,(Q0-Q7)输出都会保持上一次的输入状态(D0-D7),这种状态就叫做锁村。
接线:

LED数码管一般都是共阳极的,单片机的P0口一般都不带有上拉电阻,而其他口都有,这里要加一个10k的上拉电阻。
效果:显示0

放大图:
MCU:

74HC573:

数码管:

Keil代码:
#include <reg52.h>
#define u16 unsigned int
#define u8 unsigned char
#define DATA P0 // P0端口,用于输出控制每个LED数码管的七段码显示情况
sbit seg_sel = P1^4; // 控制74HC573的LE口的高低电平输出情况(锁存器一)
sbit bit_sel = P1^5; // 控制74HC573的LE口的高低电平输出情况(锁存器二)
// 延迟函数
void delay(u16 time)
{
u16 x, y;
for(x=time; x>0; x--)
{
for(y=110; y>0; y--)
{
// 延迟1ms左右
}
}
}
// 主函数
void main(void)
{
// 端口初始化
P0 = 0xFF;
P1 = 0xFF;
// LE禁止锁存,即为低电平的时候
seg_sel = 0;
bit_sel = 0;
while(1)
{
// bit_sel
bit_sel = 1; // 保证Q[7..0]=D[7..0]
DATA = 0x80; // 要点亮的LED灯为高电平
bit_sel = 0; // LE引脚从1-->0,把Q端状态锁存起来,即DATA=0x80这个状态锁存起来,BIT[7..0]=0x80
delay(5);
// seg_sel
seg_sel = 1; // 保证Q[7..0]=D[7..0]
DATA = 0xC0; // 输出0的段码,即数字0
seg_sel = 0; // 保持状态
delay(5);
}
}

浙公网安备 33010602011771号