最近在学习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(bf&0x80);
CS1=c1; CS2=c2;
}
关键点是什么呢?
一,CS1 和CS2 如果不被选中的话,是读不出来BF的状态的.
二.在第一次读BF的时候,要读两次,以后读的时候只读一次.
刚开始我没用DO WHILE循环,程序卡在第一次就不走了.
所以,要么用循环,要么在INIT的时候,先预读一次,要么就一直读两次.
三.机上的并口要初始化为0XFF,看网上的教程,有的是初始化为0X00,根本没有读到BF,是自欺欺人,有的是用延时,也是一种办法.
四. E 端在上升和下降前,都应该有一定的延时,这是时序的要求..
读RAM和读BF的程序差不多,实际在运行中,读数据的时候,每次都是要读两遍的,与读BF不同..
只要会了这一点,其它都不难了...
还有一点..51 52 的P1口不用接上拉也可以,P0口,必须要接上拉~~
用户1652329 2014-3-12 17:02