标题:
数码管显示变化数字出现重影
[打印本页]
作者:
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