8709|24

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

液晶128*64疑问 [复制链接]

   我用MSP430F149控制12864的显示,当程序写进去后,只有背光亮,就是不显示要显示内容,有没有谁遇到过类似的问题,给我帮帮忙,在这里谢过了!
  

最新回复

没遇到过这问题。学习中……  详情 回复 发表于 2010-6-13 19:30
点赞 关注

回复
举报

64

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
我刚接触单片机的时候遇到过,那时候是没给IO口加上拉电阻导致的
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
应该是I/O初始化错误。找个例程比较一下正确的I/O初始化
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

4
 
应该不是那些问题,找到了TI所给的例程,有完整的程序,但是还是不行,不知道是什么问题!
 
 
 

回复

94

帖子

0

TA的资源

一粒金砂(初级)

5
 
如果不是程序的问题就是硬件电路的问题了
看看IO口设置是不是正确的,MSP430F149是不是工作正常
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
如果不是硬件问题的话大多数就是时序问题了。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

7
 
初步怀疑时序问题,楼主你要贴代码出来,别人才能帮你,而且你要确定硬件没有接错,多检查硬件,顺便说说你硬件怎么接的,那么很容易判断问题的,不是硬件问题,就是IO设置问题,还有就是时序问题,初始化问题。
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
128*64的LCD有很多種,有的pin腳是不相容的,需詳細的看看LCD的Datasheet^
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

9
 
程序的时序对不 还有硬件连接有没有问题
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

10
 
#include
typedef unsigned char uchar;
typedef unsigned int  uint;

extern const unsigned char shuzi_table[];

#define LCD_DataIn    P4DIR=0x00    //数据口方向设置为输入
#define LCD_DataOut   P4DIR=0xff    //数据口方向设置为输出
#define LCD2MCU_Data  P4IN
#define MCU2LCD_Data  P4OUT
#define LCD_CMDOut    P3DIR|=0x07      //P3口的低三位设置为输出
#define LCD_RS_H      P3OUT|=BIT0      //P3.0
#define LCD_RS_L      P3OUT&=~BIT0     //P3.0
#define LCD_RW_H      P3OUT|=BIT1      //P3.1
#define LCD_RW_L      P3OUT&=~BIT1     //P3.1
#define LCD_EN_H      P3OUT|=BIT2      //P3.2
#define LCD_EN_L      P3OUT&=~BIT2     //P3.2

/*******************************************
函数名称:Delay_1ms
功    能:延时约1ms的时间
参    数:无
返回值  :无
********************************************/
void Delay_1ms(void)
{
        uchar i;
   
        for(i = 120;i > 0;i--)  _NOP();
}
/*******************************************
函数名称:Delay_Nms
功    能:延时N个1ms的时间
参    数:n--延时长度
返回值  :无
********************************************/
void Delay_Nms(uint n)
{
    uint i;
   
    for(i = n;i > 0;i--)    Delay_1ms();
}
/*******************************************
函数名称:Write_Cmd
功    能:向液晶中写控制命令
参    数:cmd--控制命令
返回值  :无
********************************************/
void Write_Cmd(uchar cmd)
{
    uchar lcdtemp = 0;
                       
    LCD_RS_L;
    LCD_RW_H;
    LCD_DataIn;  
    do                       //判忙
    {   
        LCD_EN_H;
               _NOP();                                       
               lcdtemp = LCD2MCU_Data;
               LCD_EN_L;
        
    }
    while(lcdtemp & 0x80);
   
    LCD_DataOut;   
    LCD_RW_L;                 
    MCU2LCD_Data = cmd;
    LCD_EN_H;
    _NOP();                                                                         
    LCD_EN_L;
}
/*******************************************
函数名称:Write_Data
功    能:向液晶中写显示数据
参    数:dat--显示数据
返回值  :无
********************************************/
void  Write_Data(uchar dat)
{
    uchar lcdtemp = 0;   
        
    LCD_RS_L;
    LCD_RW_H;  
    LCD_DataIn;   
    do                       //判忙
    {   
        LCD_EN_H;
        _NOP();                                               
        lcdtemp = LCD2MCU_Data;
        LCD_EN_L;      
    }
    while(lcdtemp & 0x80);  
   
    LCD_DataOut;
    LCD_RS_H;
    LCD_RW_L;  
        
    MCU2LCD_Data = dat;
    LCD_EN_H;
    _NOP();
    LCD_EN_L;
}  
/*******************************************
函数名称:Ini_Lcd
功    能:初始化液晶模块
参    数:无
返回值  :无
********************************************/
void Ini_Lcd(void)
{                  
    LCD_CMDOut;    //液晶控制端口设置为输出
   
    Delay_Nms(50);
    Write_Cmd(0x30);   //基本指令集
    Delay_1ms();
    Write_Cmd(0x02);   // 地址归位
    Delay_1ms();
    Write_Cmd(0x0c);   //整体显示打开,游标关闭
    Delay_1ms();
    Write_Cmd(0x01);   //清除显示
    Delay_Nms(2);
    Write_Cmd(0x06);   //游标右移
    Delay_1ms();
    Write_Cmd(0x80);   //设定显示的起始地址
}
/*******************************************
函数名称:Disp_HZ
功    能:控制液晶显示汉字
参    数:addr--显示位置的首地址
          pt--指向显示数据的指针
          num--显示字符个数
返回值  :无
********************************************/
void Disp_HZ(uchar addr,const uchar * pt,uchar num)
{
    uchar i;
               
    Write_Cmd(addr);
      for(i = 0;i < (num*2);i++)
      Write_Data(*(pt++));
}
上面是12864的驱动程序

各位帮我看看是什么问题!
电路连接没有问题!
所用液晶是KYDZ12864M这个型号的,不过就是不显示,液晶确定是好的
我用HS12864 这个型号的液晶都可以显示,没有问题,但是换上KYDZ12864M就不行了
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

11
 
初步怀疑是你的延时函数的问题,造成你的时序延时很多都达不到要求。不知道楼主你的mcu的主频多少?也就是你的机器周期是多少?

你的延时函数,是for下面只有120个NOP空指令,这样就有1ms了?我很怀疑。所以楼主你将具体的机器周期多大,计算一下。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

12
 
液晶对延时的要求很严格,你的延时好像有问题,或者两款液晶的硬件环境不一样,我曾经也碰到过这种现象,后来我是改的延时以及程序的时序
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

13
 
谢谢啦!我得好好学习学习啦!
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

14
 
12864有的液晶驱动有并口方式和串口方式的选择管脚,你看看说明!
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

15
 
恩,可以逐个函数的输出,用示波器测试下时序是否和pdf上面说的一致,有时候计算的不准确,造成延时不够。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

16
 
430的不懂  不过 用过51的
帮你顶
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

17
 
这中液晶屏的使用延时很重要,写命令的时候后面严一点时  这样你再试试   
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

18
 
学习一下  。。。路过   现在了解了一些  谢谢!
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

19
 
应该就是延时的问题.
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

20
 
我用过132*65的液晶 如果写命令函数/写数据函数不对的话 也会无法显示
建议你再把这两个函数逐句执行以下 执行的命令 是不是你写的那样的
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表