leonliu_1128 发表于 2010-8-13 11:33:43

关于51驱动TFT程序移植到AVR上碰到的问题

请教马老师及大家:
我买了2个液晶屏,一个跟买你的一样是160x128的AUO屏,另一个也是个小屏.卖家给我了51的原代码(22M晶振).然后我用51都成功点亮.我把代码移植到atmega128L 8M晶振上(改了引脚和底层),发现:

1. AUO屏能显示图像,但图像在屏上的位置不对,这说明初始化成功,但写数据有问题

2.另外一个屏只是在不停的闪(程序是个死循环,不停重复现实图像),但无图像显示

3. 对于AUO屏,我每次改了屏初始化里的延时,显示不正常且每次显示都不一样

4.我把一个atmega88的ok的程序里初始化和延时部分移植过去也不行(atmega88用的是1M内部晶振)

5.另外一个屏改了屏初始化里的延时,始终不成功.

6.我把atmega88代码和卖家给我了51的原代码比较了下,发现屏初始化部分基本一致,除了延时和reset位置)

大家以前碰到过这类问题吗,问题的原因是什么呢?是因为晶振不一样, 数据写进液晶后的延时不够?

http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_574740.JPG
附示意图 (原文件名:AUO.JPG)

leonliu_1128 发表于 2010-8-13 13:05:22

下面摘自马老师的一段话:
AVR采用RISC架构的,一个指令周期就是一个系统时钟的周期,指令长度为16位和32位。大部分的指令执行需要一个指令周期,个别的指令执行需要2个指令周期。

标准51架构为CISC,一个指令周期为12个系统时钟周期,指令长度有8/16/24/32位不同。有的指令执行需要一个指令周期,有的需要2个,还有需要3个的(可能有出入)。而现在很多的改进型、兼容型51芯片就不同了,百花齐放,一个指令周期可能为1/2/4/6系统时钟周期,需要看所使用芯片的手册。比如STC的51就可以在1和12个之间选择。

大家看看会不会是这个原因?

zxky001 发表于 2010-8-23 16:51:42

我可以提供相关移植程序实例函数 可参考下 Q我吧 85082559

zhangxuerong 发表于 2011-10-26 10:53:53

我的也是,不过我这个直接什么都不显示了,不知道为什么

kingwaykingway 发表于 2011-10-26 14:19:29

效果会不会很差
页: [1]
查看完整版本: 关于51驱动TFT程序移植到AVR上碰到的问题