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

📄 sed1335lcd.c

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


/*----------------直线--------------------------------------------------*/

/***********************************************************
*   函数名称: QuickLineX()                                                         *         
*   函数用途: 作水平线  			                                  *
*   输入参数:                                                                            *
*			        Y:        纵坐标						      *
*			        XStart:起点横坐标				      * 
*			        XEnd:  终点横坐标	                           *
*   输出参数:无 	 		                                                *
*                                                                                                      *
************************************************************/

void QuickLineX(uchar ucY , uint unXStart , uint unXEnd)
{
       char cWholeByte;
	uchar ucStartByte;
	uchar ucEndByte;
	union CURSOR_ADR POSITION;

       ucStartByte = 0x0FF>>( unXStart%8);
	ucEndByte=0x0FF <<(7-unXEnd%8);

	if((unXEnd/8)==(unXStart/8))
	  ucStartByte = ucStartByte & ucEndByte;	

	POSITION.Adr = ucY*APL + unXStart/8;

       LCDCommand = CSRDIR_RIGHT;
	   	
	LCDCommand = CSRW;                                                     //设置光标地址
       LCDDataWrite = POSITION.AdrByte.AdrL;
       LCDDataWrite = POSITION.AdrByte.AdrH;
	
       LCDCommand = MWRITE;
       LCDDataWrite = ucStartByte;	

       cWholeByte = (unXEnd-unXStart)/8  ;
	if(cWholeByte >0)
	{
            cWholeByte -=1;
            while(cWholeByte-->0)
       	  LCDDataWrite = 0xFF;

	    LCDDataWrite = ucEndByte;
	}

}    


/************************************************************************
*   函数名称: QuickLineY()                                                                               *
*   函数用途: 作垂直线  			                                                        *
*   输入参数:                                                                                                  *
*			        X:          横坐标         						                     *
*			        YStart:   起点纵坐标      							       * 
*			        YEnd:    终点纵坐标                                                         *
*                           ucWidth:直线宽度(点)  ,最大值强行置为8           *
*   输出参数:无                                                                                        *
*                                                                                                                            *
*************************************************************************/

void QuickLineY(uint unX , uchar ucYStart , uchar ucYEnd, uchar ucWidth)
{
       uchar uData[2];
	uchar ucColumnCounter;
	uchar ucRowCounter;
	uchar ucSplit;
	union CURSOR_ADR POSITION;

       if(ucWidth>8)
	   ucWidth=8;
	   
       if((unX%8+ucWidth)>8)
	{   
	    ucSplit = 1;
		
           uData[0]=0x0FF>>(unX%8);
	    uData[1]=0x0FF<<(16-unX%8-ucWidth);
  
       }
       else
       {
           ucSplit = 0;
           uData[0]=(0x0FF>>(unX%8))&(0x0FF<<(8-unX%8-ucWidth));	   
       }

	POSITION.Adr = ucYStart*APL + unX/8;

      LCDCommand = CSRDIR_DOWN;
      
      for(ucColumnCounter = 0;ucColumnCounter <= ucSplit;ucColumnCounter++)    //点阵显示列控制(2字节,16点)
      {
         LCDCommand = CSRW;
         LCDDataWrite = POSITION.AdrByte.AdrL;
         LCDDataWrite = POSITION.AdrByte.AdrH;
        
         LCDCommand=MWRITE;
        for(ucRowCounter = 0;ucRowCounter <=(ucYEnd-ucYStart);ucRowCounter++)          //点阵显示行控制
        {
            LCDDataWrite = uData[ucColumnCounter];  
        }
   
        POSITION.Adr++;                                                                           //显示内存地址加1,指向字符右半部显示内存地址
   
      }
}


/*******************************************************************
*   函数名称: CursorDisplay()                                                                  *         
*   函数用途: 线状光标 显示     	                                                *
*   输入参数:                                                                                          *
*             ucRow    :     屏幕行号                                                              *
*             ucColumn :   屏幕列号(单位:字节)                        * 
*             ucAttribute: 字符显示属性(0:正常;1:反白)*   
*   输出参数:无 	 		                                                               *
*                                                                                                                     *
*********************************************************************/

void CursorDisplay(uchar ucRow , uchar ucColumn , uchar ucAttribute)
{                
   union CURSOR_ADR xdata POSITION;
   
   POSITION.Adr = ucRow*APL + ucColumn;                                      //计算显示位置的内存地址 
   
   LCDCommand = CSRDIR_DOWN;
   
   LCDCommand = CSRW;
   LCDDataWrite = POSITION.AdrByte.AdrL;
   LCDDataWrite = POSITION.AdrByte.AdrH;
   LCDCommand=MWRITE;

   if(ucAttribute == 0)
   {
       LCDDataWrite = 0x00;
       LCDDataWrite = 0x00;
    }
    else
    {
       LCDDataWrite =0xFF;
       LCDDataWrite =0xFF;
       
    }
	  	   	
}    


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

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

void LCDPrintf(uchar ucRowStart , uchar ucColumnStart , uchar ucAttribute , uchar  *pStringDisplay )
{
    uchar idata ucIndex;
    uchar idata ucCodeH ;
    uchar idata ucCodeL;                                            //字符编码高低位 

    while((*pStringDisplay != '\0') && (ucColumnStart < 39))
    {  		
        ucCodeL = *pStringDisplay;                            //取编码低字节,字符为单字节编码,无高字节 
	   
        if(ucCodeL < 128)                                           //字符 
       {   
           ucIndex = ucCodeL - 32;                              //求字符在字库的索引值,首个字符位空格,按ASCII嘛顺序存放  
           Char16Display(ucIndex , ucRowStart , ucColumnStart , ucAttribute);

           pStringDisplay++;
       }//if(ucCodeL < 128)
       else                                                                    //汉字 
      {
         ucCodeH = *(pStringDisplay + 1);                //取编码高字节 
	   
         for(ucIndex = 0 ; ucIndex < (sizeof(GB_16)  / sizeof(GB_16[0])) ; ucIndex++)   
         {
            if((ucCodeL == GB_16[ucIndex].GBCode[0]) && (ucCodeH ==GB_16[ucIndex].GBCode[1]))  //查找汉字在字库的索引值 
            {
               ChineseDisplay(ucIndex , ucRowStart , ucColumnStart , ucAttribute);
               break;
            }
         }//for(ucIndex = 0 ; ucIndex < (sizeof(GB_16)  / sizeof(GB_16[0])) ; ucIndex++)

          pStringDisplay += 2;
      }//else

      ucColumnStart = ucColumnStart  + 2;
           
    }
		
}


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

void LCD24Printf(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;
        }
        
        Char24Display(ucIndex , ucRowStart , ucColumnStart , ucAttribute);

        pStringDisplay++;
        ucColumnStart = ucColumnStart  + 3;
           
    }
		
}


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

⌨️ 快捷键说明

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