求一个74HC595驱动四位八段数码管的单片机程序,要求有两个参数的显示函数,一个是位,一个是显示的数字?

2025-03-13 01:30:06
推荐回答(1个)
回答1:

#include

sbit duan=P1^0;

sbit wei=P1^1;

int code shu[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

int t,temp,bai,shi,ge;

void display(int,int,int);

void delay(int);

void init();

void main()

{ init();

 while(1)

  {if(t==20)

{t=0;

temp++;

if(temp==100)

temp=0;

bai=temp/100;

shi=temp%100/10;

ge=temp%10;

}

display(bai,shi,ge);

}

}



void init()

{t=0;

temp=0;

TMOD=0x01;

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

EA=1;

ET0=1;

TR0=1;

}




void timer() interrupt 1

{ TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

t++;

}



void display(int bai,int shi,int ge)

{  wei=1;

P0=0xfe;

wei=0;

duan=1;

P0=shu[bai];

duan=0;

delay(5);

P0=0xff;


 wei=1;

P0=0xfd;

wei=0;

duan=1;

P0=shu[shi];

duan=0;

delay(5);

P0=0xff;


wei=1;

P0=0xfb;

wei=0;

duan=1;

P0=shu[ge];

duan=0;

delay(5);

P0=0xff;

}



void delay(int time)

{int m;

while(time--)

for(m=0;m<110;m++);

}




我这个只用了三位数码管,不过意思是一样的,你看了会明白