Date:2011.08.15 MADE BY AC
1、 关于DS1302时钟IC与12864的时间显示:为什么DS1302工作正常,而12864LCD显示时却不能正常显示出秒数呢?(解决问题分析:首先必须确定硬件没问题,其次是,数据处理问题,最后是时隙的控制)(基于这个思路,我分析了电路,分析了程序….)
经自己分析,发现,如果LCD如果没有显示很有可能,“LCD正常工作而你对LCD取数据时,你的数据地址不正确的话,这时候,你的程序乱了,自然,你的显示也就乱了~~谨记”,我就是遇到这个问题,我把地址好好整理了,LCD正常显示了,可是,随之而来的就是我提到的那个问题(秒数显示不正确啊!!!),我硬件调试,发现显示的数据有一定的规律,这是,我怀疑是时间的问题!!!看看我的程序:
DisplayListChar(1, 2, Temp); ,很明显的呀,这里的显示之后,下面还有很多延时,
Write_Byte_Address(25,'p'); 如果,你的延时超过一秒的话,那岂不是影响到下
k=Read_Byte_Address(25); 一秒的显示,且12864的数据读取需要一定的时间呢!
Delay400Ms(); 把语句DisplayListChar(1, 2, Temp);后面的稍微去掉
Delay400Ms(); 即可得到正确的显示!
DisplayOneChar(3,4,k);
Delay400Ms();
总结:显示时一定要注意数据的正确操作及时间延时的控制(最好不要超过200ms,否则显示不正确哦!!!!),
2、当你用全局替换时,一定要注意,把程序弄乱了(假如传参变量和全局变量的名字一样的时候,假如你要进行全局变量的字符替换,这时候,你会把传参变量的字符也换掉了)
3、假如你设置的显示的字符个数为16个,而你定义的数字长度为8,则程序会出错,程序会把那些乱码传递个LCD的ram导致LCD不能正常工作!!!!
Eg: uchar Temp[8];(出错)uchar Temp[16];(OK)DisplayListChar(1, 2, Temp);
4、昨天的第六问,解决了,原来是存储器的读写需要一定的时间(5~10ms),调好这个时间,读写就方便呢!!!!!