大连创客空间

 找回密码
 立即注册吧!

QQ登录

只需一步,快速开始

一键登录:

搜索
查看: 1736|回复: 6
收起左侧

430G2553 1602液晶程序问题

[复制链接]
发表于 2012-7-23 17:13:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多交流,硬件的世界向你敞开大门!

您需要 登录 才可以下载或查看,没有帐号?立即注册吧!

x

P2.3接RS,P2.5接en,P2.4接rw。P1.0~P1.7接的D0~D7。#include<msp430g2553.h>
#define uint unsigned int
#define uchar unsigned char
/**************宏定义***************/
#define DataDir      P1DIR
#define DataPort    P1OUT   
#define CtrlDir        P2DIR
#define LCD_BUSY    P1IN&0X80  //P1.7为检测忙碌的端口
#define CLR_RS P2OUT&=~BIT3;    //RS = p2.3
#define SET_RS P2OUT|=BIT3;
#define CLR_RW P2OUT&=~BIT4; //RW = P2.4
#define SET_RW P2OUT|=BIT4;
#define CLR_EN P2OUT&=~BIT5; //EN = P2.5
#define SET_EN P2OUT|=BIT5;
/***********************************************/

uchar table[]={"123456"};//输入你想要显示的字符
void init();
void Delay5ms();
uint busy();
void write_com(uchar com);//写指令函数
void write_data(uchar dat);//写数据函数
void LCD_display();//显示函数
void delay()
{
  int z;
  for(z=1000;z>0;z--);
}
/*******************************************
函数名称:Delay5ms
功    能:延时约5ms
参    数:无
返回值  :无
********************************************/
void Delay5ms(void)
{
    uint i=40000;
    while (i != 0)
    {
        i--;
    }
}

void init()//初始化函数
{
   
   Delay5ms();
   Delay5ms();
   Delay5ms();
   write_com(0x38);   //设置显示,点阵,数据接口等
   Delay5ms();
   write_com(0x38);
   Delay5ms();
   write_com(0x38);
   Delay5ms();
   write_com(0x08);
   write_com(0x01);   //数据指针、显示清零                          
   write_com(0x06);   //指针自动加一
   write_com(0x0c);   //开显示,不显示光标,光标不闪烁   
   write_com(0x80);  //从第一格开始显示
}
/*LCD指令*/
void write_com(uchar com)
{
  
  
     while(busy());
   
    _NOP();
    _NOP();
    CLR_RS;       //RS置低
    CLR_RW;          //RW置低
    CLR_EN;
    _NOP();
    _NOP();
    _NOP();
    DataPort = com;             //将命令字写入数据端口
    _NOP();
    _NOP();
    _NOP();
   
    SET_EN;                     //EN置高 产生使能脉冲信号
    _NOP();
    _NOP();
    _NOP();
    _NOP();
    CLR_EN;               
}


/*LCD数据*/
void write_data(uchar dat)
{
    while(busy());
   
    SET_RS;              //RS置高
    CLR_RW;              //Rw置低
    CLR_EN;
    _NOP();
    _NOP();
    _NOP();
     _NOP();
    DataPort = dat;        //将显示数据写入数据端口
    _NOP();
    SET_EN;                 //EN置高 产生使能脉冲信号
    _NOP();
    _NOP();
     _NOP();
    _NOP();
    CLR_EN;  
}

void LCD_display()
{
   int i;
  
  for(i=0;i<6;i++)// X代表字符的个数
  {
    write_data(table[i]);
    delay();
  }
}
/***********检测忙碌************/
uint busy()
{
    uint result;
    DataDir=0x00;
    CLR_RS;
    SET_RW;
    SET_EN;
    _NOP();
    _NOP();
    _NOP();
    _NOP();
    result=LCD_BUSY;
    CLR_EN;
   DataDir=0xff;
    return result;
   
   
}

void main()
{
  WDTCTL=WDTPW+WDTHOLD;//关看门狗
  BCSCTL2=SELM_3;//选择时钟源为MCLK
  
  P1DIR|=0xff;  //P1为输出端
  
  P2DIR|=BIT3+BIT4+BIT5;  //P2.3 P2.4 P2.5为输出端

  P1OUT&=0x00;
  P2OUT&=0x00;
  
  init();
  LCD_display();
  while(1);
}

大神帮看看 哪里出问题了!!!!
不显示啊!~!~~~

回复

使用道具 举报

发表于 2012-7-23 20:47:06 | 显示全部楼层
你加上拉电阻试试。。
回复 支持 反对

使用道具 举报

发表于 2012-7-23 20:48:22 | 显示全部楼层
延时问题,时间延长一点,试一下。
回复 支持 反对

使用道具 举报

发表于 2012-7-23 20:49:04 | 显示全部楼层
或者没加上拉电阻。
回复 支持 反对

使用道具 举报

发表于 2012-7-23 23:11:02 | 显示全部楼层
应该要加个上拉,我也做个类似的,没加上拉也没显示
回复 支持 反对

使用道具 举报

发表于 2012-7-24 00:26:22 | 显示全部楼层
大哥。你的显示有问题吧
回复 支持 反对

使用道具 举报

发表于 2012-7-24 00:27:21 | 显示全部楼层
显示部分没指令、、
回复 支持 反对

使用道具 举报

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

本版积分规则

单片机开发者1群:235808606;会员QQ 6群:254085994; 1群:12835691(满); 2群:121061287(满); 3群:237320668(满);4群:249652919(满);5群:253578883(满);大赛1群:187926790(满),2群:231577758(满),3群:249652919(满)。 TI杯4群:58129202(满)。
载入中

QQ|手机版|小黑屋|Archiver|大连创客空间 ( 辽ICP备15004617号-2  

GMT+8, 2017-2-28 22:33 , Processed in 0.231960 second(s), 25 queries .

地址:辽宁省大连市高新园区火炬路7号17层 QQ:2401085253

Copyright © 2010-2015 创客空间(大连)科技有限公司 All Rights Reserved.

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