野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 21937|回复: 4

LCD怎样刷新显示的变量值才不闪烁?

[复制链接]
发表于 2013-10-9 23:52:02 | 显示全部楼层 |阅读模式
我用STM32写了一个DS18B20的程序,显示的时候用LCD_Rectangle(20,90,200,20,WHITE)加延时来刷新,但是有个问题是在屏幕上看总是闪烁,如果不用LCD_Rectangle(20,90,200,20,WHITE);        刷新则会出现变量值重叠显示的情况,我该怎么改才能在不闪烁的情况下正常显示并能刷新变量值?
回复

使用道具 举报

发表于 2013-10-10 00:14:07 | 显示全部楼层
先显示字符,然后接着后面的位置,再刷干净它 就可以。

参考 一下 k60 的代码呗。就开头Site_t 是个坐标 结构体,即 x 和 y
[code=cpp]/*!
*  @brief      显示数字(清空多余的位)
*  @param      site            左上角坐标
*  @param      num             数字
*  @param      max_num_bit     最大的位数
*  @param      Color           字体颜色
*  @param      bkColor         背景颜色
*  @since      v5.0
*  Sample usage:        Site_t site = {10,20};   //x = 10 ,y = 20
                        LCD_num_BC(site,123,5, BLUE,RED);
*/
void LCD_num_BC(Site_t site, uint32 num, uint8 max_num_bit, uint16 Color, uint16 bkColor)
{
    uint32 res = num;
    uint8 t = 0;
    Site_t sitetemp;
    Size_t size;

    sitetemp.y = site.y;

    if( num == 0 )
    {
        LCD_char(site, '0', Color, bkColor);

        site.x += 8;
        size.H  = 16;
        size.W  = 8 * (max_num_bit - 1);
        LCD_rectangle(site, size, bkColor);

        return;
    }
    while( res )            /*得到数字长度t*/
    {
        res /= 10;
        t++;
    }
    if(t >= max_num_bit )    //限制最大长度
    {
        t = max_num_bit;
    }

    res = t;

    while( t != 0 )
    {
        sitetemp.x = site.x + (8 * (t--) - 8);
        LCD_char(sitetemp, (num % 10) + '0', Color, bkColor);
        num /= 10 ;
    }

    if(res != max_num_bit )
    {
        size.W = 8 * (max_num_bit - res);
        site.x += (8 * res);
        size.H  = 16;
        LCD_rectangle(site, size, bkColor);
    }
}[/code]
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-10-10 00:29:17 | 显示全部楼层
风落小鱼 发表于 2013-10-10 00:14
先显示字符,然后接着后面的位置,再刷干净它 就可以。

参考 一下 k60 的代码呗。就开头Site_t 是个坐标 ...

我也是这个用法,是可以刷新,但是数字会闪烁,我要的是不闪烁的效果并且能刷新...
回复 支持 反对

使用道具 举报

发表于 2013-10-10 10:19:34 | 显示全部楼层
天狼星 发表于 2013-10-10 00:29
我也是这个用法,是可以刷新,但是数字会闪烁,我要的是不闪烁的效果并且能刷新...

不会 闪烁的 ,我现在就是用着。
回复 支持 反对

使用道具 举报

发表于 2013-10-10 11:24:34 | 显示全部楼层
天狼星 发表于 2013-10-10 00:29
我也是这个用法,是可以刷新,但是数字会闪烁,我要的是不闪烁的效果并且能刷新...

注意一定,我是 显示完后,把多余的后面内容 刷新 一次,不是先刷新,再显示
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-23 17:11 , Processed in 0.027670 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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