⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 MSP430 驱动1602液晶程序
💻 C
字号:
/******************************************************************
LCD1602 DEMO
P5.4 RS
P5.5 RW
P5.6 E
P2 D0-D7
*******************************************************************/
#include "msp430x14x.h"

#define E_0 P5OUT &=~BIT6
#define E_1 P5OUT |=BIT6
#define RW_0 P5OUT &=~BIT5
#define RW_1 P5OUT |=BIT5
#define RS_0 P5OUT &=~BIT4
#define RS_1 P5OUT |=BIT4

typedef unsigned char uchar;
//---------------------------------------------
void InitSystemClock(void)  // 初始化系统时钟
{
  unsigned char i;
  WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
  BCSCTL1=0x00;//Set 430 clk  开启XT2,DOC的标称频率为最低 且不分频;XT1为低速晶体(32.768K)
  BCSCTL2=SELM_2+SELS;//选择MCLK SCLK的时钟源为高速时钟 不分频,均为8M
  do
  {
    IFG1&=~OFIFG;
    for(i=0xff;i>0;i--);
  }
  while ((IFG1&OFIFG)!=0);
//  P5DIR=BIT4+BIT5+BIT6;
//  P5SEL|=BIT4+BIT5+BIT6;//将MCLK SCLK ACLK分别输出至P5.4 5 6口
}

//----------------------------------------------
void Delay(unsigned int t)   // delay 40us
{
 for(;t!=0;t--) ;
}
//=============================================
void SendCommandByte(unsigned char ch)
{
  P5SEL &=0X00;
  P2SEL =0X00;
  P5DIR |=0XF0;
  P2DIR =0XFF;
  RS_0;
  RW_0;
  P2OUT=ch;
  E_1;
  Delay(10);
  E_0;
  Delay(100);  //delay 40us
}
//-------------------------------------------------------
void SendDataByte(unsigned char ch)
{
  P5SEL &=0X0F;
  P2SEL =0X00;
  P5DIR |=0XF0;
  P2DIR &=0XFF;
  RS_1;
  RW_0;
  P2OUT=ch;
  E_1;
  Delay(10);
  E_0;
  Delay(100); //delay 40us
}
//-------------------------------------------------
void InitLcd()
{SendCommandByte(0x30);
 SendCommandByte(0x30);
 SendCommandByte(0x30);
 SendCommandByte(0x38);	//??????
 SendCommandByte(0x0c); //??????
 SendCommandByte(0x01); //??
 SendCommandByte(0x06); //??????
}
//=============================================
void DisplayMsg1(uchar *p)
{ 
 unsigned char count;
 SendCommandByte(0x80);  //??DDRAM??
 for(count=0;count<16;count++)
    {SendDataByte(*p++);
   	}
} 
//=============================================
void DisplayMsg2(uchar *p)
{ 
 unsigned char count;
 SendCommandByte(0xc0);  //??DDRAM??
 for(count=0;count<16;count++)
    {SendDataByte(*p++);
   	}
}
//=============================================
main()
{
  InitSystemClock();
  uchar msg1[16]="MSP430F14x16xKFB";
  uchar msg2[16]="qq:463136018    ";
  InitLcd();
  DisplayMsg1(msg1);
  DisplayMsg2(msg2);
  while(1);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -