OpenEdv-开源电子网

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

求救:有关LCD1602驱动的问题,我已经调试了两天了,还是不显示

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-3-27
在线时间
0 小时
发表于 2014-5-9 13:34:16 | 显示全部楼层 |阅读模式
5金钱
最近想驱动一下LCD1602,照着手册说明写了程序,可是屏幕死活就是不显示啊!真心纠结了,求仙人帮助~~

下面是我的代码:

【lcd1602.c】
[mw_shl_code=c,true]#include "sys.h" #include "delay.h" #include "lcd1602.h" void LCD1602_Init(void) { RCC->APB2ENR |= 1 << 3; //????PORTB?±?? GPIOB->CRL &= 0XFFFFF000; //PB0??PB1??PB2?è?????? GPIOB->CRL |= 0X00000333; //PB0??PB1??PB2???ì??????50MHz GPIOB->CRH &= 0X00000000; //PB8~15?è?????? GPIOB->CRH |= 0X33333333; //PB8~15???ì??????50MHz LCD1602_RS = 0; LCD1602_E = 0; GPIOB->BSRR = (0XFF << 8) & 0XFF00; //GPIOB[15:8]??????1??GPIOB[7:0]±?????±? //?¨????BSRR[15:8]??1????BSRR[7:0]??0 //1111111100000000 & 1111111100000000 = 1111111100000000 LCD1602_WriteCommand(0X38); //?????????????? LCD1602_WriteCommand(0X0E); //??????±ê????±ê?????? LCD1602_WriteCommand(0X06); //?±????????×?·??ó?????·????+1??????±ê+1 LCD1602_WriteCommand(0X01); //???????? LCD1602_WriteCommand(0X80); //?è?????????·???? } void LCD1602_WriteCommand(u8 cmd) { LCD1602_RS = 0; GPIOB->BSRR = (cmd << 8) & 0XFF00; //GPIOB[15:8]??cmd??1??????1??GPIOB[7:0]±?????±? //?¨????BSRR[15:8]??cmd??1??????1????BSRR[7:0]??0?????? //XXX00X0X00000000 & 1111111100000000 = XXX00X0X00000000 GPIOB->BRR = ((~cmd) << 8) & 0XFF00; //GPIOB[15:8]??cmd??0??????0??GPIOB[7:0]±?????±? //?¨????BRR[15:8]??cmd??0??????1????BRR[7:0]??0?????? //000XX0X000000000 & 1111111100000000 = 000XX0X000000000 delay_ms(5); LCD1602_E = 1; delay_ms(5); LCD1602_E = 0; } void LCD1602_WriteData(u8 data) { LCD1602_RS = 1; GPIOB->BSRR = (data << 8) & 0XFF00; GPIOB->BRR = ((~data) << 8) & 0XFF00; delay_ms(5); LCD1602_E = 1; delay_ms(5); LCD1602_E = 0; }[/mw_shl_code]

【lcd1602.h】
[mw_shl_code=c,true]#ifndef __LCD1602_H #define __LCD1602_H #include "sys.h" #define LCD1602_RS PBout(0) //PB0 #define LCD1602_RW PBout(1) //PB1 #define LCD1602_E PBout(2) //PB2 void LCD1602_Init(void); void LCD1602_WriteCommand(u8 cmd); void LCD1602_WriteData(u8 data); #endif[/mw_shl_code]

【main.c】
[mw_shl_code=c,true]#include "sys.h" #include "usart.h" #include "delay.h" #include "lcd1602.h" #include "led.h" int main(void) { Stm32_Clock_Init(9); //?????±???è?? delay_init(72); //???±?????? uart_init(72, 9600); //?®??????????9600 LED_Init(); //??????LED LCD1602_Init(); //??????LCD1602 while (1); }[/mw_shl_code]


硬件连接如下:

RS——PB0
RW——PB1
E——PB2
D0~D8——PB8~PB15(按大小顺序对应连的)
VSS、VDD、V0、A、K——开发板5V输出电源
V0和电源之间还连了一个可调变阻器

下面是我的硬件连接图:





最佳答案

查看完整内容[请看2#楼]

搞定了,有个极大的原因,就是V0不应该接5V,而是要接GND。与GPIOX无什么太大关系
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-3-27
在线时间
0 小时
 楼主| 发表于 2014-5-9 13:34:17 | 显示全部楼层
搞定了,有个极大的原因,就是V0不应该接5V,而是要接GND。与GPIOX无什么太大关系
回复

使用道具 举报

60

主题

153

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2014-1-28
在线时间
8 小时
发表于 2014-5-9 14:19:56 | 显示全部楼层
纯支持。牛逼。
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-3-27
在线时间
0 小时
 楼主| 发表于 2014-5-9 14:25:05 | 显示全部楼层
回复【2楼】LuoKen:
---------------------------------
感谢支持~
这个应该是个挺简单的实验,可我就是找不到问题所在~~
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-3-27
在线时间
0 小时
 楼主| 发表于 2014-5-9 14:29:21 | 显示全部楼层
不知道为什么,注释全部都乱码掉了。还好代码没乱掉~
回复

使用道具 举报

80

主题

931

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3348
金钱
3348
注册时间
2013-5-28
在线时间
468 小时
发表于 2014-5-9 14:48:29 | 显示全部楼层
1602几乎可以说是最简单的LCD了,建议你先确定STM32正常输出,就是每个端口用LED等能正常按你要求闪烁,然后剩下的就是时序问题


一般而言,你只要随便找份资料都能做出来,就是注意下,有些信号是要边沿有效的,就是你要先1延迟一下再0,或者先0延迟,再1
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2014-3-27
在线时间
0 小时
 楼主| 发表于 2014-5-9 15:00:11 | 显示全部楼层
回复【5楼】聚东风:
---------------------------------
用GPIOB口能够驱动这个LCD吗,我又查了一些资料,好多说用GPIOB时不能显示。
我还在调试中,成功了我再把经验贴上来。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-5-19
在线时间
0 小时
发表于 2015-5-19 17:29:47 | 显示全部楼层
回复【7楼】OpenEdvyss:
---------------------------------
你好,V0不是调节对比度的吗 不经过可调电阻 直接接地?
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 05:45

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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