微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 数码管 动态显示 逢十进一 求修改

数码管 动态显示 逢十进一 求修改

时间:10-02 整理:3721RD 点击:
我的程序 显示的是一闪一闪的,  扫描的速度是不是不对呀,请大师给改正一下,有好的程序给推荐一个。#include<reg52.h>#define   uint  unsigned  int
#define   uchar  unsigned  char
uchar  code  table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,};       
void   anjian();
void  delayms(uint);
void  main()
{
   while(1)
   {              
         uchar  shi,ge;       
         uint  num;  //分离两个分别显示的数
  shi=num/10;
  ge=num%10;
  P1=0xfe;
  P0=table[shi];         //送十位段数据
  delayms(10);
  P1=0xfd;
  P0=table[ge];           //送各位段数据
  delayms(500);
   num++;
    if(num==90)
          {
            num=0;
           }
   }          
}
void  delayms( uint  xsm)
{
    uint i,j;
          for (i=xsm;i>0;i--)
           for(j=110;j>0;j--);
}

把 uchar  shi,ge;        
         uint  num;这个放到while(1)的外面,
还有
  P1=0xfe;
  P0=table[shi];         //送十位段数据
  delayms(10);
还有
  P1=0xfd;
  P0=table[ge];           //送各位段数据
  delayms(500);
在段选和位选之间加一个消抖语句,和延时一下
  P1=0xff;
  P1=0xfe;
  delay(5);
  P0=table[shi];         //送十位段数据
  delayms(10);
下面的同样
  还有下面那个delay(500);延时太长了调小一点

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top