|
#include<reg52.h>
sbit WEI = P1^6;
sbit DU = P1^7;
sbit key1 = P3^4;
unsigned char DISP_smg[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
#define uchar unsigned char // 8bit, 0 ~ 255
#define uint unsigned int // 16bit, 0 ~ 65,535
void delayms(uint m) // 11.0592MHz 晶振ms延时,偏差小于1%
{
uint i, j;
for(i=m; i>0; i--)
for(j=114; j>0; j--);
}
void main()
{
unsigned char C0 = 0;
unsigned char i = 0;
DU = 0;
P0 = 0x00;
DU = 1;
while(1)
{
WEI = 1;
P0 = 0x7f;
WEI = 0;
DU = 1;
P0 = DISP_smg;
delayms(10);
WEI = 1;
P0 = 0xbf;
WEI = 0;
DU = 1;
P0 = DISP_smg[C0];
delayms(10);
i=i+1;
if(i==10)
{
i=0;
C0=C0+1;
}
if(C0==10)
C0=0;
while(i==9&&C0==9)
{
i=9;
WEI = 1;
P0 = 0x3F;
WEI = 0;
DU = 1;
P0 = DISP_smg;
delayms(10);
}
if(key1==0)
{
delayms(5);
if(key1==0)
{
i=i;
C0=C0;
while(!key1);
}
}
}
}
1.为什么我按下按键 只能让数码显示十位,求解更适合的程序能让按键按住时显示当前数值,弹起时继续计数?
2.while(i==9&&C0==9)
{
i=9;
C0=9;
}
在我的程序中,为什么我用这一句程序不能使数码管到达99就停止。反而数码管只显示十位的数,个位没有显示。
3.就是由于第二个的原因,我增加按键的程序,所以我暂停数码显示结果只能显示十位,求方法解决?
|
|