数码管静态显示原理
74HC573锁存器介绍
74HC573管脚图与真值表
- 当LE为高电平时,输入随着输出的改变而改变
- 当LE为低电平时,输入与输出断开,输出保持原来的值
静态显示原理
程序
#include <reg52.h>
sbit LE_D = P2^6; //LE_D控制显示那个数字
sbit LE_W = P2^7; //LE_W控制第几个数码管显示
void main()
{
//显示的数字
LE_D = 1; //打开锁存器,锁存器输入随着输出变化
P0 = 0xA4; //1010 0100 将数字2存入
LE_D = 0; //关锁存器 锁存器输出保持为0XA4
//显示的位置
LE_W = 1; //锁存器输入随着输出变化
P0 = 0x01; //0000 0001 让第一个数码管显示数字
LE_W = 0; //锁存器数据保存
while(1){} //让程序停在这里
}
Proteus仿真电路图
晶振11.0952 单片机AT89C52 锁存器 74HC573
数码管的静态显示
程序
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit LE_D = P2^6; //LE_D控制显示那个数字
sbit LE_W = P2^7; //LE_W控制第几个数码管显示
uchar num;
uchar code table[] = { //code 数据会放在程序存储器当中,如果不用code就会放在随机存储器当中
0xC0,0xF9,0xA4,0XB0,0x99, //单片机的随机存储器RAM是有限的(51单片机只有128字节)
0x92,0x82,0xF8,0x80,0x98};
void delay(uint time);
void main()
{
LE_W = 1;
P0 = 0xD5; //打开第 1 3 5 的数码管 1101 0101
LE_W = 0;
while(1){
for(num = 0; num < 10; num++){
LE_D = 1;
P0 = table[num]; //每隔1s数据变一下 从0——>9 显示
LE_D = 0;
delay(1000); //1s
}
}
}
void delay(uint time) //delay = 1 ms 0.001s
{
uint y;
uint z;
for(z = time; z > 0; z--){
for(y = 115; y > 0; y--){}
}
}
Proteus仿真电路图