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

📄 rt240128.lst

📁 基于MST-G240128点阵液晶的 状态机机制 人机界面四级滚屏菜单 源代码 ,带时间片机制模拟操作系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
 193          /***********************************************************************
 194          * 名称:LCD_TestStaBit03()
 195          * 功能:数据自动写状态是否允许。
 196          * 入口参数:无
 197          * 出口参数:返回0表示禁止,否则表示允许
 198          ***********************************************************************/
 199          bit LCD_TestStaBit03(void)
 200          {  
 201   1         uint8 i;
 202   1      
 203   1         for(i=100; i>0; i--)
 204   1         {  
 205   2            if( (LCD_ReadState() & 0x08) == 0x08 ) 
 206   2                  break;
 207   2         } 
 208   1         if(i>0)
 209   1           return 1;
 210   1         else
 211   1           return 0;
 212   1      }
 213          
 214          /***********************************************************************
 215          * 名称:LCD_WriteTCommand1()
 216          * 功能:写无参数命令子程序。会先判断LCM状态字。
 217          * 入口参数:ucCMD (要写入LCM的命令字)
 218          * 出口参数:      (操作出错返回0,否则返回)
C51 COMPILER V7.05   RT240128                                                              08/27/2006 23:31:34 PAGE 5   

 219          ***********************************************************************/
 220          bit LCD_WriteTCommand1(uint8 ucCMD)
 221          {  
 222   1         if( LCD_TestStaBit01()==0 ) 
 223   1           return 0;
 224   1         LCD_WriteCommand(ucCMD);             // 发送命令字
 225   1         return 1;
 226   1      }
 227          
 228          /***********************************************************************
 229          * 名称:LCD_WriteTCommand2()
 230          * 功能:写单参数命令子程序。会先判断LCM状态字。
 231          * 入口参数:ucCMD  (要写入LCM的命令字)
 232          *           ucDATA1 (参数1)
 233          * 出口参数:操作出错返回0,否则返回1
 234          * 说明:先发送参数据数据,再发送命令字
 235          ***********************************************************************/
 236          bit LCD_WriteTCommand2(uint8 ucCMD, uint8 ucDATA1)
 237          {  
 238   1         if( LCD_TestStaBit01()==0 ) 
 239   1           return 0;
 240   1         LCD_WriteData(ucDATA1);                      // 发送数据1
 241   1         
 242   1         if( LCD_TestStaBit01()==0 ) 
 243   1           return 0;
 244   1         LCD_WriteCommand(ucCMD);                 // 发送命令字
 245   1         
 246   1         return 1;
 247   1      }
 248          
 249          /***********************************************************************
 250          * 名称:LCD_WriteTCommand3()
 251          * 功能:写双参数命令子程序。会先判断LCM状态字。
 252          * 入口参数:ucCMD   (要写入LCM的命令字)
 253          *           ucDATA1     (参数1)
 254          *           ucDATA2     (参数2)
 255          * 出口参数:操作出错返回0,否则返回1
 256          * 说明:先发送两字节参数据数据,再发送命令字
 257          ***********************************************************************/
 258          bit LCD_WriteTCommand3(uint8 ucCMD, uint8 ucDATA1, uint8 ucDATA2)
 259          {  
 260   1         if( LCD_TestStaBit01()==0 ) 
 261   1           return 0;
 262   1         LCD_WriteData(ucDATA1);                  // 发送数据1
 263   1         
 264   1         if( LCD_TestStaBit01()==0 ) 
 265   1           return 0;
 266   1         LCD_WriteData(ucDATA2);                  // 发送数据2
 267   1         
 268   1         if( LCD_TestStaBit01()==0 ) 
 269   1           return 0;
 270   1         LCD_WriteCommand(ucCMD);             // 发送命令字
 271   1           
 272   1         return 1;
 273   1      }
 274          
 275          /***********************************************************************
 276          * 名称:LCD_WriteTData1()
 277          * 功能:写1字节数据子程序。先判断状态字。
 278          * 入口参数:ucDATA         要写入LCM的数据
 279          * 出口参数:操作出错返回0,否则返回1
 280          ***********************************************************************/
C51 COMPILER V7.05   RT240128                                                              08/27/2006 23:31:34 PAGE 6   

 281          bit LCD_WriteTData1(uint8 ucDATA)
 282          {  
 283   1         if( LCD_TestStaBit03()==0 ) 
 284   1           return 0;
 285   1         LCD_WriteData(ucDATA);                       // 发送命令字
 286   1         
 287   1         return 1;
 288   1      }
 289          
 290          /***********************************************************************
 291          * 名称:LCD_ClearAll()
 292          * 功能:LCD填充。以图形方式进行填充,起始地址为0x0000。
 293          * 入口参数:ucDATA              要填充的数据
 294          * 出口参数:无
 295          ***********************************************************************/
 296          void LCD_ClearAll(void)
 297          {  
 298   1         uint16 i;
 299   1      
 300   1         LCD_WriteTCommand3(LCD_ADR_POS, 0x00, 0x00);  // 置地址指针
 301   1         LCD_WriteTCommand1(LCD_AUT_WR);                               // 自动写
 302   1         for(i=0; i<128 * 30; i++)
 303   1           LCD_WriteTData1(0x00);                                      // 白底黑字.
 304   1         LCD_WriteTCommand1(LCD_AUT_OVR);                              // 自动写结束
 305   1         LCD_WriteTCommand3(LCD_ADR_POS,0x00,0x00);    // 重置地址指针
 306   1      }
 307          
 308          /***********************************************************************
 309          * 名称:LCD_Initialize()
 310          * 功能:LCM初始化,将LCM初始化为纯图形模式,显示起始地址为0x0000,。
 311          * 入口参数:无
 312          * 出口参数:无
 313          * 说明:函数会设置LCM数据总线为输出方式
 314          ***********************************************************************/
 315          void LCD_Initialize(void)
 316          {  
 317   1         LCD_WriteTCommand3(LCD_TXT_STP, 0x00, 0x00);  // 设置文本方式RAM起始地址
 318   1         LCD_WriteTCommand3(LCD_TXT_WID, 30,   0x00);  // 设置文本模式的宽度,宽度为N/6或N/8,N为宽度点数,如240
 319   1         LCD_WriteTCommand3(LCD_GRH_STP, 0x00, 0x00);  // 设置图形方式RAM起始地址
 320   1         LCD_WriteTCommand3(LCD_GRH_WID, 30,   0x00);  // 设置图形模式的宽度,宽度为N/6或N/8,N为宽度点数,如240
 321   1         LCD_WriteTCommand1(LCD_MOD_OR);                                  // 设置显示方式为"或"
 322   1         LCD_WriteTCommand1(LCD_DIS_SW|0x08);                  // 设置纯图形显示模式
 323   1      }
 324          
 325          /****************************************************************************
 326          * 名称:LCD_UpdateDate()
 327          * 功能:在指定位置上更新8个点。
 328          * 入口参数:x 指定点所在列的位置
 329          *           y 指定点所在行的位置
 330          * 出口参数:
 331          * 说明:
 332          ****************************************************************************/
 333          void LCD_UpdateByte(uint8 x, uint8 y, uint8 ucDATA)
 334          {  
 335   1         uint16 addr;    
 336   1      
 337   1         addr = (GUI_LCM_XMAX>>3) * y + (x>>3);                /* 找出目标地址 */
 338   1         LCD_WriteTCommand3(LCD_ADR_POS, addr&0xFF, addr>>8 ); /* 置地址指针   */   
 339   1         LCD_WriteTCommand2(LCD_INC_WR,  ucDATA);              /* 输出数据     */
 340   1      }
 341          
 342          /****************************************************************************
C51 COMPILER V7.05   RT240128                                                              08/27/2006 23:31:34 PAGE 7   

 343          * 名称:LCD_UpdatePoint()
 344          * 功能:在指定位置上画点,刷新某一点。
 345          * 入口参数:x            指定点所在列的位置
 346          *           y            指定点所在行的位置
 347          *           bCOLOR  0/1  显示/不显示   
 348          * 出口参数:
 349          * 说明:
 350          ****************************************************************************/
 351          void LCD_UpdatePoint(uint8 x, uint8 y, bit bCOLOR)
 352          {  
 353   1         uint16 addr; 
 354   1         uint8  ucTMP;
 355   1       
 356   1         ucTMP = x % 8;
 357   1         ucTMP = 7 - ucTMP;
 358   1      
 359   1         if( bCOLOR == 1 )
 360   1           ucTMP = 0x01 << ucTMP;
 361   1         else
 362   1           ucTMP = 0x00;
 363   1      
 364   1         addr = (GUI_LCM_XMAX>>3) * y + (x>>3);                /* 找出目标地址 */
 365   1         LCD_WriteTCommand3(LCD_ADR_POS, addr&0xFF, addr>>8); /* 置地址指针 */
 366   1         LCD_WriteTCommand2(LCD_INC_WR,  ucTMP);               /* 输出数据   */
 367   1      }
 368          
 369          
 370          /****************************************************************************
 371          * 名称:LCD_DispAsciiCh16x8()
 372          * 功能:显示ASCII 16×8字符。
 373          * 入口参数:x   指定显示位置,x坐标
 374          *           y   指定显示位置,y坐标
 375          *           ch  要显示的ASCII字符对应的数组的地址。
 376          * 出口参数:返回值为1时表示操作成功,为0时表示操作失败。
 377          * 说明:操作失败原因是指定地址超出有效范围。
 378          ****************************************************************************/
 379          bit LCD_DispAsciiCh16x8(uint8 xx, uint8 yy, uint8 ucASCII)
 380          {  
 381   1         uint8  x, y;
 382   1         uint8  i;
 383   1         uint16 AddrOffSet;
 384   1      
 385   1         x = xx;
 386   1              y = yy;
 387   1         if( x >= (GUI_LCM_XMAX-8) )              /* 参数过滤 */
 388   1           return(0);
 389   1         if( y >= (GUI_LCM_YMAX-8) )              /* 参数过滤 */
 390   1           return(0);
 391   1      
 392   1         AddrOffSet = ( ucASCII - 32) * 16;       //     
 393   1         for(i=0; i<16; i++)                                               // 显示共16行
 394   1         {  
 395   2            LCD_UpdateByte(x, y, FONT16x8ASII[AddrOffSet + i]);
 396   2            y++;                                                                              // 指向下一行
 397   2         }   
 398   1         return(1);
 399   1      }
 400          
 401          
 402          /****************************************************************************
 403          * 名称:LCD_DispAsciiStr16x8()
 404          * 功能:输出显示字符串,16*8字体
C51 COMPILER V7.05   RT240128                                                              08/27/2006 23:31:34 PAGE 8   

 405          * 入口参数:x      指定显示位置,x坐标
 406          *           y      指定显示位置,y坐标
 407          *           str 要显示的ASCII码字符串
 408          * 出口参数:无
 409          * 说明:
 410          ****************************************************************************/
 411          void LCD_DispAsciiStr16x8(uint8 xx, uint8 yy, const char *str)
 412          {  
 413   1         uint8  x, y;
 414   1      

⌨️ 快捷键说明

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