是驅動LED數碼管吧,下面是程序和電路,顯示0~7,不過要註意的是時間電路中要接上晶振和復位電路。
#include?<reg52.h>
#define?uint?unsigned?int
#define?uchar?unsigned?char
sbit?DULA?=?P3^0;
sbit?WELA?=?P3^1;
uchar?code?table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71
};
uchar?num;
void?DelayMs(uint);
void?main()
{
P2?=?0x00;
while?(1)
{
for?(num=0;?num?<?8;?num++)
{
P2=0x00;
P2=~(1<<num);//送位碼
WELA=1; ?//鎖存位碼
WELA=0;
P2=table[num]; //送段碼
DULA=1; //鎖存段碼
DULA=0;
DelayMs(2);
//DelayMs(300);//
}
}
}
void?DelayMs(uint?z)
{
uint?x,y;
for(x?=?z;x?>?0;?x--)
{
for(y?=?110;?y?>?0;?y--);
}
}