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

📄 1602.lst

📁 51+lcd1602显示,程序非常清晰明白,很适合初学者!
💻 LST
字号:
C51 COMPILER V8.02   1602                                                                  08/16/2008 10:02:49 PAGE 1   


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

line level    source

   1          //单行或双行显示
   2          //显示的起始位置设定
   3          //屏幕左右移动,动画效果
   4          //给定一个字符数组,如何通过strlen()来判断字符串的长度?这样在for初始化时,也许可以简化程序
   5          //最后的一行,会再次显一遍,又返回到了第一行
   6          #include <at89x51.h>
   7          #include <intrins.h>
   8          #define uchar unsigned char
   9          sbit lcd_RS=P2^5;                                //定义寄存器
  10          sbit lcd_RW=P2^6;                                //定义是否读写
  11          sbit lcd_E=P2^7;                                //定义使能端
  12          sbit lcd_flag=P0^7;                             //定义是否Busy标志
  13          uchar code dis[]="Hello everyone, my name is gaogao. This is really a great honor to have this opportunity
             -.Hope you will learn something from this program.Sduty right now or lose the chance next second!Come on!";
  14          bit lcd_busy()                                //判断是否忙碌 RS=Low,RW=High,E=High:读状态
  15          { 
  16   1              bit flag;                
  17   1              lcd_RS=0;                             //寄存器为Low
  18   1              lcd_RW=1;                             //是否读写为High
  19   1              lcd_E=1;                              //使能端为High
  20   1              if (lcd_flag==1) flag=1;
  21   1              else flag=0;
  22   1              lcd_E=0;
  23   1              return flag;                         //返回标志,判断是否LCD忙碌
  24   1      }
  25          void lcd_putcommand(uchar command)     //写指令 RS=Low,RW=Low,E=High:写指令
  26          { 
  27   1              while (lcd_busy());            //判断是否忙碌
  28   1              lcd_RS=0;                                                                          
  29   1              lcd_RW=0;
  30   1              lcd_E=0;                       
  31   1              P0=command;                   
  32   1              lcd_E=1;                      
  33   1              lcd_E=0;
  34   1      }
  35          void lcd_putchar(uchar putchar)      //写数据 RS=High,RW=Low,E=High:写数据
  36          { 
  37   1              while(lcd_busy());           //判断是否忙碌
  38   1              lcd_RS=1;
  39   1              lcd_RW=0;
  40   1              lcd_E=0;                     
  41   1              P0=putchar;                  
  42   1              lcd_E=1;                   
  43   1              lcd_E=0;
  44   1      }
  45          void lcd_moveto(uchar x,uchar y)                    //显示字符的位置:第x行y列(X=1或2,Y=1~16)
  46          { 
  47   1              if (x==0) lcd_putcommand(0x80|y-1);     //第一行,并初始化从第y-1个字符开始显示
  48   1              if (x==1) lcd_putcommand(0xc0|y-1);     //第二行,并............
  49   1      }
  50          void lcd_delay(int ms)  //延时函数
  51          { 
  52   1              uchar i;
  53   1              while(ms--)
  54   1              {
C51 COMPILER V8.02   1602                                                                  08/16/2008 10:02:49 PAGE 2   

  55   2                      for(i=0;i<250;i++)
  56   2                      {
  57   3                      _nop_();_nop_();_nop_();_nop_();
  58   3                      }
  59   2              }
  60   1      }
  61          void lcd_init(void)
  62          {
  63   1              lcd_putcommand(0x38);  lcd_delay(1); //LCD为2行,5×7字
  64   1            lcd_putcommand(0x0e);  //打开显示,显示光标,光标不闪
  65   1      //              lcd_putcommand(0x0f);  //....................光标闪烁  
  66   1              lcd_delay(1);
  67   1              lcd_putcommand(0x06); lcd_delay(1);//每次右移一字符
  68   1              
  69   1      }
  70          void main(void)
  71          {
  72   1                      uchar *app,*p;
  73   1              lcd_init();                                                                          //初始化
  74   1      //        lcd_delay(10);
  75   1                      app=dis;
  76   1      while(*app!='\0')
  77   1         { 
  78   2               /************第一行***************/
  79   2               lcd_moveto(0,1);
  80   2                                                                              // lcd_putcommand(0x08);           //在显示数据

⌨️ 快捷键说明

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