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

📄 sed1520.c

📁 单片机51系列的122*32的某液晶驱动程序
💻 C
📖 第 1 页 / 共 4 页
字号:
}

//初始化LCD

void LCD_Init()
{
	LCDWriteCom1(0xe2);
	LCDWriteCom2(0xe2);
	LCDWriteCom1(0xa4);
	LCDWriteCom2(0xa4);	
	LCDWriteCom1(0xa9);
	LCDWriteCom2(0xa9);	
	LCDWriteCom1(0xa0);
	LCDWriteCom2(0xa0);	
	LCDWriteCom1(0xc0);
	LCDWriteCom2(0xc0);
	LCDWriteCom1(0xaf);
	LCDWriteCom2(0xaf);
	

}
void LCDClear()
{
	unsigned char i,j;
	for(i=0;i<4;i++)
	{
		LCDWriteCom1(0xb8|i);
		LCDWriteCom2(0xb8|i);
		LCDWriteCom1(0);
		LCDWriteCom2(0);
		for(j=0;j<80;j++)
			{
				LCDWriteDat1(0x0);
				LCDWriteDat2(0x0);

			}				
					
	}

}


//在x,y点显示一个点
void LCDDrawPoint(unsigned char x,unsigned char y )   
{
	unsigned char dat,temp;
									//设置页
	temp=(y>>3);
	LCDWriteCom1(0xb8|(temp&3));
	LCDWriteCom2(0xb8|(temp&3));

	if(x<MAXCOL)
	{	
		
		LCDWriteCom1(x);						//设置行
		LCDWriteCom1(0xe0);			//打开改写模式
		dat=LCDReadDat1();					//读数据
//		if(COLOR==0)dat=dat&(!(1<<(y%8)));	//计算要写数据
			dat=dat|(1<<(y%8));
		LCDWriteDat1(dat);					//写数据
		LCDWriteCom1(0xee);			//关闭改写模式

	}
	else
  if(x>MAXCOL)
	{	LCDWriteCom2(x-MAXCOL);				//设置行
		LCDWriteCom2(0xe0);				//打开改写模式
		dat=LCDReadDat2();					//读数据
	//	if(COLOR==0)		dat=dat&(!(1<<(y%8)));//计算要写数据
				dat=dat|(1<<(y%8));	
		LCDWriteDat2(dat);			//写数据
		LCDWriteCom2(0xee);				//关闭改写模式
	}
}

void LCDDrawLine(unsigned char col,unsigned char y )   
{
	char i,y0,ym,page0,page1,temp,dat=0;
	
    y0=y>>3;
	page1=y>>3;
	ym=y%8;
   if(col<=MAXCOL)
   {
     if(y0!=0)
	  {    
		    page0=4-y0;
			
			for(i=page0;i<=3;i++)
		    {
			    LCDWriteCom1(col);
				LCDWriteCom1(0xb8|(i&3));	//设定显示页
			    LCDWriteDat1(0xff);
			}
			page1=3-page1;
			LCDWriteCom1(col);
			LCDWriteCom1(0xb8|(page1&3));	//设定显示页
	        ym=8-ym;
	       for(i=ym;i<=7;i++)
	       { dat=dat+Square(i);}
	         LCDWriteDat1(dat);
	  }
	  if(y0==0) 
	  {
	        page1=3-page1;
	        LCDWriteCom1(col);
			LCDWriteCom1(0xb8|(page1&3));	//设定显示页
	        ym=8-ym;
	       for(i=ym;i<=7;i++)
	       { dat=dat+Square(i);}
	         LCDWriteDat1(dat);
	  }
	  if(y0<=2)
	  {temp=2-y0;
	      for(i=0;i<=temp;i++)
		  {
		        LCDWriteCom1(col);
				LCDWriteCom1(0xb8|(i&3));	//设定显示页
			    LCDWriteDat1(0x00);
		   }
	  }	      
    }
	else
	{
      if(y0!=0)
	  {
		    page0=4-y0;
			for(i=page0;i<=3;i++)
		    {
			    LCDWriteCom2(col-MAXCOL);
				LCDWriteCom2(0xb8|(i&3));	//设定显示页
			    LCDWriteDat2(0xff);
			}
			page1=3-page1;
			LCDWriteCom2(col-MAXCOL);
			LCDWriteCom2(0xb8|(page1&3));	//设定显示页
	        ym=8-ym;
	       for(i=ym;i<=7;i++)
	       { dat=dat+Square(i);}
	         LCDWriteDat2(dat);
	  }
	  if(y0==0)
	  {
	       page1=3-page1;
	        LCDWriteCom2(col-MAXCOL);
			LCDWriteCom2(0xb8|(page1&3));	//设定显示页
	        ym=8-ym;
	       for(i=ym;i<=7;i++)
	       { dat=dat+Square(i);}
	         LCDWriteDat2(dat);
	  }
	  if(y0<=2)
	  {temp=2-y0;
	      for(i=0;i<=temp;i++)
		  {
		        LCDWriteCom2(col-MAXCOL);
				LCDWriteCom2(0xb8|(i&3));	//设定显示页
			    LCDWriteDat2(0x00);
		   }
	  }	      
    
	}
       
}


void LCDDrawDatM2(char col, char i, char *pdat)
{
	char j;
	unsigned char length;

	length = 8;
	if ((col+length) < MAXCOL)
	{
		 LCDWriteCom1(col);
		LCDWriteCom1(0xb8|(i&3));	//设定显示页
		for(j=col; j<col+length; j++)
			LCDWriteDat1(*(pdat+(j-col)));
		return;
	}
	if (((col+length) >= MAXCOL)&&(col<MAXCOL))
	{
		LCDWriteCom1(col);
		LCDWriteCom1(0xb8|(i&3));	//设定显示页
		for(j=col; j<MAXCOL; j++)
			LCDWriteDat1(*(pdat+(j-col)));
		
		LCDWriteCom2(0);
		LCDWriteCom2(0xb8|(i&3));	//设定显示页
		for(j=0; j<MAXCOL; j++)
		{
			LCDWriteDat2(*(pdat+(MAXCOL-col+j)));
			if ((MAXCOL-col+j) >= length)
				break;
		}
		return;
	}
	else
	{
		LCDWriteCom2(col-MAXCOL);
		LCDWriteCom2(0xb8|(i&3));	//设定显示页
		for(j=col-MAXCOL; j<MAXCOL; j++)
		{
			LCDWriteDat2(*(pdat+(j-col+MAXCOL)));
			if ((j-col+MAXCOL) >= length)
				break;
		}
	}
}

void LCDDrawDatM2_Opposition(char col, char i, char *pdat)
{
	char j;
	unsigned char length;

	length = 8;
	if ((col+length) < MAXCOL)
	{
		 LCDWriteCom1(col);
		LCDWriteCom1(0xb8|(i&3));	//设定显示页
		for(j=col; j<col+length; j++)
			LCDWriteDat1( 0xff-(*(pdat+(j-col))) );
		return;
	}
	if (((col+length) >= MAXCOL)&&(col<MAXCOL))
	{
		LCDWriteCom1(col);
		LCDWriteCom1(0xb8|(i&3));	//设定显示页
		for(j=col; j<MAXCOL; j++)
			LCDWriteDat1(0xff-(*(pdat+(j-col))) );
		
		LCDWriteCom2(0);
		LCDWriteCom2(0xb8|(i&3));	//设定显示页
		for(j=0; j<MAXCOL; j++)
		{
			LCDWriteDat2(0xff-(*(pdat+(MAXCOL-col+j))) );
			if ((MAXCOL-col+j) >= length)
				break;
		}
		return;
	}
	else
	{
		LCDWriteCom2(col-MAXCOL);
		LCDWriteCom2(0xb8|(i&3));	//设定显示页
		for(j=col-MAXCOL; j<MAXCOL; j++)
		{
			LCDWriteDat2(0xff-(*(pdat+(j-col+MAXCOL))) );
			if ((j-col+MAXCOL) >= length)
				break;
		}
	}
}

void LcdTextOut_Opposition(char col, char page, char *string)
{
	char charp;
	int length;
	char scol;
	
	charp = 0;
	length = strlen(string);
	for (scol=col; scol<120; scol+=8)
	{
		LCDDrawDatM2_Opposition( scol, page, CharTable+(*(string+charp)*8) );
		charp++;
		if (charp >= length)
			break;
	}
}
void LcdTextOut(char col, char page, char *string)
{
	char charp;
	int length;
	char scol;
	
	charp = 0;
	length = strlen(string);
	for (scol=col; scol<120; scol+=8)
	{
		LCDDrawDatM2( scol, page, CharTable+(*(string+charp)*8) );
		charp++;
		if (charp >= length)
			break;
	}
}

void LCDTextOutChar( char col, char page, unsigned char d )
{
	LCDDrawDatM2( col, page, CharTable+d*8 );
}
/*
void LCD_DateShow(int colstart,int colend,int page,unsigned int dat)
{
    unsigned char i,j=16;
   unsigned int mm;
 //  LcdTextOut(0,page,"0x");

  for(i=colstart;i<=colend;i +=8)
  {
    mm=dat;
    j=j-4;
    mm >>= j;
    mm &= 0x000f;
	if( mm>9 )	   
	    LCDTextOutChar( i, page, mm-10+'A' );
	else	    
    	LCDTextOutChar( i, page, mm+'0' );
   }
}
*/
void signal(unsigned int dat)
{
  unsigned int mm;
  mm=dat;
	switch(mm)
	{case 1:LcdTextOut(1, 2,"COLOR  ");
	break;
	case 2:LcdTextOut(1, 2,"HDTV1   ");
	break;
    case 3:LcdTextOut(1, 2,"HDTV2   ");
	break;
	case 4:LcdTextOut(1, 2,"HDTV3   ");
	break;
	case 5:LcdTextOut(1, 2,"STEP   ");
	break;
	case 6:LcdTextOut(1, 2,"RED    ");
	break;
	case 7:LcdTextOut(1, 2,"GREEN   ");
	break;
	case 8:LcdTextOut(1, 2,"BLUE    ");
	break;

	}
}
void output(unsigned int dat)
{
  unsigned int mm;
  mm=dat;
	switch(mm)
	{case 1:LcdTextOut(1, 3,"NTSC/YC  ");
	break;
	case 2:LcdTextOut(1, 3,"NTSC  ");
	break;
    case 3:LcdTextOut(1, 3,"PAL/YC");
	break;
	case 4:LcdTextOut(1, 3,"480P    ");
	break;
	case 5:LcdTextOut(1, 3,"720P    ");
	break;
	case 6:LcdTextOut(1, 3,"1080I    ");
	break;
	
	}
}
void LCDframe()
{
  unsigned char i,j;
  for(j=0;j<=31;j++)
  LCDDrawPoint(61,j);
  for(j=0;j<=31;j+=8)
  LCDDrawPoint(62,j);   
  for(i=61;i<=120;i++)
  LCDDrawPoint(i,31);
  for(i=61;i<=120;i+=3)
  LCDDrawPoint(i,30);
}
  
void LCDScroll_Bar(unsigned int collect_dat,unsigned int chun)

⌨️ 快捷键说明

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