标题: 数码管显示变化数字出现重影 [打印本页]

作者: 742969546    时间: 2016-7-31 20:14
标题: 数码管显示变化数字出现重影
#include<reg52.h>
#include <intrins.H>
#define uchar unsigned char
#define uint  unsigned int

//数码管的段码编码
uchar DATA_LED_Point[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
uchar BIT_LED[]={0xfe,0xfd,0xfb,0xf7,0xef};//定义需要点亮的数码管,从左往右5~1数码管
uchar disp[5];
uchar led_bit;
uchar timer_count=0;
uint num=0;

void delay_1ms(uchar t)               //延时1*t个ms      
{
    uchar a,b;
    for(b=t;b>0;b--)
        for(a=148;a>0;a--);
}


void InitTimer0(void)                 //2ms
{
    TMOD = 0x01;
    TH0 = 0x0Fc;
    TL0 = 0x018;
    EA = 1;
    ET0 = 1;
    TR0 = 1;
}


void Timer0Interrupt(void) interrupt 1
{
        uint j;
    TH0 = 0x0fc;
    TL0 = 0x018;
        timer_count++;
        if(timer_count==10)
        {
                        timer_count=0 ;
                        for(j=0;j<5000;j++)
                        {
                                disp[4]=num/10000;
                                disp[3]=(num%10000)/1000;                           /*取实际值的十位*/
                        disp[2]=(num%1000)/100;                       /*取实际值的个位*/
                        disp[1]=(num%100)/10;                           /*取设定值的十位*/
                        disp[0]=num%10;                           /*取设定值的个位*/
                                P0=BIT_LED[led_bit];
                                P2=0xff;
                              delay_1ms(1) ;
                                P0=BIT_LED[led_bit];
                                P2=DATA_LED_Point[disp[led_bit]];
                                delay_1ms(3) ;
                                led_bit++;
                                if(led_bit>5)
                                {   
                                   led_bit=0;
                                }
                        }
        }
}
void main()
{
        InitTimer0();
        while(1)
        {       
              num++;
                if(num>65535)
                  num=0;
                                        
        }
}

作者: jubaolun    时间: 2016-8-1 08:53
显示要加点延时,如果传送的数据太快,就会这样.
作者: 大Angel101    时间: 2016-8-1 14:28
速度没到位
作者: 760656130    时间: 2016-8-1 18:48
要加延时的
作者: helloccz    时间: 2016-8-2 17:28
加延时进行消影
作者: A6叶箫    时间: 2016-8-2 22:37
学习一下
作者: 小奇~    时间: 2016-8-6 16:24
你用的是动态扫描 每一位显示的时间应该快一点
作者: 别哈皮    时间: 2016-8-6 21:27
那是所谓的鬼影,在要改变下一个数码管的显示内容时,要将数码管段选全部全部关闭,改变完成后,再将相应数码管位选通
作者: xljxlj    时间: 2016-8-7 13:00
你把数字调慢点,发光二极管有余辉的。
作者: zjx666    时间: 2016-8-7 13:36
扫描第一个完时,关掉,延时一下,再扫描第二个;或扫描频率减小(加大延时)




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