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

📄 lcd_ltm024_bas.c

📁 该C程序是基于MSP430的液晶显示程序
💻 C
字号:
#include "LCD_LTM024_PORT.h"
#include "LCD_LTM024.h"

void DelayMs(uint16 t)
{
  uint16 i, j;
  for(i=0; i<t; i++)
  {
    for(j=0; j<120; j++);
  }
}

void LCD_OrgInit()//Org safe status
{
  LCD_CS_H;  //not selected
  LCD_WR_H;  //not write but read
  LCD_RS_L;  //not data but commond
  LCD_RD_H;  //not read
  LCD_RST_H; //low is active
  DDR_LCD_CTL |= LCD_CS | LCD_WR | LCD_RS | LCD_RD | LCD_RST;//all output
  OUT_LCD_DATA = 0xff; //all high
  DDR_LCD_DATA = 0xff; //all output
}

void LCD_SafeStatus()// safe mode
{
  LCD_CS_H;  //not selected
  LCD_WR_H;  //not write but read
  LCD_RS_H;  //not data but commond
  LCD_RD_H;  //not read
  LCD_RST_H; //not reset,low is active
  DDR_LCD_CTL |= LCD_CS | LCD_WR | LCD_RS | LCD_RD | LCD_RST;//all output
  OUT_LCD_DATA = 0xff; //all high
  DDR_LCD_DATA = 0x00; //all input
}

void LCD_FastStatus()//active & fast mode
{
  LCD_CS_L;  //selected
  LCD_WR_H;  //not write
  LCD_RS_H;  //data
  LCD_RD_H;  //not read
  LCD_RST_H; //not reset,low is active
  DDR_LCD_CTL |= LCD_CS | LCD_WR | LCD_RS | LCD_RD | LCD_RST;//all output
  OUT_LCD_DATA = 0xff; //all high
  DDR_LCD_DATA = 0xff; //all output
}

void LCD_WrReg(uint8 reg)//write reg
{
  LCD_RS_L;//cmd
  OUT_LCD_DATA = reg;
  LCD_WR_L;
  LCD_WR_H;
  LCD_RS_H;//Data
}

void LCD_WrData8(uint8 data)//Write 8-bit data
{
//  LCD_RS_H;//data
  OUT_LCD_DATA = data;
  LCD_WR_L;
  LCD_WR_H;
}

void LCD_WrData16(uint16 data)//Write 16-bit data
{
  LCD_WrData8(data>>8);//Write 8-bit data
  LCD_WrData8(data);//Write 8-bit data
}

void LCD_WrCmd8(uint8 Index, uint8 cmd)//Write 8-bit commond
{
  LCD_WrReg(Index);
  LCD_WrData8(cmd);
}

void LCD_WrCmd16(uint8 Index, uint16 cmd)//Write 16-bit commond
{
  LCD_WrReg(Index);
  LCD_WrData16(cmd);
}

uint8 LCD_RdData8()//Read 8-bit Data
{
  uint8 data = 0x00;
  OUT_LCD_DATA = 0x00; //all low
  DDR_LCD_DATA = 0x00; //all input  
  LCD_RD_L;
  LCD_RD_H;
  data = IN_LCD_DATA;
//  OUT_LCD_DATA = 0x00; //all low
  DDR_LCD_DATA = 0xFF; //all output  
  return data;
}

uint16 LCD_RdData16()//Read 16-bit Data
{
  uint16 data = 0x0000;
  OUT_LCD_DATA = 0x00; //all low
  DDR_LCD_DATA = 0x00; //all input
  LCD_RD_L;
  LCD_RD_H;
  data = IN_LCD_DATA;
  LCD_RD_L;
  LCD_RD_H;
  data |= (IN_LCD_DATA<<8);
//  OUT_LCD_DATA = 0x00; //all low
  DDR_LCD_DATA = 0xFF; //all output  
  return data;
}

uint16 LCD_RdReg16(uint8 Index)//Read 16-bit reg
{
  LCD_WrReg(Index);
  return LCD_RdData16();
}

void LCD_SetRec(uint8 xs, uint16 ys, uint8 x_dot, uint16 y_dot)//设置窗口大小
{
  LCD_WrCmd8(0x00,0x0C);        //扫描模式设定
  LCD_WrCmd8(0x2,xs);           //设置到原点
  LCD_WrCmd16(0x3,ys);
  LCD_WrCmd8(0x04,x_dot);	//结束列数(0~239)	
  LCD_WrCmd16(0x05,y_dot);	//结束行数(0~319)
//  LCD_WrReg(0x0E); 
}

//清屏函数    
void LCD_Clear(void)
{                    
/*  uint n;
  LCD_SetRec(0, 0, 239, 319);
  for(n=0;n<38400;n++)
  {
    LCD_WrData16(WHITE);//显示白色
    //LCD_RdData16();//Read 16-bit Data
  }
  for(n=0;n<38400;n++)
  {
    LCD_WrData16(WHITE);//显示白色 
    //LCD_RdData16();//Read 16-bit Data
  }*/
  LCD_SetRec(0, 0, 239, 319);//面板设置
  LCD_WrCmd8(0x01,0x0F);//写入清屏
  DelayMs(10000);
}

void LCD_Reset()    //TFT LCD Reset
{
  LCD_RST_L;        //Low active
  DelayMs(500);
  LCD_RST_H;
  DelayMs(500);
}

void LCD_Init()     //初始化LCD
{
  LCD_OrgInit();    //Org safe status
  LCD_Reset();      //TFT LCD Reset
  LCD_FastStatus(); //active & fast mode

  LCD_WrCmd8(0xA1,0x00);
  LCD_WrCmd8(0xA0,0x00);

  LCD_WrCmd8(0x70,0xC8);
  LCD_WrCmd8(0x72,0xA3);
  LCD_WrCmd8(0x73,0x04);
  LCD_WrCmd8(0x75,0x45);
  LCD_WrCmd8(0x76,0x23);
  LCD_WrCmd8(0x77,0x08);
  LCD_WrCmd8(0x78,0x08);
  LCD_WrCmd8(0x79,0x00);
  LCD_WrCmd8(0x7F,0xF0);
  LCD_WrCmd8(0x71,0x81);
  LCD_WrCmd8(0x0D,0x23);
  LCD_WrCmd8(0x11,0x00);
  LCD_WrCmd8(0x12,0x00);
  LCD_WrCmd8(0x21,0x37);
  LCD_WrCmd8(0x22,0x02);
  LCD_WrCmd8(0x23,0x24);
  LCD_WrCmd8(0x24,0x13);
  LCD_WrCmd8(0x25,0x0A);
  LCD_WrCmd8(0x26,0x82);
  LCD_WrCmd8(0x27,0x01);
  LCD_WrCmd8(0x1E,0x25);
  LCD_WrCmd8(0x1F,0x59);

  //GAMMA设置
  LCD_WrCmd16(0x30,0x0777);
  LCD_WrCmd16(0x31,0x0444);
  LCD_WrCmd16(0x32,0x0555);
  LCD_WrCmd16(0x33,0x0444);
  LCD_WrCmd16(0x34,0x0333);
  LCD_WrCmd16(0x35,0x0333);
  LCD_WrCmd16(0x36,0x0333);
  LCD_WrCmd16(0x37,0x0333);
  LCD_WrCmd16(0x38,0x0444);
  LCD_WrCmd16(0x39,0x0555);
  LCD_WrCmd16(0x3A,0x0666);
  LCD_WrCmd16(0x3B,0x0666);
  LCD_WrCmd16(0x3C,0x0777);
  LCD_WrCmd16(0x3D,0x0777);
  LCD_WrCmd16(0x3E,0x0777);
  LCD_WrCmd16(0x3F,0x0777);
  LCD_WrCmd16(0x40,0x0777);
  LCD_WrCmd16(0x41,0x0777);
  LCD_WrCmd16(0x42,0x0777);
  LCD_WrCmd16(0x43,0x0777);
  LCD_WrCmd16(0x44,0x0777);
  LCD_WrCmd16(0x45,0x0777);
  LCD_WrCmd16(0x46,0x0777);
  LCD_WrCmd16(0x47,0x0777);
  LCD_WrCmd16(0x48,0x0777);
  LCD_WrCmd16(0x49,0x0777);
  LCD_WrCmd16(0x4A,0x0777);
  LCD_WrCmd16(0x4B,0x0777);
  LCD_WrCmd16(0x4C,0x0777);
  LCD_WrCmd16(0x4D,0x0666);
  LCD_WrCmd16(0x4E,0x0666);
  LCD_WrCmd16(0x4F,0x0666);
  LCD_SetRec(0, 0, 239, 319);//面板设置

/*  
  LCD_WrCmd8(0x06,0x00);
  LCD_WrCmd8(0x07,0x00);
  LCD_WrCmd8(0x08,200);
  LCD_WrCmd8(0x09,200);
*/
  
  LCD_WrCmd8(0x0A,0x00);
  LCD_WrCmd8(0x0B,0x00);
  LCD_WrCmd8(0x0C,0x00);
  LCD_WrCmd8(0x14,0x00);
  LCD_WrCmd8(0x15,0x00);
  LCD_WrCmd8(0x16,0x00);
  LCD_WrCmd16(0x17,0x01FF);
  LCD_WrCmd16(0x18,0x01FF);
  LCD_WrCmd8(0x13,0x00);

  LCD_WrCmd16(0x19,0x01FF);
  LCD_WrCmd16(0x1B,0x01FF);
  LCD_WrCmd16(0x1C,0x01FF);
  LCD_WrCmd16(0x1A,0x01FF);	
  LCD_WrCmd8(0x1D,0x0E);
  LCD_WrCmd8(0x10,0x06); //开显示
  LCD_WrReg(0x0E);
  //LCD_Clear();
  LCD_SafeStatus();      // safe mode
}

⌨️ 快捷键说明

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