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

📄 1602.lst

📁 液晶显示1602的驱动
💻 LST
字号:
C51 COMPILER V8.08   1602                         05/15/2007 21:14:16 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE 1602
OBJECT MODULE PLACED IN 1602.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE 1602.c DEBUG OBJECTEXTEND PAGEWIDT
                    -H(79) PAGELENGTH(66)

line level    source

   1          //========================1602=============================//
   2          //========================by laputa========================//
   3          //========================2006.5.16========================//
   4          #include<reg51.h>
   5          //===========================函数声明============================
             -=========//
   6          void WriComm(unsigned char reg_code,busy);
   7          void Display(unsigned char Disp_Data);
   8          void Delay();
   9          void Init_LCM();
  10          
  11          void Delay5Ms(void);
  12          void Delay400Ms(void);
  13          void LINE2_CLEAR();
  14          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned ch
             -ar DData);
  15          void DisplayListChar(unsigned char X, unsigned char Y, unsigned c
             -har *DData);
  16          //===============================================================
             -===========//
  17          
  18          sbit RS=P2^3;  
  19          sbit RW=P2^2; 
  20          sbit E=P2^1;
  21          sbit LED=P2^0; //=======背光灯
  22          sbit busy=P0^7;//=======忙标志
  23          //=========================LCM初始化数据=========================
             -======//
  24          #define lcd_bus P0
  25          #define  Set_Disp_On 0X0c
  26          #define  Set_Disp_Off 0x08
  27          #define  Set_CLR  0X01
  28          #define  Set_DISP_Mode  0X38
  29          #define  Set_LINE_Mode  0X06
  30          
  31          //===============================================================
             -======//
  32          
  33          //====================主程序======================//
  34          main()
  35          {
  36   1      EA=1;
  37   1      IT1=1;
  38   1      IT0=1;
  39   1      EX1=1;
  40   1      EX0=1;
  41   1      Delay400Ms();
  42   1      Init_LCM();
  43   1      DisplayOneChar(4,1,'s');
  44   1      //DisplayOneChar(5,1,'e');
  45   1      //DisplayOneChar(5,1,'x');
  46   1      while(1);
  47   1      }
  48          //================================================//
  49          
  50          
C51 COMPILER V8.08   1602                         05/15/2007 21:14:16 PAGE 2   

  51          
  52          //延时子程序======================================//
  53          //==============5ms延时==========================//
  54          void Delay5Ms(void)
  55          {
  56   1       unsigned int TempCyc = 5552;
  57   1       while(TempCyc--);
  58   1      }
  59          
  60          //==============400ms延时=========================//
  61          void Delay400Ms(void)
  62          {
  63   1       unsigned char TempCycA = 5;
  64   1       unsigned int TempCycB;
  65   1       while(TempCycA--)
  66   1       {
  67   2        TempCycB=7269;
  68   2        while(TempCycB--);
  69   2       };
  70   1      }
  71          //=================================================//
  72          
  73          
  74          
  75          //写入控制命令子程序=============================//
  76          void WriComm(unsigned char reg_code,busy) 
  77          {
  78   1        lcd_bus=reg_code;
  79   1        RS=0;           
  80   1        RW=0;
  81   1        E=0;
  82   1        //if(busy)
  83   1       // Delay(); 
  84   1        E=1; 
  85   1      }
  86          //=================================================//
  87          
  88          
  89          //判断液晶显示器忙子程序==========================//
  90          void Delay() 
  91          {
  92   1            lcd_bus=0xff;       
  93   1            RS=0; 
  94   1            RW=1;
  95   1            E=0;
  96   1            E=0;             
  97   1            E=1; 
  98   1           while(busy==1);
  99   1      }
 100          //=================================================//
 101          
 102          
 103          
 104          //显示命令子程序====================================//
 105          void Display(unsigned char Disp_Data)
 106          {
 107   1        lcd_bus= Disp_Data;
 108   1        RS=1;       
 109   1        RW=0;        
 110   1        E=0;         
 111   1        Delay();     
 112   1        E=1;
 113   1      }
 114          //===================================================//
C51 COMPILER V8.08   1602                         05/15/2007 21:14:16 PAGE 3   

 115          //按指定位置显示一个字符子程序===================================
             -============//
 116          void DisplayOneChar(unsigned char X, unsigned char Y, unsigned ch
             -ar DData)
 117          {
 118   1       Y &= 0x01;
 119   1       X &= 0x0F; 
 120   1       if (Y) X |= 0x40; 
 121   1       X |= 0x80; 
 122   1       WriComm(X, 1);
 123   1       Display(DData);
 124   1      }
 125          //===============================================================
             -==============//
 126          
 127          //按指定位置显示一串字符子程序===================================
             -==============//
 128          void DisplayListChar(unsigned char X, unsigned char Y, unsigned c
             -har *DData)
 129          {
 130   1       Y &= 0x01;
 131   1       X &= 0x0F; 
 132   1       if (Y) X |= 0x40; 
 133   1       X |= 0x80; 
 134   1       WriComm(X, 1);
 135   1       while (*DData)
 136   1       Display(*(DData++));
 137   1      }
 138          //===============================================================
             -==============//
 139          
 140          //LCM初始化子程序================================================
             -==============//
 141          void Init_LCM()
 142          {
 143   1      lcd_bus=0;
 144   1      WriComm(Set_DISP_Mode,0);
 145   1      Delay5Ms();
 146   1      WriComm(Set_DISP_Mode,0);
 147   1      Delay5Ms();
 148   1      WriComm(Set_DISP_Mode,0);
 149   1      Delay5Ms();
 150   1      WriComm(Set_DISP_Mode,1);
 151   1      WriComm(Set_Disp_On,1);
 152   1      WriComm(Set_LINE_Mode,1);
 153   1      LED=0;
 154   1      
 155   1      }
 156          //===============================================================
             -==============//
 157          //lcm第二行清字符子程序==========================================
             -==============//
 158          void LINE2_CLEAR()
 159          {
 160   1       unsigned char i;
 161   1       WriComm(0XC0,1);
 162   1       for(i=16;i>0;i--)
 163   1       Display(0xfe);
 164   1      }
 165          
 166          
 167          


C51 COMPILER V8.08   1602                         05/15/2007 21:14:16 PAGE 4   

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