OpenEdv-开源电子网

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

LCD1602

[复制链接]

5

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2016-11-19
在线时间
30 小时
发表于 2016-11-19 12:54:08 | 显示全部楼层 |阅读模式
3金钱
lcd头文件

#ifndef __LCD_H
#define __LCD_H
#include "sys.h"
#define E  PCout(12)
#define RS PCout(11)
void lcd_Init(void);
void write_com(u8 com);
void write_date(u8 date);
#endif


lcd.c文件
#include "lcd.h"
#include "stm32f10x.h"
#include "delay.h"
void lcd_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOC,ENABLE);

GPIO_InitStruct.GPIO_Mode =GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_All;                                  //数据传出接口(GPIOD口共有16个,只使用前8个口)
GPIO_InitStruct.GPIO_Speed =GPIO_Speed_50MHz;
GPIO_Init(GPIOD,&GPIO_InitStruct);

GPIO_InitStruct.GPIO_Mode =GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin =GPIO_Pin_11|GPIO_Pin_12;
GPIO_Init(GPIOC,&GPIO_InitStruct);                                         //命令端和使能端

}
void write_com(u8 com)                                                       //写命令函数
{
RS=0;
GPIO_Write(GPIOD,com);
delay_ms(5);
E=1;
delay_us(1);
E=0;
}
void write_date(u8 date)                            //写数据函数
{
RS=1;
GPIO_Write(GPIOD,date);
delay_ms(5);
E=1;
delay_us(5);
}

主函数:
#include "stm32f10x.h"
#include "lcd.h"
int main(void)
{
u8 z='a';
lcd_Init();

write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);

write_com(0x08);                              //在第一行显示
write_date(z);                                  //显示字母A

}
接口连接好但是显示不出来,全白的。请问我这个程序有问题吗?新手   急急急

最佳答案

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

使用了新 的液晶屏之后改写程序得出了现象。现在已经解决问题了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2016-11-19
在线时间
30 小时
 楼主| 发表于 2016-11-19 12:54:09 | 显示全部楼层
使用了新 的液晶屏之后改写程序得出了现象。现在已经解决问题了  
回复

使用道具 举报

42

主题

297

帖子

0

精华

高级会员

Rank: 4

积分
994
金钱
994
注册时间
2016-7-22
在线时间
318 小时
发表于 2016-11-19 13:14:24 | 显示全部楼层
main里面连while(1)都没有,你的显示A那一行应该在死循环中跑的吧
回复

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2016-11-19 13:51:59 | 显示全部楼层
先在main函数最后写个while循环试一下
回复

使用道具 举报

5

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2016-11-19
在线时间
30 小时
 楼主| 发表于 2016-11-28 22:03:52 | 显示全部楼层
2449164582 发表于 2016-11-19 13:51
先在main函数最后写个while循环试一下

加了while还是不行,只是蓝屏,啥也没有
回复

使用道具 举报

5

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
232
金钱
232
注册时间
2016-11-19
在线时间
30 小时
 楼主| 发表于 2016-11-28 22:04:59 | 显示全部楼层
hi我歌月徘徊 发表于 2016-11-19 13:14
main里面连while(1)都没有,你的显示A那一行应该在死循环中跑的吧

应该在主函数里一直跑也可以吧,,,后面我加了while循环,但还是显示不出来,,,不会是硬件的问题吧
回复

使用道具 举报

33

主题

481

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
5075
金钱
5075
注册时间
2013-10-4
在线时间
654 小时
发表于 2016-11-29 09:06:49 | 显示全部楼层
wanqigui 发表于 2016-11-28 22:03
加了while还是不行,只是蓝屏,啥也没有

你的程序有问题,你在论坛搜一下吧,论坛里有STM32 的LCD1602的程序
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-1 10:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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