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

📄 1602lcd_gd.lst

📁 单片机开发系统演示程序 - LCD1602 滚动显示 * * 显示内容:WLCOME TO WWW.WILLAR.COM * * 显示方式: * 1、从左到右逐字显示
💻 LST
字号:
C51 COMPILER V7.06   1602LCD_GD                                                            07/13/2008 23:08:00 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 1602LCD_GD
OBJECT MODULE PLACED IN 1602LCD_GD.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 1602LCD_GD.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /*******************************************************************
   2          *                                                                   
   3          *ME300B单片机开发系统演示程序 - LCD1602 滚动显示                    
   4          *                                                                   
   5          * 显示内容:WLCOME TO WWW.WILLAR.COM                                
   6          *                                                                   
   7          * 显示方式:                                                        
   8          * 1、从左到右逐字显示,闪动二次,清屏。                             
   9          * 2、再从右到左逐字显示,闪动二次,清屏。                           
  10          * 3、周期性地重复上述显示方式。                                     
  11          *                                                                   
  12          ;* 创作时间:2004/12/20                                                  
  13          ;* 修改时间:2006/01/20                            
  14          ;* 作者: gguoqing (Email: gguoqing@willar.com)                           
  15          ;* 网站: www.willar.com(伟纳电子)   www.mcusj.com(伟纳单片机世界)
  16          ;* 邮箱: support@willar.com                                           
  17          *                                                                   
  18          *【版权】Copyright(C)伟纳电子 www.willar.com All Rights Reserved    
  19          *【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!         
  20          *                                                                   
  21          *******************************************************************/
  22          
  23          
  24          
  25          #include <reg51.h>
  26          #include <intrins.h>
  27          
  28          typedef unsigned char BYTE;
  29          typedef bit BOOL;  
  30          
  31          sbit LCD_RS = P2^0;             
  32          sbit LCD_RW = P2^1;
  33          sbit LCD_EP = P2^2;
  34          
  35          BYTE code dis1[] = {"   WLCOME  TO   "};
  36          BYTE code dis2[] = {"      l-f-f     "};
  37          BYTE code dis3[] = {"   OT  EMOCLW   "};
  38          BYTE code dis4[] = {"    987654321   "};
  39          
  40          delay(int ms)
  41          {                           // 延时子程序
  42   1      int i;
  43   1      while(ms--)
  44   1      {
  45   2        for(i = 0; i< 250; i++)
  46   2        {
  47   3         _nop_();
  48   3         _nop_();
  49   3         _nop_();
  50   3         _nop_();
  51   3        }
  52   2      }
  53   1      }
  54          
  55          BOOL lcd_bz()
C51 COMPILER V7.06   1602LCD_GD                                                            07/13/2008 23:08:00 PAGE 2   

  56          {                          // 测试LCD忙碌状态
  57   1      BOOL result;
  58   1      LCD_RS = 0;
  59   1      LCD_RW = 1;
  60   1      LCD_EP = 1;
  61   1      _nop_();
  62   1      _nop_();
  63   1      _nop_();
  64   1      _nop_();
  65   1      result = (BOOL)(P0 & 0x80);
  66   1      LCD_EP = 0;
  67   1      return result; 
  68   1      }
  69          
  70          lcd_wcmd(BYTE cmd)
  71          {                          // 写入指令数据到LCD
  72   1      while(lcd_bz());
  73   1      LCD_RS = 0;
  74   1      LCD_RW = 0;
  75   1      LCD_EP = 0;
  76   1      _nop_();
  77   1      _nop_(); 
  78   1      P0 = cmd;
  79   1      _nop_();
  80   1      _nop_();
  81   1      _nop_();
  82   1      _nop_();
  83   1      LCD_EP = 1;
  84   1      _nop_();
  85   1      _nop_();
  86   1      _nop_();
  87   1      _nop_();
  88   1      LCD_EP = 0;  
  89   1      }
  90          
  91          lcd_pos(BYTE pos)
  92          {                          //设定显示位置
  93   1      lcd_wcmd(pos | 0x80);
  94   1      }
  95          
  96          lcd_wdat(BYTE dat) 
  97          {                          //写入字符显示数据到LCD
  98   1      while(lcd_bz());
  99   1      LCD_RS = 1;
 100   1      LCD_RW = 0;
 101   1      LCD_EP = 0;
 102   1      P0 = dat;
 103   1      _nop_();
 104   1      _nop_();
 105   1      _nop_();
 106   1      _nop_();
 107   1      LCD_EP = 1;
 108   1      _nop_();
 109   1      _nop_();
 110   1      _nop_();
 111   1      _nop_();
 112   1      LCD_EP = 0; 
 113   1      }
 114          
 115          lcd_init()
 116          {                        //LCD初始化设定
 117   1      lcd_wcmd(0x38);          //16*2显示,5*7点阵,8位数据
C51 COMPILER V7.06   1602LCD_GD                                                            07/13/2008 23:08:00 PAGE 3   

 118   1      delay(1);
 119   1      lcd_wcmd(0x0c);          //显示开,关光标
 120   1      delay(1);
 121   1      lcd_wcmd(0x06);          //移动光标
 122   1      delay(1);
 123   1      lcd_wcmd(0x01);          //清除LCD的显示内容
 124   1      delay(1);
 125   1      }
 126          
 127          main()
 128          {
 129   1            BYTE i;
 130   1            lcd_init();               // 初始化LCD
 131   1            delay(10);
 132   1      
 133   1          while(1)              
 134   1         { 
 135   2            lcd_wcmd(0x06);            //向右移动光标
 136   2            lcd_pos(0);                //设置显示位置为第一行的第1个字符
 137   2            i = 0;
 138   2           while(dis1[ i ] != '\0')
 139   2           {                           //显示字符"Welcome TO"
 140   3             lcd_wdat(dis1[ i ]);
 141   3             i++;
 142   3             delay(30);                //控制两字之间显示速度
 143   3           }
 144   2            lcd_pos(0x40);             //设置显示位置为第二行第1个字符
 145   2            i = 0;
 146   2           while(dis2[ i ] != '\0')
 147   2           {
 148   3             lcd_wdat(dis2[ i ]);      //显示字符" WWW.WILLAR.COM "
 149   3             i++;
 150   3             delay(30);                //控制两字之间显示速度
 151   3           }
 152   2            delay(800);                //控制停留时间
 153   2      
 154   2            lcd_wcmd(0x01);            //清除LCD的显示内容
 155   2            delay(1);
 156   2            lcd_wcmd(0x04);            //向左移动光标
 157   2           
 158   2            lcd_pos(15);               //设置显示位置为第一行的第16个字符
 159   2            i = 0;
 160   2           while(dis3[ i ] != '\0')
 161   2           {                           //显示字符"Welcome TO"
 162   3             lcd_wdat(dis3[ i ]);
 163   3             i++;
 164   3             delay(30);                //控制两字之间显示速度
 165   3           }
 166   2            lcd_pos(0x4F);             //设置显示位置为第二行的第16个字符
 167   2            i = 0;
 168   2           while(dis4[ i ] != '\0')
 169   2           {
 170   3             lcd_wdat(dis4[ i ]);      //显示字符" WWW.WILLAR.COM "
 171   3             i++;
 172   3             delay(30);                //控制两字之间显示速度
 173   3           }
 174   2            delay(800);                //控制停留时间
 175   2      
 176   2            lcd_wcmd(0x01);            //清除LCD的显示内容
 177   2            delay(200);                //控制两屏转换时间
 178   2                
 179   2         }
C51 COMPILER V7.06   1602LCD_GD                                                            07/13/2008 23:08:00 PAGE 4   

 180   1      }
 181           
 182           


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


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

⌨️ 快捷键说明

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