OpenEdv-开源电子网

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

原子哥:LCD1602程序调不出来,请帮忙啊

[复制链接]

12

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2011-8-29
在线时间
3 小时
发表于 2011-9-9 22:30:15 | 显示全部楼层 |阅读模式
原子哥:以下程序是LCD1602的部分程序,现在上电后LCD就是背光灯有亮其他无反应不知道何故请帮忙指教一下啊。(其中部分程序是参考网友追梦的)



#define LCD_RS_0 GPIO_WriteBit(GPIOC,GPIO_Pin_8,Bit_RESET);
#define LCD_RS_1 GPIO_WriteBit(GPIOC,GPIO_Pin_8,Bit_SET);
#define LCD_RW_1 GPIO_WriteBit(GPIOC,GPIO_Pin_7,Bit_SET);
#define LCD_RW_0 GPIO_WriteBit(GPIOC,GPIO_Pin_7,Bit_RESET);
#define LCD_EN_1 GPIO_WriteBit(GPIOC,GPIO_Pin_6,Bit_SET);
#define LCD_EN_0 GPIO_WriteBit(GPIOC,GPIO_Pin_6,Bit_RESET);
#define DataOut(x) GPIOB->BSRR = 0xFF000000 | ( x <<8 ); //PB8-15数据输出
/*********************************************************************
*功    能:写入LCD初始化时的命令,不可以检测忙状态
*********************************************************************/
void LCD_WriteInitcmd(u8 cmd)
{                          
 LCD_RS_0;
 delay_us(1);
 LCD_RW_0;
 delay_us(1);
 DataOut(cmd);
 LCD_EN_0;
 delay_us(300);
 LCD_EN_1;
 delay_us(300);
 LCD_EN_0;
 delay_ms(2);
}
/*********************************************************************
*名    称:LCD_Writecmd()
*功    能:写指令到LCD1602,指令数据占一个字节
*入口参数:cmd:待写入的指令
*出口参数:无
*********************************************************************/
void LCD_Writecmd(u8 cmd)
{                          
 while(LCD_busy());
 LCD_RS_0;    //对同一个寄存器的两次写入,中间延时一会
 delay_us(1);
 LCD_RW_0;
 delay_us(1);
 LCD_EN_0;
 delay_us(300);//产生脉冲
 DataOut(cmd);
 LCD_EN_1;
 delay_us(300);//必要的延时
 LCD_EN_0;    //下降沿,LCD1602开始工作
}
/*********************************************************************
*名    称:LCD_Writedata()
*功    能:写一字节数据到LCD1602
*入口参数:dat:无符号字节类型,0~255  包括各个ASCII码字符
*出口参数:无
*********************************************************************/
void LCD_Writedata(u8 dat) 
{                         
 while(LCD_busy());//等待LCD1602空闲
 LCD_RS_1;
 delay_us(1);
 LCD_RW_0;
 delay_us(1);
 DataOut(dat);
 LCD_EN_1;  //先拉高
 delay_us(300); //很重要的延时,经调试,延时300us以上才可以
 LCD_EN_0;       //下降沿,开始写入有效数据
}
void LCD_Init(void)
{   
    delay_ms(200);           //延时20ms         
 LCD_WriteInitcmd(0x38);  //16*2显示,5*7点阵,8位数据
 delay_ms(10);
 LCD_WriteInitcmd(0x38);  //16*2显示,5*7点阵,8位数据
 delay_ms(5);
 LCD_WriteInitcmd(0x38);  //16*2显示,5*7点阵,8位数据
 delay_ms(5);
 LCD_WriteInitcmd(0x08);  //先关显示,后开显示
 delay_ms(5);
 LCD_WriteInitcmd(0x06);  //自动右移光标,0x04为左移光标
 delay_ms(5);
 LCD_WriteInitcmd(0x01);  //清除LCD的显示内容
 delay_ms(6);
 LCD_WriteInitcmd(0x0c);  //显示开,关光标;0x08为关显示
 delay_ms(5);
}

uint8_t LCD_busy(void)
{                         
 LCD_RS_0;
 delay_us(1);
 LCD_RW_1;
 delay_us(1);
 do
 {
  LCD_EN_0;
  delay_us(200);
  LCD_EN_1;
  delay_us(200);
 }
 while(GPIO_ReadOutputDataBit(GPIOB,GPIO_Pin_15));
 LCD_EN_0;
 return (uint8_t)0; 
}

int main(void)
{
RCC_Conifg();
GPIO_Conifg();
USART_Config();
led_init();
SysTick_Initaize();
LCD_Init();
LedOn(1);
LedOff(0);
LCD_Writedata('o');
while(1)
{  
}
}

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

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-9-10 00:17:14 | 显示全部楼层
貌似本论坛有网友发过1602的代码了.
找找看吧.
1602比较简单的,你看看硬件有没有接错.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

64

主题

227

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2011-7-23
在线时间
13 小时
发表于 2011-9-15 13:14:55 | 显示全部楼层
我是来路过学习的。呵呵。
回复 支持 反对

使用道具 举报

9

主题

102

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
205
金钱
205
注册时间
2011-1-20
在线时间
7 小时
发表于 2011-9-15 13:25:03 | 显示全部楼层
请参考“http://www.openedv.com/posts/list/1012.htm”。
回复 支持 反对

使用道具 举报

头像被屏蔽

308

主题

400

帖子

0

精华

禁止访问

积分
1185
金钱
1185
注册时间
2011-7-29
在线时间
10 小时
发表于 2011-11-18 17:32:32 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-11-18 18:36:31 | 显示全部楼层
那得看你的1602的技术资料了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

13

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2011-11-9
在线时间
0 小时
发表于 2011-11-18 18:40:49 | 显示全部楼层
 要有是工具的话用示波器看一下发送的数据是不是正常的,如果是正常有可能是需要上拉,我前两天在做一个串口通信的时候就碰到了
回复 支持 反对

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2015-4-24 15:27:53 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,我的1602可以显示数组,但是总是把2显示成3,6显示成7.每一组数据全是如此,这是怎么回事呢,比如发送的数据是02764413,但从1602显示出来却是03774413

1602错误.doc

346 KB, 下载次数: 81

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-4-24 23:21:18 | 显示全部楼层
回复【8楼】青山小树:
---------------------------------
我好久没玩这个了,你参考别人的例程看看吧
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2015-4-27 09:15:35 | 显示全部楼层
回复【9楼】正点原子:
---------------------------------
好吧。还是谢谢原子哥百忙中来回复。
回复 支持 反对

使用道具 举报

3

主题

38

帖子

0

精华

初级会员

Rank: 2

积分
96
金钱
96
注册时间
2014-12-17
在线时间
5 小时
发表于 2015-5-7 19:25:46 | 显示全部楼层
回复【10楼】青山小树:
---------------------------------
原子哥,如果买了http://detail.tmall.com/item.htm?spm=a230r.1.14.22.IEyaEl&id=37639837370&ns=1&abbucket=19上边的串口蓝牙后,可否直接将stm32单片机的数据通过蓝牙发送到手机上呢?如果可以,中间要注意哪些必要的步骤呢?stm32单片机要怎么跟蓝牙模块连接呢,单片机是否要对蓝牙模块编程呢?单片机的数据怎么穿送给蓝牙模块呢?蓝牙模块是怎样发送数据给手机的呢,要完成这一步是否需要单片机要对蓝牙编程呢,还有,手机接收数据,是否需要对手机编程呀?


ps:不好意思,原子哥,我是正在长大的菜鸟,问题比较幼稚还多,请多多包涵。谢谢您。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 18:29

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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