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

📄 lcd11_4.txt

📁 RA8835的液晶驱动程序 已调试通过 希望对大家有用
💻 TXT
📖 第 1 页 / 共 4 页
字号:
        {
          LCD_WR_CMD(0x4c);                    //光标右移
          LCD_WR_CMD(0x42);                   //MWRITE代码
          LCD_WR_DAT(0xFF);                   //左字节数据 
        }
}


void lcdWrLineVertical(Uint16 screen, Uint16 o_x, Uint16 o_y,Uint16 n)
{
        Uint16 dram_addr;
	        
	    dram_addr=o_x+o_y*40; 	                   //得到显存区首址
        LCD_WR_CMD(0x46);                         //写光标指针代码
        LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
        LCD_WR_DAT((dram_addr)>>8);              //CSRH
        LCD_WR_CMD(0x4F);                       //光标
        LCD_WR_CMD(0x42);                       //MWRITE代码
        while(n)
	    { 
	     LCD_WR_DAT(0xC0);
	     n--;
        }    
}

void lcdWrLineVerticalR(Uint16 screen, Uint16 o_x, Uint16 o_y,Uint16 n)
{
        Uint16 dram_addr;
	   
	     dram_addr=o_x+o_y*40; 	                   //得到显存区首址
         LCD_WR_CMD(0x46);                         //写光标指针代码
         LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
         LCD_WR_DAT((dram_addr)>>8);              //CSRH
         LCD_WR_CMD(0x4E);                       //光标
         LCD_WR_CMD(0x42);
         while(n)
         {                       
	         LCD_WR_DAT(0x03);
		  n--;
          }    
}
void lcdWrLineVerticalR1(Uint16 screen, Uint16 o_x, Uint16 o_y,Uint16 n)
{
        Uint16 dram_addr,i;
	   
	     dram_addr=o_x+o_y*40; 	                   //得到显存区首址
         LCD_WR_CMD(0x46);                         //写光标指针代码
         LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
         LCD_WR_DAT((dram_addr)>>8);              //CSRH
         LCD_WR_CMD(0x4F);
         for(i=0;i<n;i++)
         {                       
	      LCD_WR_CMD(0x42);
	      LCD_WR_DAT(0x03);
	
         }    
}
void lcdWrWord(Uint16 screen,Uint16 string[], Uint16 o_x,Uint16 o_y)
{
        Uint16 dram_addr,i;
	
        dram_addr=o_x+o_y*40;
		  LCD_WR_CMD(0x46);                         //写光标指针代码
          LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
          LCD_WR_DAT((dram_addr)>>8);
	
		for(i=0;i<16;i++)
		{ 
  
		  LCD_WR_CMD(0x42);                       //MWRITE代码
          LCD_WR_DAT(string[2*i]);
		  LCD_WR_CMD(0x4F);                       //光标
		}

        dram_addr=o_x+1+o_y*40;
		  LCD_WR_CMD(0x46);                         //写光标指针代码
          LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
          LCD_WR_DAT((dram_addr)>>8);
		  
		for(i=0;i<16;i++)
		{
          LCD_WR_CMD(0x42); 
          LCD_WR_DAT(string[2*i+1]);
		  LCD_WR_CMD(0x4F);                       //光标

		}
}


void lcdWrWord1(Uint16 screen,Uint16 string[], Uint16 o_x,Uint16 o_y)
{
        Uint16 dram_addr,i;
        
		for(i=0;i<16;i++)
		{ 
          dram_addr=o_x+(o_y+i)*40;
		  LCD_WR_CMD(0x46);                         //写光标指针代码
          LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
          LCD_WR_DAT((dram_addr)>>8);
		  LCD_WR_CMD(0x42);                       //MWRITE代码
          LCD_WR_DAT(string[2*i]);
		  LCD_WR_CMD(0x4C);                       //光标
		  LCD_WR_CMD(0x42);                       //MWRITE代码
          LCD_WR_DAT(string[2*i+1]);
		}


}

void lcdWrLetter(Uint16 Screen,Uint16 string[], Uint16 o_x,Uint16 o_y)
{
        Uint16 dram_addr,i;
        
		dram_addr=o_x+o_y*40;
		LCD_WR_CMD(0x46);                         //写光标指针代码
              LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
              LCD_WR_DAT((dram_addr)>>8);
		LCD_WR_CMD(0x4F);                       //光标
		for(i=0;i<16;i++)
		{
		  LCD_WR_CMD(0x42);                       //MWRITE代码
          LCD_WR_DAT(string[i]);
		  
        }
          
}



/******************** 将指定屏的坐标处连续n个字节单元反显 ************************
参数:	screen	--屏代码,范围0~5
		o_x 	--横坐标,范围0~39
		o_y 	--纵坐标,范围0~9
		n 		--反显字节单元的个数
**********************************************************************************/
void lcdNegDis(Uint16 screen, Uint16 o_x, Uint16 o_y,Uint16 n)
{
       Uint16 dram_addr,temp;
       Uint16 x;
	
	         dram_addr=o_x+o_y*40; 	//得到显存区首址       	
             LCD_WR_CMD(0x46);                                //写光标指针代码
             LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
             LCD_WR_DAT(dram_addr>>8);              //CSRH
             LCD_WR_CMD(0x4c);                                      //光标右移


	      //反显一行
         LCD_WR_CMD(0x46);                                //写光标指针代码
	     for(x=0;x<n;x++)
		  {        
		           dram_addr=o_x+x+o_y*40; 	//得到显存区首址       	
                   LCD_WR_CMD(0x46);                         //写光标指针代码
                   LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
                   LCD_WR_DAT(dram_addr>>8);              //CSRH      
                   LCD_WR_CMD(0x43);               /*MREAD 代码*/
                   Delay(3);
                   temp=LCD_RD_DAT();			/* 读出数据 */
		           Delay(5);
             
                 
                   LCD_WR_CMD(0x42);                                //MWRITE代码
                   LCD_WR_DAT(~temp);                    /* 取反后写入,数据一次写指令,地址加1 */
           }
 
} 

void lcdNegDis1(Uint16 screen, Uint16 o_x, Uint16 o_y,Uint16 n)
{   
    Uint16 j,temp,dram_addr;
      
    dram_addr=o_x+o_y*40;
	LCD_WR_CMD(0x4F);
	
      LCD_WR_CMD(0x46);          
	  LCD_WR_DAT(dram_addr);
	  LCD_WR_DAT((dram_addr)>>8);
	  for(j=0;j<21;j++)
	  {
	   temp=0;
	   LCD_WR_CMD(0x43);
	   Delay(10);
	   temp=LCD_RD_DAT();
	   Delay(10);
	   LCD_WR_CMD(0x42);
	   LCD_WR_DAT(~temp);
	  
	  
      }
}

void lcdNegDis2(Uint16 screen, Uint16 o_x, Uint16 o_y,Uint16 n)
{      
        Uint16 cnt,dram_addr,temp;
        Uint16 x=0;
		
	
        dram_addr=o_x+o_y*40; 	//得到显存区首址
        	
        for(cnt=0;cnt<16;cnt++)                          
	    {
             LCD_WR_CMD(0x46);                                //写光标指针代码
             LCD_WR_DAT(dram_addr+cnt*40);                   //写光标指针地址CSRL
             LCD_WR_DAT((dram_addr+cnt*40)>>8);              //CSRH
             LCD_WR_CMD(0x4C);
             //反显一行
	      for(x=0;x<n;x++)
		  {
                   temp=0;
                   LCD_WR_CMD(0x43);               /*MREAD 代码*/
                   Delay(10);
                   temp=LCD_RD_DAT();		/* 读出数据 */
	        	   Delay(10);
                   
                   LCD_WR_CMD(0x46);                                //写光标指针代码
                  LCD_WR_DAT(dram_addr+cnt*40+x+2);                   //写光标指针地址CSRL
                   LCD_WR_DAT((dram_addr+cnt*40+x+2)>>8);              //CSRH
           
                   LCD_WR_CMD(0x42);                                //MWRITE代码
                   LCD_WR_DAT(temp);                    /* 取反后写入,数据一次写指令,地址加1 */
          }		
	    
	   }
    	/*   dram_addr=o_x+2+o_y*40;
       for(i=0;i<16;i++)
		{ 
          dram_addr=o_x+2+(o_y+i)*40;
		  LCD_WR_CMD(0x46);                         //写光标指针代码
          LCD_WR_DAT(dram_addr);                   //写光标指针地址CSRL
          LCD_WR_DAT((dram_addr)>>8);
		  LCD_WR_CMD(0x42);                       //MWRITE代码
          LCD_WR_DAT(temp[2*i]);
		  LCD_WR_CMD(0x4C);                       //光标
		  LCD_WR_CMD(0x42);                       //MWRITE代码
          LCD_WR_DAT(temp[2*i+1]);
		}     
         */


}



void Screen0Display()
{
    lcdWrLineHorizontal(0, 0, 0,8);
    lcdWrLineHorizontal(0, 0, 238,8);
	
    lcdWrLineVertical(0, 0, 2,28);
    lcdWrLineVertical(0, 0, 31,29);
	lcdWrLineVertical(0, 0, 61,29);
	lcdWrLineVertical(0, 0, 91,29);
	lcdWrLineVertical(0, 0, 121,29);
	lcdWrLineVertical(0, 0, 151,29);
	lcdWrLineVertical(0, 0, 181,29);
	lcdWrLineVertical(0, 0, 211,27);
	
    lcdWrLineVertical(0, 10, 31,179);
	  
    lcdWrLineVerticalR1(0, 39, 2,28);
	lcdWrLineVerticalR1(0, 39, 31,179);
	lcdWrLineVerticalR1(0, 39, 211,27);
	
    lcdWrWord(0, Data_Dian, 12, 5);
    lcdWrWord(0, Data_Ji, 14, 5);
    lcdWrWord(0, Data_Dian, 16, 5);
    lcdWrWord(0, Data_Liang, 18, 5);
    lcdWrWord(0, Data_Ce, 20, 5);
    lcdWrWord(0, Data_Shi4, 22, 5);
    lcdWrWord(0, Data_Yi, 24, 5);
    lcdWrLineHorizontal(0, 0, 30,4);
    lcdWrLineHorizontal(0, 0, 60,1);
	lcdWrLineHorizontal(0, 0, 90,1);
	lcdWrLineHorizontal(0, 0, 120,1);
	lcdWrLineHorizontal(0, 0, 150,1);
	lcdWrLineHorizontal(0, 0, 180,1);
	lcdWrLineHorizontal(0, 0, 210,4);
    lcdWrLetter(0, Data_R, 2,35);
	lcdWrLetter(0, Data_M, 3,35);
	lcdWrLetter(0, Data_S, 4,35);
	lcdWrWord(0, Data_Ce, 5, 35);
	lcdWrWord(0, Data_Liang, 7, 35);
	lcdWrWord(0, Data_Xie, 1, 65);
	lcdWrWord(0, Data_Bo, 3, 65);
	lcdWrWord(0, Data_Han2, 5, 65);
	lcdWrWord(0, Data_Liang, 7, 65);
	lcdWrWord(0, Data_Shun, 1, 95);
	lcdWrWord(0, Data_Tai, 3, 95);
	lcdWrWord(0, Data_JI, 5, 95);
	lcdWrWord(0, Data_Lu, 7, 95);
	lcdWrWord(0, Data_Bu, 1, 125);
	lcdWrWord(0, Data_Ping, 3, 125);
	lcdWrWord(0, Data_Heng, 5, 125);
	lcdWrWord(0, Data_Du, 7, 125);
	lcdWrWord(0, Data_Xuan, 1, 155);
	lcdWrWord(0, Data_Xiang, 7, 155);
	lcdWrWord(0, Data_Xi, 1, 185);
	lcdWrWord(0, Data_Tong, 3, 185);
	lcdWrWord(0, Data_Jiao, 5, 185);
	lcdWrWord(0, Data_Zhun, 7, 185);
	lcdWrWord(0, Data_Wu, 6, 215);
	lcdWrWord(0, Data_Han4, 8, 215);
	lcdWrWord(0, Data_Hua, 10, 215);
	lcdWrWord(0, Data_Da, 12, 215);
	lcdWrWord(0, Data_Xin, 14, 215);
	lcdWrWord(0, Data_Xing, 16, 215);
	lcdWrWord(0, Data_Dian, 18, 215);
	lcdWrWord(0, Data_Ji, 20, 215);
	lcdWrWord(0, Data_Ke, 22, 215);
	lcdWrWord(0, Data_Ji4, 24, 215);
	lcdWrWord(0, Data_Gu, 26, 215);
	lcdWrWord(0, Data_Fen, 28, 215);
	lcdWrWord(0, Data_You, 30, 215);
	lcdWrWord(0, Data_Xian, 32, 215);
	lcdWrWord(0, Data_Gong, 34, 215);
	lcdWrWord(0, Data_Si, 36, 215);
	

}

  
void Screen1Display()
{       
      Uint16 i,j;
      lcdWrLineHorizontal(1, 0, 0,8);
      lcdWrLineHorizontal(1, 0, 238,8);
      lcdWrLineHorizontal(1, 0, 24,4);
      lcdWrLineVertical(1,0,2,22);
      for(i=1;i<9;i++)
      {
        lcdWrLineVertical(1, 0, 24*i+1, 23);
      }
	  lcdWrLineVertical(1,0,216,22);
      for(j=2;j<10;j++)
      	{
      	  lcdWrLineHorizontal(1,0,24*j,2);
      	}
      lcdWrLineVertical(1, 20, 25,213);
      lcdWrLineVerticalR1(1, 39, 2,22);
      lcdWrLineVerticalR1(1, 39, 25,213);
      lcdWrWord(1,Data_Xuan, 10, 5);
      lcdWrWord(1,Data_Xiang,30, 5);
      lcdWrWord(1,Data_Dan,2,28 );
      lcdWrWord(1,Data_Xiang,6,28 );
      lcdWrWord(1,Data_Wei,30,28);
      lcdWrWord(1,Data_Xuan,32,28);
      lcdWrWord(1,Data_Ze,34,28);
      lcdWrWord(1,Data_San,2,52 );
      lcdWrWord(1,Data_Xiang,6,52 );
       lcdWrWord(1,Data_Wei,30,52);
      lcdWrWord(1,Data_Xuan,32,52);
      lcdWrWord(1,Data_Ze,34,52);
      lcdWrWord(1,Data_Dian,2,76 );
      lcdWrWord(1,Data_Ya,6,76 );
       lcdWrWord(1,Data_Wei,30,76);
      lcdWrWord(1,Data_Xuan,32,76);
      lcdWrWord(1,Data_Ze,34,76);
      lcdWrWord(1,Data_Dian,2,100);
      lcdWrWord(1,Data_Liu,6,100 );
       lcdWrWord(1,Data_Wei,30,100);
      lcdWrWord(1,Data_Xuan,32,100);
      lcdWrWord(1,Data_Ze,34,100);
      lcdWrWord(1,Data_Dian,2,124 );
      lcdWrWord(1,Data_Ya,4,124 );
      lcdWrWord(1,Data_Dian,6,124 );
      lcdWrWord(1,Data_Liu,8,124 );
       lcdWrWord(1,Data_Wei,30,124);
      lcdWrWord(1,Data_Xuan,32,124);

⌨️ 快捷键说明

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