OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5068|回复: 4

求助 关于1604液晶显示问题

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-3-14
在线时间
2 小时
发表于 2016-3-14 16:48:32 | 显示全部楼层 |阅读模式
1金钱
用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');                                       
                }
               
}


之前液晶有黑色的方块被清除了,所以确定了清除指令起作用了,但不知道为什么液晶板上还是空空如野,写不进东西

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2016-3-14 20:39:39 | 显示全部楼层
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-3-14
在线时间
2 小时
 楼主| 发表于 2016-3-15 15:45:59 | 显示全部楼层
好伤心  顶顶顶
回复

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-3-14
在线时间
2 小时
 楼主| 发表于 2016-3-15 15:46:22 | 显示全部楼层

原子哥  这样写有问题吗  硬件方面试过没问题
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
64
金钱
64
注册时间
2015-7-12
在线时间
5 小时
发表于 2017-5-2 13:59:39 | 显示全部楼层
不是应该有DB0-DB7八位的吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 16:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表