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

📄 sed1335lcd.c

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

void LCD16X24Printf(uchar ucRowStart, uchar ucColumnStart, uchar ucAttribute, uchar * pStringDisplay)
{
    uchar idata ucIndex;

    while(*pStringDisplay != '\0')
    {         
        if(*pStringDisplay == 32 )                     // 空格
        {
          ucIndex = 0;                                  
        }
        else if(*pStringDisplay > 57)                  // XYZ
        {
        	ucIndex = *pStringDisplay - 88 + 14;  
        }
        else                                                            //  - ~ 9 
        {
        	ucIndex = *pStringDisplay - 45 + 1;
        }
        
        Char16X24Display(ucIndex , ucRowStart , ucColumnStart , ucAttribute);

        pStringDisplay++;
        ucColumnStart = ucColumnStart  + 2;
           
    }
		
}


/*************************************************************************
*   函数名称: LCD8Printf()                                                                                 *
*   函数用途: 显示8X16的字符串(只用于程序代码显示)       *
*   输入参数:                                                                                                    *
*			        ucRowStart:      显示起始行号						  *
*			        ucColumnStar:    显示起始列号(单位:字节)  * 
*			        *pStringDisplay: 显示的字符串                                         *
*                           ucAttribute: 字符显示属性(0:正常;1:反白)    *
*   输出参数:无                                                                                          *
*                                                                                                                              *
**************************************************************************/

void LCD8Printf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar *pStringDisplay )
{
    uchar idata ucIndex;

    while((*pStringDisplay != '\0') && (ucColumnStart < (ColumnEnd+1)))
    {  
        ucIndex = *pStringDisplay - 32;                 //求字符在字库的索引值,首个字符位空格,按ASCII嘛顺序存放  
        CharDisplay(ucIndex , ucRowStart , ucColumnStart , ucAttribute);

        pStringDisplay++;
        ucColumnStart = ucColumnStart  + 1;
           
    }

		
}


/*************************************************************************
*   函数名称: ProgramRowPrintf()                                                                       *
*   函数用途: AUTO方式程序代码显示(8X16的字符串)                *
*   输入参数:                                                                                                    *
*			        ucRowStart:      显示起始行号						  *
*			        ucColumnStar:    显示起始列号(单位:字节)  * 
*			        *pStringDisplay: 显示的字符串                                         *
*                           ucAttribute: 字符显示属性(0:正常;1:反白)    *
*   输出参数:无                                                                                          *
*                                                                                                                              *
**************************************************************************/

void ProgramRowPrintf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar *pStringDisplay )
{
    uchar idata ucIndex;

    while((*pStringDisplay != '\0') && (ucColumnStart < 29))
    {  
        ucIndex = *pStringDisplay - 32;                 //求字符在字库的索引值,首个字符位空格,按ASCII嘛顺序存放  
        CharDisplay(ucIndex , ucRowStart , ucColumnStart , ucAttribute);

        pStringDisplay++;
        ucColumnStart = ucColumnStart  + 1;
           
    }

		
}


/*---------------图片显示---------------------------------------*/

/*******************************************************************************
*   函数名称: GSKFlagDisplay()                                                                                     *
*   函数用途: 显示GSK标志                                                                                  *
*   输入参数:                                                                                                               *
*			        ucRowStart:      显示起始行号							      *
*			        ucColumnStar:  显示起始列号(单位:字节)	             * 
*                           ucAttribute:       字符显示属性(0:正常;1:反白) *
*   输出参数:无                                                                                                     *
*                                                                                                                                         *
********************************************************************************/

uchar GSKFlagDisplay(uchar ucRow , uchar ucColumn , uchar ucAttribute )
{
   uchar ucRowCounter,ucColumnCounter;  
   uint unCounter;
   union CURSOR_ADR POSITION;
   
   POSITION.Adr = ucRow*APL + ucColumn;                //计算显示位置的内存地址 
   
   LCDCommand = CSRDIR_RIGHT;
   
   for(ucRowCounter = 0;ucRowCounter < 100;ucRowCounter++)    //点阵显示行控制(100点) 
   {
	  	
      LCDCommand = CSRW;
      LCDDataWrite = POSITION.AdrByte.AdrL;
      LCDDataWrite = POSITION.AdrByte.AdrH;
     
      LCDCommand=MWRITE;
      for(ucColumnCounter = 0;ucColumnCounter < 11;ucColumnCounter++)           //点阵显示列控制(11字节,88点) 
     {

        if(KeyScanf() != 0x00)                                                                               // 检测到按键则返回
           return(1);
        if(ucAttribute == 0)
        {
           LCDDataWrite = GSK_FLAG[ucRowCounter * 11 + ucColumnCounter];
        }
        else
        {
          LCDDataWrite = ~GSK_FLAG[ucRowCounter * 11 + ucColumnCounter];
        }
     }//for(ucColumnCounter = 0;ucColumnCounter < 11;ucColumnCounter++)
	 
      POSITION.Adr += APL;                                   //指向下一行开始位置 

      unCounter=DelayWithKeyScanf(50);
      if(unCounter != 0)
        return(1);
          
   }//for(ucRowCounter = 0;ucRowCounter < 100;ucRowCounter++) 
   return(0);	
   
}


/******************************************************************************
*   函数名称: GSKNameDisplay()                                                                                  *
*   函数用途: 显示GSK名字                                                                                 *
*   输入参数:                                                                                                              *
*			        ucRowStart:      显示起始行号							     *
*			        ucColumnStar:  显示起始列号(单位:字节)	            * 
*                           ucAttribute:       字符显示属性(0:正常;1:反白)*
*   输出参数:无                                                                                                    *
*                                                                                                                                        *
*******************************************************************************/

uchar  GSKNameDisplay(uchar ucRow , uchar ucColumn , uchar ucAttribute )
{
   uchar ucRowCounter , ucColumnCounter;        
   uint unCounter;
   union CURSOR_ADR POSITION;
   
   POSITION.Adr = ucRow*APL + ucColumn;                //计算显示位置的内存地址 
   
   LCDCommand = CSRDIR_RIGHT;
   
   for(ucRowCounter = 0;ucRowCounter < 23;ucRowCounter++)    //点阵显示行控制(23点) 
   {
      LCDCommand = CSRW;
      LCDDataWrite = POSITION.AdrByte.AdrL;
      LCDDataWrite = POSITION.AdrByte.AdrH;
     
      LCDCommand=MWRITE;
      for(ucColumnCounter = 0;ucColumnCounter < 26;ucColumnCounter++)           //点阵显示列控制(11字节,88点) 
     {
        if(KeyScanf() != 0x00)                                                                               // 检测到按键则返回
           return(1);
		
        if(ucAttribute == 0)
        {
           LCDDataWrite = GSK_NAME[ucRowCounter * 26 + ucColumnCounter];
        }
        else
        {
          LCDDataWrite = ~GSK_NAME[ucRowCounter * 26 + ucColumnCounter];
        }
     }//for(ucColumnCounter = 0;ucColumnCounter < 26;ucColumnCounter++) 
	 
      POSITION.Adr += APL;                                   //指向下一行开始位置 

       unCounter=DelayWithKeyScanf(50);
      if(unCounter != 0)
        return(1);
	  
   }// for(ucRowCounter = 0;ucRowCounter < 23;ucRowCounter++) 
   return(0);
		
}


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

void MultipleDisplay(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字节,16点) 
   {
      LCDCommand = CSRW;
      LCDDataWrite = POSITION.AdrByte.AdrL;
      LCDDataWrite = POSITION.AdrByte.AdrH;
     
      LCDCommand=MWRITE;
      for(ucRowCounter = 0;ucRowCounter < 16;ucRowCounter++)           //点阵显示行控制(16点) 
      {
         if(ucAttribute == 0)
         {
            LCDDataWrite = Multiple[ucIndex][ucColumnCounter*16+ucRowCounter];
         }
         else
         {
             LCDDataWrite = ~Multiple[ucIndex][ucColumnCounter*16+ucRowCounter];
         }  

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

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

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

⌨️ 快捷键说明

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