八个数码管单独依次显示0-9,然后所有数码管同时显示0-f,如此循环
#include "reg52.h"
unsigned char code SMG_duanma[18]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,
0xbf,0x7f};//01234567 89ABCDEF -.
void delay(int n)
{
while(n--);
while(n--);
}
void Init_Hc138(int n) //译码器选择
{
switch (n)
{
case 4:
P2=(P2 & 0x1f) | 0x80;
break; //让Y4输出低电平
case 5:
P2=(P2 & 0x1f) | 0xa0;
break; //让Y5输出低电平
case 6:
P2=(P2 & 0x1f) | 0xc0;
break; //让Y6输出低电平
case 7:
P2=(P2 & 0x1f) | 0xe0;
break; //让Y7输出低电平
}
}
void Output_P0(unsigned char channel,unsigned char dat)
{
Init_Hc138(channel);
P0=dat; //P0口输出数据
}
void main()
{
int i,j;
while(1)
{
for(j=0;j<9;j++)
{
for(i=0;i<10;i++)
{
Output_P0(6,0x01<<j);
Output_P0(7,SMG_duanma[i]);
delay(60000);
}
}
for(i=0;i<17;i++)
{
Output_P0(6,0xff);
Output_P0(7,SMG_duanma[i]);
delay(60000);
}
}
}