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

📄 lcd12864.c

📁 msp430 12864液晶 C程序 已经调试过了
💻 C
字号:
#include <msp430x14x.h>

#define comm  0
#define dat   1
/*P1OUT第一位为cs  std  sclk*/


void init_lcd ();                                                   //初始化LCD
void clrram (void);                                                 //清DDRAM
void wr_lcd (unsigned char  dat_comm,unsigned char  content);       //写LCD
void delay (int us);
void delay1 (int ms);                               
unsigned char tab3[16];




/*------------------初始化-----------------*/
void init_lcd (void)
{
  
  wr_lcd (comm,0x30);  
  delay (10);
  wr_lcd (comm,0x06);  
  delay (10);
  wr_lcd (comm,0x01);  
  delay1 (10);
  wr_lcd (comm,0x0E);
  delay (10);
  wr_lcd (comm,0x0C);

}
 

/*--------------清DDRAM------------------*/
void clrram (void)
{
  wr_lcd (comm,0x30);
  delay (20);
  wr_lcd (comm,0x01);
  delay (20);
}
/*---------------------------------------*/
void wr_lcd (unsigned char  dat_comm,unsigned char  content)
{
  unsigned char  a,i;
  a=content;
  P1OUT|=0X01;   //cs变高
  P1OUT|=0X04;  //sclk变高
  P1OUT|=0X02;   //sid变高
  for(i=0;i<5;i++)
  {
    P1OUT&=0XFB;
    P1OUT|=0X04;  //sclk变高
  }
  P1OUT &= 0XFD;  //sid变低
  P1OUT &= 0XFB;  //sclk变低
  P1OUT |= 0X04;  //sclk变高
  if(dat_comm)
    P1OUT |= 0X02;   //data
  else
    P1OUT &= 0XFD;   //command
  P1OUT &= 0XFB;    //sclk变低
  P1OUT |= 0X04;    //sclk变高
  P1OUT &= 0XFD;    //sid变低
  P1OUT &= 0XFB;     //sclk变低 
  P1OUT |= 0X04;     //sclk变高
  for (i=8; i>4; i--)
    {
      unsigned char mask =  1 << (i-1);   
      if (a & mask) 
        P1OUT |= 0x02;
      else                                             
        P1OUT &= 0xFD;
        P1OUT &= 0XFB;      
        P1OUT |= 0X04;
    }
    P1OUT &= 0XFD;
    for(i=0;i<4;i++)
    {
      P1OUT &= 0XFB;
      P1OUT |= 0X04;      
    }
    for (i=4; i>0; i--)
    {
      unsigned char mask =  1 << (i-1);   
      if (a & mask) 
        P1OUT |= 0x02;
      else                                             
        P1OUT &= 0xFD;
        P1OUT &= 0XFB;      
        P1OUT |= 0X04;
    }
    P1OUT &= 0XFD;
    for(i=0;i<4;i++)
    {
      P1OUT &= 0XFB;
      P1OUT |= 0X04;      
    }
    P1OUT &=0xfe;   //cs变低
}


/*-----------------------------------*/
void delay (int us)   //delay 10 us 
{
  int j;
   for(j=0;j<us;j++);
}
void delay1 (int ms)  //delay 1 ms
{
  int i,j;
    for(i=0;i<ms;i++)
    for(j=0;j<200;j++);
}


/*---------------显示汉字或字符----------------*/

void chn_disp (unsigned char  *chn)
{
  unsigned char i,j;
  wr_lcd (comm,0x80);
  for (j=0;j<4;j++)
  {
    for (i=0;i<16;i++)
    wr_lcd (dat,chn[j*16+i]);  
  }
}
void add()
{
  unsigned char i;
  for(i=0;i<16;i++)
  {
    tab3[i]='m';
  }
}

unsigned char tab1[]={
"aaaaaaaaaaaaaaaa"
"1111111111111111"
"丫丫爱猫猫一辈子"
"丫丫爱猫猫一辈子"}; 
unsigned char tab2[]={
"丫丫爱猫猫一辈子"
"丫丫爱猫猫一辈子"
"丫丫爱猫猫一辈子"
"丫丫爱猫猫一辈子"};


 /************************************/     
void main (void)
{
  WDTCTL = WDTPW + WDTHOLD;
  P1DIR=0Xff;
  delay1(2000);
  init_lcd ();
  void add();
  while(1)
  {
    chn_disp (tab2);
    delay1(2000);
    chn_disp (tab3);
    delay1(2000);
  }
}

⌨️ 快捷键说明

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