为什么我的数码管动态显示总是一闪一闪的?

qq_30685191 2016-05-16 08:12:13
是一个M0的单片机,其他引脚配置代码我就不放了,主程序怎么让它一直显示,又能定时?
int main()
{
LPC_GPIO2->DIR |=0XFFF;
T32B1_Init();

while(1)
{ T32B1_DelaymMs(500); //定时0.5s
counter++;
Display(counter);

}
...全文
5227 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
niepangu 2016-06-21
  • 打赏
  • 举报
回复
延时时间太长 ,改一下刷新的快一点吧
玉怀一捧雪 2016-06-17
  • 打赏
  • 举报
回复

count = 0;
 while(1)
{	
T32B1_DelaymMs(50);  //定时0.05s
 counter++;
Display(counter/10);	 
if(count >= 90)
count = 0;
}   
w1204011028 2016-05-25
  • 打赏
  • 举报
回复
数码管动态显示时延时不宜过长。可用定时器每隔10ms刷新一次。
rushbrush 2016-05-25
  • 打赏
  • 举报
回复
刷新率保持60 ~ 100HZ。过快过慢,都会有闪烁感。
xiexieken 2016-05-24
  • 打赏
  • 举报
回复
你延时过长了,第一,不管你要显示什么,一般你都要以50Hz以上的频率刷新(<20ms的时间不断显示);第二,当你要显示不同的内容时,再调用函数更换内容。可以这样做: int main() { int times=0; LPC_GPIO2->DIR |=0XFFF; T32B1_Init(); while(1) { T32B1_DelaymMs(20); //定时20ms if(25<=times++) //25*20ms=0.5s { times=0; counter++; } Display(counter); }
fly 100% 2016-05-24
  • 打赏
  • 举报
回复
不停的刷新他
胧霖 2016-05-22
  • 打赏
  • 举报
回复 2
就像楼上说的,可以将数码管显示放到定时器中断函数中,这样就既可以定时,又不会出现数码管闪烁,比如:
void Timer0_ISR(void) interrupt 1
{
    static tmp = 0;

    TH0 = (65536 - 50000) / 256;
    TL0 = (65536 - 50000) / 256;

    Display(counter);
    tmp++;

    if (10 == tmp)
    {
        tmp = 0;
        counter++;
    }
}
abc138929 2016-05-19
  • 打赏
  • 举报
回复
可以在定时的0.5s内一直让它执行显示函数
LubinLew 2016-05-17
  • 打赏
  • 举报
回复
单片机不都自带定时器,用中断服务来定时。 延时时间太长,自然一闪一闪

27,508

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧