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

📄 a.lst

📁 基于51
💻 LST
字号:
C51 COMPILER V7.20   A                                                                     10/09/2007 13:35:12 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE A
OBJECT MODULE PLACED IN a.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE a.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include "LCD1602.h"
   3          /*******************主函数**********************************/
   4          
   5          void main(void)
   6          {uchar string[]="     I LOVE YOU! ";            //这里是要显示的字符
   7   1       uchar *cp;
   8   1       cp=string;
   9   1       LCD_init();
  10   1       while(1)
  11   1       {
  12   2        LCD_send_command(LCD_CLEAR_SCREEN);
  13   2        delay_ms(2);
  14   2        LCD_disp_string(0,1,cp);
  15   2        delay_ms(100);
  16   2               cp++;
  17   2        if(*cp=='\0')
  18   2        {
  19   3         cp=string;                 //到达字符的尾部时,改变指针,重新指向字符串的头部
  20   3        }
  21   2       }
  22   1      }
  23          /*********************************************************/
  24          /**************LCD1602的初始化***************************/
  25          void LCD_init(void)
  26          {
  27   1       LCD_send_command(LCD_DISPLAY_DOUBLE_LINE);
  28   1       LCD_send_command(LCD_AC_AUTO_INCREMENT|LCD_MOVE_DISENABLE);
  29   1       LCD_send_command(LCD_DISPLAY_ON|LCD_CURSOR_OFF);
  30   1       LCD_send_command(LCD_CLEAR_SCREEN);
  31   1      }
  32          /********************************************************/
  33           
  34          void LCD_check_busy(void)   //检测LCD状态,看它是不是还在忙呢
  35          {
  36   1       do
  37   1        {
  38   2         LCD_EN=0;
  39   2         LCD_RS=0;
  40   2         LCD_RW=1;
  41   2         LCDIO=0xff;
  42   2         LCD_EN=1;
  43   2         }
  44   1         while(LCD_BUSY==1);
  45   1        
  46   1          LCD_EN=0;
  47   1      }
  48          /************LCD1602写命令*******************************/
  49          void LCD_send_command(uchar command)
  50          {
  51   1       LCD_check_busy();
  52   1       LCD_RS=LOW;
  53   1       LCD_RW=LOW;
  54   1       LCD_EN=HIGH;
  55   1       LCDIO=command;
C51 COMPILER V7.20   A                                                                     10/09/2007 13:35:12 PAGE 2   

  56   1       LCD_EN=LOW;
  57   1      }
  58          /********************************************************/
  59          /*****************LCD1602写数据**************************/
  60          void LCD_send_data(uchar dat)
  61          {
  62   1       LCD_check_busy();
  63   1       LCD_RS=HIGH;
  64   1       LCD_RW=LOW;
  65   1       LCD_EN=HIGH;
  66   1       LCDIO=dat;
  67   1       LCD_EN=LOW;
  68   1      }
  69          /********************************************************
  70           void LCD_write_char(uchar x,uchar y,uchar dat)
  71          {
  72               unsigned char address;
  73               if (y == LINE1) 
  74                   address = LINE1_HEAD + x;
  75               else 
  76                  address = LINE2_HEAD + x;
  77               LCD_send_command(address); 
  78              LCD_send_data(dat);
  79          }
  80          ******************LCD1602显示字符串*********************/
  81          void LCD_disp_string(uchar x,uchar y,uchar *Data)
  82          {
  83   1       if(y==LINE1)
  84   1       {
  85   2        if(x<LINE_LENGTH)
  86   2        {
  87   3         LCD_send_command(LINE1_HEAD+x);
  88   3         for(;x<LINE_LENGTH&&*Data!='\0';x++)
  89   3         {
  90   4          LCD_send_data(*(Data++));
  91   4         }
  92   3         if(*Data!='\0')
  93   3         {
  94   4          x=0;
  95   4          y=LINE2;
  96   4         }
  97   3        }
  98   2       }
  99   1       if(y==LINE2)
 100   1       {
 101   2        LCD_send_command(LINE2_HEAD+x);
 102   2        for(;x<LINE_LENGTH&&*Data!='\0';x++)
 103   2        {
 104   3         LCD_send_data(*(Data++));
 105   3        }
 106   2       }
 107   1      }
 108          /****************************************************************/
 109          /********************延时函数***********************************/
 110            
 111          /***************************************************************/
 112          void delay_ms(uint n)
 113          {
 114   1       uint i,j;
 115   1       for(i=n;i>0;i--)
 116   1          for(j=0;j<1140;j++)
 117   1          ;
C51 COMPILER V7.20   A                                                                     10/09/2007 13:35:12 PAGE 3   

 118   1      }
 119          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    310    ----
   CONSTANT SIZE    =     18    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      24
   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 + -