求助 关于1604液晶显示问题

2019-07-20 14:53发布

用STM32F407ZE写的关于LCM1604A的显示程序,只有清屏指令起作用,其余的命令全都不执行
这是接线
LCM1 1604A
PE9  RS
PE10 RW
PE8  E

PE0  D0
PE1  D1
PE2  D2
PE3  D3
PE4  D4
PE5  D5
PE6  D6



程序

#include "stm32f4xx.h"

                                                                宏定义
#define RS   GPIO_Pin_9
#define RW   GPIO_Pin_10
#define EN   GPIO_Pin_8

#define RS_SET    GPIO_SetBits(GPIOE, RS)
#define RS_CLR    GPIO_ResetBits(GPIOE, RS)
#define RW_SET    GPIO_SetBits(GPIOE, RW)
#define RW_CLR    GPIO_ResetBits(GPIOE, RW)
#define EN_SET    GPIO_SetBits(GPIOE, EN)
#define EN_CLR    GPIO_ResetBits(GPIOE, EN)


                                                                  延时
void Delay_us(u32 CountLing)
{
        signed char i;
        while(CountLing--)
        {
                i = 10;
                while(i--);
        }
}

                                                                  时钟
void Int_RCC(void)
{
                SystemInit();
                RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);

}


                                                                  IO定义
void GPIOE_LCD(void)
{
        GPIO_InitTypeDef EGPIO_InitStructure;
       
        EGPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_7|
                                                    GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_4|GPIO_Pin_3|
                                                    GPIO_Pin_2|GPIO_Pin_1|GPIO_Pin_0;
        EGPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        EGPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        EGPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
       
        GPIO_Init(GPIOE, &EGPIO_InitStructure);
}

                                                                   写指令
void Write_LCD_Com(u32 com)
{
        RS_CLR;
        RW_CLR;
        EN_CLR;
        GPIOE->ODR|=com;
        Delay_us(320);
        EN_SET;
        Delay_us(320);
        EN_CLR;
       
}

                                                                    写数据
void Write_LCD_date(u32 date)
{
        RS_SET;
        RW_CLR;
        EN_CLR;
        GPIOE->ODR|=date;
        Delay_us(320);
        EN_SET;
        Delay_us(320);
        EN_CLR;
       
}

                                                                     LCD初始化
void Int_LCD(void)
{
        Write_LCD_Com(0x0038);
        Delay_us(7);
        Write_LCD_Com(0x000C);
        Delay_us(7);
        Write_LCD_Com(0x0006);
        Delay_us(7);
        Write_LCD_Com(0x0001);
        Delay_us(7);
}


                                                                      主程序
int main(void)
{

                Int_RCC();
                GPIOE_LCD();
                Int_LCD();
               
               
                while(1)
                {

                        Write_LCD_Com(0x0080+2);
                        Write_LCD_date('A');                                       
                }
               
}


之前液晶有黑 {MOD}的方块被清除了,所以确定了清除指令起作用了,但不知道为什么液晶板上还是空空如野,写不进东西
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。