使用16位并口进行读写,使用示波器测量读信号都是正确的。就是输出线上全为0,一点信号都没有。
//写寄存器函数
//regval:寄存器值
void LCD_WR_REG(UINT16 regval)
{
LCD_DC_CLR;
LCD_CS_CLR;
CLI();
DATAOUT(regval);
LCD_WRR_CLR;
LCD_WRR_SET;
SEI();
LCD_CS_SET;
}
//写LCD数据
//data:要写入的值
void LCD_WR_DATA(UINT16 data)
{
LCD_DC_SET;
LCD_CS_CLR;
CLI();
DATAOUT(data);
LCD_WRR_CLR;
LCD_WRR_SET;
SEI();
LCD_CS_SET;
}
//读LCD数据
//返回值:读到的值
UINT16 LCD_RD_DATA(void)
{
UINT16 data = 0;
UINT16 dummy = 0;
MX_LCDGPIO_Config_IN(); //配置为输入
LCD_DC_SET;
LCD_CS_CLR;
LCD_RDW_CLR;
//HAL_Delay(1);
//dummy = DATAIN(); //Dummy Data
LCD_RDW_SET;
dummy = DATAIN(); //Dummy Data
LCD_RDW_CLR;
//HAL_Delay(1);
LCD_RDW_SET;
data = DATAIN(); //有效值
LCD_CS_SET;
MX_LCDGPIO_Config_OT(); //配置为输出
return data;
}
//读寄存器
//LCD_Reg:寄存器地址
//返回值:读到的数据,第二次读为真实值
UINT16 LCD_ReadReg(UINT8 LCD_Reg)
{
//LCD_WR_REG(LCD_Reg); //写入要读的寄存器序号
LCD_DC_CLR;
LCD_CS_CLR;
CLI();
DATAOUT(LCD_Reg);
LCD_WRR_CLR;
LCD_WRR_SET;
SEI();
//LCD_CS_SET;
return LCD_RD_DATA(); //返回读到的值
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>