热度 3
2013-6-6 00:46
1275 次阅读|
1 个评论
最近在学习12864,在画点这一步上卡了.. 卡在读不出RAM的数据..奋斗了几天,终于成功了. 被网上坑爹的教程害了~~ DB是单片机上的并行接口,我接了P1,以后想换到PCF8574上, 用的是AMPIRE的12864.控制器是ks0108. 先说读 状态: static void read_busy() { u8 c1,c2,bf; c1=CS1;c2=CS2; CS1=0;CS2=0; do { DB=0xff; LCDRW=1; LCDRS=0; _nop_(); LCDEN=1; _nop_();_nop_(); bf=DB; LCDEN=0; }while(bf0x80); CS1=c1; CS2=c2; } 关键点是什么呢? 一,CS1 和CS2 如果不被选中的话,是读不出来BF的状态的. 二.在第一次读BF的时候,要读两次,以后读的时候只读一次. 刚开始我没用DO WHILE循环,程序卡在第一次就不走了. 所以,要么用循环,要么在INIT的时候,先预读一次,要么就一直读两次. 三.机上的并口要初始化为0XFF,看网上的教程,有的是初始化为0X00,根本没有读到BF,是自欺欺人,有的是用延时,也是一种办法. 四. E 端在上升和下降前,都应该有一定的延时,这是时序的要求.. 读RAM和读BF的程序差不多,实际在运行中,读数据的时候,每次都是要读两遍的,与读BF不同.. 只要会了这一点,其它都不难了... 还有一点..51 52 的P1口不用接上拉也可以,P0口,必须要接上拉~~