一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 5906|回复: 21
收起左侧

[其他综合] 用ATMEGA32高效驱动VFD12864(GP1211)

[复制链接]
发表于 2013-12-11 23:53 | 显示全部楼层 |阅读模式
本帖最后由 reiyawea 于 2013-12-12 19:58 编辑

首先感谢坛友kazuyuki、lyl。
VFD12864曾经着实火了一阵,感谢kazuyuki的一系列版本的套件,为我等模电小白扫清了障碍。
之前的程序都是以C语言编写的,代码效率确实不高,且有很多保护现场的动作耗费了时间,造成驱动效率低。
近几日我苦学AVR汇编,终于有所小成,以纯汇编语言编写了更高效的程序。
之前一个栅极传送48个字节,算出一个传一个,使用大量的if语句和位运算,处理完一个栅极要240us左右。
受坛友lyl《用PIC24FJ32高效驱动VFD12864(GP1211)》启发,使用了更完善的数据结构,即直接发送。这样,m32使用24M晶振时,每次只需43.6us。刷新率75Hz时,扫描占用14%时间,效率大大提高。
另用定时器比较匹配中断提前关断显示来调节亮度。亮度指令兼容地包含在开关屏指令中。
由于m32没有足够的内存建立双缓冲,故专设一个解构函数,将指定行列的一个8位数据分解到对应的显示缓存中。为避免定位时大量运算,采取以空间换时间方法,预先建立一个定位表格。此函数的运行时间是3.4us。
最后模拟KS0108,以使能信号E的下降沿中断来处理指令和数据。只实现了开关屏、指定行、指定列、送数据四条指令,无读出、读忙和显示起始地址更改功能。中断的最长处理时间为4.2us。
汇报完毕,贴一个昨天的未完工的效果视频(STC12C5A08S2,11.0592M,有额外延时),无延时的最终效果明天再贴。

----
补充:无延时的视频效果


评分

参与人数 3一乐金币 +70 收起 理由
xiaomage + 20 厉害,支持继续进步!
kazuyuki + 20 很给力!
lichuang1005 + 30 牛B

查看全部评分

发表于 2013-12-12 00:13 | 显示全部楼层
顶起来,牛人再度现身
发表于 2013-12-12 00:13 | 显示全部楼层
这个不错,要支持一下。
发表于 2013-12-12 08:43 | 显示全部楼层
有一个小疑问,SPI发送怎么解决的,没有DMA,只能中断或者顺序发送。

因为SPI速度较快,如果是中断发送的话,将在发送期间产生大量中断。这地方LZ怎么处理的。
发表于 2013-12-12 11:32 | 显示全部楼层
牛,就开始atmega32了,老唐以前的老版本可用么?
发表于 2013-12-12 15:57 | 显示全部楼层
支持一下,对这些不还太懂
发表于 2013-12-12 16:58 | 显示全部楼层
厉害,这个一定要支持
发表于 2013-12-13 12:06 | 显示全部楼层
能否用c51也寫一個      沒找到範例學習
发表于 2013-12-13 12:23 | 显示全部楼层
楼主啥工作?……
 楼主| 发表于 2013-12-13 19:47 | 显示全部楼层
jimmy_xt 发表于 2013-12-12 08:43
有一个小疑问,SPI发送怎么解决的,没有DMA,只能中断或者顺序发送。

因为SPI速度较快,如果是中断发送 ...

使用的是顺序发送,在发送期间先取好下一字节,一完成就立即发送下一个。之前曾使用发送完后取下一个的方法,要花费51us。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-4-23 22:47 , Processed in 0.081759 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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