找回密码
 立即注册

QQ登录

只需一步,快速开始

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

从000加到999的跑表,按键停止,松手继续走,为什程序写好后个位不能正常显示,

[复制链接]
跳转到指定楼层
楼主
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code  table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uint temp,bai,shi,ge,a,aa;
sbit wela=P2^7;
sbit dula=P2^6;
sbit key1=P3^4;
void init();
void delay(uint xm)
{
  uint i,j;
  for(i=xm;i>0;i--)
    for(j=110;j>0;j--);
}
void display(uchar aa,uchar bb,uchar cc);
void main ()
{
   init();
  

  while(1)
   {
   if(key1==0)
     {
        delay(5);
      if(key1==0)
      TR0=0;//按键时关闭计时器1
     }
    while(!key1)
     {
      delay(5);
      while(!key1)
       TR0=1;
      }
    display(bai,shi,ge);
   }
    }


void timer_0() interrupt 1
{

  
  TH0=(65536-10000)/256;
  TL0=(65536-10000)%256;

  
    temp++;
    if(temp==999)
     temp=0;
    bai=temp/100;
    shi=temp%100/10;
    ge=temp%10;
  }

void init()
{
  temp=0;
  TMOD=0x01;
  TH0=(65536-10000)/256;
  TL0=(65536-10000)%256;
  EA=1;
  ET0=1;
  TR0=1;
}

void display(uchar aa,uchar bb,uchar cc)
{
  P0=0xff;
  dula=1;
  P0=table[aa];
  dula=0;

  wela=1;
  P0=0xfe;
  wela=0;
  delay(1);
        dula=1;
  P0=table[bb];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xfd;
  wela=0;
  delay(1);
  dula=1;
  P0=table[cc];
  dula=0;
  P0=0xff;
  wela=1;
  P0=0xfd;
  wela=0;
  delay(1);//如果延时100的话就正常显示,其他位会闪烁
      
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:225054 发表于 2017-9-11 21:05 来自手机 | 显示全部楼层
素还真 发表于 2017-9-11 19:38
temp=0;     bai=temp/100;     shi=temp%100/10;     ge=temp%10;   }      这个个位计算错误了,暂时就 ...

temp%10教材上就这样求的啊,我调试的时候个位上也能岀数,你能把你的方法告诉我吗?谢谢
回复

使用道具 举报

板凳
ID:225054 发表于 2017-9-12 12:08 来自手机 | 显示全部楼层
wulin 发表于 2017-9-12 10:32
给你按键程序和显示程序改了一下,显示程序放在中断,1ms刷新1次,之间互不干扰。
#include
#define ucha ...

个位还是不行啊,感觉是10ms中断时间太短了的问题吧,哎单片机真难
回复

使用道具 举报

地板
ID:225054 发表于 2017-9-12 12:09 来自手机 | 显示全部楼层
mengzhixinheng 发表于 2017-9-11 21:38
这样写本身就不能正常实现功能,你想想按键按下时数码管的状态就明白了;你想要的功能最好用中断按键或者状 ...

能不能给个例程?谢谢
回复

使用道具 举报

5#
ID:225054 发表于 2017-9-12 12:11 来自手机 | 显示全部楼层
素还真 发表于 2017-9-12 09:52
如果你的个位显示是百位十位重合部分的话,那就是你的位选错误导致的,因为引脚不操作情况默认高电位,显示 ...

个位位选改了还是不行。如果加长个位延时时间就可以正常显示
回复

使用道具 举报

6#
ID:225054 发表于 2017-9-12 15:04 来自手机 | 显示全部楼层
wulin 发表于 2017-9-12 13:23
这个程序已在TX-1C实验板验证无误,你要查查硬件。

我就是天祥的板子啊
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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