找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6778|回复: 9
收起左侧

数码管显示变化数字出现重影

[复制链接]
ID:82231 发表于 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;
                                        
        }
}
回复

使用道具 举报

ID:105206 发表于 2016-8-1 08:53 | 显示全部楼层
显示要加点延时,如果传送的数据太快,就会这样.
回复

使用道具 举报

ID:135675 发表于 2016-8-1 14:28 | 显示全部楼层
速度没到位
回复

使用道具 举报

ID:135715 发表于 2016-8-1 18:48 | 显示全部楼层
要加延时的
回复

使用道具 举报

ID:87568 发表于 2016-8-2 17:28 | 显示全部楼层
加延时进行消影
回复

使用道具 举报

ID:135832 发表于 2016-8-2 22:37 | 显示全部楼层
学习一下
回复

使用道具 举报

ID:136154 发表于 2016-8-6 16:24 | 显示全部楼层
你用的是动态扫描 每一位显示的时间应该快一点
回复

使用道具 举报

ID:136176 发表于 2016-8-6 21:27 | 显示全部楼层
那是所谓的鬼影,在要改变下一个数码管的显示内容时,要将数码管段选全部全部关闭,改变完成后,再将相应数码管位选通
回复

使用道具 举报

ID:136110 发表于 2016-8-7 13:00 | 显示全部楼层
你把数字调慢点,发光二极管有余辉的。
回复

使用道具 举报

ID:65880 发表于 2016-8-7 13:36 | 显示全部楼层
扫描第一个完时,关掉,延时一下,再扫描第二个;或扫描频率减小(加大延时)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表