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

我写了一个,不过有问题(我的数码管为共阴极)。不能正常显示,求大神给我指点指点,帮我修改一下。如果有更好的,也可以帮忙写一个。谢谢了,急用。用C语言#include<re... 我写了一个,不过有问题(我的数码管为 共阴极)。不能正常显示,求大神给我指点指点,帮我修改一下。如果有更好的,也可以帮忙写一个。谢谢了,急用。用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--);
}
展开
 我来答
liuzhou_huang
2015-05-01 · TA获得超过980个赞
知道小有建树答主
回答量:795
采纳率:93%
帮助的人:262万
展开全部
试着把P0=00放到jsq_s=1,后面,各位的也一样!!!
更多追问追答
追问
不行啊

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式