标题: 为什么这个程序延迟减少了数码管会乱码了 [打印本页]

作者: 博门    时间: 2017-5-24 10:38
标题: 为什么这个程序延迟减少了数码管会乱码了
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit P2_2=P2^2;
sbit P2_3=P2^3;
sbit P2_4=P2^4;
typedef unsigned char u8;
typedef unsigned int u16;
u8 code wel[10]={0x06,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,};
void display(unsigned long);
void delay(uint);               
void main(void)
{
   display(12345678);           /*输入8位数*/
}
void display(unsigned long x)
{
        uint i;
        for(i=0;i<8;i++)
        {
                switch(i)
                {
                        case 0:        P2_2=0;P2_3=0;P2_4=0;P0=wel[x%10];        break;
                        case 1:        P2_2=1;P2_3=0;P2_4=0;P0=wel[(x/10)%10];         break;
                        case 2:        P2_2=0;P2_3=1;P2_4=0;P0=wel[(x/100)%10];   break;
                        case 3:        P2_2=1;P2_3=1;P2_4=0;P0=wel[(x/1000)%10];        break;
                        case 4:        P2_2=0;P2_3=0;P2_4=1;P0=wel[(x/10000)%10];        break;
                        case 5:        P2_2=1;P2_3=0;P2_4=1;P0=wel[(x/100000)%10];         break;
                        case 6:        P2_2=0;P2_3=1;P2_4=1;P0=wel[(x/1000000)%10];  break;
                        case 7:        P2_2=1;P2_3=1;P2_4=1;P0=wel[(x/10000000)];         break;
                }
                delay(50000);
        }
}
void delay(uint y)
{
        while(y--);
}

测试项目.rar

294.52 KB, 下载次数: 3

仿真文件


作者: cjr51    时间: 2017-5-24 15:25
应该与人眼对光的反应速度有关,延时太小,人眼还没反应出数字是多少就到下一个数字了
作者: esdd    时间: 2017-5-24 15:38
我感觉延迟有问题
作者: haojie6    时间: 2017-5-24 17:06
刷新速度太快了,数码管还没完全点亮,就闪到下一个了




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1