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

📄 lcm.#2

📁 基于MST-G240128点阵液晶的 状态机机制 人机界面四级滚屏菜单 源代码 ,带时间片机制模拟操作系统
💻 #2
📖 第 1 页 / 共 3 页
字号:
/****************************************************************************
* 名称:LCD_DispChStr16x16()
* 功能:输出显示字符串(16*16字体)。
* 入口参数:x	指定显示位置,x坐标
*           y	指定显示位置,y坐标
*           str	要显示的字符串
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void LCD_DispChStr16x16(uint8 x, uint8 y, uint8 *str, bit bReve, bit FontNo)
{  
   uint8  *OffSet;
   uint8  i;
   uint16 AddOffSet;

   OffSet    = strstr(Index_FONT16x16ChCH, str);
   AddOffSet =(OffSet - Index_FONT16x16ChCH) << 5;

   if( !FontNo )
   {
      if( !bReve )
      {
	      for(i=0;i<16;i++)
	        LCD_UpdateByte(x+i, y,   FONT16x16ChCH1[AddOffSet++]);
	      for(i=0;i<16;i++)
	        LCD_UpdateByte(x+i, y+8, FONT16x16ChCH1[AddOffSet++]);
	   }
      else
      {
         for(i=0;i<16;i++)
           LCD_UpdateByte(x+i, y,   ~FONT16x16ChCH1[AddOffSet++]);
         for(i=0;i<16;i++)
           LCD_UpdateByte(x+i, y+8, ~FONT16x16ChCH1[AddOffSet++]);
      }
   }
   else
   {
      if( !bReve )
      {
	      for(i=0;i<16;i++)
	        LCD_UpdateByte(x+i, y,   FONT16x16ChCH2[AddOffSet++]);
	      for(i=0;i<16;i++)
	        LCD_UpdateByte(x+i, y+8, FONT16x16ChCH2[AddOffSet++]);
      }
	   else
	   {
         for(i=0;i<16;i++)
           LCD_UpdateByte(x+i, y,   ~FONT16x16ChCH2[AddOffSet++]);
         for(i=0;i<16;i++)
           LCD_UpdateByte(x+i, y+8, ~FONT16x16ChCH2[AddOffSet++]);
      }
   }	
}


/****************************************************************************
* 名称:LCD_DispAsciiChStr()
* 功能:显示ASCII码和汉字混编字符串.
* 入口参数:x	指定显示位置,x坐标
*           y	指定显示位置,y坐标
*           str	要显示的字符串
* 出口参数:无
* 说明:操作失败原因是指定地址超出有效范围。
****************************************************************************/
void LCD_DispAsciiChStr(uint8 x, uint8 y, uint8 *str, bit bReve, bit FontNo)
{  
   uint8 idata rega[2];
   uint8 idata regc[3];

   while( *str != 0 )
   {
      if( (uint8)*str < 0xA0 )
      {
	      strncpy(rega, str, 1);
	      rega[1]=0;
	      LCD_DispAsciiStr16x8(x, y, rega, bReve);
         str = str + 1;
	      x = x + 8;
	   }
	   if( (uint8)*str >= 0xA0 )
	   {
	      strncpy(regc, str, 2);
	      regc[2] = 0;
	      LCD_DispChStr16x16(x, y, regc, bReve, FontNo);
	      str = str + 2;
	      x = x + 16;
	   }
   }
}


/****************************************************************************
* 名称:LCD_DispAsciiChCURS()
* 功能:显示光标
* 入口参数:x	     指定显示位置,x坐标
*           y	     指定显示位置,y坐标
*           bCOLOR  0/1, 不显示/显示.    
*           bCHAR   0/1, ASCII码字符/汉字字符型光标.
* 出口参数:
* 说明:
****************************************************************************/
void LCD_DispAsciiChCURS(uint8 xx, uint8 yy, bit bCOLOR, bit bCHAR)
{                                                   
   uint8  idata x, y;

   x = xx;
	y = yy;

   if( bCHAR == 1 )    // 显示汉字
	{
	   if( bCOLOR == 1 )      // 显示光标
		{
	      LCD_UpdateByte(x,   y+15, 0xff);
	      LCD_UpdateByte(x+8, y+15, 0xff);
      } 
	   else                   // 不显示光标
		{
	      LCD_UpdateByte(x,   y+15, 0x00);
	      LCD_UpdateByte(x+8, y+15, 0x00);
      } 
	}
   else     // 显示ASCII码
	{
	   if( bCOLOR == 1 )      // 显示光标
		{
	      LCD_UpdateByte(x,   y+15, 0xff);
      } 
	   else                   // 不显示光标
		{
	      LCD_UpdateByte(x,   y+15, 0x00);
      } 
	}
}


/****************************************************************************
** 函数名称: LCD_SelfTest()
** 功能描述: LCD测试程序
** 入口参数: 无
** 出口参数: 无
** 全局变量: 无
** 调用模块: 无
** 说明:
****************************************************************************/
void LCD_SelfTest(void)
{   
   LCD_BLED = 1;  // Light ON.  

	Box();
	D1S(1);
   Staticmap();
   D1S(1);
//   Scrollmap();
/*
   LCD_DispAsciiChStr  (16, 96, "苏州LZK-X型电动机", 1);

   LCD_DispAsciiCh16x8 (16, 16, '4' );
   LCD_DispAsciiStr16x8( 0, 32, ">0123456789LZK-xABCDEFG");
   LCD_DispChChar16x16 (16, 48, "科", 1);
	LCD_DispChStr16x16  (32, 48, "科树", 1);

   LCD_DispChStr16x16  (64, 48, "通信", 1);
   LCD_DispChStr16x16  (64+2*16+8, 48, "公科有技限司", 1);
   LCD_DispChStr16x16  (16, 72, "友明科技有限公司", 1);

	LCD_DispAsciiChStr  (16,112, "常滑全", 0);
	LCD_DispAsciiChStr  (64,112, "科树", 1);
*/
   LCD_BLED = 0;  // Light OFF  
   D1S(1);
}


/****************************************************************************
** 函数名称: LCD_GoToXY()
** 功能描述: 光标定位
** 入口参数: 无
** 出口参数: 无
** 全局变量: 无
** 调用模块: 无
** 说明:
****************************************************************************/
void LCD_GoToXY(uint8 x, uint8 y)
{   
   CURS_X = x;
   CURS_Y = y;
}




Staticmap()
{
  int i,j,tr1,tr2;

  LCD_CS();                         /* ExSRAM Page 16 */

  LCD_WriteCommand(0xB0); /* SET PAGE   ADDRESS               */
  LCD_WriteCommand(0x10); /* SET COLUMN ADDRESS MSB(00000000) */
  LCD_WriteCommand(0x00); /* SET COLUMN ADDRESS LSB(00000000) */
  LCD_WriteCommand(0x89); /* SET RAM    ADDRESS CONTROL       */
  for(i=0;i<480;i++)
  {
     LCD_WriteData(0x00);
//	  DmS(10);
  }
  for(i=0,tr1=0,tr2=0;i<13;i++)
  {
    for(j=0;j<24;j++)
    {
      LCD_WriteData(0x00);
//	   DmS(10);
    }
    for(j=0;j<96;j++,tr1++)
    {
      LCD_WriteData(TRULY1[tr1]);
//	   DmS(10);
    }
    for(j=0;j<96;j++,tr2++)
    {
      LCD_WriteData(TRULY2[tr2]);
//	   DmS(10);
    }
    for(j=0;j<24;j++)
    {
      LCD_WriteData(0x00);
//	   DmS(10);
    }
  }
  for(i=0;i<240;i++)
    LCD_WriteData(0x00);
}

Box()
{
   int i,j;

   LCD_CS();                         /* ExSRAM Page 16 */

   LCD_WriteCommand(0xB0); /*SET PAGE ADDRESS*/
   LCD_WriteCommand(0x10); /*SET COLUMN ADDRESS MSB(00000000)*/
   LCD_WriteCommand(0x00); /*SET COLUMN ADDRESS LSB(00000000)*/
   LCD_WriteCommand(0x89); /*SET RAM ADDRESS CONTROL*/

   LCD_WriteData(0xFF);

   for(i=0;i<238;i++)
     LCD_WriteData(0x01);

   LCD_WriteData(0xFF);

   for(i=0;i<14;i++)
   {
      LCD_WriteData(0xFF);

      for(j=0;j<238;j++)
        LCD_WriteData(0x00);
		   
      LCD_WriteData(0xFF);
   }

   LCD_WriteData(0xFF);

   for(i=0;i<238;i++)
     LCD_WriteData(0x80);

   LCD_WriteData(0xFF);
   ExInSRAM_Select(0);       //  
}





⌨️ 快捷键说明

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