小白请教一下关于动态数码管显示

lllena 2011-04-09 05:34:27
我想要实现一个能够自动计数的,可以从0-9,或是0-99.......!但是我一直实验不成功,请各位大侠看看我这段代码那里错了。

#include <reg52.h>
sbit LATCH1=P2^2;
sbit LATCH2=P2^3;
unsigned char code WeiMa[]={0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f} ;

unsigned int code DuanMa[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71} ;
unsigned int TempData[8]={0,0,0,0,0,0,0,0};
void delayms (int z);
void display(unsigned char FirstBit,unsigned char Num);

void mian ()
{
unsigned char num=0;
unsigned int j;
while (1)
{
j++;
if (j==500)
{
j=0;
num++;
if (num==10)
num=0;
}
TempData[0]=DuanMa[num];
display(2,1); //2表示从第几位开始 1表示有几个数码管显示。
}
}

void display(unsigned char FirstBit,unsigned char Num)
{
unsigned char i;
for (i=0;i<Num;i++)
{
P0=0x00;
LATCH1=1;
LATCH1=0; //消影

P0=WeiMa[i+FirstBit];
LATCH2=1;
LATCH2=0;

P0=TempData[i];
LATCH1=1;
LATCH1=0;

delayms(200);
}
}

void delayms (int z)
{
unsigned x,y;
for (x=z;x>0;x--)
for (y=123;y>0;y--);
}
...全文
95 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lllena 2011-04-09
  • 打赏
  • 举报
回复
还有我那个延时也太长了,用了j延时,还用delayms延时,这俩个重叠了。希望和我一样的白白以后要细心了。
lllena 2011-04-09
  • 打赏
  • 举报
回复
啊!晴天霹雳呀,这个错误我以前犯过,绝对不能有下次啦!
yuanhaididai 2011-04-09
  • 打赏
  • 举报
回复
void mian () 这个错了。main才对。
lllena 2011-04-09
  • 打赏
  • 举报
回复
我是刚开始学习C51的,对这些还不是很懂,遇到问题了,纠结了好久,无奈只好来论坛里求助了。

27,383

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧