有人用过PCA8561 吗,我用它驱动LCD时,单步调试时一切正常,但是一全速运行,就什么也没有。有人知道什么问题吗?
时间:10-02
整理:3721RD
点击:
SPI: 程序代码
void SPI0_8_Init(void)
{
SPI0CR1 =0x00;
SPI0CR2 =0x00;
SPI0BR = 0x41; // 波特率 1.5M 芯片支持 5M 以下
SPI0CR1 = 0x50;
}
/* SPI0 数据发送函数 */
void SPI0_8_Send_Data(unsigned char DAT_L)
{
while(!SPI0SR_SPTEF);
SPI0DRL = DAT_L;
}
PCA8561 液晶显示程序:
void PCA8561_Init(void)
{
unsigned char i;
PCA8561_CE_DIR = 1;//设置PCA8561 CE 端口为输出
PCA8561_CE = 0;
Delay_us(20);
SPI0_8_Send_Data(Software_reset); //延时
SPI0_8_Send_Data(0x2c); //芯片软件复位
Delay_us(10);
PCA8561_CE = 1;
Delay_us(60);
PCA8561_CE = 0;
Delay_us(20);
SPI0_8_Send_Data(Software_reset);
SPI0_8_Send_Data(0x00);
SPI0_8_Send_Data(0x04);
SPI0_8_Send_Data(0x01);
SPI0_8_Send_Data(0x00);
PCA8561_CE =1;
Delay_us(60);
PCA8561_CE =0;
SPI0_8_Send_Data(COM0_7_0); // 此处LCD 全部亮起
for(i=0x04; i<0x10; i++){
SPI0_8_Send_Data(0xff);
Delay_us(20);
}
PCA8561_CE =1;
}
void SPI0_8_Init(void)
{
SPI0CR1 =0x00;
SPI0CR2 =0x00;
SPI0BR = 0x41; // 波特率 1.5M 芯片支持 5M 以下
SPI0CR1 = 0x50;
}
/* SPI0 数据发送函数 */
void SPI0_8_Send_Data(unsigned char DAT_L)
{
while(!SPI0SR_SPTEF);
SPI0DRL = DAT_L;
}
PCA8561 液晶显示程序:
void PCA8561_Init(void)
{
unsigned char i;
PCA8561_CE_DIR = 1;//设置PCA8561 CE 端口为输出
PCA8561_CE = 0;
Delay_us(20);
SPI0_8_Send_Data(Software_reset); //延时
SPI0_8_Send_Data(0x2c); //芯片软件复位
Delay_us(10);
PCA8561_CE = 1;
Delay_us(60);
PCA8561_CE = 0;
Delay_us(20);
SPI0_8_Send_Data(Software_reset);
SPI0_8_Send_Data(0x00);
SPI0_8_Send_Data(0x04);
SPI0_8_Send_Data(0x01);
SPI0_8_Send_Data(0x00);
PCA8561_CE =1;
Delay_us(60);
PCA8561_CE =0;
SPI0_8_Send_Data(COM0_7_0); // 此处LCD 全部亮起
for(i=0x04; i<0x10; i++){
SPI0_8_Send_Data(0xff);
Delay_us(20);
}
PCA8561_CE =1;
}