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

📄 st7529.c

📁 ST7529为一32级灰度液晶显示屏驱动芯片
💻 C
📖 第 1 页 / 共 2 页
字号:
	      temp=lum<<6;
          ucData=((ucData&0xF83F)|temp);
          break;
       case 2:
          ucData=((ucData&0xFFE0)|lum);
          break;
   }
   Wrcom(ucData);
   Wrcmd(0XEE);   //退出读修改写模式 
}

/********************************/
//LCD的一个块中三个像素合成显示函数 
//入口数note为图像的地址 
/********************************/
unsigned char show_block(unsigned char code *note,unsigned char col_num)
{
   unsigned int ucData;
   unsigned char i;
   unsigned int  temp=0;

   LCD_dummyRead(); //假读一次
   ucData=LCD_DataRead();

   i = col%3;
   switch(i)
   {
       case 0:
	      temp=*note<<8;
		  temp=temp<<3;
	      switch(col_num)
		  {
		    case 1:
			  i=1;
              ucData=((ucData&0x07FF)|temp);	
			  break;
			case 2:
			  note++; i=2;
	          temp=temp|(*note<<6);
              ucData=((ucData&0x003F)|temp);
			  break;	
			default:
			  note++; i=3;
	          temp=temp|(*note<<6);
			  note++;
			  ucData=temp|*note;
			  break;
		  }
          break;
       case 1:
	      temp=*note<<6;
	      if(col_num<2)
		  {
			  i=1;
              ucData=((ucData&0xF83F)|temp);	
	  	  }
		  else
		  {
			  note++; i=2;
	          temp=temp|*note;
              ucData=((ucData&0xF800)|temp);	
		  }
          break;
       case 2:
	      i=1;
          ucData=((ucData&0xFFE0)|*note);
          break;
	   default: i=0;
	      break;
   }
   if(Reverse)  ucData=~ucData;  //取反,以反显
   RD = 1;   //读数据端置1
   Wrcom(ucData);
   return i;
}

/********************************/
//LCD的显示一个矩阵图像函数 
//点阵数为从左至右、从下至上的模向扫描 
//入口数note为图像的首地址 
//入口数col_num、row_num为图像的宽和高 。
/********************************/
void show_photo(unsigned char code *note,unsigned char col_num,unsigned char row_num)
{
   unsigned char i,j;
   unsigned char bak_col;
   unsigned char a;
   Loadxy(col_num,row_num); //写入图像的显示区域 
   Wrcmd(0XE0);   //进入到读修改写模式 
   LCD_initRead(); //初始化读数据状态 

   bak_col=col;	
   for(i=0;i<row_num;i++)
   {
      col=bak_col; j=col_num;
      while	(j!=0)
	  {
   	     a=show_block(note,j);
		 note=note+a;
		 j=j-a;	col=col+a;   	  
      }
   }
   Wrcmd(0XEE);   //退出读修改写模式 
}
/********************************/
//LCD的显示一个点阵字符函数。
//字模数据为从左至右、从上至下的模向扫描模式 
//字符点阵数为从左至右、从下至上的模向扫描 
//入口数note为字符的首地址 
//入口数col_num、row_num为字符的宽和高 。
//入口数lum为字符显示的亮度 ,为0时,最黑 
/********************************/
void show_note(unsigned char code *note,unsigned char col_num,unsigned char row_num,unsigned char lum)
{
   unsigned char i,j;
   unsigned char bak_col;
   unsigned char a,k;
   unsigned int ucData;
   unsigned int  temp1,temp2;
   temp1=lum<<8;
   temp1=temp1<<3;
   temp2=lum<<6;

   k=col_num/8;
   if((col_num%8)!=0)  k++;
   note=note+(unsigned int)(k*(row_num-1)); //最下一行的首地址 
   k=2*k;
   bak_col=col;	

   Wrcmd(0X30);   //EXT=0

   Wrcmd(0X75);   //THIRD  COMMAND SET LINE ADDRESS 
   i=START_LINE+row;
   Wrdata(i);    //START LINE
   i=i+row_num-1;
   Wrdata(i);  //END   LINE
   i=col/3;
   i=START_COL+i;
   Wrcmd(0X15);   //THIRD  COMMAND SET COLUMN ADDRESS 
   Wrdata(i);  //START COLUMN  
   a=col_num-1;
   i=((col+a)/3);
   i=i+START_COL;
   Wrdata(i);  //END   COLUMN

   Wrcmd(0XE0);   //进入到读修改写模式 
   LCD_initRead(); //初始化读数据状态 
   for(i=0;i<row_num;i++)
   {
      a=0;	col=bak_col; j=col_num;
      while(j!=0)
	  {
	     LCD_dummyRead(); //假读一次
         ucData=LCD_DataRead();
         switch(col%3)
         {
            case 0:
		      j--; col++;
			  if((*note&(1<<a))!=0)  ucData=((ucData&0x07FF)|temp1);
			  else	 ucData=(ucData|0xF800);
	      	  if(a<7)  a++;
			  else  {note++; a=0;}
            case 1:
              if(j!=0)  {j--; col++;}
		      else  break;
			  if((*note&(1<<a))!=0)  ucData=((ucData&0xF83F)|temp2);
			  else	 ucData=(ucData|0x07C0);
	      	  if(a<7)  a++;
			  else {note++; a=0;}
            default:
              if(j!=0)  {j--; col++;}
		      else  break;
			  if((*note&(1<<a))!=0)  ucData=((ucData&0xFFE0)|lum);
			  else	 ucData=(ucData|0x003F);
	      	  if(a<7)  a++;
			  else {note++; a=0;}
         }
         Wrcom(ucData);
      }
	  note=note-k;
	  if(a!=0) note++;
   }
   Wrcmd(0XEE);   //退出读修改写模式 
   col=bak_col;
}
/********************************/
//液晶屏初始化 
/********************************/
void ST7529_init(void)
{
   Wrcmd( 0x0030 ); //Ext = 0
   Wrcmd( 0x0094 ); //Sleep Out
   Wrcmd( 0x00D1 ); //OSC On
   Wrcmd( 0x0020 ); //Power Control Set
   Wrdata( 0x0008 ); //Booster Must Be On First
   Delay( 1 );
   Wrcmd( 0x0020 ); //Power Control Set
   Wrdata( 0x000B ); //Booster, Regulator, Follower ON
   Wrcmd( 0x0081 ); //Electronic Control
   Wrdata( 0x0004 ); //Vop=14.0V
   Wrdata( 0x0004 );
   Wrcmd( 0x00CA ); //Display Control
   Wrdata( 0x0000 ); //CL=X1
   Wrdata( 0x0027 ); //Duty=160
   Wrdata( 0x0000 ); //FR Inverse-Set Value
   Wrcmd( 0x00A6 ); // Normal Display
   Wrcmd( 0x00BB ); //COM Scan Direction
   Wrdata( 0x0002 ); // 79→0 80→159
   Wrcmd( 0x00BC ); //Data Scan Direction
   Wrdata( 0x0000 ); //inverse show
   Wrdata( 0x0000 ); //RGB Arrangement
   Wrdata( 0x0001 ); //2字节3像素模式 
   Wrcmd( 0x0075 ); //Line Address Set
   Wrdata( 0x0000 ); //Start Line=0
   Wrdata( 0x009F ); //End Line =159
   Wrcmd( 0x0015 ); //Column Address Set
   Wrdata( 0x0000 ); //Start Column=0
   Wrdata( 0x0054 ); //End Column =84
   Wrcmd( 0x0031 ); //Ext = 1
   Wrcmd( 0x0032 ); //Analog Circuit Set
   Wrdata( 0x0000 ); //OSC Frequency =000 (Default)
   Wrdata( 0x0001 ); //Booster Efficiency=01(Default)
   Wrdata( 0x0000 ); //Bias=1/14
   Wrcmd( 0x0034 ); //Software Initial
//Read_LCM_EEPROM(); //Read EEPROM Flow
   Wrcmd( 0x0030 ); //Ext = 0
   WretPointTest(0xFFFF);
   Wrcmd( 0x00AF ); //Display On
}

unsigned char code zimo3[]={		 //65*29
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x80,0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x01,0x20,0x00,0x80,0x01,0x04,
0x00,0x30,0x80,0x01,0xE0,0xFF,0xFF,0x01,0xFC,0xFF,0x3F,0x80,0x01,0x60,0x00,0x80,
0x00,0x0C,0x00,0x10,0x80,0x01,0x60,0x00,0x80,0x00,0x0C,0x00,0x10,0x00,0x00,0x60,
0x00,0x80,0x00,0x0C,0x00,0x10,0x00,0x00,0xE0,0xFF,0xFF,0x00,0xFC,0xFF,0x1F,0x00,
0x00,0x60,0x00,0x80,0x00,0x0C,0x00,0x10,0x00,0x00,0x60,0x00,0x00,0x00,0x0C,0x00,
0x00,0x00,0x00,0x60,0x02,0x04,0x00,0x4C,0x80,0x00,0x00,0x00,0x60,0x0E,0x0C,0x00,
0xCC,0x81,0x01,0x00,0x00,0x60,0x06,0x04,0x01,0xCC,0x80,0x20,0x00,0x00,0x60,0x06,
0x84,0x03,0xCC,0x80,0x70,0x00,0x00,0x20,0xC6,0xC4,0x00,0xC4,0x98,0x18,0x00,0x00,
0x20,0xFE,0x65,0x00,0xC4,0xBF,0x0C,0x00,0x00,0x20,0x06,0x14,0x00,0xC4,0x80,0x02,
0x00,0x00,0x30,0x06,0x0C,0x00,0xC6,0x80,0x01,0x00,0x00,0x30,0x06,0x04,0x00,0xC6,
0x80,0x00,0x00,0x00,0x10,0x06,0x04,0x00,0xC2,0x80,0x00,0x00,0x00,0x10,0x06,0x04,
0x02,0xC2,0x80,0x40,0x00,0x00,0x18,0x86,0x04,0x02,0xC3,0x90,0x40,0x00,0x00,0x08,
0x66,0x04,0x02,0xC1,0x8C,0x40,0x00,0x00,0x08,0x1E,0x04,0x06,0xC1,0x83,0xC0,0x00,
0x00,0x04,0x0E,0xFC,0x87,0xC0,0x81,0xFF,0x00,0x00,0x02,0x04,0xF8,0x43,0x80,0x00,
0x7F,0x00,0x00,0x02,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,
};
unsigned char code zimo2[]={		 //74*37
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x00,0x00,0x30,0x00,0x83,0x01,0x00,0x00,0x00,
0x0E,0x00,0x00,0x70,0x00,0x83,0x01,0x00,0x00,0x00,0x0C,0x00,0x00,0x30,0x00,0x83,
0x01,0x00,0x00,0x00,0x0C,0x40,0x00,0x30,0x00,0x83,0x61,0x00,0x40,0x00,0x0C,0xC0,
0x00,0x20,0x00,0x83,0xF1,0x00,0xC0,0xFF,0xFF,0xFF,0x01,0x20,0xF8,0xFF,0x0F,0x00,
0x40,0x00,0x00,0xE0,0x00,0x20,0x00,0x83,0x01,0x00,0x60,0x00,0x00,0x20,0x00,0x20,
0x06,0x83,0x01,0x00,0x70,0x00,0x00,0x10,0x80,0xFF,0x0F,0x81,0x00,0x00,0x70,0x00,
0x00,0x10,0x00,0x30,0x60,0x00,0x0C,0x00,0x00,0x00,0x00,0x06,0x00,0x30,0xE0,0xFF,
0x1F,0x00,0x80,0xFF,0xFF,0x0F,0x00,0x30,0x60,0x00,0x0C,0x00,0x00,0x00,0x00,0x1F,
0x00,0x30,0x60,0x00,0x0C,0x00,0x00,0x00,0x80,0x01,0x00,0xF8,0x60,0x00,0x0C,0x00,
0x00,0x00,0x40,0x00,0x00,0xB8,0xE3,0xFF,0x0F,0x00,0x00,0x00,0x30,0x00,0x00,0x28,
0x67,0x00,0x0C,0x00,0x00,0x00,0x1E,0x00,0x00,0x2C,0x66,0x00,0x0C,0x00,0x00,0x00,
0x0E,0x00,0x01,0x2C,0x66,0x00,0x0C,0x00,0x00,0x00,0x0E,0x80,0x01,0x26,0x64,0x00,
0x0C,0x00,0x00,0x00,0x0E,0xC0,0x03,0x26,0xE0,0xFF,0x0F,0x00,0xFC,0xFF,0xFF,0x3F,
0x00,0x22,0x60,0x18,0x0C,0x00,0x00,0x00,0x0E,0x00,0x00,0x21,0x00,0x18,0x00,0x00,
0x00,0x00,0x0E,0x00,0x00,0x21,0x00,0x18,0x60,0x00,0x00,0x00,0x0E,0x00,0x80,0x30,
0x00,0x18,0xF0,0x00,0x00,0x00,0x0E,0x00,0x40,0x30,0xFC,0xEF,0x0F,0x00,0x00,0x00,
0x0E,0x00,0x00,0x30,0x00,0x2C,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x30,0x00,0x4C,
0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x30,0x00,0x86,0x00,0x00,0x00,0x00,0x0E,0x00,
0x00,0x30,0x00,0x83,0x01,0x00,0x00,0x00,0x0E,0x00,0x00,0x30,0x80,0x01,0x07,0x00,
0x00,0xF0,0x07,0x00,0x00,0x30,0xC0,0x00,0x3E,0x00,0x00,0x80,0x07,0x00,0x00,0x70,
0x70,0x00,0xFC,0x00,0x00,0x00,0x03,0x00,0x00,0x70,0x1C,0x00,0x30,0x00,0x00,0x00,
0x01,0x00,0x00,0x10,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,
};
/****************************************/
/*主函数*/
/****************************************/
void main()
{
    LCD_Reset();
	ST7529_init();

 	col=6;row=3;
	show_note(&zimo[0],32,16,0x00);
 	col=38;row=3;
	show_note(&zimo[0],32,16,0x00);

 	col=80;row=3;
	show_note(&zimo2[0],74,37,0x00);

 	col=80;row=50;
	show_note(&zimo3[0],65,29,0x00);

	col=6;row=20;
	show_note(&two_boy[0],65,70,0x00);

	while(1);
}


unsigned char code zimo[]={		 //32*16
0x40,0x00,0x04,0x09,0x80,0x00,0x04,0x09,0xFC,0x3F,0xE4,0x3F,0x04,0x20,0x04,0x09,
0x02,0x10,0xDF,0x1F,0xF8,0x07,0x44,0x10,0x00,0x02,0xCE,0x1F,0x00,0x01,0x56,0x10,
0x80,0x00,0xC5,0x1F,0xFE,0x7F,0x05,0x02,0x80,0x00,0xE4,0x7F,0x80,0x00,0x04,0x02,
0x80,0x00,0x04,0x05,0x80,0x00,0x04,0x19,0xA0,0x00,0x84,0x70,0x40,0x00,0x64,0x20,
};

															
unsigned char code two_boy[]={		 //65*70
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x06,0x00,0x00,0x00,
0x08,0x00,0x90,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x7D,0x00,0x90,0xFF,0xFE,0xFF,0xEF,
0x8F,0xFF,0xE0,0x00,0x90,0xED,0x7F,0xFF,0xFF,0xFF,0xFF,0x01,0x00,0x98,0xCD,0xCF,
0xFF,0xEC,0xFB,0xFF,0x02,0x00,0x98,0xFC,0xF8,0x5D,0x3B,0x17,0xDA,0x06,0x00,0x88,
0xFF,0xCC,0x13,0x27,0x13,0xFE,0x0C,0x00,0x80,0xE7,0xCD,0x7B,0x5B,0x36,0xDE,0x09,
0x00,0xE0,0xCF,0xCC,0x2F,0x9B,0x33,0xDE,0x00,0x00,0xF8,0xDF,0xCD,0x77,0x5B,0x37,
0xD6,0xE1,0x00,0x98,0xCF,0xCC,0x3F,0x1B,0x33,0xCF,0x80,0x00,0x98,0x9F,0xCD,0x1D,
0x53,0x37,0xDE,0x01,0x00,0x88,0xE3,0xBC,0xFF,0x98,0xB3,0x9B,0x03,0x00,0x8C,0x7F,
0xFF,0xFF,0xFF,0xFD,0xFE,0x06,0x00,0x80,0xFF,0xFF,0xEF,0xFF,0xFF,0xFF,0x0D,0x00,
0x81,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x09,0x00,0x21,0x00,0x0F,0x03,0x02,0x4E,0xC0,
0x80,0x00,0x00,0x00,0x08,0x00,0x02,0x1F,0x00,0xC0,0x00,0x00,0xC0,0x18,0x00,0x03,
0x72,0x00,0x00,0x00,0x02,0xE0,0x10,0x00,0x05,0xA3,0x00,0x18,0x00,0xC2,0x30,0x10,
0x80,0x1F,0x99,0x00,0x18,0x00,0x46,0x18,0x00,0xC0,0x78,0x89,0x3F,0x34,0x00,0x4C,
0x06,0x0C,0xC4,0x60,0x88,0xF1,0x64,0x00,0x60,0x1F,0xFC,0xCC,0xDC,0x88,0x01,0x46,
0x00,0x60,0x79,0xC0,0xD8,0x78,0x0A,0x03,0x06,0x00,0x01,0xBD,0x00,0xD0,0xF0,0x0F,
0x02,0x02,0x00,0x01,0xCF,0x70,0x90,0xE0,0x1B,0x62,0x02,0x00,0x7F,0x85,0x61,0x80,
0xC3,0x35,0xC3,0x10,0x00,0xEC,0x8D,0xC3,0x81,0xC2,0xFF,0x43,0xF7,0x00,0x52,0x0F,
0x83,0x03,0xC7,0xC3,0x8F,0xC7,0x01,0x9A,0x0B,0x06,0x1F,0xE2,0x77,0x1B,0x0F,0x00,
0x3C,0xFE,0x0D,0x3F,0xD4,0xFE,0x2F,0x1D,0x00,0xC4,0xC6,0x3D,0x74,0xFC,0xEF,0x3E,
0x1C,0x00,0x8E,0xCE,0x5F,0x7C,0x78,0x3F,0x7F,0x16,0x01,0x0C,0xCF,0x7C,0x78,0x6C,
0xFF,0xEF,0x1E,0x01,0x9C,0xFF,0xF7,0xF8,0x7D,0xCF,0xFD,0xF7,0x01,0x98,0xFF,0xFF,
0xF0,0xEC,0x8D,0xE0,0x91,0x01,0xF8,0xFF,0xFF,0xC6,0xF8,0x89,0x47,0xB3,0x00,0x90,
0xFF,0x8A,0xCF,0xBE,0x8E,0xED,0x33,0x00,0xE0,0x2F,0xC0,0xD5,0x28,0x9F,0x7C,0x33,
0x00,0xE0,0x1F,0x3C,0xCD,0x18,0x09,0x70,0x33,0x00,0xE2,0x1F,0x7C,0xCF,0x30,0x03,
0x6A,0x33,0x00,0xE6,0x0B,0xEC,0xCE,0xF0,0x05,0xA1,0x23,0x00,0xE4,0xF1,0xC8,0x0E,
0xF0,0xF1,0xD1,0x1F,0x00,0x4C,0xB1,0x00,0xCE,0xC6,0xF8,0x38,0xFD,0x00,0xC8,0x31,
0x10,0xCF,0xEC,0x01,0xDE,0xC1,0x01,0xC8,0x31,0x90,0xCF,0xD8,0xFF,0xFF,0x00,0x01,
0x81,0x18,0xFE,0x4F,0xF8,0xFD,0x70,0x82,0x01,0x18,0x19,0xDC,0x67,0x71,0x00,0x60,
0x86,0x01,0x0E,0x06,0xBF,0xEF,0x35,0x00,0x60,0x8C,0x00,0x86,0xF6,0xF7,0x8F,0x33,
0x03,0x60,0x8C,0x00,0x00,0xFC,0xFF,0xFF,0x37,0x03,0x50,0x08,0x00,0xC0,0xEC,0xFF,
0xBF,0x33,0x02,0xF8,0x00,0x00,0xC0,0xFC,0xFF,0x3F,0x63,0xFE,0xFF,0x07,0x00,0x44,
0xEE,0xFF,0x7F,0xE0,0xCF,0xBF,0x76,0x00,0x8C,0x9D,0xFF,0x77,0xC6,0xFF,0xFF,0xF6,
0x01,0x8C,0xB9,0xFB,0x3F,0x0A,0xFD,0xFF,0x02,0x00,0x19,0xD9,0xDF,0x1F,0x1F,0xFF,
0xFF,0x03,0x00,0x19,0xB1,0xFF,0x1F,0x1A,0xFF,0x59,0x22,0x00,0x40,0xE0,0xBB,0x07,
0x0E,0xE3,0xC7,0x60,0x00,0xE0,0xC3,0xDF,0x08,0xBC,0xC3,0xC6,0xC0,0x00,0x02,0xC7,
0xDD,0x38,0xD0,0x63,0xC6,0xC0,0x00,0x06,0xFC,0xC8,0xF8,0xF9,0x62,0xC6,0x07,0x00,
0x06,0xFE,0xF0,0x41,0x1B,0xC0,0x07,0x0E,0x00,0x0C,0x26,0xF8,0x0F,0x0F,0xE0,0x03,
0x18,0x00,0x00,0xF2,0xFF,0xBC,0xFF,0xDF,0xFF,0x7D,0x00,0xC0,0xDE,0xBD,0xC0,0x7B,
0x9F,0xBD,0x7B,0x00,0x60,0x00,0xB7,0x01,0x01,0x87,0x01,0xC4,0x00,0xE0,0x00,0xB2,
0x01,0x80,0x83,0x01,0xC4,0x00,
};


⌨️ 快捷键说明

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