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

[复制链接]
5804|30
地瓜patch 发表于 2017-11-29 21:14 | 显示全部楼层
一言不合就上代码
whtwhtw 发表于 2017-11-30 08:22 | 显示全部楼层
不需要频繁清屏,需要改变显示内容的地方更新显示内容就行了,不改变内容的地方就别动
caijie001 发表于 2017-11-30 08:35 | 显示全部楼层
了解12864的参数,是否需要清屏
Ketose 发表于 2017-11-30 11:47 | 显示全部楼层
闪烁是因为你清屏了。
要想不闪烁,就用双缓冲。
Ketose 发表于 2017-11-30 11:50 | 显示全部楼层
另外,再教你正确贴代码的方式 。
  1. #include <linux/kernel.h>
  2. #include <linux/init.h>
  3. #include <linux/types.h>
  4. #include <linux/string.h>

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

  7. #define SYS_PARAMS_ADDR                KSEG1ADDR(0x80000800)
  8. #define BOARD_PARAMS_ADDR        KSEG1ADDR(0x80000A00)
  9. #define PART_TABLE_ADDR                KSEG1ADDR(0x80000C00)
  10. #define BOOT_PARAMS_ADDR        KSEG1ADDR(0x80000E00)

  11. static struct myloader_info myloader_info __initdata;
  12. static int myloader_found __initdata;

  13. struct myloader_info * __init myloader_get_info(void)
  14. {
  15.         struct mylo_system_params *sysp;
  16.         struct mylo_board_params *boardp;
  17.         struct mylo_partition_table *parts;

  18.         if (myloader_found)
  19.                 return &myloader_info;

  20.         sysp = (struct mylo_system_params *)(SYS_PARAMS_ADDR);
  21.         boardp = (struct mylo_board_params *)(BOARD_PARAMS_ADDR);
  22.         parts = (struct mylo_partition_table *)(PART_TABLE_ADDR);

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

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

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

  32.         myloader_info.vid = sysp->vid;
  33.         myloader_info.did = sysp->did;
  34.         myloader_info.svid = sysp->svid;
  35.         myloader_info.sdid = sysp->sdid;

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

  37.         myloader_found = 1;

  38.         return &myloader_info;
  39. }
 楼主| 肥羊 发表于 2017-12-1 12:47 | 显示全部楼层
Ketose 发表于 2017-11-30 11:50
另外,再教你正确贴代码的方式 。

怎么贴代码的
 楼主| 肥羊 发表于 2017-12-1 12:51 | 显示全部楼层
知道原因了,改天有空上来更新给大家
零点飞越 发表于 2017-12-3 19:35 | 显示全部楼层
相同的部分用位图填充,只画需要更新的点。12864带锁存,有数据保持能力。
 楼主| 肥羊 发表于 2017-12-7 18:11 | 显示全部楼层
零点飞越 发表于 2017-12-3 19:35
相同的部分用位图填充,只画需要更新的点。12864带锁存,有数据保持能力。 ...

不行的速度太慢了
雪山飞狐D 发表于 2018-8-28 20:41 | 显示全部楼层
dsyq 发表于 2017-11-29 11:52
ST7920用图片显示的话,我也测试过。
你往里面发送数据的时候,显示不会改变。发送数据结束,再用那个扩展指 ...

    绘图功能扩展指令频繁开关,比如在一个函数里面开了0X34 ,函数结束又恢复0x30,这样绘图会闪
ayb_ice 发表于 2018-8-29 09:04 | 显示全部楼层
清屏再写是会闪的,建议直接写或先在缓冲区操作,最后将缓冲区直接写到LCD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部