发新帖我要提问
12
返回列表
打印

12864 刷新会闪烁,我加了1S的延时还是会闪烁

[复制链接]
楼主: 肥羊
手机看帖
扫描二维码
随时随地手机跟帖
21
地瓜patch| | 2017-11-29 21:14 | 只看该作者 回帖奖励 |倒序浏览
一言不合就上代码

使用特权

评论回复
22
whtwhtw| | 2017-11-30 08:22 | 只看该作者
不需要频繁清屏,需要改变显示内容的地方更新显示内容就行了,不改变内容的地方就别动

使用特权

评论回复
23
caijie001| | 2017-11-30 08:35 | 只看该作者
了解12864的参数,是否需要清屏

使用特权

评论回复
24
Ketose| | 2017-11-30 11:47 | 只看该作者
闪烁是因为你清屏了。
要想不闪烁,就用双缓冲。

使用特权

评论回复
25
Ketose| | 2017-11-30 11:50 | 只看该作者
另外,再教你正确贴代码的方式 。
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/types.h>
#include <linux/string.h>

#include <asm/addrspace.h>
#include <asm/fw/myloader/myloader.h>

#define SYS_PARAMS_ADDR                KSEG1ADDR(0x80000800)
#define BOARD_PARAMS_ADDR        KSEG1ADDR(0x80000A00)
#define PART_TABLE_ADDR                KSEG1ADDR(0x80000C00)
#define BOOT_PARAMS_ADDR        KSEG1ADDR(0x80000E00)

static struct myloader_info myloader_info __initdata;
static int myloader_found __initdata;

struct myloader_info * __init myloader_get_info(void)
{
        struct mylo_system_params *sysp;
        struct mylo_board_params *boardp;
        struct mylo_partition_table *parts;

        if (myloader_found)
                return &myloader_info;

        sysp = (struct mylo_system_params *)(SYS_PARAMS_ADDR);
        boardp = (struct mylo_board_params *)(BOARD_PARAMS_ADDR);
        parts = (struct mylo_partition_table *)(PART_TABLE_ADDR);

        printk(KERN_DEBUG "MyLoader: sysp=%08x, boardp=%08x, parts=%08x\n",
                sysp->magic, boardp->magic, parts->magic);

        /* Check for some magic numbers */
        if (sysp->magic != MYLO_MAGIC_SYS_PARAMS ||
            boardp->magic != MYLO_MAGIC_BOARD_PARAMS ||
            le32_to_cpu(parts->magic) != MYLO_MAGIC_PARTITIONS)
                return NULL;

        printk(KERN_DEBUG "MyLoader: id=%04x:%04x, sub_id=%04x:%04x\n",
                sysp->vid, sysp->did, sysp->svid, sysp->sdid);

        myloader_info.vid = sysp->vid;
        myloader_info.did = sysp->did;
        myloader_info.svid = sysp->svid;
        myloader_info.sdid = sysp->sdid;

        memcpy(myloader_info.macs, boardp->addr, sizeof(myloader_info.macs));

        myloader_found = 1;

        return &myloader_info;
}

使用特权

评论回复
26
肥羊|  楼主 | 2017-12-1 12:47 | 只看该作者
Ketose 发表于 2017-11-30 11:50
另外,再教你正确贴代码的方式 。

怎么贴代码的

使用特权

评论回复
27
肥羊|  楼主 | 2017-12-1 12:51 | 只看该作者
知道原因了,改天有空上来更新给大家

使用特权

评论回复
28
零点飞越| | 2017-12-3 19:35 | 只看该作者
相同的部分用位图填充,只画需要更新的点。12864带锁存,有数据保持能力。

使用特权

评论回复
29
肥羊|  楼主 | 2017-12-7 18:11 | 只看该作者
零点飞越 发表于 2017-12-3 19:35
相同的部分用位图填充,只画需要更新的点。12864带锁存,有数据保持能力。 ...

不行的速度太慢了

使用特权

评论回复
30
雪山飞狐D| | 2018-8-28 20:41 | 只看该作者
dsyq 发表于 2017-11-29 11:52
ST7920用图片显示的话,我也测试过。
你往里面发送数据的时候,显示不会改变。发送数据结束,再用那个扩展指 ...

    绘图功能扩展指令频繁开关,比如在一个函数里面开了0X34 ,函数结束又恢复0x30,这样绘图会闪

使用特权

评论回复
31
ayb_ice| | 2018-8-29 09:04 | 只看该作者
清屏再写是会闪的,建议直接写或先在缓冲区操作,最后将缓冲区直接写到LCD

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则