写了两天,第一次这样分析一个程序,感觉收获挺大的,希望大神多多帮我指出我还做得不好的地方,作为一名菜鸟,希望与大家共同进步。
最开始发的求助帖:http://www.openedv.com/posts/list/0/24300.htm?privmsg=1#140292 感谢原子哥很多时候发的帖都有回复。以前去一些论坛发帖,石沉大海。。。那个伤心啊。。。
整理一下,对io口的控制。分析输出波形差异。 得到端口初始化不同而导致不能正常显示。。
步骤:
1、io口输出时序
io口使能————io定义————对应输出电平 仿真检测输出电平(能够正常输出)
2、写nokia驱动程序
定义头文件
延时函数 调用延时函数 检测是否修改完全(查询)
nokia函数定义
3、主函数(主要是对初始化函数跟清屏函数的波形分析)
对液晶初始化进行输出波形分析。 比较51和32驱动波形
32端口输出与51端口输出差异分析:
1、输出电平与51相反:0ms 32 00000 51 11111
0.2ms 32 51 01111 先将端口电平 置位为1 不然会影响后面波形
32初始化完成时间 4ms 4ms
51初始化完成时间 70ms 修改办法将输出时序 由50M改为10M
从程序入手 分析 正确的输出波形
分析51:时序是否按照程序输出波形
延时达到3ms 而不是像程序描述的1us 建议修改32延时
读取指令:如果正边缘 为上升沿 读取为:0010 0001 0x21 与输出指令相符
1100 1000 0xc8 与输出指令相符
当ce=0;dc=0上升沿读取sdin有效 写指令
根据ce电平变化找到 ,第5条指令为 0010 0000 0x20 与输出指令相符
下一条指令为 清屏指令 LCD_clear(); // 清屏
其中写了指令 0x0c 0x80 0000
1100 1000 0000
0000
1100 1000 0000
执行504次循环 写数据 置DIN=1写数据 0 ;写504次0给液晶屏
完成后 端口值 11101
对照51波形查看32输出波形
|