微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于两位数码管显示00-99的问题,只能记偶数,奇数无法显示

关于两位数码管显示00-99的问题,只能记偶数,奇数无法显示

时间:10-02 整理:3721RD 点击:
#include <regx51.h>
unsigned char code table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code table2[]={0x7f,0xbf};
unsigned char  table3[2];
int count=0;
unsigned char i=0;
/********************Delay function************************/
void delay(unsigned int t)
{
        unsigned char i=250;
        while(t--)while(i--);
}
/**********************Display function********************/
void smg( int count)                        //数码管显示2位数字
{
table3[0]=count%10;                       
table3[1]=count/10;       
P3= table2[i];                       
P0=table1[table3[i]];         //送出段选数据
delay(20);        
i++;                                             //扫描指针加计数
if(i==2)
i=0 ;       
       
        }
/**********************Main function*************************/
void main()
{
            count=0;
                P0=0x00;
          while(1)
                 {
                          smg(count);
                          count++;
                          if(count==100)   //循环计数
                          count=0;       
                }
        }

void smg( int count)                        //数码管显示2位数字
{
table3[0]=count%10;                        
table3[1]=count/10;        
P3= table2[i];                        
P0=table1[table3[i]];         //送出段选数据
delay(20);
i++;        
P3= table2[i];                        
P0=table1[table3[i]];         //送出段选数据
delay(20);
i=0 ;        
    }这样改试试看

你的void smg( int count) 函数有问题
你的i变量肯定是为了让它扫描
但是扫描循环你没写
所以它变成了:第一次调用smg函数,i=0,P3=table2[0],P0=table1[0];i=1;回主函数count=1
第二次调用smg函数,i=1,P3=table2[1],P0=table1[0],i=0;回主函数count=2
第3次,i=0,P3=table3[0],P0=table1[2],i=1;回主函数count=3
第4次,i=1,P3=table3[0],P0=table1[0],i=0;回主函数count=4
所以出问题,该给显示加个循环扫描

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

网站地图

Top