请教axia2008 ,你的数据读写时序是怎么样的。我在做M128与t6963c的实验,程序是从51移值过来的(在51上用的是总线方式,是可以正常显示),在M128中我用PE口作为数据输出口,PB口用来控制CD,WR,RD,晶振8M。时序上完全参考了T6963C资料上的时序,可死活都不能正常工作,考虑到是否M128速度太快,给每条指令间隔了0.1ms间隔,可还是不行,数据读写时序如下:请大家指点指点,谢谢啦!
/*连线: /*PE0-D0,PE1-D1,PE2-D2,PE3-D3,PE4-D4,PE5-D5,PE6-D6,PE7-D7,PB0-CD,PB1- RD,PB4-WR */
void Command_Lcd (unsigned char PARA0, unsigned char PARA1, unsigned char PARA2, unsigned char PARA3) { if (PARA0 == 0) { goto Exec_no_para; /* 无参数指令 */ } if (PARA0 == 1) { goto Exec_one_para; /* 单参数指令 */ } //PB0----CD
/* 双参数指令 */ PORTB=PORTB & 0xFE; //CD=0 delay100us(); PORTB=PORTB & 0xEF; //WR=0 PB4(P14)----WR delay100us();
PORTE = PARA1; delay100us(); PORTB=PORTB | 0x10; //WR=1 PB4(P14)----WR delay100us(); PORTB=PORTB|0x01; //CD=1 delay100us(); Exec_one_para:
PORTB=PORTB & 0xFE; //CD=0 delay100us(); PORTB=PORTB & 0xEF; //WR=0 PB4(P14)----WR delay100us();
PORTE = PARA2; delay100us(); PORTB=PORTB | 0x10; //WR=1 PB4(P14)----WR delay100us(); PORTB=PORTB|0x01; //CD=1 delay100us(); Exec_no_para:
PORTB=PORTB|0x01; //CD=1 delay100us(); PORTB=PORTB & 0xEF; //WR=0 PB4(P14)----WR delay100us(); PORTE = PARA3; delay100us(); PORTB=PORTB | 0x10; //WR=1 PB4(P14)----WR delay100us();
}
|