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

📄 text1.c

📁 一款液晶RT240128GB的以8080方式控制的底层驱动源代码程序,非常难得,放血奉献!
💻 C
📖 第 1 页 / 共 2 页
字号:
void LCD_Write_word(uchar LCM_X,uchar LCM_Y,uchar *ptr)
{
  uchar X,Y;
  uchar i=0;
  X=LCM_X;
  Y=LCM_Y;
  LCD_Write_Funtion(0x00,0xCD);//文本模式 
  while (*ptr != '%')////利用数组最后有空格作为信息结束的判断/////
   { 
    if((X+i*2)>=30)
	 {
	   X=0;
	   Y=LCM_Y+16;
	   i=0;	  
	 }	
	LCD_Write_Funtion(0x60,X+2*(i++)) ;//地址定位
    LCD_Write_Funtion(0x70,Y) ;//地址定位 
    LCD_Write_Dat(*ptr++);
	LCD_Write_Dat(*ptr++);    
   }
}*/
/////////////////////////////////////////////////////
/////////////////////////////////////////////////// 
void LCD_Write_string(uchar LCM_X,uchar LCM_Y,uchar *ptr)
{
  uchar X,Y;
  uchar i=0;
  X=LCM_X;
  Y=LCM_Y;
  LCD_Write_Funtion(0x00,0xCD);//文本模式
  LCD_Write_Funtion(0xF0,0xA0);////
  LCD_Write_Funtion(0x10,0x69);
  LCD_Write_Funtion(0x60,X) ;//地址定位
  LCD_Write_Funtion(0x70,Y) ;//地址定位  
  while (*ptr != '%')////利用数组最后有空格作为信息结束的判断/////
   { 
    if((X+i)>=30)
	 {
	   X=0;
	   Y=Y+16;
	   i=0;
	   LCD_Write_Funtion(0x60,X) ;//地址定位
       LCD_Write_Funtion(0x70,Y) ;//地址定位  
	 }	
    LCD_Write_Dat(*ptr++);
	i++;    
   }
}
////////////////////////////////////
void main(void)
{
  RESET=0;
  Delay(20);
  RESET=1;
  P1=0xff;//AT89C51的IO口初始化//
 
  LCD_Init();
  LCD_Clear_Graphics();//清除图形层显示数据//
  LCD_Clear_Text();//////清除文本层显示数据///////////////////////
  

  LCD_Write_word(2,16,"北京电通伟业电子设备有限公司%");
  
  LCD_Write_string(0,0,"abcdefghigk%");
  //LCD_Clear_Text();

  while(1)
  {
  ;
  }
}
  
/*

//////////////LCD左半屏清屏///////可实现全部、上部分、左部分、右部分的清屏功能/////////////////////////////////
void LCD_L_Clear( uchar ZB_y,/////参数ZB_y是液晶屏的64X64的点坐标系的y轴向右横向坐标值//////
 ///////x轴向上纵向坐标值固定为64, 坐标(64,ZB_y)确定了清屏的起点////////////////////////////////
                  uchar yy,////清屏的列数由yy确定////////
                 uchar page)/////清屏到那页为止,由page值确定, page的范围是0-7///////               
{                                    
 uchar i,j;
  if((64-ZB_y)>=yy)
  {
    for(j=0;j<(page+1);j++)
     {
      LCD_WRTite_Com_L(0xc0|64);////从第64小行开始////
      LCD_WRTite_Com_L(0xb8|j);////根据确定的小行位置开始,从第0页(即0大行)开始//////
      LCD_WRTite_Com_L(0x40|ZB_y);/////从由ZB_y值确定的列开始////
      for(i=0;i<yy;i++) LCD_WRTite_Dat_L(0x00); ////写入0x00清屏/////    
     }
  }
}

///////////////////左半屏/////////显示8x16点(横向右8点X纵向下16点)字符////////////////////////////////////
/////坐标(ZB_x,ZB_y)是液晶屏的64X64的点坐标,坐标系的方向为:x轴纵(行)坐标向上 ,y轴横(列)坐标向右/////////
/////左下角为坐标原点,左上角为(64,0)右下角为(0,64),该坐标用于确定在液晶屏的何处开始位置。//////////////
/////根据上面确定的显示位置为坐标原点,坐标(x,y)位置按8x8=64个点为一个点坐标来定位的,这时///////////////
/////坐标系的方向变更为:x轴纵(行)坐标向下,y轴横(列)坐标向右,x的范围是0-7,y的范围是0-7,////////////
////////////////////////////chrx:显示字符的指定参数值/////////////////////////////////////////////////////
LCD_L_WRTite_Char_8x16(uchar ZB_x,uchar ZB_y,/////液晶屏的64X64的点坐标系////
                            uchar x,uchar y,/////显示坐标系////////////////
                                            uchar chrx)/////显示内容的指定参数索引值///////
{
  uchar i;
  uint chr_m;
  chr_m=chrx;
  chr_m=chr_m*16;
  LCD_WRTite_Com_L(0xc0|ZB_x);////////从第ZB_x小行开始////
  LCD_WRTite_Com_L(0xb8|x); /////根据确定的小行位置开始,从第x页(即x大行)开始//////
  LCD_WRTite_Com_L(0x40|ZB_y|y<<3);/////从由ZB_y值确定的列,由y值确定的点位置开始///// 
  for(i=0;i<8;i++)  LCD_WRTite_Dat_L(Ezk[chr_m+i]); ////根据确定的具体点位置处写入8个数据//字符的上半部分/// 
  LCD_WRTite_Com_L(0xb9|x); ////再从第x+1页(即x+1大行)开始//////// 
  LCD_WRTite_Com_L(0x40|ZB_y|y<<3);/////从由ZB_y值确定的列,由y值确定的点位置开始/////
  for(i=8;i<16;i++)  LCD_WRTite_Dat_L(Ezk[chr_m+i]);////根据确定的具体点位置处写入8个数据//字符的下半部分/// 
}

////////左半屏/////////显示16x16点(横向右16点X纵向下16点)的汉字字符////////////////////////////////////
LCD_L_WRTite_Hanzi_16x16(uchar ZB_x,uchar ZB_y,
                           uchar x,uchar y,
						                   uchar chrx)
{
  uchar i;
  uint chr_m;
  chr_m=chrx;
  chr_m=chr_m*32;
  LCD_WRTite_Com_L(0xc0|ZB_x);////////////从第ZB_x小行开始////
  LCD_WRTite_Com_L(0xb8|x);  ////根据确定的小行位置开始,从第x页(即x大行)开始//////
  LCD_WRTite_Com_L(0x40|ZB_y|y<<3);/////从由ZB_y值确定的列,由y值确定的点位置开始///// 
  for(i=0;i<16;i++)  LCD_WRTite_Dat_L(Hzk1[chr_m+i]);////根据确定的具体点位置处写入16个数据//汉字的上半部分///        
  LCD_WRTite_Com_L(0xb9|x);////再从第x+1页(即x+1大行)开始////////   
  LCD_WRTite_Com_L(0x40|ZB_y|y<<3);/////从由ZB_y值确定的列,由y值确定的点位置开始/////
  for(i=16;i<32;i++)  LCD_WRTite_Dat_L(Hzk1[chr_m+i]);////根据确定的具体点位置处写入16个数据//汉字的下半部分///     
}
////////////左半屏显示图片函数//////////////////////////////////////////////////////////////
LCD_L_Disp_Picture(uchar ZB_x,uchar ZB_y,
                                      uchar *Pointer)/////指针指向图片数据的数组////
{
  uchar x;
  uchar i,j;
  x=0;////页,即大行标记//从第0页开始//
  LCD_WRTite_Com_L(0xc0|ZB_x);///////从第ZB_x小行开始////
  LCD_WRTite_Com_L(0xb8|x); ////根据确定的小行位置开始,从第x页(即x大行)开始//////
  LCD_WRTite_Com_L(0x40|ZB_y);////从由ZB_y值确定的列的位置开始/////
  for(i=0;i<8;i++)/////共8页,要写8次//////
    {
      for(j=0;j<64;j++) LCD_WRTite_Dat_L(*Pointer++); ////每页连续写入64个数据/////      
      x++;//页增加1///
      LCD_WRTite_Com_L(0xb8|x);/////从第x+1页(即x+1大行)开始////// 
      LCD_WRTite_Com_L(0x40|ZB_y);////从由ZB_y值确定的列的位置开始/////
    }
}
////////////////////////// 左半屏驱动函数结束 //////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////

*/
////////////////////////////////////////////////////////////////////////////////////////////////////



  /*
 for(i=0;i<64;i++)
   {
  
  //  LCD_L_Disp_Picture(i,0,PictureKu_1);
    LCD_L_WRTite_Hanzi_16x16(0,i,0,0,4); 
    LCD_L_WRTite_Hanzi_16x16(0,i,0,2,1);
    LCD_L_WRTite_Hanzi_16x16(0,i,0,4,2);
      LCD_L_WRTite_Char_8x16(0,i,2,0,22);
      LCD_L_WRTite_Char_8x16(0,i,2,1,23);
      LCD_L_WRTite_Char_8x16(0,i,2,2,24);
   }
   // LCD_M_Disp_Picture(0,i,PictureKu_2);     
  //  LCD_M_WRTite_Hanzi_16x16(0,i,2,6,1);
//	  LCD_M_WRTite_Char_8x16(i,0,4,5,23);

  
 //   LCD_R_Disp_Picture((64-i),0,PictureKu_3); 
//	LCD_R_WRTite_Hanzi_16x16((64-i),0,4,6,2);
 //     LCD_R_WRTite_Char_8x16((64-i),0,4,5,24);

  //  Delay(100); 
  //  LCD_L_Clear(0);
  //  LCD_M_Clear(0);
 //   LCD_R_Clear(0); 
//}
*/

  
/*  
while(1)
{    
  while(j--)
 {
  for(i=0;i<64;i++)
  {
	    LCD_L_WRTite_Hanzi_16x16(i,0,0,0,0);
          LCD_L_WRTite_Char_8x16(i,1,2,3,4);
        LCD_M_WRTite_Hanzi_16x16(i,0,2,2,1);
          LCD_M_WRTite_Char_8x16(i,1,4,5,5);
        LCD_R_WRTite_Hanzi_16x16(i,0,4,4,2);
          LCD_R_WRTite_Char_8x16(i,1,6,6,6);
  }
 
  for(i=0;i<64;i++)
  {
   LCD_L_WRTite_Hanzi_16x16(i,0,0,0,3);
     LCD_L_WRTite_Char_8x16(i,1,2,3,7);   
   LCD_M_WRTite_Hanzi_16x16(i,0,2,2,4);
     LCD_M_WRTite_Char_8x16(i,1,4,5,8);
   LCD_R_WRTite_Hanzi_16x16(i,0,4,4,5);
     LCD_R_WRTite_Char_8x16(i,1,6,6,9);
  }
  for(i=0;i<64;i++)
{
   LCD_L_WRTite_Hanzi_16x16(i,0,6,0,6);
     LCD_L_WRTite_Char_8x16(i,1,6,3,22);   
   LCD_M_WRTite_Hanzi_16x16(i,0,6,2,7);
     LCD_M_WRTite_Char_8x16(i,1,6,5,23);
   LCD_R_WRTite_Hanzi_16x16(i,0,6,4,8);
     LCD_R_WRTite_Char_8x16(i,1,6,6,24);
  }
 for(i=0;i<64;i++)
  {
   LCD_L_WRTite_Hanzi_16x16(i,0,4,0,9);
     LCD_L_WRTite_Char_8x16(i,0,4,3,25);   
   LCD_M_WRTite_Hanzi_16x16(i,0,4,2,10);
     LCD_M_WRTite_Char_8x16(i,0,4,5,26);
   LCD_R_WRTite_Hanzi_16x16(i,0,4,4,11);
     LCD_R_WRTite_Char_8x16(i,0,4,6,27);
  }
  k=8;
  } 
 while(k--)
  {
    LCD_L_Disp_Picture(0,0,PictureKu_1);
    LCD_L_Clear(0,0);
    LCD_L_Disp_Picture(0,0,PictureKu_11);
    LCD_M_Disp_Picture(0,0,PictureKu_2); 
    LCD_R_Disp_Picture(0,0,PictureKu_1);
    //Delay(200);
    LCD_M_Disp_Picture(0,0,PictureKu_3);
   // LCD_R_Clear(0,0);
   }
  j=8;
 }*/
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

⌨️ 快捷键说明

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