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

📄 lcd_disp.lst

📁 用89S51单片机实现对1602的字符显示
💻 LST
字号:
C51 COMPILER V8.08   LCD_DISP                                                              09/25/2008 08:57:58 PAGE 1   


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

line level    source

   1          #include <reg51.h>
   2          
   3          /*********************************端口定义**********************************/
   4          
   5          sbit RS = P2^0;
   6          
   7          sbit RW = P2^1;
   8          
   9          sbit EP = P2^2;
  10          
  11          #define   DATA    P0
  12          
  13          /********************************显示数据表*********************************/
  14          
  15          unsigned char code DISP1[] = {"www.swust.edu.cn"};
  16          
  17          unsigned char code DISP2[] = {"0816-6082308-cx"};
  18          
  19          /*****************************************************************************
  20          
  21          函数功能:LCD延时子程序
  22          
  23          入口参数:time
  24          
  25          出口参数:
  26          
  27          *****************************************************************************/
  28          
  29          void delayns(unsigned char time)
  30          {
  31   1       unsigned char i;
  32   1      
  33   1       for(;time>0;time--)
  34   1      
  35   1       for(i = 0; i< 250; i++)        ;
  36   1      }
  37          
  38          /*****************************************************************************
  39          
  40          函数功能:测试LCD忙碌状态
  41          
  42          入口参数:
  43          
  44          出口参数:result
  45          
  46          *****************************************************************************/
  47          
  48          bit lcd_buzy()
  49          {
  50   1       bit result;
  51   1      
  52   1       RS = 0;
  53   1      
  54   1       RW = 1;
  55   1      
C51 COMPILER V8.08   LCD_DISP                                                              09/25/2008 08:57:58 PAGE 2   

  56   1       EP = 1;
  57   1      
  58   1       delayns(1);              //此处延时特别重要 (必不可少)
  59   1      
  60   1       result = (bit)(DATA & 0x80);
  61   1      
  62   1       delayns(1);
  63   1      
  64   1       EP = 0;
  65   1      
  66   1       return result;
  67   1      }
  68          
  69          /*****************************************************************************
  70          
  71          函数功能:写指令数据到LCD子程序
  72          
  73          入口参数:cmd
  74          
  75          出口参数:
  76          
  77          *****************************************************************************/
  78          
  79          void lcd_w_order(unsigned char cmd)
  80          {
  81   1       while(lcd_buzy());   //判断LCD是否忙碌
  82   1      
  83   1       RS = 0;
  84   1      
  85   1       RW = 0;
  86   1      
  87   1       EP = 1;
  88   1      
  89   1       DATA = cmd;
  90   1      
  91   1       delayns(1);
  92   1      
  93   1       EP = 0;
  94   1      }
  95          
  96          /*****************************************************************************
  97          
  98          函数功能:写入显示数据到LCD子程序
  99          
 100          入口参数:dat
 101          
 102          出口参数:
 103          
 104          *****************************************************************************/
 105          
 106          void lcd_w_data(unsigned char dat)
 107          {
 108   1       while(lcd_buzy());      //判断LCD是否忙碌
 109   1      
 110   1       RS = 1;
 111   1      
 112   1       RW = 0;
 113   1      
 114   1       EP = 1;
 115   1      
 116   1       DATA = dat;
 117   1      
C51 COMPILER V8.08   LCD_DISP                                                              09/25/2008 08:57:58 PAGE 3   

 118   1       delayns(1);
 119   1      
 120   1       EP = 0;
 121   1      }
 122          
 123          /*****************************************************************************
 124          
 125          函数功能:设定显示位置子程序
 126          
 127          入口参数:pos
 128          
 129          出口参数:
 130          
 131          *****************************************************************************/
 132          
 133          void lcd_post(unsigned char pos)
 134          
 135          {
 136   1       lcd_w_order(pos | 0x80);
 137   1      }
 138          
 139          /*****************************************************************************
 140          
 141          函数功能:LCD初始化子程序
 142          
 143          入口参数:
 144          
 145          出口参数:
 146          
 147          *****************************************************************************/
 148          
 149          void lcd_init()
 150          {
 151   1       lcd_w_order(0x38);           //显示模式设置
 152   1      
 153   1       delayns(1);
 154   1      
 155   1       lcd_w_order(0x0c);           //显示光标设置,开显示
 156   1      
 157   1       delayns(1);
 158   1      
 159   1       lcd_w_order(0x06);           //显示光标移动(右移) 
 160   1      
 161   1       delayns(1);
 162   1      
 163   1       lcd_w_order(0x01);           //清屏
 164   1      
 165   1       delayns(1);
 166   1      }
 167          
 168          /*****************************************************************************
 169          
 170          函数功能:主程序
 171          
 172          入口参数:
 173          
 174          出口参数:
 175          
 176          *****************************************************************************/
 177          
 178          void main(void)
 179          {
C51 COMPILER V8.08   LCD_DISP                                                              09/25/2008 08:57:58 PAGE 4   

 180   1       unsigned char i=0;
 181   1      
 182   1       lcd_init();               // 初始化LCD
 183   1      
 184   1       delayns(10);
 185   1      
 186   1       lcd_post(0x00);           //设置显示位置
 187   1                                                       
 188   1       while(DISP1[i] != '\0')
 189   1       {
 190   2        lcd_w_data(DISP1[i]);    //显示字符
 191   2      
 192   2        i++;
 193   2       }
 194   1      
 195   1       lcd_post(0x40);           // 设置显示位置
 196   1                                                       
 197   1       i = 0;
 198   1      
 199   1       while(DISP2[i] != '\0')
 200   1       {
 201   2        lcd_w_data(DISP2[i]);   // 显示字符
 202   2      
 203   2        i++;
 204   2       }
 205   1       while(1);
 206   1      }


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