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

📄 lcd1602.lst

📁 个人单片机入门程序集合 。很适合刚学单片机的人。用的是keil proteus
💻 LST
字号:
C51 COMPILER V7.20   LCD1602                                                               07/21/2007 13:48:05 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE LCD1602
OBJECT MODULE PLACED IN .\lcd1602.obj
COMPILER INVOKED BY: D:\Keil\C51\BIN\C51.EXE ..\..\桌面\lcd1602\lcd1602.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lcd1602.lst)
                    - OBJECT(.\lcd1602.obj)

line level    source

   1          #include<reg51.h>
   2          #include<intrins.h>
   3          #define uint unsigned int
   4          #define uchar unsigned char
   5          //数据口定义
   6          #define lcd1602_bus P0                   
   7          
   8          //引脚定义
   9          sbit rs_1602=P2^5;           
  10          sbit rw_1602=P2^6;
  11          sbit e_1602=P2^7;
  12          
  13          /**********************************lcd1602******************************************/
  14          /*********延时子程序**********/
  15          void delay(uchar dy)
  16          {
  17   1        while(--dy);
  18   1      } 
  19          
  20          /***********忙判断标志,返回一个位BF********************/
  21          bit lcd1602_busy(void)
  22          {
  23   1              uchar busy_flag;
  24   1              rs_1602=0;
  25   1              rw_1602=1;
  26   1              _nop_();
  27   1              e_1602=1;
  28   1              _nop_();
  29   1              lcd1602_bus=0xff;
  30   1              busy_flag=lcd1602_bus;   //e在高电平时读 
  31   1              e_1602=0;
  32   1              return (bit)(busy_flag&0x80);    //BF=1; BUSY  返回一个位
  33   1      }
  34          
  35          
  36          /********写命令,有两个参数,一个是要写的命令控制字,
  37          第二个是用来控制是否进行忙标志的判断。
  38          busyflag=1;
  39          判断: 为0 
  40          ***************/
  41          void lcd1602_wrcmd(unsigned char lcdcmd)
  42          {
  43   1              while(lcd1602_busy());     //等待空闲
  44   1              lcd1602_bus=lcdcmd;
  45   1              rs_1602=0;
  46   1              rw_1602=0;
  47   1              _nop_();
  48   1              e_1602=1;
  49   1              _nop_();
  50   1              _nop_();
  51   1              e_1602=0;      //产生一个下沿     
  52   1      }
  53          
  54          
C51 COMPILER V7.20   LCD1602                                                               07/21/2007 13:48:05 PAGE 2   

  55          
  56          /***************向液晶写数据******************/
  57          void lcd1602_wrdata(uchar lcddata)
  58          {
  59   1       while(lcd1602_busy());       //等待空闲
  60   1       lcd1602_bus=lcddata;             //在下沿的时候写数据
  61   1       rs_1602=1;
  62   1       rw_1602=0;
  63   1       _nop_();
  64   1       e_1602=1;
  65   1       _nop_();
  66   1       _nop_();
  67   1       e_1602=0;
  68   1       //lcd_bus=0xff;
  69   1      }
  70          
  71          
  72          /************液晶的清屏************/
  73          void lcd1602_clear(void)
  74          {
  75   1        lcd1602_wrcmd(0x01);     //液晶清屏控制字     并延时>40us
  76   1        delay(100);
  77   1      }
  78          
  79          /***********1602液晶的初始化***************/
  80          void lcd1602_init(void)
  81          {
  82   1        lcd1602_wrcmd(0x38);          //功能设置-----8位数据接口,两行显示,5*7点阵字符显示
  83   1        delay(100);
  84   1        lcd1602_wrcmd(0x0c);         //显示开关控制----显示开关开,光标开关关,闪烁开关关
  85   1        delay(100);
  86   1        lcd1602_wrcmd(0x06);         //输入方式设置,AC自增1, S=0;
  87   1        delay(100);              
  88   1        lcd1602_wrcmd(0x01);         //清屏
  89   1        delay(100);
  90   1      }
  91          
  92          void main()                                                                                                                                                      
  93          {       
  94   1      
  95   1          uchar i;
  96   1          unsigned char offset=0x80; 
  97   1              unsigned int j;
  98   1              delay(2);
  99   1              lcd1602_init(); 
 100   1              j=0x41;
 101   1          lcd1602_wrcmd(offset+0x00);
 102   1              for(i=0;i<16;i++)   
 103   1               {
 104   2             lcd1602_wrdata(j);    
 105   2             j++;
 106   2               }
 107   1              lcd1602_wrcmd(offset+0x00);
 108   1              for(i=0;i<10;i++)   
 109   1              {
 110   2               
 111   2              lcd1602_wrdata(j);
 112   2          j++;
 113   2              }
 114   1              while(1);
 115   1      }

C51 COMPILER V7.20   LCD1602                                                               07/21/2007 13:48:05 PAGE 3   


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