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

📄 text2.lst

📁 用于单片机驱动LCD1602显示
💻 LST
字号:
C51 COMPILER V8.05a   TEXT2                                                                05/18/2009 10:29:09 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE TEXT2
OBJECT MODULE PLACED IN Text2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Text2.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3                           
   4          #define uchar unsigned char
   5          #define uint  unsigned int
   6          
   7          uchar  dis_buf;            //显示缓存
   8          uchar  temp;
   9          
  10          void delay0(uchar x);      //x*0.14MS
  11          
  12          sbit LCD_RS = P2^0;             
  13          sbit LCD_RW = P2^1;
  14          sbit LCD_EN = P2^2;
  15          
  16          uchar code  cdis1[ ] = {"   KEY NUMBER   "};
  17          uchar code  cdis2[ ] = {"  KEY-CODE:   H "};
  18          
  19          #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};
  20          
  21          /*************************************************************/
  22          /*                                                           */
  23          /* 延时子程序                                                */
  24          /*                                                           */
  25          /*************************************************************/
  26          
  27          void  delay(uchar x)
  28          { uchar j;
  29   1          while((x--)!=0)
  30   1          { for(j=0;j<125;j++)
  31   2               {;}
  32   2          }
  33   1      }
  34          
  35          /*************************************************************/
  36          /*                                                           */
  37          /*检查LCD忙状态                                              */
  38          /*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据  */
  39          /*                                                           */
  40          /*************************************************************/ 
  41          
  42          bit lcd_busy()
  43           {                          
  44   1          bit result;
  45   1          LCD_RS = 0;
  46   1          LCD_RW = 1;
  47   1          LCD_EN = 1;
  48   1          delayNOP();
  49   1          result = (bit)(P0&0x80);
  50   1          LCD_EN = 0;
  51   1          return(result); 
  52   1       }
  53          
  54          /*******************************************************************/
  55          /*                                                                 */
C51 COMPILER V8.05a   TEXT2                                                                05/18/2009 10:29:09 PAGE 2   

  56          /*写指令数据到LCD                                                  */
  57          /*RS=L,RW=L,E=高脉冲,D0-D7=指令码。                             */
  58          /*                                                                 */
  59          /*******************************************************************/
  60          
  61          void lcd_wcmd(uchar cmd)
  62          
  63          {                          
  64   1         while(lcd_busy());
  65   1          LCD_RS = 0;
  66   1          LCD_RW = 0;
  67   1          LCD_EN = 0;
  68   1          _nop_();
  69   1          _nop_(); 
  70   1          P0 = cmd;
  71   1          delayNOP();
  72   1          LCD_EN = 1;
  73   1          delayNOP();
  74   1          LCD_EN = 0;  
  75   1      }
  76          
  77          /*******************************************************************/
  78          /*                                                                 */
  79          /*写显示数据到LCD                                                  */
  80          /*RS=H,RW=L,E=高脉冲,D0-D7=数据。                               */
  81          /*                                                                 */
  82          /*******************************************************************/
  83          
  84          void lcd_wdat(uchar dat)
  85          {                          
  86   1         while(lcd_busy());
  87   1          LCD_RS = 1;
  88   1          LCD_RW = 0;
  89   1          LCD_EN = 0;
  90   1          P0 = dat;
  91   1          delayNOP();
  92   1          LCD_EN = 1;
  93   1          delayNOP();
  94   1          LCD_EN = 0; 
  95   1      }
  96          
  97          /*************************************************************/
  98          /*                                                           */
  99          /*  LCD初始化设定                                            */
 100          /*                                                           */
 101          /*************************************************************/
 102          
 103          void lcd_init()
 104          { 
 105   1          delay(15);                   
 106   1          lcd_wcmd(0x38);      //16*2显示,5*7点阵,8位数据
 107   1          delay(5);
 108   1          lcd_wcmd(0x38);         
 109   1          delay(5);
 110   1          lcd_wcmd(0x38);         
 111   1          delay(5);
 112   1      
 113   1          lcd_wcmd(0x0c);      //显示开,关光标
 114   1          delay(5);
 115   1          lcd_wcmd(0x06);      //移动光标
 116   1          delay(5);
 117   1          lcd_wcmd(0x01);      //清除LCD的显示内容
C51 COMPILER V8.05a   TEXT2                                                                05/18/2009 10:29:09 PAGE 3   

 118   1          delay(5);
 119   1      }
 120          
 121          /*************************************************************/
 122          /*                                                           */
 123          /*  设定显示位置                                             */
 124          /*                                                           */
 125          /*************************************************************/
 126          
 127          void lcd_pos(uchar pos)
 128          {                          
 129   1        lcd_wcmd(pos | 0x80);  //数据指针=80+地址变量
 130   1      }
 131          
 132          
 133          
 134          /*************************************************************/
 135          /*                                                           */
 136          /* 主程序                                                    */
 137          /*                                                           */
 138          /*************************************************************/ 
 139              main()
 140           {
 141   1          uchar m;
 142   1          P0=0xFF;                    //置P0口
 143   1          P2=0xFF;                    //置P2口  
 144   1          delay(10);                 //延时
 145   1          lcd_init();                //初始化LCD             
 146   1              
 147   1          lcd_pos(0);                //设置显示位置为第一行的第1个字符
 148   1           m = 0;
 149   1          while(cdis1[m] != '\0')
 150   1           {                         //显示字符
 151   2             lcd_wdat(cdis1[m]);
 152   2             m++;
 153   2           }
 154   1      
 155   1          lcd_pos(0x40);             //设置显示位置为第二行第1个字符
 156   1           m = 0;
 157   1          while(cdis2[m] != '\0')
 158   1           {
 159   2             lcd_wdat(cdis2[m]);      //显示字符
 160   2             m++;
 161   2           }       
 162   1         dis_buf = 0x2d;          //显示字符"-"
 163   1      
 164   1          while(1)
 165   1          { 
 166   2          lcd_pos(0x4c);             
 167   2             lcd_wdat(dis_buf);        //第一位数显示   
 168   2          }
 169   1        }  


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    222    ----
   CONSTANT SIZE    =     34    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
C51 COMPILER V8.05a   TEXT2                                                                05/18/2009 10:29:09 PAGE 4   

END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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