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

📄 lcmdrv.lst

📁 字符型 及图形 液晶显示程序
💻 LST
字号:
C51 COMPILER V7.07   LCMDRV                                                                03/10/2004 15:02:15 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE LCMDRV
OBJECT MODULE PLACED IN Lcmdrv.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE Lcmdrv.c OPTIMIZE(2,SPEED) BROWSE INTVECTOR(0X8000) DEFINE(MONITOR51) DEBUG
                    - OBJECTEXTEND

stmt level    source

   1          /****************************************************************************
   2          * 文件名:LCMDRV.C
   3          * 功能:TC1602A驱动程序。提供初始化、发送命令、发送数据、发送字符串等函数。
   4          ****************************************************************************/
   5          #include  "LCMDRV.H"
   6          #include  <intrins.h>
   7          
   8          
   9          /****************************************************************************
  10          ** 函数名称: DelayShort()
  11          ** 功能描述: 短延时操作,延时时间约为dly个机器周期。
  12          ** 输 入: dly    延时控制,即延时周期数。(参数为0时不进行延时)
  13          ** 输 出: 无
  14          ****************************************************************************/
  15          void  DelayShort(uint8 dly)
  16          {  for( ; dly>0; dly--) _nop_();
  17   1      }
  18          
  19          
  20          /****************************************************************************
  21          ** 函数名称: LCMSendDate()
  22          ** 功能描述: 向LCM模块发送数据date。
  23          ** 输 入: odata    要输出的数据
  24          ** 输 出: 无
  25          ** 注意: 使用此函数前要初化好LCM,再用此函数据发送显示数据。
  26          ****************************************************************************/
  27          void  LCMSendDate(uint8 odate)
  28          {  LCMWR_DAT = odate; 
  29   1         DelayShort(100);
  30   1      }
  31          
  32          
  33          /****************************************************************************
  34          ** 函数名称: LCMSendComm()
  35          ** 功能描述: 向LCM模块发送命令comm。
  36          ** 输 入: comm      要输出的命令
  37          ** 输 出: 无
  38          ** 注意: 调用此函数来初化、设置LCM
  39          ****************************************************************************/
  40          void  LCMSendComm(uint8 comm)
  41          {  LCMWR_COM = comm;
  42   1         DelayShort(100);
  43   1      }
  44          
  45          
  46          /****************************************************************************
  47          ** 函数名称: LCMDispStr()
  48          ** 功能描述: 向LCM模块发送字串数据,从DDRAM的指定地起adr开始一直写,直到字符串结束或超出
  49          **          屏幕显示范围。此函数可以自动换行。
  50          ** 输 入:  dstr           要写的字串指针
  51          **         adr     写入的DDRAM起始地址(如LCM_LINE1)     
  52          ** 输 出: 无
  53          ** 注意: 使用此函数前要初化好LCM。(适用于双行LCM设置,且显示为光标移动,DDRAM地址向上增长)
  54          ****************************************************************************/
C51 COMPILER V7.07   LCMDRV                                                                03/10/2004 15:02:15 PAGE 2   

  55          void  LCMDispStr(uint8 adr, char *dstr)
  56          {  if( adr<LCM_LINE1 ) return; 
  57   1         if( adr>(LCM_LINE2+15) ) return;
  58   1         if( (adr>(LCM_LINE1+15)) && (adr<LCM_LINE2) ) return;
  59   1       
  60   1         /* 检查字串是否为空 */
  61   1         if( (*dstr)=='\0' )return;
  62   1       
  63   1         LCMSendComm(adr);                            // 设置DDRAM地址
  64   1         while(1)
  65   1         {  if( (*dstr)=='\0' )break;                 // 若字串己经结束,则退出发送
  66   2            LCMSendDate(*dstr);
  67   2            dstr++;
  68   2            /* 若第一行显示完毕,则指向第二行,进行显示输出 */
  69   2            if( adr==(LCM_LINE1+15) )
  70   2            {  adr = LCM_LINE2;
  71   3               LCMSendComm(adr);                      // 从第2行开始显示
  72   3            }
  73   2            else 
  74   2            {  adr++;
  75   3            }
  76   2            if( adr>LCM_LINE2+15 )return;             // 地址超出
  77   2        }
  78   1      }
  79          
  80          
  81          
  82          /****************************************************************************
  83          ** 函数名称: LCMIni()
  84          ** 功能描述: 初始化LCM模块,设置为LCM_MODE、LCM_NOFLASH、LCM_NOSHIFT、LCM_SH,然后清屏。
  85          ** 输 入: 无
  86          ** 输 出: 无
  87          ****************************************************************************/
  88          void  LCMIni(void)
  89          {  LCMSendComm(LCM_RST);                // 软复位
  90   1         LCMSendComm(LCM_MODE);               // 设置LCM模式(系统方式设置),6
  91   1         LCMSendComm(LCM_NOFLASH);            // 打开LCM显示,无光标,4
  92   1         LCMSendComm(LCM_NOSHIFT);            // 字符向地址递增,光标移动,3
  93   1         LCMSendComm(LCM_SH);                 // 重新设为光标移动,向右移,5(单指令)
  94   1         LCMDispStr(LCM_LINE1, CLRSTR);       // 清屏
  95   1         LCMDispStr(LCM_LINE2, CLRSTR);
  96   1      }
  97          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    207    ----
   CONSTANT SIZE    =     17    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       7
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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