标题:
单片机时钟程序数码管显示会闪烁,怎么才可以解决闪烁问题啊
[打印本页]
作者:
1431936576
时间:
2019-5-15 10:05
标题:
单片机时钟程序数码管显示会闪烁,怎么才可以解决闪烁问题啊
#include "reg51.h"
typedef unsigned int u16;
typedef unsigned char u8;
int shi=0,fen=0,s0=0,s1=0,bittime=0,bitdisplay=0;
unsigned char Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
//P2=Tab[s1];P3=0Xef;
void delay(u16 i)
{
while(i--);
}
void timer0(void) interrupt 1 using 0
{
TH0=(65536-50000)/256;TL0=(65536-50000)/256;
switch(bitdisplay)
{
case 0:P2=Tab[s0];P3=0Xdf;break;
case 1:P2=Tab[s1];P3=0Xef;break;
}
bitdisplay++;
bittime++;
if(bitdisplay==2){bitdisplay=0;}
}
void main(void)
{
TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)/256;
EA=1;ET0=1;TR0=1;
while(1)
{
if(bittime==20)
{
bittime=0;
s0++;
}
if(s0==10)
{
s0=0;
s1++;
}
}
}
作者:
wulin
时间:
2019-5-15 12:28
本帖最后由 wulin 于 2019-5-15 16:40 编辑
把定时器中断周期设置由50ms改为1~5ms即可消除闪烁
作者:
jmkl128
时间:
2019-5-15 17:49
TH0=(65536-50000)/256;TL0=(65536-50000)/256;
这是刷新时间,50ms一次,太长了,改为TH0=(65536-5000)/256;TL0=(65536-5000)%256;或者更小
作者:
fengyou
时间:
2019-5-15 22:02
延时长一点试试
作者:
liushangming
时间:
2019-5-16 14:39
消影,中断时间变短
作者:
达达尼安
时间:
2019-5-16 15:37
现实前要有消影操作就好了。
作者:
zsj150
时间:
2019-5-16 15:53
加入消影,然后把终端的时间变短点就好了
作者:
三感
时间:
2019-5-16 16:07
延时函数不能设置太长,要短
作者:
madao_kang
时间:
2019-5-16 17:44
中断时间改短啊,要不是肯定会闪烁的,通常每个com有100hz差不多了
作者:
酸葡萄
时间:
2019-5-16 18:19
改一下延迟
作者:
雨落
时间:
2019-5-20 23:58
延时过短,也可能是电压不稳
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1