STM32串行驱动绘晶的12864ZW液晶屏不显示

2019-12-25 18:46发布

如题

STM32串行驱动绘晶的12864ZW液晶屏不显示

下面是程序
void screen_init(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOB,ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;//RST
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOD,&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//CLK
        GPIO_Init(GPIOD,&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;//SID
        GPIO_Init(GPIOD,&GPIO_InitStructure);
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//CS
        GPIO_Init(GPIOD,&GPIO_InitStructure);
        delay_ms(50);
        GPIO_ResetBits(GPIOD,GPIO_Pin_4);//¸´Î»
        delay_ms(10);
        GPIO_SetBits(GPIOD,GPIO_Pin_4);
       
        delay_ms(50);
        LCD12864_Write(WRITE_CMD,0x34);
        delay_ms(10);
        LCD12864_Write(WRITE_CMD,0x30);
        delay_ms(10);
        LCD12864_Write(WRITE_CMD,0x06);
        delay_ms(10);
        LCD12864_Write(WRITE_CMD,0x01);
        delay_ms(10);
        LCD12864_Write(WRITE_CMD,0x0C);
        delay_ms(10);
        LCD12864_Write(WRITE_CMD,0x02);
       
       
}


void ShowChar(u8 addr, u8 *dat1 , u8 count)
{
        u8 i=0;
       
        LCD12864_Write(WRITE_CMD,addr);
        delay_ms(1);
//        for(i=0;i<count;i++)
        {
                LCD12864_Write(WRITE_DAT,0x30);
                delay_ms(10);
        }
}

void LCD12864_Write(u8 writeMode,u8 dat)
{
        GPIO_ResetBits(GPIOD,GPIO_Pin_7);
        GPIO_SetBits(GPIOD,GPIO_Pin_7);
        LCD12864_SendByte(writeMode);
        LCD12864_SendByte(0xF0 & dat);
        LCD12864_SendByte(0xF0 & (dat<<4));
        GPIO_ResetBits(GPIOD,GPIO_Pin_7);
}

void LCD12864_SendByte(u8 dat)
{
        u8 i;
        GPIO_SetBits(GPIOD,GPIO_Pin_6);
        LCD12864_SCK_HIGH();
        for(i=0;i<8;i++)
        {
               
                if((dat<<i)&0x80)
                {
                        GPIO_SetBits(GPIOD,GPIO_Pin_6);
                }
                else
                {
                        GPIO_ResetBits(GPIOD,GPIO_Pin_6);
                }
                LCD12864_SCK_LOW();
                delay_us(200);
                LCD12864_SCK_HIGH();
                delay_us(100);
        }
}

void LCD12864_SCK_LOW(void)
{
        GPIO_ResetBits(GPIOD,GPIO_Pin_5);
}

void LCD12864_SCK_HIGH(void)
{
        GPIO_SetBits(GPIOD,GPIO_Pin_5);
}

大神看看是哪里出了问题啊!!急等
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。