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

📄 display.lst

📁 STC89C51控制LCD显示
💻 LST
字号:
C51 COMPILER V7.50   DISPLAY                                                               12/01/2007 10:47:35 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE DISPLAY
OBJECT MODULE PLACED IN display.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE display.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg52.h>     //包括一个52标准内核的头文件
   2          #include <intrins.h>
   3          #include <stdio.h>
   4          
   5          //变量类型标识的宏定义
   6          #define uchar unsigned char 
   7          #define uint  unsigned int
   8          
   9          // 控制引脚定义,不同的连接必须修改的部分
  10          sbit RS=P1^3;
  11          sbit RW=P1^4;
  12          sbit Elcm=P1^5; 
  13          
  14          #define DataPort P2                // 数据端口
  15          #define Busy    0x80
  16          
  17          void Delay400Ms(void);
  18          void Delay5Ms(void);
  19          void WaitForEnable( void );
  20          void LcdWriteData( char dataW );
  21          void LcdWriteCommand( uchar CMD,uchar AttribC );
  22          void LcdReset( void );
  23          void Display( uchar dd );
  24          void DispOneChar(uchar x,uchar y,uchar Wdata);
  25          void ePutstr(uchar x,uchar y, uchar code *ptr);
  26          void DelayMs(unsigned int number);
  27          
  28          //=============显示操作==================================
  29          
  30          //=======================================================
  31          //显示字符串
  32          //=======================================================
  33          void ePutstr(uchar x,uchar y, uchar code *ptr)
  34          {
  35   1          uchar i,l=0;
  36   1          while (ptr[l] >  31)
  37   1              {l++;};
  38   1          for (i=0;i<16;i++ )
  39   1          DispOneChar(x++,y,ptr[i]);
  40   1              if ( x == 16 )
  41   1                      {
  42   2                  x = 0; y ^= 1;
  43   2              }
  44   1          }
  45          
  46          
  47          /*=======================================================
  48          显示光标定位
  49          =======================================================*/
  50          void Disp_XY( char posx,char posy) {
  51   1      
  52   1      uchar temp;
  53   1      
  54   1          temp = posx & 0xf;
  55   1          posy &= 0x1;
C51 COMPILER V7.50   DISPLAY                                                               12/01/2007 10:47:35 PAGE 2   

  56   1          if ( posy )temp |= 0x40;
  57   1          temp |= 0x80;
  58   1          LcdWriteCommand(temp,0);
  59   1      }
  60          
  61          /*=======================================================
  62          按指定位置显示数出一个字符
  63          =======================================================*/
  64          void DispOneChar(uchar x,uchar y,uchar Wdata) {
  65   1      
  66   1          Disp_XY( x, y );                // 定位显示地址
  67   1          LcdWriteData( Wdata );            // 写字符
  68   1      }
  69          
  70          /*=======================================================
  71          初始化程序, 必须按照产品资料介绍的初始化过程进行
  72          =======================================================*/
  73          void LcdReset( void ) {
  74   1      
  75   1          LcdWriteCommand( 0x38, 0);            // 显示模式设置(不检测忙信号)
  76   1              Delay5Ms();
  77   1          LcdWriteCommand( 0x38, 0);            // 共三次
  78   1              Delay5Ms();
  79   1          LcdWriteCommand( 0x38, 0);
  80   1              Delay5Ms();
  81   1      
  82   1          LcdWriteCommand( 0x38, 1);            // 显示模式设置(以后均检测忙信号)
  83   1          LcdWriteCommand( 0x08, 1);            // 显示关闭
  84   1          LcdWriteCommand( 0x01, 1);            // 显示清屏
  85   1          LcdWriteCommand( 0x06, 1);            // 显示光标移动设置
  86   1          LcdWriteCommand( 0x0c, 1);            // 显示开及光标设置
  87   1      }
  88          
  89          /*=======================================================
  90          写控制字符子程序: E=1 RS=0 RW=0
  91          =======================================================*/
  92          void LcdWriteCommand( uchar CMD,uchar AttribC ) {
  93   1      
  94   1          if (AttribC) WaitForEnable();                // 检测忙信号?
  95   1      
  96   1          RS = 0;    RW = 0; _nop_();
  97   1      
  98   1          DataPort = CMD; _nop_();
  99   1          // 送控制字子程序
 100   1      
 101   1          Elcm = 1;_nop_();_nop_();Elcm = 0;            // 操作允许脉冲信号
 102   1      }
 103          
 104          /*=======================================================
 105          当前位置写字符子程序: E =1 RS=1 RW=0
 106          =======================================================*/
 107          void LcdWriteData( char dataW ) {
 108   1      
 109   1          WaitForEnable();
 110   1              // 检测忙信号
 111   1      
 112   1          RS = 1; RW = 0; _nop_();
 113   1      
 114   1          DataPort = dataW; _nop_();
 115   1      
 116   1          Elcm = 1; _nop_(); _nop_(); Elcm = 0;        // 操作允许脉冲信号
 117   1      
C51 COMPILER V7.50   DISPLAY                                                               12/01/2007 10:47:35 PAGE 3   

 118   1      }
 119          
 120          /*=======================================================
 121          正常读写操作之前必须检测LCD控制器状态:    CS=1 RS=0 RW=1
 122          DB7:    0  LCD控制器空闲; 1  LCD控制器忙
 123          ========================================================*/
 124          void WaitForEnable( void ) {
 125   1      
 126   1          DataPort = 0xff;
 127   1      
 128   1          RS =0; RW = 1; _nop_();    Elcm = 1; _nop_(); _nop_();
 129   1      
 130   1          while( DataPort & Busy );
 131   1      
 132   1          Elcm = 0;
 133   1      }
 134          


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