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

📄 lcd1602_text.lst

📁 LCDl602驱动及仿真实验.希望对大家可以帮上一些忙.
💻 LST
字号:
C51 COMPILER V8.02   LCD1602_TEXT                                                          03/12/2007 17:32:14 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE LCD1602_TEXT
OBJECT MODULE PLACED IN lcd1602_text.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE lcd1602_text.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          
   4          
   5          sbit LCM_RS=P2^0;
   6          sbit LCM_RW=P2^1;
   7          sbit LCM_EN=P2^2;
   8          
   9          #define BUSY  0x80              //常量定义
  10          #define DATAPORT P0
  11          #define uchar unsigned char
  12          #define uint   unsigned int
  13          
  14          uchar code str0[]={"-This is a lcd-!"};
  15          uchar code str1[]={"yi wei kong jian"};
  16          uchar code str2[]={" "};
  17          
  18          void delay(uint);
  19          void lcd_wait(void);
  20          
  21          
  22          /*********延时K*1ms,12.000mhz**********/
  23          void delay(uint k)
  24          {
  25   1          uint i,j;
  26   1          for(i=0;i<k;i++)
  27   1          {
  28   2              for(j=0;j<60;j++)
  29   2                      {;}
  30   2          }
  31   1      }   
  32          /**********写指令到ICM子函数************/
  33          
  34          void WriteCommandLCM(uchar WCLCM,uchar BusyC)
  35          {
  36   1          if(BusyC)lcd_wait();
  37   1              DATAPORT=WCLCM;
  38   1          LCM_RS=0;                   // 选中指令寄存器
  39   1          LCM_RW=0;                   // 写模式       
  40   1          LCM_EN=1;    
  41   1              _nop_();   
  42   1              _nop_();
  43   1              _nop_(); 
  44   1          LCM_EN=0;
  45   1         
  46   1      }
  47          
  48          /**********写数据到LCM子函数************/
  49          
  50          void WriteDataLCM(uchar WDLCM)
  51          { 
  52   1          lcd_wait( );            //检测忙信号    
  53   1              DATAPORT=WDLCM;
  54   1          LCM_RS=1;               // 选中数据寄存器
  55   1          LCM_RW=0;                   // 写模式
C51 COMPILER V8.02   LCD1602_TEXT                                                          03/12/2007 17:32:14 PAGE 2   

  56   1          LCM_EN=1;
  57   1          _nop_();
  58   1              _nop_();
  59   1              _nop_();
  60   1          LCM_EN=0;
  61   1      }
  62          
  63          /***********lcm内部等待函数*************/
  64          
  65          void lcd_wait(void)
  66          {
  67   1          DATAPORT=0xff;           //读LCD前若单片机输出低电平,而读出LCD为高电平,则冲突,Proteus仿真会有显示逻辑黄色
  68   1              LCM_EN=1;
  69   1          LCM_RS=0;                           
  70   1          LCM_RW=1;                           
  71   1          _nop_();
  72   1          _nop_();
  73   1              _nop_();
  74   1          while(DATAPORT&BUSY)
  75   1              {  LCM_EN=0;
  76   2                 _nop_();
  77   2                 _nop_();
  78   2                 LCM_EN=1;
  79   2                 _nop_();
  80   2                 _nop_();
  81   2                 }
  82   1              LCM_EN=0;
  83   1              
  84   1      }
  85          
  86          /**********LCM初始化子函数***********/
  87          void initLCM( )
  88          {   
  89   1              DATAPORT=0;     
  90   1              delay(15);
  91   1              WriteCommandLCM(0x38,0);    //三次显示模式设置,不检测忙信号
  92   1          delay(5); 
  93   1          WriteCommandLCM(0x38,0);
  94   1          delay(5); 
  95   1          WriteCommandLCM(0x38,0);
  96   1          delay(5); 
  97   1      
  98   1          WriteCommandLCM(0x38,1);    //8bit数据传送,2行显示,5*7字型,检测忙信号
  99   1          WriteCommandLCM(0x08,1);    //关闭显示,检测忙信号
 100   1          WriteCommandLCM(0x01,1);    //清屏,检测忙信号
 101   1          WriteCommandLCM(0x06,1);    //显示光标右移设置,检测忙信号
 102   1          WriteCommandLCM(0x0c,1);    //显示屏打开,光标不显示,不闪烁,检测忙信号
 103   1      }
 104          
 105          /****显示指定坐标的一个字符子函数****/
 106          
 107          void DisplayOneChar(uchar X,uchar Y,uchar DData)
 108          {
 109   1          Y&=1;
 110   1          X&=15;
 111   1          if(Y)X|=0x40;               //若y为1(显示第二行),地址码+0X40
 112   1          X|=0x80;                    //指令码为地址码+0X80
 113   1          WriteCommandLCM(X,0);
 114   1          WriteDataLCM(DData);
 115   1      }
 116          
 117          /*******显示指定坐标的一串字符子函数*****/
C51 COMPILER V8.02   LCD1602_TEXT                                                          03/12/2007 17:32:14 PAGE 3   

 118           
 119          void DisplayListChar(uchar X,uchar Y,uchar code *DData)
 120          {
 121   1          uchar ListLength=0;
 122   1          Y&=0x01;
 123   1          X&=0x0f;
 124   1          while(X<16)
 125   1          {
 126   2              DisplayOneChar(X,Y,DData[ListLength]);
 127   2              ListLength++;
 128   2              X++;
 129   2          }
 130   1      }
 131          /**********main funcation************/
 132          
 133          void main(void)
 134          {
 135   1              delay(500);
 136   1              initLCM();
 137   1              
 138   1              WriteCommandLCM(0x01,1);                    //清显示屏
 139   1          DisplayListChar(0,0,str0);
 140   1              DisplayListChar(0,1,str1);
 141   1      
 142   1      }
 143                                                                                                                    
             -                                                                                                                        
             -                                                                                                              
 144          


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