找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5576|回复: 4
打印 上一主题 下一主题
收起左侧

计数器出现的问题

[复制链接]
跳转到指定楼层
楼主
ID:22007 发表于 2010-3-15 10:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

各位大哥,T0为按键,在51hei-5实验板上,按键达到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);


}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:22246 发表于 2010-3-15 13:36 | 只看该作者
上面的程序 ,我这里的的运行情况也是,按下T0 键,数码管的个位 按一次 递增一次,十位有隐约的1显示,高手快出来啊。
回复

使用道具 举报

板凳
ID:1 发表于 2010-3-15 14:23 | 只看该作者

我刚才看了半天 帮你搞定了.

原因在于    display(bai,shi,ge); 这一行  你写错了位置,和下面那个 } 对调一下位置就行了, 建议以后写程序规范一点,大括号 要对其,就不会出这样的错误了

[此贴子已经被作者于2010-3-15 14:28:45编辑过]
回复

使用道具 举报

地板
ID:77896 发表于 2015-6-23 18:05 | 只看该作者
试了一下,还不错的!
回复

使用道具 举报

5#
ID:84425 发表于 2015-7-1 07:28 来自手机 | 只看该作者
尚天的我为你 发表于 2015-6-23 18:05
试了一下,还不错的!

怎么感觉你的十位表达有问题呢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表