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

📄 lcd.c

📁 LPC23XX USB hid keyboard
💻 C
字号:
#define LCD_C 1
#include <LPC23xx.H> 
#include "lcd.h"
#include "chartable.h"
unsigned char gb_ucDegree;
				   
const char ST7637DN_Initial_Table[] = 
        {
     	
  	0x01,0x01,
	0x02,0x00,

	0x01,0xd7,				//autoread control,disable autoread
	0x00,0xbf,					
	0x01,0xe0,				//control otp/mtp,read mode
	0x00,0x00,

	0x02,0x00,
	0x01,0xe3,				//control otp/mtp
	0x02,0x00,
	0x01,0xe1,				//close read mode     10
	
	0x01,0x11,			//Sleep OUT
	0x02,0x00,			//delay 5ms
	0x01,0x20,			//normal diaplay

	0x01,0xc3,			//bias set ?
	0x00,0x03,	
			
	0x01,0xc4,			//booster set
	0x00,0x06,
	
	0x01,0xc5,			//booster efficiency set
	0x00,0x01,
	
	0x01,0xcb,			//VG Booster Set        10
	0x00,0x01,
	
	0x01,0xcc,			//ID1 Set
	0x00,0x45,
	0x01,0xce,			//ID3 Set
	0x00,0x00,
	0x01,0xb7,			//Glass direction
	0x00,0xc0,
	0x01,0xd0,			//follower type set
	0x00,0x19,

	0x01,0xd7,			//auto read control      10
	0x00,0xbf,
	0x01,0xc7,			//V0 offset voltage set
	0x00,0x00,
	0x00,0x00,
	
	0x01,0xb5,			//N-line Set
	0x00,0x0a,
	0x01,0xcd,			//ID2 Set
	0x00,0xd1,
	0x01,0xd0,			//Set Vg Source
	0x00,0x1d,                         //      10
	0x01,0xb4,			//PTL Saving Mode Set
	0x00,0x18,				//power normal mode
 
  	0x01,0x2a,			//windows column address set
	0x00,0x02,
	0x00,0x81,
	0x01,0x2b,			//ROW Start,ROW End
	0x00,0x00,
	0x00,0x7f,

	0x01,0x3a,			//pixel format set
	0x00,0x05,                        //        10
	0x01,0x36,			//memory access control
	0x00,0x08,
	0x01,0x29,			//display on

	0x01,0xb0,			//duty set
	0x00,0x83,
	0x01,0xb1,			//first com set
	//0x00,0x00,
	0x00,0x03,
	0x01,0xb3,			//OSC DIV.SET
	0x00,0x00,
	//0x01,0xc0,			//V0 valtage Set   

	0x01,0xc0,			//V0 valtage Set       ??         10
	//0x00,0x46,			//0x20,
	0x00,0xd2,				//0x20,  d5
	0x00,0x00,				//0xff,vlcd=15.84,0x46,vlcd=15.7;0x20,vlcd=15.24
	
	0x01,0xc6,			//V0 Bias Set
	0x00,0x00,
	0x01,0xb7,		//glass direction
	0x00,0xc8,

	
	0x01,0xf9,		//gamma
	0x00,0x00,
	0x00,0x03,
	0x00,0x05,               //10
	0x00,0x07,
	0x00,0x09,
	0x00,0x0b,
	0x00,0x0d,
	0x00,0x0f,
	0x00,0x11,
	0x00,0x13,
	0x00,0x15,
	0x00,0x17,
	0x00,0x19,               //10
	0x00,0x1b,
	0x00,0x1d,
	0x00,0x1f,

	0x01,0x25,		//write contrast?
	0x00,0x42             //5?

  };


void delayPeriod(unsigned char i)
{	
	
unsigned int n;
while(i>1)
{
	for(n=65535;n>1;n--);
	i--;
}
}



 void init_lcd_port(void)
 {
 //port initialized
 //IODIR1=0x00FF0000;
 //IODIR0=0x40600010;
 PINSEL10 = 0;
 IODIR0=0x000003c0;
 FIO2DIR=0x000001ff; //P2.0-P2.8
 FIO2MASK = 0x00000000;
 }
 



void delayms (unsigned int i) {                        /* Delay function */
unsigned int n;
while(i>1)
{
	for(n=65535;n>1;n--);
	i--;
}
}



void initialTFT(void)
{
	unsigned char i;
	init_lcd_port();

  delayPeriod(30);			//delay 155ms
  SET_TFTCS;//= 1;         //NOP
  SET_RDB;// = 1;
  FIO2SET = 0xff;  
  CLR_RSTB;//REG1630_PC_GPIO_9C = REG1630_PC_GPIO_9C&0xfd;
  CLR_TFTCS;// CS=0;
  delayPeriod(30);			//delay 155ms
  SET_TFTCS;// TFTCS=1;
  SET_RSTB;// REG1630_PC_GPIO_9C = REG1630_PC_GPIO_9C|0x02;  
  delayPeriod(30);			//delay 155ms
  CLR_TFTCS;// CS=0;

 for (i=0;i<170;i+=2)	//2007-06-09 Farmer 
        	{
        		switch(ST7637DN_Initial_Table[i])		
							{
							case	0x00:			//00是数据
									writedata(ST7637DN_Initial_Table[i+1]);
									break;
							case	0x01:		//指令
									writeCMD(ST7637DN_Initial_Table[i+1]);
									break;
							case	0x02:		//延时100mS
									delayPeriod(10);			//delay 155ms(100);
									break;	
							}		
        		}	
//	writeCMD(0x20);		//2008-01-29 Farmer 打开LCD显示	
//	writeCMD(0x25);		//2008-01-29 Farmer 打开LCD显示	
//	writedata(0x3F);		//2008-01-29 Farmer 打开LCD显示	
		//CLR_TFTCS;// CS=0;    
	    writeCMD(0x28);		//2008-03-11 lakin 先关
		writeCMD(0x29);	
	//	SET_TFTCS;// TFTCS=1;
	SET_TFTCS;// TFTCS=1;		
}
void writedata(unsigned char ucW2LCM)
{
	CLR_WRB ;//= 0;
	OUT_DATA(ucW2LCM);
	SET_WRB ;//= 1;
}

void writeCMD(unsigned char ucW2LCML)
{
	CLR_DCB;// DCB=0;=  0;
	CLR_WRB;// = 0;
	OUT_DATA(ucW2LCML);
	SET_WRB ;//= 1;
	SET_DCB;//DCB = 1;
}


void WriteWindowSize(unsigned char ucStartX,unsigned char ucStartY,unsigned char ucEndX,unsigned char ucEndY)	
{
	unsigned char tx1=0,ty1=0,tx2=0,ty2=0;//lakin 2008-2-4
           switch (gb_ucDegree){
                   case 0x03:      //left 270C
                     			tx1 =ucStartX;
                    			tx2 =ucEndX;
                          ty1 =ucStartY;
                          ty2 =ucEndY;                             
                         break;
                    case 0x02:     //down 180C
                     			tx1 =ucStartX+4;
                    			tx2 =ucEndX+4;
                          ty1 =ucStartY;
                          ty2 =ucEndY;
                         break;
                    case 0x01:			//down 90
                    			tx1 =ucStartX+4;
                    			tx2 =ucEndX+4;
                          ty1 =ucStartY+4;
                          ty2 =ucEndY+4;
                          break;
                     case 0x00:			//down 0	
                     tx1=ucStartX;                         				
			tx2=ucEndX;
       		ty1=ucStartY+4;
                	ty2=ucEndY+4;
                         break;
                        }
		   		
                CLR_TFTCS ;//= 0;
                writeCMD(0x2a);
                writedata(tx1);                          //start
                writedata(tx2);                          //end

                writeCMD(0x2b);
                writedata(ty1);                          //start
                writedata(ty2);
                writeCMD(0x2c);
                SET_TFTCS ;//= 1;	
}


//===================================================

void Write8dot(unsigned char ucTemp)
{	unsigned char j;
		for( j = 0; j<8; j++ )
		{
			if(ucTemp&0x80)
			{				
				CLR_WRB ;//= 0;
				OUT_DATA(gb_uc256BackColor);	 //background
				SET_WRB ;//= 1;
			} else{
				CLR_WRB ;//= 0;
				OUT_DATA(gb_uc256CharColor);	//foreground
				SET_WRB ;//= 1;
			}
			ucTemp=ucTemp<<1;
		}

}

		
void Write8dot_02(unsigned char ucTemp)//lakin add 2008-2-20
        {       unsigned char j;
	    CLR_TFTCS;//
                for( j = 0; j<8; j++ )
                {
                        if(ucTemp&0x80)
                        {
                                CLR_WRB ;//= 0;
                                OUT_DATA(gb_BAT_ucBackColorH);//0x00
                                SET_WRB ;//= 1;
                                CLR_WRB ;//= 0;
                                OUT_DATA( gb_BAT_ucBackColorL);
                                SET_WRB ;//= 1;
                        }
                        else
                        {
                                CLR_WRB ;//= 0;
                                OUT_DATA(gb_BAT_ucCharColorH);
                                SET_WRB;//= 1;
                                CLR_WRB ;//= 0;
                                OUT_DATA(gb_BAT_ucCharColorL);
                                SET_WRB;// = 1;
                        }
                        ucTemp=ucTemp<<1;
                }
	    SET_TFTCS;//
        }


//normal 

void Write8dot_REV(unsigned char ucTemp)
{	unsigned char j;
	    CLR_TFTCS;//
		for( j = 0; j<8; j++ )
		{
			if(ucTemp&0x80)
			{
				CLR_WRB ;//= 0;
				OUT_DATA(gb_BAT_ucCharColorH);
				SET_WRB ;//= 1;
				CLR_WRB ;//= 0;
				OUT_DATA(gb_BAT_ucCharColorL);
				SET_WRB ;//= 1;
			} else{
				CLR_WRB ;//= 0;
				OUT_DATA( gb_BAT_ucBackColorH);
				SET_WRB ;//= 1;
				CLR_WRB ;//= 0;
				OUT_DATA(gb_BAT_ucBackColorL);
				SET_WRB ;//= 1;
			}
			ucTemp=ucTemp<<1;
		}
		   SET_TFTCS;//
}
void OUT_DATA(unsigned char data)
{
unsigned char i;
for(i=0;i<8;i++) 
  {
  
   if(data&1) {Io_Set2(i);}	 //把相应的IO口置位或者清零
   else {Io_Clr2(i);}
   data=data>>1;
   }
}
void Io_Set2(unsigned char pin)	   //单个IO口置位函数
{
unsigned int io_data=1;
io_data=io_data<<pin;
FIO2SET=io_data;         //IOSET0为IO线上置位寄存器,1有效,0无
}


void Io_Clr2(unsigned char pin)	   //单个IO口清零函数
{
unsigned int io_data=1;
io_data=io_data<<pin;
FIO2CLR=io_data;         //IOCLR0为IO线上清零寄存器,1有效,0无
}
 void BlueScreen(void)
        {
                int i;
                
                WriteWindowSize(0,0,127,127);
                CLR_TFTCS;// = 0;
                for(i=0;i<16384;i++)
                {
                        writedata( gb_BAT_ucBackColorH);         //zp 0327 for background color
                        writedata( gb_BAT_ucBackColorL);
                
                }
                SET_TFTCS;// = 1;
        }


void LCD_print(unsigned char *c_string,unsigned char S_Width,unsigned char S_Height)
{
  unsigned char i,j,l;
  unsigned char  t_Pos[20];
  unsigned char * c_CompareChar="0123456789ABCDEFGHIJKLMNOPQRSTUVWSYZabcdefghijklmnopqrstuvwsyz :";

  for(i=0;c_string[i] !='\0'; i++)
	{// CLR_TFTCS;
	 //WriteWindowSize(S_Width+i*8,S_Height,S_Width+(i+1)*8-1,S_Height+10);
	 WriteWindowSize(S_Width,S_Height+i*8,S_Width+7,S_Height+(i+1)*8-1);
	//  SET_TFTCS;
	for(j=0; j<64;j++)
	  { if(c_string[i]==c_CompareChar[j])
	    { 
		 t_Pos[i]=j;
		for(l=0;l<8;l++)
		 Write8dot_REV(D_CharTable[t_Pos[i]][l]);
		 break;
		 }
		}
  	}	
}

⌨️ 快捷键说明

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