7621|13

23

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

launchpad 与 lcd1602 连接不显示。。 [复制链接]

如题,使用launchpad g2231连接1602,这个1602是3.3v专用的,在论坛上找到了一些代码,但是实际连接起来后都无法工作。。。。求解惑

代码如下:
/**************************************************
*
* LCD1602显示
*
* 描述:4线数据宽度,操作Lcd1602
* 在LCD1602屏幕上第一行显示 Hello!LCD1602
* 第二行显示 123456789abcdef
*
* 时间:2012年3月15日调试成功(出现问题主要是因为LCD初始化)
*
* 硬件电路:MSP430F2132
* 硬件连接:
*
* MSP430与LCD连接信息
* LCD1602,4位接口,即使用D4-D7数据口,D0-D3不接入MCU
* PIN1 --> 地
* PIN2 --> VCC(一定要接+5V)
* PIN3 -->仿真时悬空,实际电路 2K电阻-->地 (一定要接好,否则没有任何显示)
* PIN4 --> RS --> P2.2
* PIN5 --> R/W --> GND
* PIN6 --> EN --> P2.1
* PIN7 --> D0不接
* PIN8 --> D1不接
* PIN9 --> D2不接
* PIN10 --> D3不接
* PIN11 --> D4 --> P1.4
* PIN12 --> D5 --> P1.5
* PIN13 --> D6 --> P1.6
* PIN14 --> D7 --> P1.7
* PIN15 --> VCC(一定要接+5V,如果不要背光可以不接
* PIN16 --> 地
* 调试器:MSP430FET全系列JTAG仿真器
* 调试软件: CCS5.1.1 编译
**************************************************/
#include "msp430g2231.h"
#include <intrinsics.h>
//定义////////////////////////////////////////////////////////////////////
#define LCD_EN_PORT P1OUT//以下2个要设为同一个口
#define LCD_EN_DDR P1DIR
#define LCD_RS_PORT P1OUT//以下2个要设为同一个口
#define LCD_RS_DDR P1DIR
#define LCD_DATA_PORT P1OUT //以下3个要设为同一个口
#define LCD_DATA_DDR P1DIR //一定要用高4位
#define LCD_RS BIT2
#define LCD_EN BIT1
//#define LCD_DATA    BIT0|BIT1|BIT2|BIT3|BIT4|BIT5|BIT6|BIT7  //8位数据线连接模式时使用
#define LCD_DATA    BIT4|BIT5|BIT6|BIT7   //4位数据线连接模式时使用
////预定义函数//////////////////////////////////////////////////////////////////
void LCD_init(void);
void LCD_en_write(void);
void LCD_write_command(unsigned char command);
void LCD_write_data(unsigned char data);
void LCD_set_xy (unsigned char x, unsigned char y);
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s);
void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data);
void delay_1ms(void);
void delay_nus(unsigned int n);
void delay_nms(unsigned int n);
void main()
{
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog

LCD_init();

delay_1ms();
LCD_write_string(0,0,"Hello!LCD1602");
delay_1ms();
LCD_write_string(0,1,"123456789abcdef");
while(1);
}
//LCD液晶操作函数///////////////////////////////////////////////////////////////
//LCD1602液晶初始化
void LCD_init(void)
{
delay_nms(15);
LCD_DATA_DDR|=LCD_DATA; //数据口方向为输出
LCD_EN_DDR|=LCD_EN; //设置EN方向为输出
LCD_RS_DDR|=LCD_RS; //设置RS方向为输出

delay_1ms();      //这4行不要改,否则仿真没显示
// LCD_write_command(0x38);  //8位数据接口时,使用这行,否则仿真没显示
LCD_write_command(0x33);  //4位数据接口时,使用这行,否则仿真没显示
delay_1ms();     //
// LCD_write_command(0x38);  //8位数据接口时,使用这行,否则仿真没显示
LCD_write_command(0x32);  //4位数据接口时,使用这行,否则仿真没显示
delay_1ms();
// LCD_write_command(0x38); //8位数据接口时,使用这行,否则仿真没显示


delay_1ms();
// LCD_write_command(0x38); //8位数据接口
LCD_write_command(0x2c); //4位数据接口

delay_1ms();
LCD_write_command(0x0c); //显示开

delay_1ms();
LCD_write_command(0x01); //清屏

delay_1ms();
LCD_write_command(0x06);

}
//液晶使能
void LCD_en_write(void)
{
LCD_EN_PORT|=LCD_EN;
delay_nus(10);
LCD_EN_PORT&=~LCD_EN;
}
//写指令
void LCD_write_command(unsigned char command)
{
delay_nus(16);
LCD_RS_PORT&=~LCD_RS; //RS=0
LCD_DATA_PORT&=0X0f; //清高四位
LCD_DATA_PORT|=command&0xf0; //写高四位
//LCD_DATA_PORT = command; //写8位

delay_nus(16);
LCD_en_write();
command=command<<4; //低四位移到高四位
LCD_DATA_PORT&=0x0f; //清高四位
LCD_DATA_PORT|=command&0xf0; //写低四位

LCD_en_write();
}
//写数据
void LCD_write_data(unsigned char data)
{
delay_nus(16);
LCD_RS_PORT|=LCD_RS; //RS=1
LCD_DATA_PORT&=0X0f; //清高四位
LCD_DATA_PORT|=data&0xf0; //写高四位
//LCD_DATA_PORT = data; //写8位

LCD_en_write();
data=data<<4; //低四位移到高四位
LCD_DATA_PORT&=0X0f; //清高四位
LCD_DATA_PORT|=data&0xf0; //写低四位
LCD_en_write();
}
//写地址函数
void LCD_set_xy( unsigned char x, unsigned char y )
{
unsigned char address;
if (y == 0) address = 0x80 + x;
else address = 0xc0 + x;
LCD_write_command( address);
}
//LCD在任意位置写字符串
//列x=0~15,行y=0,1
void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
{
LCD_set_xy( X, Y ); //写地址
while (*s) // 写显示字符
{
LCD_write_data( *s );
s ++;
}
}
//LCD在任意位置写字符
//列x=0~15,行y=0,1
void LCD_write_char(unsigned char X,unsigned char Y,unsigned char data)
{
LCD_set_xy( X, Y ); //写地址
LCD_write_data( data);
}
//延时函数//////////////////////////////////////////////////////////////////////
//1us延时函数
void delay_1us(void)
{
asm("nop");
}
//N us延时函数
void delay_nus(unsigned int n)
{
unsigned int i;
for (i=0;i<n;i++)
delay_1us();
}
//1ms延时函数
void delay_1ms(void)
{
unsigned int i;
for (i=0;i<1140;i++);
}
//N ms延时函数
void delay_nms(unsigned int n)
{
unsigned int i=0;
for (i=0;i<n;i++)
delay_1ms();
}




其中红色字部分,由于2231没有P2.1和P2.2,我给改成了P1.1和P1.2,相应地下面的红色部分代码也改了,其余部分未动,使用四线模式,但就是什么都不显示啊,有经验的同学能给个建议吗,感激不尽。。

最新回复

我在论坛里发了一个关于驱动1602的帖子,你可以参考一下 https://bbs.eeworld.com.cn/thread-369146-1-1.html 有什么问题我们可以交流一下  详情 回复 发表于 2013-4-23 17:25
 
点赞 关注

回复
举报

34

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
程序没什么大问题,3.3VLCD1602不能工作
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
可我上面说了,我用的就是3.3v型号的1602啊,买来就是430专用的啊,还是我连接错了吗?
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 沙发 董宝君 的帖子

可我上面说了,我用的就是3.3v型号的1602啊,买来就是430专用的啊,还是我连接错了吗?
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

5
 

回复 沙发 董宝君 的帖子

通了个宵调试,依旧不成功 想死的心都有了。。。
这位大哥能给个代码和连接图吗,感激不尽了。。。
 
 
 

回复

38

帖子

0

TA的资源

一粒金砂(中级)

6
 

回复 5楼 pz_cloud 的帖子

我代表全国人民送去 问候 继续调
 
 
 

回复

232

帖子

0

TA的资源

一粒金砂(中级)

7
 

回复 6楼 cableyang 的帖子

头像很个性啊
 
 
 

回复

23

帖子

0

TA的资源

一粒金砂(中级)

8
 

回复 6楼 cableyang 的帖子

成功了,是接线问题,pin3仿真时不接地也是无法现实的。。
但是现在还有一个问题,rs和en只能换成P1.1,P1.2才能工作,P2.6和7则还是不行,应该是代码没改全,因为我的LAUNCHPA的P1.2要用来捕获所以不能接液晶,如果要改口的话应该怎么做呢?
 
 
 

回复

324

帖子

0

TA的资源

一粒金砂(高级)

9
 
是不是驱动能力不足的原因,你加一个驱动器试试。
 
 
 

回复

39

帖子

0

TA的资源

一粒金砂(中级)

10
 
向楼主的成功表示祝贺!
 
 
 

回复

8

帖子

0

TA的资源

一粒金砂(中级)

11
 
楼主我是完全按照你说的来的,除了用的是5V的1602,为什么不行呢?
 
 
 

回复

5

帖子

0

TA的资源

一粒金砂(中级)

12
 
lz说说你的延时时间怎么来的?

为什么写指令,数据时候加个 延时16us,以及,在en上升沿再加个延时10us?

1602datasheet里的的延时时间都是ns级别。

还有呢,初始化时,延时500ms 也太多呢?

这是出于什么考虑呢?

谢谢
 
 
 

回复

29

帖子

0

TA的资源

一粒金砂(中级)

13
 
请教楼主1602的问题,我调了一晚上没成功

点评

我在论坛里发了一个关于驱动1602的帖子,你可以参考一下 https://bbs.eeworld.com.cn/thread-369146-1-1.html 有什么问题我们可以交流一下  详情 回复 发表于 2013-4-23 17:25
 
 
 

回复

1976

帖子

0

TA的资源

五彩晶圆(初级)

14
 

回复 13楼 lgd0722 的帖子

我在论坛里发了一个关于驱动1602的帖子,你可以参考一下
https://bbs.eeworld.com.cn/thread-369146-1-1.html
有什么问题我们可以交流一下
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表