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

📄 sed1335lcd.c

📁 SED1335控制液晶模块SHARP 32019T的显示,点阵为320x240,此外,DotMatrix.H为字库,请自行添加所需显示
💻 C
📖 第 1 页 / 共 4 页
字号:
   union CURSOR_ADR idata POSITION;

   POSITION.Adr = ucStartRow*APL + ucStartColumn;                                          //计算显示位置的内存地址
   
   LCDCommand = CSRDIR_DOWN;
   
   for(ucColumnCounter = 0;ucColumnCounter < ucLength;ucColumnCounter++)     //点阵显示列控制
   {
     LCDCommand = CSRW;
     LCDDataWrite = POSITION.AdrByte.AdrL;
     LCDDataWrite = POSITION.AdrByte.AdrH;
     
     LCDCommand=MWRITE;
     for(ucRowCounter = 0;ucRowCounter < ucWidth;ucRowCounter++)                   //点阵显示行控制
        LCDDataWrite = 0x00;
	     
     POSITION.Adr++;                                                                                             //显示内存地址加1,指向字符右半部显示内存地址

   }
	
	return;
} 

/*-------------字符显示-----------------------------*/

/********************************************************************    
*   函数名称: ChineseDisplay()                                                                  *    
*   函数用途: 显示16X16点阵的汉字                                           *    
*   输入参数:                                                                                       *
*             ucIndex  :     汉字在字库的索引                                         *
*             ucRow    :    屏幕行号                                                                *
*             ucColumn :   屏幕列号(单位:字节)                        * 
*             ucAttribute:  字符显示属性(0:正常;1:反白)* 
*   输出参数:无								                            *    
*                                                                                                                      *    
********************************************************************/ 

void ChineseDisplay(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute)
{
   uchar idata ucRowCounter;
   uchar idata ucColumnCounter;                 
   union CURSOR_ADR idata POSITION;
   
   POSITION.Adr = ucRow*APL + ucColumn;                                         //计算显示位置的内存地址 
   
   LCDCommand = CSRDIR_DOWN;
   
   for(ucColumnCounter = 0;ucColumnCounter < 2;ucColumnCounter++)    //点阵显示列控制(2字节,16点) 
   {
     LCDCommand = CSRW;
     LCDDataWrite = POSITION.AdrByte.AdrL;
     LCDDataWrite = POSITION.AdrByte.AdrH;
     
     LCDCommand=MWRITE;
     for(ucRowCounter = 0;ucRowCounter < 16;ucRowCounter++)             //点阵显示行控制(16点) 
    {
	if(ucAttribute == 0)
       {
         LCDDataWrite = GB_16[ucIndex].DotMatrix[ucColumnCounter*16 + ucRowCounter];
       }
       else
       {
         LCDDataWrite = ~GB_16[ucIndex].DotMatrix[ucColumnCounter*16 + ucRowCounter];
       }
	     
      }// for(ucRowCounter = 0;ucRowCounter < 16;ucRowCounter++)    
     POSITION.Adr++;                                                                             //显示内存地址加1,指向汉字右半部显示内存地址 

   }//for(ucColumnCounter = 0;ucColumnCounter < 2;ucColumnCounter++)
}


/*********************************************************************    
*   函数名称: Char24Display()                                                                    *    
*   函数用途: 显示24X24点阵的字符                                            *    
*   输入参数:                                                                                        *
*             ucIndex  :      字符在字库的索引                                         *
*             ucRow    :     屏幕行号                                                                *
*             ucColumn :   屏幕列号(单位:字节)                          * 
*             ucAttribute:  字符显示属性(0:正常;1:反白) *   
*   输出参数:无								                              *    
*                                                                                                                        *    
**********************************************************************/  

void Char24Display(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute)
{
   uchar idata ucRowCounter;
   uchar idata ucColumnCounter;                 
   union CURSOR_ADR idata POSITION;
   
   POSITION.Adr = ucRow*APL + ucColumn;                                          //计算显示位置的内存地址 
   
   LCDCommand = CSRDIR_DOWN;
   
   for(ucColumnCounter = 0;ucColumnCounter < 3;ucColumnCounter++)    //点阵显示列控制(3字节,24点) 
   {
     LCDCommand = CSRW;
     LCDDataWrite = POSITION.AdrByte.AdrL;
     LCDDataWrite = POSITION.AdrByte.AdrH;
     
	 LCDCommand=MWRITE;
     for(ucRowCounter = 0;ucRowCounter < 24;ucRowCounter++)             //点阵显示行控制(24点) 
     {
	if(ucAttribute == 0)
       {
         LCDDataWrite = ASCII_24X24[ucIndex][ucColumnCounter*24 + ucRowCounter];
       }
       else
       {
         LCDDataWrite = ~ASCII_24X24[ucIndex][ucColumnCounter*24 + ucRowCounter];
       }
	     
     }//for(ucRowCounter = 0;ucRowCounter < 24;ucRowCounter++) 

     POSITION.Adr++;                                                                              //显示内存地址加1,指向字符右半部显示内存地址 

   }//for(ucColumnCounter = 0;ucColumnCounter < 3;ucColumnCounter++)  
}


/********************************************************************    
*   函数名称: Char16X24Display()                                                             *    
*   函数用途: 显示16X24点阵的字符                                           *    
*   输入参数:                                                                                        *
*             ucIndex  :     字符在字库的索引                                         *
*             ucRow    :     屏幕行号                                                                *
*             ucColumn :   屏幕列号(单位:字节)                         * 
*             ucAttribute:   字符显示属性(0:正常;1:反白)*   
*   输出参数:  无								                             *    
*                                                                                                                       *    
*********************************************************************/ 

void Char16X24Display(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute)
{
   uchar idata ucRowCounter;
   uchar idata ucColumnCounter;                 
   union CURSOR_ADR idata POSITION;
   
   POSITION.Adr = ucRow*APL + ucColumn;                                          //计算显示位置的内存地址 
   
   LCDCommand = CSRDIR_DOWN;
   
   for(ucColumnCounter = 0;ucColumnCounter < 2;ucColumnCounter++)    //点阵显示列控制(2字节,16点)
   {
     LCDCommand = CSRW;
     LCDDataWrite = POSITION.AdrByte.AdrL;
     LCDDataWrite = POSITION.AdrByte.AdrH;
     
     LCDCommand=MWRITE;
     for(ucRowCounter = 0;ucRowCounter < 24;ucRowCounter++)             //点阵显示行控制(24点)
     {
	if(ucAttribute == 0)
       {
         LCDDataWrite = ASCII_16X24[ucIndex][ucColumnCounter*24 + ucRowCounter];
       }
       else
       {
         LCDDataWrite = ~ASCII_16X24[ucIndex][ucColumnCounter*24 + ucRowCounter];
       }
	     
     }//for(ucRowCounter = 0;ucRowCounter < 24;ucRowCounter++) 

     POSITION.Adr++;                                                                              //显示内存地址加1,指向字符右半部显示内存地址

   }//for(ucColumnCounter = 0;ucColumnCounter < 2;ucColumnCounter++)  
}


/********************************************************************    
*   函数名称: Char16Display()                                                                   *           
*   函数用途: 显示16X16点阵的字符                                           *    
*   输入参数:                                                                                       * 
*             ucIndex  :     字符在字库的索引                                         *
*             ucRow :        屏幕行号                                                                *
*             ucColumn :   屏幕列号(单位:字节)                         * 
*             ucAttribute:   字符显示属性(0:正常;1:反白)*   
*   输出参数: 无											        *    
*                                                                                                                       *    
*********************************************************************/ 

void Char16Display(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute)
{
   uchar idata ucRowCounter;
   uchar idata ucColumnCounter;                 
   union CURSOR_ADR idata POSITION;
   
   POSITION.Adr = ucRow*APL + ucColumn;                                       //计算显示位置的内存地址 
   
   LCDCommand = CSRDIR_DOWN;
   
   for(ucColumnCounter = 0;ucColumnCounter < 2;ucColumnCounter++)    //点阵显示列控制(2字节,16点) 
   {
     LCDCommand = CSRW;
     LCDDataWrite = POSITION.AdrByte.AdrL;
     LCDDataWrite = POSITION.AdrByte.AdrH;
     
     LCDCommand=MWRITE;
     for(ucRowCounter = 0;ucRowCounter < 16;ucRowCounter++)           //点阵显示行控制(16点) 
     {
       if(ucAttribute == 0)
       {
         LCDDataWrite = ASCII_16X16[ucIndex][ucColumnCounter*16+ucRowCounter];
       }
       else
       {
         LCDDataWrite = ~ASCII_16X16[ucIndex][ucColumnCounter*16+ucRowCounter];
       }

     }//for(ucRowCounter = 0;ucRowCounter < 16;ucRowCounter++) 

     POSITION.Adr++;                                                                            //显示内存地址加1,指向字符右半部显示内存地址 

   }//for(ucColumnCounter = 0;ucColumnCounter < 2;ucColumnCounter++)
}


/********************************************************************    
*   函数名称: CharDisplay()                                                                      *    
*   函数用途: 显示8X16点阵的字符                                             *    
*   输入参数:                                                                                        *
*             ucIndex  :      字符在字库的索引                                         *
*             ucRow    :     屏幕行号                                                                *
*             ucColumn :   屏幕列号(单位:字节)                          * 
*             ucAttribute: 字符显示属性(0:正常;1:反白)   *   
*   输出参数:无											         *    
*                                                                                                                       *    
*********************************************************************/ 

void CharDisplay(uchar ucIndex , uchar ucRow , uchar ucColumn , uchar ucAttribute)
{
   uchar idata ucRowCounter;                 
   union CURSOR_ADR idata POSITION;
   
   POSITION.Adr = ucRow*APL + ucColumn;                                      //计算显示位置的内存地址 
   
   LCDCommand = CSRDIR_DOWN;
   
   LCDCommand = CSRW;
   LCDDataWrite = POSITION.AdrByte.AdrL;
   LCDDataWrite = POSITION.AdrByte.AdrH;
   LCDCommand=MWRITE;
   for(ucRowCounter = 0;ucRowCounter < 16;ucRowCounter++)           //点阵显示行控制(16点) 
   {
      if(ucAttribute == 0)
      {
         LCDDataWrite = ASCII_8X16[ucIndex][ucRowCounter];
      }
      else
      {
         LCDDataWrite = ~ASCII_8X16[ucIndex][ucRowCounter];
      }
	  
   }	   
}

⌨️ 快捷键说明

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