用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}的方块被清除了,所以确定了清除指令起作用了,但不知道为什么液晶板上还是空空如野,写不进东西
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>