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

📄 lcd1602.lst

📁 PROTEUS的仿真实例 有数字显示 很好的
💻 LST
字号:
C51 COMPILER V7.50   LCD1602                                                               10/19/2007 13:15:32 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN LCD1602.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE LCD1602.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <intrins.h>
   3          
   4          typedef unsigned char BYTE;
   5          typedef unsigned int WORD;
   6          typedef bit BOOL ; 
   7          
   8          sbit rs = P2^0;  //
   9          sbit rw = P2^1;
  10          sbit ep = P2^2;
  11          unsigned char i,j,k,m,n;
  12          unsigned char  dis1[] = {"WELCOME!"};
  13          
  14          unsigned char  dis2[] = {' ','t','i','m','e',':','0','0',':','0','0',':','0','0',' ',' '};
  15          
  16          
  17          delay(unsigned char ms)
  18          {       // 延时子程序
  19   1       
  20   1       while(ms--)
  21   1       {
  22   2        for(i = 0; i< 250; i++)
  23   2        {
  24   3         _nop_();
  25   3         _nop_();
  26   3         _nop_();
  27   3         _nop_();
  28   3        }
  29   2       }
  30   1      }
  31          
  32          BOOL lcd_bz()
  33          {       // 测试LCD忙碌状态
  34   1       BOOL result;
  35   1       rs = 0;
  36   1       rw = 1;
  37   1       ep = 1;
  38   1       _nop_();
  39   1       _nop_();
  40   1       _nop_();
  41   1       _nop_();
  42   1       result = (BOOL)(P0 & 0x80);
  43   1       ep = 0;
  44   1       return result; 
  45   1      }
  46          
  47          lcd_wcmd(BYTE cmd)
  48          {       // 写入指令数据到LCD
  49   1       while(lcd_bz());
  50   1       rs = 0;
  51   1       rw = 0;
  52   1       ep = 0;
  53   1       _nop_();
  54   1       _nop_(); 
  55   1       P0 = cmd;
C51 COMPILER V7.50   LCD1602                                                               10/19/2007 13:15:32 PAGE 2   

  56   1       _nop_();
  57   1       _nop_();
  58   1       _nop_();
  59   1       _nop_();
  60   1       ep = 1;
  61   1       _nop_();
  62   1       _nop_();
  63   1       _nop_();
  64   1       _nop_();
  65   1       ep = 0;  
  66   1      }
  67          
  68          lcd_pos(BYTE pos)
  69          {       //设定显示位置
  70   1       lcd_wcmd(pos | 0x80);
  71   1      }
  72          
  73          lcd_wdat(BYTE dat) 
  74          {       //写入字符显示数据到LCD
  75   1       while(lcd_bz());
  76   1       rs = 1;
  77   1       rw = 0;
  78   1       ep = 0;
  79   1       P0 = dat;
  80   1       _nop_();
  81   1       _nop_();
  82   1       _nop_();
  83   1       _nop_();
  84   1       ep = 1;
  85   1       _nop_();
  86   1       _nop_();
  87   1       _nop_();
  88   1       _nop_();
  89   1       ep = 0; 
  90   1      }
  91          
  92          lcd_init()
  93          {       //LCD初始化设定
  94   1       lcd_wcmd(0x38);   //
  95   1       delay(1);
  96   1       lcd_wcmd(0x0c);   //
  97   1       delay(1);
  98   1       lcd_wcmd(0x06);   //
  99   1       delay(1);
 100   1       lcd_wcmd(0x01);   //清除LCD的显示内容
 101   1       delay(1);
 102   1      }
 103          show1()
 104          {j=0;
 105   1       while(dis1[j] != '\0')
 106   1       {                   // 显示字符welcome!
 107   2        lcd_wdat(dis1[j]);
 108   2        j++;
 109   2        delay(80);
 110   2        }
 111   1      }
 112          show2()
 113          {k=0;
 114   1       while(dis2[k] != '\0')
 115   1       {                     // 显示时间
 116   2        lcd_wdat(dis2[k]);
 117   2        k++;
C51 COMPILER V7.50   LCD1602                                                               10/19/2007 13:15:32 PAGE 3   

 118   2        delay(1);
 119   2       }
 120   1      }
 121          
 122          main()
 123          {
 124   1      
 125   1       lcd_init();        // 初始化LCD   
 126   1       delay(10);
 127   1       lcd_pos(0);       // 设置显示位置为第一行的第0个字符.0--15
 128   1       show1();
 129   1       
 130   1      lcd_init();
 131   1      delay(30);
 132   1       if(P3^0==0) 
 133   1                            //判断是否有键按下//
 134   1        delay(20);    //软件延时//
 135   1       while(P3^0==0)  //确认是否按下//
 136   1      {
 137   2      lcd_init();  // 初始化LCD
 138   2      delay(30); 
 139   2      lcd_pos(0); 
 140   2      dis2[7]+=1;
 141   2      show2();
 142   2      }
 143   1       delay(200);
 144   1      
 145   1         
 146   1       // while(1);            //进行扫描//
 147   1      //{if(P3^0==0) 
 148   1                            //判断是否有键按下//
 149   1      //  delay(20);    //软件延时//
 150   1       //if(P3^0==0)  //确认是否按下//
 151   1      //{
 152   1      //lcd_init();  // 初始化LCD
 153   1      //delay(30); 
 154   1      //lcd_pos(0); 
 155   1      //dis2[7]+=1;
 156   1      //show2();
 157   1      }// }  // while(1);   // 
 158          
 159          
 160          
 161          


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