//你的程序改起來好辛苦,從新寫了個,你試試
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^0;
uchar bai,shi,ge;
uint code table[]=
{0x3f,0x06,0x5b,0x4f,0x66,0x6d,
0x7d,0x07,0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71}; //共陰極數碼管
void delay(uchar xms)//x毫秒的延時程序,你的延時程序問題太大了,while不是那么用的
{
uchar i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void display()//顯示程序
{
P3=0xff;//清屏
delay(5);
P3=0xfe;//位選
P2=table[bai];
delay(5);
P3=0xff;
delay(5);
P3=0xfd;
P2=table[shi];
delay(5);P3=0xff;
delay(5);
P3=0xfb;
P2=table[ge];
delay(5);
}
void keyboard()//鍵盤掃描程序
{
if(k1==0)
{
delay(10);
if(k1==0)
{
while(!k1);//等待按鍵釋放
ge++;
if(ge>9)
{
ge=0;
shi++;
}
if(shi>9)
{
shi=0;
bai++;
}
if(bai>9)
{
ge=0;
shi=0;
bai=0;
}
}
}
}
void main()
{
bai=0;
shi=0;
ge=0;
while(1)
{
display();
keboard();
}
|