打印

简单计数器出现的问题

[复制链接]
1542|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zh08720949|  楼主 | 2010-3-15 10:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大哥,S1为按键,在实验板上,按键达到10以上后,十位没有显示,但有隐约的1显示,不知程序是否出现了问题,请大哥们帮忙看下,程序如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit s1=P3^4;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
uchar num,bai,shi,ge;
void init();
void display(uchar bai,uchar shi,uchar ge);
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);

}
void main()
{
init();
while(1)
{
  if(s1==0)
  {
   delay(2);
   if(s1==0)
   {
    num++;
    if(num==100)
     num=0;
    bai=num/100;
    shi=num%100/10;
    ge=num%10;
    while(!s1);
    delay(2);
    while(!s1);

   
   
   }
   
    display(bai,shi,ge);

  }

}


}
void init()
{
num=0;
bai=0;
shi=0;
ge=0;
dula=1;
P0=0;
dula=0;
wela=0;
}
void display(uchar bai,uchar shi,uchar ge)
{
bai=num/100;
shi=num%100/10;
ge=num%10;
dula=1;
P0=table[bai];
dula=0;
P0=0xff;

wela=1;
P0=0xfb;
wela=0;
delay(1);
dula=1;
P0=table[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(1);
dula=1;
P0=table[ge];
dula=0;               
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(1);
}

}

相关帖子

沙发
liao_fangxing| | 2010-3-15 11:08 | 只看该作者
本帖最后由 liao_fangxing 于 2010-3-15 11:10 编辑

感觉是显示了10位后立即关掉去显示个位了  在显示完10位后加点延时试试

使用特权

评论回复
板凳
zh08720949|  楼主 | 2010-3-15 14:08 | 只看该作者
好的,我试一下看,谢谢

使用特权

评论回复
地板
zh08720949|  楼主 | 2010-3-15 17:05 | 只看该作者
还是有问题啊,当按了9此后,第十次,十位有在按住键盘的时候隐约有个1,但是按完松手后,就不显示了,不知道为什么

使用特权

评论回复
5
liao_fangxing| | 2010-3-15 17:13 | 只看该作者
本帖最后由 liao_fangxing 于 2010-3-15 17:14 编辑

bai=num/100;
shi=num%100/10;  ————将改成shi=1; 测试看看(区分到低是num值的问题,还是显示驱动的问题)
ge=num%10;

PS:建议养成添加括号的习惯

使用特权

评论回复
6
zh08720949|  楼主 | 2010-3-15 17:27 | 只看该作者
好的,谢谢,我试一下看看

使用特权

评论回复
7
xw802| | 2010-8-25 21:08 | 只看该作者
if(s1==0)
  {
   delay(10);
   if(s1==0)
   {
   while(!s1);  
   num++;
    if(num==100)
     num=0;
    bai=num/100;
    shi=num%100/10;
    ge=num%10;
   }   
    display(bai,shi,ge);
  }
按下消抖时间长点,释放消抖放前一点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

11

帖子

0

粉丝