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

📄 lcd.c

📁 LPC2148驱动320240的初始化代码
💻 C
字号:
#include "LCD.H"
#include "lpc214x.h"

//
 Uchar8 SYSTEMSET_code[8] = {0x30, 0x87, 0x07, 0x28, 0x42, 0xf0, 0x30, 0x00}; //P1-P8参数
Uchar8 SCRTAB_code[10] = {0x00, 0x00, 0xf0, 0x00, 0x40, 0xf0, 0x00, 0x80, 0x00, 0x00}; //P1-P10参数
void InputData (Uchar8 dat)	{

     IO1PIN =((IO1PIN&0xFF00FFFF)|(dat<<16));
}

 /*********************************************************************************************************
** 函数: delay1ms()
** 函数功能 :延时1ms函数
** 入口参数 :count计数初值.
** 出口参数 :无
*********************************************************************************************************/

void Delay1ms(Uint32 count)
{
    int i,j;
    for(i=0;i<=count;i++)
      for(j=0;j<=583;j++);
} 

/*********************************************************************************************************
** 函数名称 : LCD_CommandWrite()
** 函数功能 :液晶写控制命令函数
** 入口参数 :cmdx要写的控制字
** 出口参数 :无
*********************************************************************************************************/

void  LCD_CommandWrite(Uchar8 CMD)  
 {  
	IO1DIR |=  Data_1DIR;  //2148向LCD传输数据
	H_LCD_RD();           //LCD_RD = 1;
    InputData(CMD);
	H_LCD_A0();          //LCD_A0 = 1;
	L_LCD_CS();          //LCD_CS = 0;
	L_LCD_WR();          //LCD_WR = 0;
	H_LCD_WR();          //LCD_WR = 1;
	H_LCD_CS();          //LCD_CS = 1;
      	  
}  

/*******************************************************************************************************
** 函数名称 : LCD_DataWrite()
** 函数功能 :液晶写数据函数
** 入口参数 :datax要写的数据
** 出口参数 :无
*********************************************************************************************************/

 void LCD_DataWrite(Uchar8 DATA)  
 { 
	IO1DIR |=  Data_1DIR;
	H_LCD_RD();		   //LCD_RD = 1;
	L_LCD_A0();		   //LCD_A0 = 0;
    InputData(DATA);
	L_LCD_CS();		   //LCD_CS = 0;
	L_LCD_WR();		   //LCD_WR = 0;
	H_LCD_WR();		   //LCD_WR = 1;
	H_LCD_CS();		   //LCD_CS = 1;
	H_LCD_A0();		   //LCD_A0 = 1;
}  

/*********************************************************************************************************
** 函数名称 : LCD_CommandRead()
** 函数功能 :液晶读命令函数
** 入口参数 :无
** 出口参数 :数据返回到address_cmd中
*********************************************************************************************************/

Uint32  LCD_CommandRead(void)
{ 	 
   	 return  0;
}

/*********************************************************************************************************
** 函数名称 : LCD_DataRead()
** 函数功能 :读液晶RAM区数据函数
** 入口参数 :无
** 出口参数 :数据返回到address_data中
*********************************************************************************************************/

Uint32 LCD_DataRead(void)
{
      return 0;
}

/*********************************************************************************************************
** 函数名称: LCD_Cursorxy()
** 函数功能 :光标位置
** 入口参数 : x,y为光标的座标
** 出口参数 :无
*********************************************************************************************************/

void  LCD_Cursorxy( char x, char y)
{
    LCD_DataWrite(CSRW);
    LCD_DataWrite(x);
    LCD_DataWrite(y);
}

/*********************************************************************************************************
** 函数名称 :LCD_Initial()
** 函数功能 :液晶初始化函数,写8835控制字
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************/
void LCD_Initial() 
{    
    Uchar8 p;
    LCD_CommandWrite(SYSTEMSET); //初始化命令
    for(p = 0; p < 8; p++)
 	{
		LCD_DataWrite(SYSTEMSET_code[p]);
	} 

    LCD_CommandWrite(SCROLL); //显示区域, 
 	for(p = 0; p < 10; p++)
	{
		LCD_DataWrite(SCRTAB_code[p]);
	}

    LCD_CommandWrite(HDOTSCR); //设置点单元卷动位置 
    LCD_DataWrite(0x00);  

	LCD_CommandWrite(DISP_OFF);	 //DISP OFF
	LCD_DataWrite(0x54);		   //FP5          FP4         FP3     FP2            FP1      FP0        FC1 FC0       00                           01                      10                         11
                                //第3显示区 第2显示区  第1显示区   光标关显示   显示,关闪烁  显示,FR/32Hz闪烁  显示,FR/64Hz闪烁

	LCD_CommandWrite(CSRFORM);	  //设置光标的显示方式及其形状
	LCD_DataWrite(0X00);         //CRX
	LCD_DataWrite(0X00);         //CRY

	LCD_CommandWrite(DISP_ON); //开显示 
	LCD_DataWrite(0x57);	   

    LCD_CommandWrite(OVLAY );  //设置合成显示方式 
    LCD_DataWrite(0x00);  

} 

/********************************************************************************************************
** 函数名称 : LCD_Clear()
** 函数功能 :清屏函数,清除32KRAM
** 入口参数 :无
** 出口参数 :无
*********************************************************************************************************/
void LCD_Clear()
{
    int i;
    LCD_Cursorxy(0x00,0x00);  
    LCD_DataWrite(MWRTTE);
    for(i=0;i<0x7fff;i++)     
   		LCD_DataWrite(0xff);
}

/*********************************************************************************************************
** 函数名称 : pixelw(),控制320×240的屏,图形区从2580开始
** 函数功能 :LCD绘点.消点子函数
** 入口参数 : x绘点/消点的x座标,y绘点/消点的y座标,attr为1表示在该座标下画一个点,为其它表示消除该座标下的点.
** 出口参数 :无
*********************************************************************************************************/

void  pixelw(Uint32 x,Uint32 y, char attr)   //描一点 x:0--319 y:0--239
{
      Uint32 addr;
      Uint32 dat;

      addr=y*40+(x)/8+0x2580; 
      LCD_Cursorxy(addr%256,addr/256);       
      LCD_CommandWrite(MREAD); 
      dat=LCD_DataRead();
      LCD_Cursorxy(addr%256,addr/256);
      LCD_CommandWrite(MWRTTE);
	  if(attr==0x01)
	  { 
           switch (x%8)
        { 
           case 0 :LCD_DataWrite((dat | 0x00400000)>>15);break;
           case 1 :LCD_DataWrite((dat | 0x00200000)>>15);break;
           case 2 :LCD_DataWrite((dat | 0x00100000)>>15);break;
           case 3 :LCD_DataWrite((dat | 0x00080000)>>15);break;
           case 4 :LCD_DataWrite((dat | 0x00040000)>>15);break;
           case 5 :LCD_DataWrite((dat | 0x00020000)>>15);break;
           case 6 :LCD_DataWrite((dat | 0x00010000)>>15);break;
           case 7 :LCD_DataWrite((dat | 0x00008000)>>15);break;
         }
	   }
	   else
	   { 
	       switch (x%8)
         { 
           case 0 :LCD_DataWrite((dat &~0x00400000)>>15);break;
           case 1 :LCD_DataWrite((dat &~0x00200000)>>15);break;
           case 2 :LCD_DataWrite((dat &~0x00100000)>>15);break;
           case 3 :LCD_DataWrite((dat &~0x00080000)>>15);break;
           case 4 :LCD_DataWrite((dat &~0x00040000)>>15);break;
           case 5 :LCD_DataWrite((dat &~0x00020000)>>15);break;
           case 6 :LCD_DataWrite((dat &~0x00010000)>>15);break;
           case 7 :LCD_DataWrite((dat &~0x00008000)>>15);break;
         }
		}
}

⌨️ 快捷键说明

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