微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 6位数码管动态显示,延时5ms,第6位数码管为什么不亮

6位数码管动态显示,延时5ms,第6位数码管为什么不亮

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit w1=P2^1;
sbit w2=P2^2;
sbit w3=P2^3;
sbit w4=P2^4;
sbit w5=P2^5;
sbit w6=P2^6;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delayms(uint);
void main()
{
  while(1)
    {
        w1=0;
        w2=1;
        w3=1;
        w4=1;
        w5=1;
        w6=1;    //打开第一个数码管
        P0=table[1];  //送入数字1
        delayms(5);   //延迟5ms
  
        w1=1;
        w2=0;
        w3=1;
        w4=1;
        w5=1;
        w6=1;   
        P0=table[2];  
        delayms(5);
   
       w1=1;
       w2=1;
       w3=0;
       w4=1;
       w5=1;
       w6=1;   
       P0=table[3];
       delayms(5);

       w1=1;
       w2=1;
       w3=1;
       w4=0;
       w5=1;
       w6=1;   
       P0=table[4];
       delayms(5);
  
       w1=1;
       w2=1;
       w3=1;
       w4=1;
       w5=0;
       w6=1;   
       P0=table[5];
       delayms(5);
      
       w1=1;
       w2=1;
       w3=1;
       w4=1;
       w5=1;
       w6=0;      
       P0=table[6];
      delayms(5);  
    }
  
}
void delayms(uint ms)
{
  uint i,j;
     for(i=ms;i>0;i--)
      for(j=100;j>0;j--);
}
希望各位大大教一下。感激不尽。  

如果延时500ms的话,6位数码管会按照先后顺序,由1,2,3,4,5,6循环显示。但是现在延时5ms的时候第6位数码管 ...


我也搞不明白了, 同问

找个硬件实试一下,这软件仿真不一定正确,仿真成功,下到硬件上多半用不了,所以最好用实物

这个程序的话应该是可行的吧

硬件的话,板子上面没有数码管,手头条件有限,只有液晶屏的,所以用仿真试试

数组下标从零开始的,你确定都对了 我不清楚16进制

程序看着没问题哈

这个应该是对的

你试试把第六个延时函数的时间改到500ms,别的不用改,试试看。当你把所有的延时函数改为5ms时,这就是所谓的动态显示,你应该懂吧。也可能是仿真软件的问题,我不太清楚,我是直接买了板子学的。希望对你有些帮助,我也在学习。共同加油啊,我QQ1650230295,有问题加我。可以一起学习。

的确,第六位没显示

好好学习天天向上

仿真软件的问题,你可以试试调一下仿真的时间,再不行就下载到硬件上,没学习板可以自己焊一个,网上大把电路图,很简单的,价格不贵

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

网站地图

Top