查看: 1603|回复: 0

【Fireduino】改造屏幕续--两种方式刷新率对比

[复制链接]
  • TA的每日心情
    奋斗
    2022-9-16 05:52
  • 签到天数: 1368 天

    连续签到: 1 天

    [LV.10]以坛为家III

    发表于 2016-12-15 09:04:04 | 显示全部楼层 |阅读模式
    分享到:
    在写第一篇的时候提到过,由于没有官方屏幕,只得自己改造一个以前在Arduino使用的屏幕。但是因为引脚的关系,8位并行数据不能一次性输出,从而导致刷新速度很慢。通过对Fireduino的熟悉后,改进了连接方式和代码,最大程度地接近官方屏幕,测试一下比以前能够提高多少。
        话不多说,首先是入口函数,就是对屏幕的初始化,然后对清屏函数计时。

        时间取自Fireduino本身,在刷屏前保存开机时长,刷屏后相减,就是刷屏的时间了。
    一、第一种传统连接方式:

        按照标准的Arduino接口方式连接,为了方便比较,所有脚都用线连接。

        引脚的初始化函数,最最常用的那种,为每一个引脚都操作一遍。

        最核心的部分,本应该是8位并行输出的数据,分别执行了8条语句才能完成,严重的影响了效率。

        编译、烧写、运行,得到的结果是2602毫秒。其实测了多次为了取平均值,发现除了一次2603毫秒外,其他一直稳定2602毫秒,取一张有代表性的图来说明。2.6秒才能刷完一次屏幕,可以说是惨不忍睹。
       
    二、第二种官方提供的LCD数据接口方式:

        完全变了,都集中在这一部分。接口图显示,这里是LCD数据的0~7脚,按顺序插好。

        初始化的程序也变了,首先根据D0的引脚获取到Port号,然后再根据这个Port获取到方向寄存器和输出寄存器,以便后续操作。注释掉的部分和前面的代码是完全一样的,用哪种都行。不过为了便于移植,还是采取了前面的方式。
        获取到寄存器后,对寄存器赋值,一次性将这8个口设置为输出。

        最关键的地方,8位数据并行输出,一次性赋给屏幕,通过WR提交。
        再次烧写,看看结果。

        639毫秒,比刚才的2602毫秒快了不少,提高了4倍有余,但是比我设想的7~8倍还是有差距。
       
        受制于接口的设计,只能采用8位的方式使得显示速度大打折扣,当然也许和显示屏的主控IC及初始化代码有关,如果再经过深入优化后或许能够再提高一些。不知道官方的屏幕速度能有多快,希望能比我这个快很多,这样显示各种内容尤其是动态部分才会更加顺畅。
    回复

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 16:47 , Processed in 0.108793 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.