OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3841|回复: 8

LCD为啥一直在闪,怎么改可以让它稳定显示?

[复制链接]

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
发表于 2018-3-28 20:26:32 | 显示全部楼层 |阅读模式
int main()
{
        //u8 key_value;
        KEY_Init();
        delay_init();
        uart_init(115200);
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        Motor_PWM(899,0);         
        LCD_Init();
        while(1)
        {
                POINT_COLOR=RED;
               
                //key_value = KEY_Scan(1);
                //LCD_Clear(RED);
                POINT_COLOR=RED;          
                LCD_ShowString(30,100,210,16,16,"Please input password:");
                LCD_Clear(RED);               
        }
       
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2018-3-28 22:20:46 | 显示全部楼层
你这LCD_Show()和LCD_Clear()中间加上一个延时函数在看一下闪不闪
回复 支持 反对

使用道具 举报

0

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2018-3-14
在线时间
19 小时
发表于 2018-3-29 08:39:42 | 显示全部楼层
while的速度不够快,或者速度过快LCD跟不上
回复 支持 反对

使用道具 举报

19

主题

246

帖子

0

精华

高级会员

Rank: 4

积分
608
金钱
608
注册时间
2017-9-21
在线时间
171 小时
发表于 2018-3-29 08:51:36 | 显示全部楼层
刷全屏速度不够当然会闪,如果没有用到缓冲最好是要在哪里要显示就清除那个矩形区域,不然你一刷屏幕,就用全部内容要重新写入了
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-3-29 14:23:02 | 显示全部楼层
zuozhongkai 发表于 2018-3-28 22:20
你这LCD_Show()和LCD_Clear()中间加上一个延时函数在看一下闪不闪

好的,我试一下
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-3-29 14:23:35 | 显示全部楼层
哆啦A萌 发表于 2018-3-29 08:51
刷全屏速度不够当然会闪,如果没有用到缓冲最好是要在哪里要显示就清除那个矩形区域,不然你一刷屏幕,就用 ...

具体怎么操作呢?
回复 支持 反对

使用道具 举报

20

主题

65

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
323
金钱
323
注册时间
2018-1-23
在线时间
40 小时
 楼主| 发表于 2018-3-29 14:24:00 | 显示全部楼层
qinlicn 发表于 2018-3-29 08:39
while的速度不够快,或者速度过快LCD跟不上

额...那就是没法解决了?
回复 支持 反对

使用道具 举报

0

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2018-3-14
在线时间
19 小时
发表于 2018-3-29 15:09:24 | 显示全部楼层
自己写个区域清除函数,类似这样:
LCD_ClearArea(start_x, start_y, width, height, color)

来取代while里面的全屏清除函数LCD_Clear(RED)
               
回复 支持 反对

使用道具 举报

0

主题

43

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1713
金钱
1713
注册时间
2017-2-22
在线时间
296 小时
发表于 2018-4-5 02:09:38 | 显示全部楼层
你显示的内容又没变化,干脆将清屏和显示函数移到while循环前,记住是先清屏再显示而不是反过来。
如果是显示内容需要变化,正确的方法是只将变动的矩形区域擦除然后在该位置显示变动的字符,而不是整个屏幕擦除。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-16 19:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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