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

📄 解码lcd.lst

📁 采用C语言编写
💻 LST
字号:
C51 COMPILER V8.08   絖_隠CD                                                               01/15/2008 20:25:59 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 絖_隠CD
OBJECT MODULE PLACED IN 解码LCD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 解码LCD.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************************/
   2          //Name of this design:     LCD show Electric Clock
   3          //Author:                  Huangxiang
   4          //Date:                    2007-10-02
   5          /*******************************************************************/
   6          
   7          #include <reg51.h>
   8          #include <intrins.h>
   9          #include <string.h>
  10          #include <absacc.h>
  11          #define uchar  unsigned char
  12          #define uint   unsigned int
  13          
  14          #define BUSY  0x80                               //lcd忙检测标志
  15          #define DATAPORT P0                             //定义P0口为LCD通讯端口
  16          
  17          sbit light=P1^3;
  18          sbit LCM_RS=P2^0;                                                                //数据/命令端
  19          sbit LCM_RW=P2^1;                                                                //读/写选择端
  20          sbit LCM_EN=P2^2;
  21                                                          
  22          
  23          void delay_LCM(uint);                                                                                                   //LCD延时子程序
  24          void lcd_wait(void);                                                                                                    //LCD检测忙子程序
  25          void WriteCommandLCM(uchar WCLCM,uchar BusyC);                              //写指令到ICM子函数
  26          void WriteDataLCM(uchar WDLCM);                                             //写数据到LCM子函数
  27          void DisplayOneChar(uchar X,uchar Y,uchar DData);                           //显示指定坐标的一个字符子函数
  28          void initLCM( void);                                                                                                    //LCD初始化子程序
  29          void DisplayListChar(uchar X,uchar Y, unsigned char *DData);                    //显示指定坐标的一串字符子
             -函数
  30          
  31          
  32          /*********延时K*1ms,12.000mhz**********/
  33          
  34          void delay_LCM(uint k)
  35          {
  36   1          uint i,j;
  37   1          for(i=0;i<k;i++)
  38   1          {
  39   2              for(j=0;j<60;j++)
  40   2                      {;}
  41   2          }
  42   1      }
  43          /**********写指令到LCM子函数************/
  44          
  45          void WriteCommandLCM(uchar WCLCM,uchar BusyC)
  46          {
  47   1          if(BusyC)lcd_wait();
  48   1              DATAPORT=WCLCM;
  49   1          LCM_RS=0;                   // 选中指令寄存器
  50   1          LCM_RW=0;                   // 写模式       
  51   1          LCM_EN=1;
  52   1              _nop_();
  53   1              _nop_();
  54   1              _nop_();
C51 COMPILER V8.08   絖_隠CD                                                               01/15/2008 20:25:59 PAGE 2   

  55   1          LCM_EN=0;
  56   1      }
  57          
  58          /**********写数据到LCM子函数************/
  59          
  60          void WriteDataLCM(uchar WDLCM)
  61          {
  62   1          lcd_wait( );                //检测忙信号
  63   1              DATAPORT=WDLCM;
  64   1          LCM_RS=1;                   // 选中数据寄存器
  65   1          LCM_RW=0;                       // 写模式
  66   1          LCM_EN=1;
  67   1          _nop_();
  68   1              _nop_();
  69   1              _nop_();
  70   1          LCM_EN=0;
  71   1      }
  72          
  73          /***********lcm内部等待函数*************/
  74          
  75          
  76          void lcd_wait(void)
  77          {
  78   1          DATAPORT=0xff;      
  79   1              LCM_EN=1;
  80   1          LCM_RS=0;                           
  81   1          LCM_RW=1;                           
  82   1          _nop_();
  83   1          while(DATAPORT&BUSY)
  84   1              {  LCM_EN=0;
  85   2                 _nop_();
  86   2                 _nop_();
  87   2                 LCM_EN=1;
  88   2                 _nop_();
  89   2                 _nop_();
  90   2                 }
  91   1              LCM_EN=0;
  92   1              
  93   1      }
  94          
  95          
  96          /**********LCM初始化子函数***********/
  97          
  98          void initLCM( )
  99          {
 100   1              DATAPORT=0;     
 101   1              delay_LCM(15);
 102   1              WriteCommandLCM(0x38,0);    //三次显示模式设置,不检测忙信号
 103   1          delay_LCM(5);
 104   1          WriteCommandLCM(0x38,0);
 105   1          delay_LCM(5);
 106   1          WriteCommandLCM(0x38,0);
 107   1          delay_LCM(5);
 108   1      
 109   1          WriteCommandLCM(0x38,1);    //8bit数据传送,2行显示,5*7字型,检测忙信号
 110   1          WriteCommandLCM(0x08,1);    //关闭显示,检测忙信号
 111   1          WriteCommandLCM(0x01,1);    //清屏,检测忙信号
 112   1          WriteCommandLCM(0x06,1);    //显示光标右移设置,检测忙信号
 113   1          WriteCommandLCM(0x0c,1);    //显示屏打开,光标不显示,不闪烁,检测忙信号
 114   1      }
 115          
 116          /****************显示指定坐标的一个字符子函数*************/
C51 COMPILER V8.08   絖_隠CD                                                               01/15/2008 20:25:59 PAGE 3   

 117          
 118          void DisplayOneChar(uchar X,uchar Y,uchar DData)
 119          {
 120   1      uchar mx,my;
 121   1              my=Y&1;
 122   1              mx=X&0xf;
 123   1          if(my>0)mx+=0x40;               //若y为1(显示第二行),地址码+0X40
 124   1          mx+=0x80;                    //指令码为地址码+0X80
 125   1          WriteCommandLCM(mx,0);
 126   1          WriteDataLCM(DData);
 127   1      }
 128          
 129          /***********显示指定坐标的一串字符子函数***********/
 130          
 131          void DisplayListChar(uchar X,uchar Y, unsigned char *DData)
 132          {
 133   1          uchar i=0,n;
 134   1          Y&=0x01;
 135   1          X&=0x0f;
 136   1              n=strlen(DData);
 137   1          while(i<n)
 138   1          {
 139   2              DisplayOneChar(X,Y,DData[i]);
 140   2              i++;
 141   2              X++;
 142   2          }
 143   1      }
 144          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    266    ----
   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 + -