用51单片机设计一个数码管计时器程序。从00~~59,增加一个用一秒钟。

我写了一个,不过有问题(我的数码管为 共阴极)。不能正常显示,求大神给我指点指点,帮我修改一下。如果有更好的,也可以帮忙写一个。谢谢了,急用。用C语言
#include<reg52.h>
#include<hjc52.h>
#define uchar unsigned char
#define uint unsigned int

uchar code table[]={0x3f,0x06,0x5b,
0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

sbit jsq_s = P2^0; //定义数码管阳级控制脚(十位)
sbit jsq_g = P2^1; //定义数码管阳级控制脚(个位)

//函数声明:
void display(unsigned char da);//定义显示函数,参数为显示内容,只显示两位数
void delay(void);

void main(void)
{
uchar i=0; //作为查表的索引号
uchar ldata; //变量用作0~59计数
uint j; //此变量作为计数跳变刷新时间
while(1)
{
j=5000;
while(j--){
display(ldata); //刷新5000次,约1秒,注:在C语言里是没有周期可计算的哦~~~
}
if(ldata<59)
ldata++; //刷新完成约1秒,变量做加计数
else
ldata=0;
}
}

void display(unsigned char da)
{
jsq_s=0; //选择十位数码管
P0=table[da/10]; //获取十位值,查表输出定义好的数码管段值与P0口,显示相应的0-9
delay(); //延时
P0=0x00; //清除数码管显示,因是共阴型,所以是0
jsq_s=1; //关闭十位数码管

jsq_g=0; //选择个位数码管
P0=table[da%10]; //获取个位值,查表输出定义好的数码管段值与P0口,显示相应的0-9
delay(); //延时
P0=0x00; //清除数码管显示,因是共阴型,所以是0
jsq_g=1; //关闭个位数码管
}

//延时子函数,短暂延时
void delay(void){
unsigned char i=10;
while(i--);
}

试着把P0=00放到jsq_s=1,后面,各位的也一样!!!追问

不行啊

为什么都在同步闪

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答