1.将电路板送上电,发现焊接的三个大的滤波电容方向错了,注意这种方形的黄色的1808规格贴片电容应当是钽电容,方向是有横杠的一端是正极。 2.由于我是用的T6963的液晶屏,电压5V,所以使用电阻与S64连接。S64需要这样设置 //关闭上拉电阻 AT91F_PIO_CfgPullup(AT91C_BASE_PIOA,LCD_MASK|LCD_data); //输出开漏 AT91F_PIO_MultiDriverEnable(AT91C_BASE_PIOA,LCD_MASK|LCD_data); 这样就可以产生5V的电平了,但是很不行,我原来的C51上的程序还是不能移植过来。 这是T6963.C的一部分。 #include "T6963.h"
void wait ( void ) { unsigned char i; for(i=50;i>0;i--) {} } void RWCheck(void) { unsigned char i; for(i=50;i>0;i--) {} } void AutoWCheck(void) { unsigned char i; for(i=50;i>0;i--) {} } /* 控制指令 */ void ctrl(unsigned char command) { unsigned int k; //AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, 0x7F800000) ; RWCheck(); k= command<<23;//完成移位的操作 AT91F_PIO_SetOutput( AT91C_BASE_PIOA, CD ) ; wait (); AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, WD) ; wait (); AT91F_PIO_SetOutput( AT91C_BASE_PIOA, k ) ; wait (); AT91F_PIO_SetOutput( AT91C_BASE_PIOA, WD ) ; wait (); } /* 写数据 */ void write(unsigned char dat ) { unsigned int k; RWCheck(); k= dat<<23;//完成移位的操作 AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, CD ) ; wait (); AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, WD) ; wait (); AT91F_PIO_SetOutput( AT91C_BASE_PIOA, k ) ; wait (); AT91F_PIO_SetOutput( AT91C_BASE_PIOA, WD ) ; wait (); AT91F_PIO_SetOutput( AT91C_BASE_PIOA, CD ) ; wait (); } /* 自动写 */ void autowrite(unsigned char dat) { unsigned int k; AutoWCheck(); k= dat<<23;//完成移位的操作 AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, CD ) ; wait (); AT91F_PIO_ClearOutput( AT91C_BASE_PIOA, WD) ; wait (); AT91F_PIO_SetOutput( AT91C_BASE_PIOA, k ) ; wait (); AT91F_PIO_SetOutput( AT91C_BASE_PIOA, WD ) ; wait (); AT91F_PIO_SetOutput( AT91C_BASE_PIOA, CD ) ; wait (); }
|