动态数码管显示程序74HC573
小编自己写的,很简单,不做解释了,仅供参考.
.h文件,放到自己工程下稍作修改就可以用.
#ifndef __SMG_573_H__
#define __SMG_573_H__
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
//段选信号和位选信号的锁存器控制
sbit dula=P2^6; //段选信号的锁存器控制
sbit wela=P2^7; //位选信号的锁存器控制
//数码管各位的码表
unsigned char code SMG_wei[]={0x00,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
//0-f的码表,共阴数码管,16为O,17为C,18为.,19为-;
unsigned char code SMG_duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x63,0x39,0x80,0x40};
//延时函数
void delay_SMG_573(unsigned int i)
{
unsigned int m,n;
for(m=i;m>0;m--)
for(n=90;n>0;n--);
}
//数码管显示,注意wei取值1--8,duan取值0--15
void SMG_573(uchar wei,uchar duan)
{
P0=SMG_wei[wei];
wela=1;
wela=0;
P0=SMG_duan[duan];
dula=1;
dula=0;
delay_SMG_573(2);
//时间间隔短,这是关键(所谓的同时显示,只是间隔较短而已,利用人眼的余辉效应,觉得每个数码管都一直在亮)。
}
#endif