打印

12864串行液晶显示

[复制链接]
1569|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
konglingfei0615|  楼主 | 2013-8-22 13:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 konglingfei0615 于 2013-8-22 13:51 编辑

各位大虾帮小弟看看这个程序哪里出了问题,就是点不亮液晶。
#include <msp430x14x.h>
#define CS_H P2OUT |= BIT0
#define CS_L P2OUT &= ~BIT0
#define SCLK_H P2OUT |= BIT1
#define SCLK_L P2OUT &= ~BIT1
#define SID_H P2OUT |= BIT2
#define SID_L P2OUT &= ~BIT2
#define RST_H P2OUT |= BIT3
#define RST_L P2OUT &= ~BIT3
#define PSB_H P2OUT |= BIT4
#define PSB_L P2OUT &= ~BIT4
/*************************************************************************
**  函数名称:SCO_Init
**  函数功能:系统时钟初始化,MCLK=8M Hz
                              SMCLK=MCLK/8=1M Hz
                              ACLK=32768 Hz
**  入口参数:无  
**  出口参数:无
***************************************************************************/
void SOC_Init(void)
{
    uchar n;
    BCSCTL1 &= ~XT2OFF;             //打开XT2振荡器
    do
    {
        IFG1 &= ~OFIFG;                    // 清除振荡器失效标志
        for (n = 0xFF; n > 0; n--); // 延时,等待XT2起振
    }while ((IFG1 & OFIFG) != 0);   // 判断XT2是否起振
        
    BCSCTL2 |= SELM_2 + SELS;      //主时钟选择XT2CLK=8MHz,SMCLK时钟选择XT2CLK
    BCSCTL2 |= DIVS_3;             //SMCLK时钟8分频,得到1MHz时钟  
}

/*******************************************
函数名称:Delayus
功    能:实现n个us的精确延时
参    数:n(65536)
返回值  :无
********************************************/
void Delayus(uint n)
{
  TACTL |= TASSEL_2;//选择SMCLK
  TACTL |= MC_1;//Up mode
  CCR0 = n;
  while(!(TACTL & BIT0));//TAIFG置1
  TACTL &= ~BIT0;//清TAIFG位
  TACTL &= ~MC_1;//停止计数
}

/*******************************************
函数名称:Delayms
功    能:实现n个ms的精确延时
参    数:n(65536)
返回值  :无
********************************************/
void Delayms(uint n)
{
  uint x,y;
  for(x=n;x>0;x--)
    for(y=8000;y>0;y--);
}

/*******************************************
函数名称:SendByte
功    能:串口传送1个字节
参    数:date
返回值  :无
********************************************/
void SendByte(uchar date)
{
  uchar i;
  for(i=0;i<8;i++)
  {
    if(date & 0x80)
    {
      SID_H;
    }
    else
    {
      SID_L;
    }
    date <<= 1;
    SCLK_L;   
    SCLK_H;
  }  
}

/*******************************************
函数名称:WriteCom
功    能:串口传送指令
参    数:com
返回值  :无
********************************************/
void WriteCom(uchar com)
{
  CS_H;
  SendByte(0xf8);
  SendByte(com & 0xf0);
  SendByte((com << 4) & 0xf0);
  Delayus(400);  
}

/*******************************************
函数名称:WriteData
功    能:串口传送数据
参    数:com
返回值  :无
********************************************/
void WriteData(uchar date)
{
  CS_H;
  SendByte(0xfa);
  SendByte(date & 0xf0);
  SendByte((date << 4) & 0xf0);
  Delayus(400);  
}

/*******************************************
函数名称:LCD_Init
功    能:12864初始化
参    数:无
返回值  :无
********************************************/
void LCD_Init()
{
//  Delayms(50);
//  PSB_L;
//  Delayus(10);
  RST_L;
  Delayms(10);
  RST_H;
  Delayms(2000);
  WriteCom(0x30);
  Delayms(5);  
//  WriteCom(0x30);//再次功能设定,大于37us
//  Delayus(37);
//  WriteCom(0x08);//显示状态设定,大于72us
//  Delayus(72);
//  WriteCom(0x10);
//  Delayus(72);
  WriteCom(0x0c);
  Delayms(5);
}

/*******************************************
函数名称:DispChar
功    能:显示字符串
参    数:*str
返回值  :无
********************************************/
void DispChar(uchar *str)
{
  while(*str > 0)
  {
    WriteData(*str);
    str++;
    Delayms(5);
  }  
}

/*******************************************
函数名称:Display
功    能:显示子函数
参    数:无
返回值  :无
********************************************/
void Display()
{
  WriteCom(0x03);
  Delayms(5);
  WriteCom(0x80);
  DispChar("   Welcome to   ");
  WriteCom(0x90);
  DispChar("   MSP430F149   ");
  WriteCom(0x88);
  DispChar("  The world of  ");
  WriteCom(0x98);
  DispChar("   Thank you!   ");  
}

void main()
{
  WDTCTL = WDTPW + WDTHOLD;  
  P2DIR = 0xff;
  SOC_Init();
  PSB_L;
  Delayus(100);
  LCD_Init();
  Delayms(1);
  while(1)
  {
    Display();
    Delayms(500);
  }   
}

相关帖子

沙发
konglingfei0615|  楼主 | 2013-8-22 13:49 | 只看该作者
自己顶一个,顺便问下这种程序出错了怎么一步步调试?

使用特权

评论回复
板凳
tyw| | 2013-8-22 14:08 | 只看该作者
地板
konglingfei0615|  楼主 | 2013-8-30 08:01 | 只看该作者
经过试验,上述程序是正确的,只是硬件接错了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

136

帖子

0

粉丝