原创 12864 用PROTUES 关于读数据的心得

2013-6-6 00:46 1267 2 3 分类: MCU/ 嵌入式

最近在学习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口,必须要接上拉~~

 

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1652329 2014-3-12 17:02

博主,我也被这个读数据给卡住了。读数据的时候读两遍是怎么个读法啊?连续两次让e=1,读,e=0这样吗?
相关推荐阅读
我要评论
1
2
关闭 站长推荐上一条 /3 下一条