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

📄 lmb204bdc.lst

📁 这个是安防用的控制键盘C源程序,采用KEIL C51开发.用于控制前端解码器!
💻 LST
字号:
C51 COMPILER V7.01  LMB204BDC                                                              04/29/2006 16:28:39 PAGE 1   


C51 COMPILER V7.01, COMPILATION OF MODULE LMB204BDC
OBJECT MODULE PLACED IN LMB204BDC.OBJ
COMPILER INVOKED BY: F:\Keil\C51\BIN\C51.EXE LMB204BDC.c DEBUG OBJECTEXTEND

stmt level    source

   1          /*===================================================================
   2          
   3                                  LMB204BDC 20x4 字符液晶屏驱动程序         
   4          /*=====================================================================
   5          连接线图:       LCM-------51    LCM-------51    LCM--------51
   6                          DB0-----P0.0    DB4-----P0.4    RS-------P1.7
   7                          DB1-----P0.1    DB5-----P0.5    RW-------P1.6
   8                          DB2-----P0.2    DB6-----P0.6    E--------P1.5
   9                          DB3-----P0.3    DB7-----P0.7    
  10          
  11                                  LCD CDDROM Address
  12                                  0x00-------------------------------------0x13
  13                                  0x40-------------------------------------0x53
  14                                  0x14-------------------------------------0x27
  15                                  0x54-------------------------------------0x67
  16          
  17          [注]:AT89C51的晶振频率为11.0592MHz
  18          ====================================================================*/
  19          
  20          #include "reg52.h"
  21          #include "intrins.h"
  22          #include "main.h"
  23          
  24          
  25          
  26          
  27          
  28           void Delay400Ms(void);
  29           void Delay5Ms(void);
  30           void WaitForEnable( void );
  31           void LcdWriteData( char dataW );
  32           void LcdWriteCommand( Uchar CMD,Uchar AttribC );
  33           void LcdReset( void );
  34           void Display( Uchar dd );
  35           void DispOneChar(Uchar x,Uchar y,Uchar Wdata);
  36           void ePutstr(Uchar x,Uchar y, Uchar  *ptr);
  37          
  38          
  39          
  40          /*=======================================================
  41           显示字符串
  42          =======================================================*/
  43           void ePutstr(Uchar x,Uchar y, Uchar  *ptr) {
  44   1      Uchar i,l=0;
  45   1              while (ptr[l] >31){l++;};
  46   1              for (i=0;i<l;i++) {
  47   2                      DispOneChar(x++,y,ptr[i]);
  48   2                      if ( x == 20 )
  49   2                       {
  50   3                               x = 0; 
  51   3                              if(y<3)
  52   3                               y=y+1;
  53   3                               else
  54   3                               y=0;
  55   3                       }
C51 COMPILER V7.01  LMB204BDC                                                              04/29/2006 16:28:39 PAGE 2   

  56   2              }
  57   1      }
  58          
  59          /*=======================================================
  60           演示一行连续字符串,配合上位程序演示移动字串
  61          =======================================================*/
  62          /*extern void Display(char posx,char posy, Uchar dd ) {
  63          
  64          Uchar i;
  65                  
  66                  for (i=0;i<20;i++) {
  67                          DispOneChar(posx,posy,dd++);
  68                          dd &= 0x7f;
  69                          if (dd<32) dd=32;
  70                  }
  71          }*/
  72          
  73          /*=======================================================
  74           显示光标定位
  75          =======================================================*/
  76           void LocateXY( char posx,char posy) {
  77   1      
  78   1      Uchar temp;
  79   1      
  80   1              temp = posx ;//& 0x13;
  81   1      //      posy &= 0x03;
  82   1              
  83   1              if ( posy==1 )temp += 0x40;
  84   1              if ( posy==2 )temp += 0x14;
  85   1              if ( posy==3 )temp += 0x54;
  86   1      
  87   1              temp |= 0x80;
  88   1              LcdWriteCommand(temp,0);
  89   1      }
  90          
  91          /*=======================================================
  92           按指定位置显示数出一个字符
  93          =======================================================*/
  94           void DispOneChar(Uchar x,Uchar y,Uchar Wdata) {
  95   1      
  96   1              LocateXY( x, y );                               // 定位显示地址
  97   1              LcdWriteData( Wdata );                  // 写字符
  98   1      }
  99          
 100          /*=======================================================
 101           初始化程序, 必须按照产品资料介绍的初始化过程进行
 102          =======================================================*/
 103          void LcdReset( void ) {
 104   1      
 105   1              LcdWriteCommand( 0x38, 0);                      // 显示模式设置(不检测忙信号)
 106   1                      Delay5Ms();
 107   1              LcdWriteCommand( 0x38, 0);                      // 共三次
 108   1                      Delay5Ms();
 109   1              LcdWriteCommand( 0x38, 0);
 110   1                      Delay5Ms();
 111   1      
 112   1              LcdWriteCommand( 0x38, 1);                      // 显示模式设置(以后均检测忙信号)
 113   1          LcdWriteCommand( 0x08, 1);                  // 显示关闭
 114   1              LcdWriteCommand( 0x01, 1);                      // 显示清屏
 115   1              LcdWriteCommand( 0x06, 1);                      // 显示光标移动设置
 116   1              LcdWriteCommand( 0x0c, 1);                      // 显示开及光标设置
 117   1      }
C51 COMPILER V7.01  LMB204BDC                                                              04/29/2006 16:28:39 PAGE 3   

 118          
 119          /*=======================================================
 120           写控制字符子程序: E=1 RS=0 RW=0
 121          =======================================================*/
 122          void LcdWriteCommand( Uchar CMD,Uchar AttribC ) {
 123   1      
 124   1              if (AttribC) WaitForEnable();                           // 检测忙信号?
 125   1              
 126   1              RS = 0; RW = 0; _nop_();
 127   1      
 128   1              DataPort = CMD; _nop_();                                        // 送控制字子程序
 129   1              
 130   1              Elcm = 1;_nop_();_nop_();Elcm = 0;                      // 操作允许脉冲信号     
 131   1      }
 132                  
 133          /*=======================================================
 134           当前位置写字符子程序: E =1 RS=1 RW=0
 135          =======================================================*/
 136          void LcdWriteData( char dataW ) {
 137   1      
 138   1              WaitForEnable();                                                        // 检测忙信号
 139   1      
 140   1              RS = 1; RW = 0; _nop_();
 141   1      
 142   1          DataPort = dataW; _nop_();
 143   1      
 144   1              Elcm = 1; _nop_(); _nop_(); Elcm = 0;           // 操作允许脉冲信号             
 145   1      
 146   1      }
 147          
 148          /*=======================================================
 149          正常读写操作之前必须检测LCD控制器状态:  CS=1 RS=0 RW=1
 150          DB7:    0  LCD控制器空闲; 1  LCD控制器忙
 151          ========================================================*/
 152          void WaitForEnable( void ) {
 153   1      
 154   1              DataPort = 0xff;
 155   1      
 156   1              RS =0; RW = 1; _nop_(); Elcm = 1; _nop_(); _nop_();
 157   1              
 158   1              while( DataPort & Busy );
 159   1      
 160   1              Elcm = 0;
 161   1      }       
 162                                 
 163          
 164          // 短延时
 165          void Delay5Ms(void)
 166          {
 167   1              Uint i = 5552;
 168   1              while(i--);
 169   1      }
 170          
 171          //长延时
 172          void Delay400Ms(void)
 173          {
 174   1              Uchar i = 5;
 175   1              Uint j;
 176   1              while(i--)
 177   1              {
 178   2                      j=7269;
 179   2                      while(j--);
C51 COMPILER V7.01  LMB204BDC                                                              04/29/2006 16:28:39 PAGE 4   

 180   2              };
 181   1      }
 182          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    300    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      10
   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 + -