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

📄 gdlcd.lst

📁 51单片机实验例程
💻 LST
字号:
C51 COMPILER V7.10   GDLCD                                                                 06/11/2009 21:16:15 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE GDLCD
OBJECT MODULE PLACED IN .\gdLCD.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ..\C语言\gdLCD.C BROWSE DEBUG OBJECTEXTEND PRINT(.\gdLCD.lst) OBJECT(.\gdLC
                    -D.obj)

line level    source

   1          /********************************************************************************
   2          *  描述:                LCD1602 滚动显示                                       *
   3          * 显示方式:                                                                   *
   4          * 1、从左到右逐字显示,闪动二次,清屏。                                        *
   5          * 2、再从右到左逐字显示,闪动二次,清屏。                                      *
   6          * 3、周期性地重复上述显示方式。                                                *                          
             -  
   7          ********************************************************************************/
   8          
   9          #include <reg51.h>
  10          #include <intrins.h>
  11          
  12          typedef unsigned char BYTE;
  13          typedef bit BOOL;  
  14          
  15          sbit LCD_RS = P2^6;             
  16          sbit LCD_RW = P2^5;
  17          sbit LCD_EP = P2^7;
  18          
  19          BYTE code dis1[] = {"   WLCOME  TO   "};
  20          BYTE code dis2[] = {" WWW.PRECHIN.COM "};
  21          BYTE code dis3[] = {"   OT  EMOCLW   "};
  22          BYTE code dis4[] = {" MOC.NIHCERP.WWW "};
  23          
  24          delay(int ms)
  25          {                           // 延时子程序
  26   1      int i;
  27   1      while(ms--)
  28   1      {
  29   2        for(i = 0; i< 250; i++)
  30   2        {
  31   3         _nop_();
  32   3         _nop_();
  33   3         _nop_();
  34   3         _nop_();
  35   3        }
  36   2      }
  37   1      }
  38          
  39          BOOL lcd_bz()
  40          {                          // 测试LCD忙碌状态
  41   1      BOOL result;
  42   1      LCD_RS = 0;
  43   1      LCD_RW = 1;
  44   1      LCD_EP = 1;
  45   1      _nop_();
  46   1      _nop_();
  47   1      _nop_();
  48   1      _nop_();
  49   1      result = (BOOL)(P0 & 0x80);
  50   1      LCD_EP = 0;
  51   1      return result; 
  52   1      }
  53          
C51 COMPILER V7.10   GDLCD                                                                 06/11/2009 21:16:15 PAGE 2   

  54          lcd_wcmd(BYTE cmd)
  55          {                          // 写入指令数据到LCD
  56   1      while(lcd_bz());
  57   1      LCD_RS = 0;
  58   1      LCD_RW = 0;
  59   1      LCD_EP = 0;
  60   1      _nop_();
  61   1      _nop_(); 
  62   1      P0 = cmd;
  63   1      _nop_();
  64   1      _nop_();
  65   1      _nop_();
  66   1      _nop_();
  67   1      LCD_EP = 1;
  68   1      _nop_();
  69   1      _nop_();
  70   1      _nop_();
  71   1      _nop_();
  72   1      LCD_EP = 0;  
  73   1      }
  74          
  75          lcd_pos(BYTE pos)
  76          {                          //设定显示位置
  77   1      lcd_wcmd(pos | 0x80);
  78   1      }
  79          
  80          lcd_wdat(BYTE dat) 
  81          {                          //写入字符显示数据到LCD
  82   1      while(lcd_bz());
  83   1      LCD_RS = 1;
  84   1      LCD_RW = 0;
  85   1      LCD_EP = 0;
  86   1      P0 = dat;
  87   1      _nop_();
  88   1      _nop_();
  89   1      _nop_();
  90   1      _nop_();
  91   1      LCD_EP = 1;
  92   1      _nop_();
  93   1      _nop_();
  94   1      _nop_();
  95   1      _nop_();
  96   1      LCD_EP = 0; 
  97   1      }
  98          
  99          lcd_init()
 100          {                        //LCD初始化设定
 101   1      lcd_wcmd(0x38);          //16*2显示,5*7点阵,8位数据
 102   1      delay(1);
 103   1      lcd_wcmd(0x0c);          //显示开,关光标
 104   1      delay(1);
 105   1      lcd_wcmd(0x06);          //移动光标
 106   1      delay(1);
 107   1      lcd_wcmd(0x01);          //清除LCD的显示内容
 108   1      delay(1);
 109   1      }
 110          
 111          main()
 112          {
 113   1            BYTE i;
 114   1            lcd_init();               // 初始化LCD
 115   1            delay(10);
C51 COMPILER V7.10   GDLCD                                                                 06/11/2009 21:16:15 PAGE 3   

 116   1      
 117   1          while(1)              
 118   1         { 
 119   2            lcd_wcmd(0x06);            //向右移动光标
 120   2            lcd_pos(0);                //设置显示位置为第一行的第1个字符
 121   2            i = 0;
 122   2           while(dis1[ i ] != '\0')
 123   2           {                           //显示字符"WLCOME  TO"
 124   3             lcd_wdat(dis1[ i ]);
 125   3             i++;
 126   3             delay(30);                //控制两字之间显示速度
 127   3           }
 128   2            lcd_pos(0x40);             //设置显示位置为第二行第1个字符
 129   2            i = 0;
 130   2           while(dis2[ i ] != '\0')
 131   2           {
 132   3             lcd_wdat(dis2[ i ]);      //显示字符" WWW.PRECHIN.COM  "
 133   3             i++;
 134   3             delay(30);                //控制两字之间显示速度
 135   3           }
 136   2            delay(800);                //控制停留时间
 137   2      
 138   2            lcd_wcmd(0x01);            //清除LCD的显示内容
 139   2            delay(1);
 140   2            lcd_wcmd(0x04);            //向左移动光标
 141   2           
 142   2            lcd_pos(15);               //设置显示位置为第一行的第16个字符
 143   2            i = 0;
 144   2           while(dis3[ i ] != '\0')
 145   2           {                           //显示字符"WLCOME  TO"
 146   3             lcd_wdat(dis3[ i ]);
 147   3             i++;
 148   3             delay(30);                //控制两字之间显示速度
 149   3           }
 150   2            lcd_pos(0x4F);             //设置显示位置为第二行的第16个字符
 151   2            i = 0;
 152   2           while(dis4[ i ] != '\0')
 153   2           {
 154   3             lcd_wdat(dis4[ i ]);      //显示字符" WWW.PRECHIN.COM  "
 155   3             i++;
 156   3             delay(30);                //控制两字之间显示速度
 157   3           }
 158   2            delay(800);                //控制停留时间
 159   2      
 160   2            lcd_wcmd(0x01);            //清除LCD的显示内容
 161   2            delay(200);                //控制两屏转换时间
 162   2                
 163   2         }
 164   1      }
 165           
 166           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    305    ----
   CONSTANT SIZE    =     70    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.

C51 COMPILER V7.10   GDLCD                                                                 06/11/2009 21:16:15 PAGE 4   


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

⌨️ 快捷键说明

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