2426|12

20

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

G2553与1602的显示问题 [复制链接]

调了一天了都没进展,求大神解答这个问题,下面附上我的代码

最新回复

你有用单步调试过吗,有没有发现是初始化不成功还是在显示字符的时候出了问题,又或者是你所用1602自身带的字库有问题?   详情 回复 发表于 2014-8-2 22:52
 
点赞 关注

回复
举报

20

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
#include"msp430g2553.h"


#define CPU_F ((double)1000000)//主时钟的频率1MHz
#define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0))//__delay_cycles()延时函数为系统自带库函数
#define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0))
//频率是物体1秒钟时间内震动的次数
//频率为1MHz就是说,1秒的时间内震动1000 000次
//也就是说要想得到1秒的延时,必须震动100 000次
//要想得到1ms的延时震动1000次
//要想得到1us的延时震动1次
//在MSP430中计一个数,需要时钟震动一次,上面的延时函数就是这样实现的


#define uchar unsigned char
#define uint unsigned int


#define RS_HIGN P2OUT|=BIT0 //P2.0-rs
#define RS_LOW P2OUT&=~BIT0
#define RW_HIGN P2OUT|=BIT1 //P2.1-rw
#define RW_LOW P2OUT&=~BIT1
#define E_HIGH P2OUT|=BIT2 //P2.2-e
#define E_LOW P2OUT&=~BIT2
//注意:接线时,1602的Vo引脚要接可调电阻或者直接接地
//不然对比度太低,看不到显示的字符


void write_com(uchar com) //写指令函数
{
RS_LOW;
RW_LOW;
P1OUT=com;
delay_ms(5);
E_HIGH;
delay_ms(5);
E_LOW;
}


void write_data(uchar data) //写数据函数
{
RS_HIGN;
RW_LOW;
P1OUT=data;
delay_ms(5);
E_HIGH;
delay_ms(5);
E_LOW;
}


void Init_lcd(void)
{
write_com(0x38);//设置8位格式,2行,5x7
delay_ms(5);
write_com(0x0c);//整体显示,关光标,不闪烁
delay_ms(5);
write_com(0x06);//设定输入方式,增量不移位
delay_ms(5);
write_com(0x01);//清除屏幕显示
delay_ms(5);
}
void display_xy(unsigned char x,unsigned char y)
{
if(y==0x01)
{
x = x+0x80; }
else
{
x = x+0xC0; //数据指针设置 80H+地址码 (0-27H,40H-67H)
}
write_com(x);
}
void Disp1Char(uchar x,uchar y,uchar data)
{
display_xy(x,y);
write_data(data); ////输出数据
}

void main(void)
{
WDTCTL = WDTPW + WDTHOLD;

//系统默认主时钟MCLK为1MHz左右,这里使用校正数据进行校正
//也可以不进行校正,为了得到精确一点的延时,建议进行校正
DCOCTL = CALDCO_1MHZ;
BCSCTL1 = CALBC1_1MHZ;

P1DIR=0XFF;
P2DIR=0xFF;
Init_lcd();
Disp1Char(0,1,'A');
Disp1Char(1,1,'B');
Disp1Char(2,1,'C');
Disp1Char(3,1,'D');
Disp1Char(4,1,'E');
Disp1Char(5,1,'F');
Disp1Char(6,1,'G');
while(1)
  {
  }
}
 
 

回复

20

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
然后液晶显示ABCL    (中间莫名空了8格)       MNO

想要显示的DEFG变成了LMNO

1602.jpg (122.4 KB, 下载次数: 0)

1602.jpg
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(初级)

4
 
求大神解答啊
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

5
 
不要用data,这个是c语言的保留字,用date吧
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

6
 
不要用data,这个是c语言的保留字,用date吧
 
 
 

回复

26

帖子

0

TA的资源

一粒金砂(中级)

7
 
不要用data,这个是c语言的保留字,用date吧
 
 
 

回复

2781

帖子

419

TA的资源

五彩晶圆(中级)

8
 
lcd1602-4wiredriver.zip (60.14 KB, 下载次数: 11)
lcd1602-8wiredriver.zip (57.29 KB, 下载次数: 6)



 
个人签名
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

9
 
楼主,如果板子焊接了外部晶振32.768,上面的延时是不就不对了???
 
 
 

回复

20

帖子

0

TA的资源

一粒金砂(初级)

10
 
没接外部晶振啊
 
 
 

回复

1972

帖子

1

TA的资源

五彩晶圆(初级)

11
 
有两点想说一下,延时5ms有点太长了,像g2553开到最高的16M,不加延时,1602还是能扛得住的,况且你只用了1M,就算是为了兼容更高主频的CPU,也还是建议你把延时再设置得小一点;其次关于显示出乱码的问题,我看了一下你的代码,显示字符部分的没有什么问题,现在显示不正确,建议你再确认一下初始化是否成功,可通过单步调试看一下整个过程在哪一句出了问题,还有就是要确认一下所用1602的资料是否是正确的
 
 
 

回复

1972

帖子

1

TA的资源

五彩晶圆(初级)

12
 
本帖最后由 bobde163 于 2014-8-1 22:36 编辑

如果你需要我以前写的源码的话,我也可以发上来,管理员在上面也发了两个4线的8线驱动的程序,里面有基本的字符显示代码,你可以参考一下
 
 
 

回复

1972

帖子

1

TA的资源

五彩晶圆(初级)

13
 
bobde163 发表于 2014-8-1 22:34
如果你需要我以前写的源码的话,我也可以发上来,管理员在上面也发了两个4线的8线驱动的程序,里面有基本的 ...

你有用单步调试过吗,有没有发现是初始化不成功还是在显示字符的时候出了问题,又或者是你所用1602自身带的字库有问题?
 
 
 

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

开源项目 更多>>
    随便看看
    查找数据手册?

    EEWorld Datasheet 技术支持

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

     
    EEWorld订阅号

     
    EEWorld服务号

     
    汽车开发圈

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

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

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

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