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

📄 1602driver.lst

📁 该程序可连接51单片机和pc机的通讯
💻 LST
字号:
C51 COMPILER V8.05a   1602DRIVER                                                           10/10/2007 22:53:11 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE 1602DRIVER
OBJECT MODULE PLACED IN 1602driver.OBJ
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE 1602driver.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          //#include <stdlib.h>
   3          
   4          
   5          #define Port P2
   6          
   7          sbit RS = P1^0;
   8          sbit RW = P1^1;
   9          sbit E = P1^2;
  10          sbit P1_4=P1^4;
  11          sbit P1_5=P1^5;
  12          
  13          unsigned char ReadState_LCD(void);
  14          unsigned char IsBusy_LCD(void);
  15          void WriteData_LCD(unsigned char Data);
  16          void WriteCommand_LCD(unsigned char Code);
  17          void Init_LCD(void);
  18          
  19           void PutStr_LCD(unsigned char *str);
  20          void PutStrXY_LCD(unsigned char x, unsigned char y, unsigned char *str);
  21          void PutIntXY_LCD(unsigned char x, unsigned char y, unsigned Num);
  22          void PutNumXY_LCD(unsigned char x, unsigned char y, unsigned Num, unsigned char Len);
  23          void SetPos_LCD(unsigned char x, unsigned char y);
  24          
  25           
  26          
  27          
  28          unsigned char ReadState_LCD(void)                                               //char ReadState_LCD
  29          {
  30   1              Port = 0xff;
  31   1              RS = 0;
  32   1              RW = 1;
  33   1              E = 1;
  34   1      
  35   1              return Port;
  36   1      }
  37          
  38          unsigned char IsBusy_LCD(void)                                                  //IsBusy_LCD
  39          {
  40   1              Port = 0xff;
  41   1              RS = 0;
  42   1              RW = 1;
  43   1              E = 1;
  44   1      
  45   1              return (Port >> 7) & 0x01;
  46   1      }
  47          
  48          void WriteData_LCD(unsigned char Data)                                   //WriteData_LCD
  49          {
  50   1              while ( IsBusy_LCD() );
  51   1      
  52   1              RS = 1;
  53   1              RW = 0;
  54   1      
  55   1              Port = Data;
C51 COMPILER V8.05a   1602DRIVER                                                           10/10/2007 22:53:11 PAGE 2   

  56   1      
  57   1              E = 0;
  58   1              E = 1;
  59   1              E = 0;
  60   1      }
  61          
  62          void WriteCommand_LCD(unsigned char Code)                                //WriteCommand_LCD
  63          {
  64   1              while ( IsBusy_LCD() );
  65   1      
  66   1              RS = 0;
  67   1              RW = 0;
  68   1              Port = Code;
  69   1      
  70   1              E = 0;
  71   1              E = 1;
  72   1              E = 0;
  73   1      }
  74             void delay(unsigned time)                                                       //void delay
  75          {
  76   1              while(time--);
  77   1      }
  78          
  79          void Init_LCD(void)                                                                             //Init_LCD
  80          {
  81   1              delay(15000);
  82   1              WriteCommand_LCD(0x38);
  83   1              delay(5000);
  84   1              WriteCommand_LCD(0x38);
  85   1              delay(5000);
  86   1              WriteCommand_LCD(0x38);
  87   1              delay(5000);
  88   1              WriteCommand_LCD(0x38);
  89   1              WriteCommand_LCD(0x0f);
  90   1              WriteCommand_LCD(0x08);
  91   1              WriteCommand_LCD(0x01);
  92   1              WriteCommand_LCD(0x06);
  93   1              WriteCommand_LCD(0x0c);
  94   1              WriteCommand_LCD(0x80);
  95   1      }
  96          
  97          
  98          void PutStr_LCD(unsigned char *str)                                        //PutStr_LCD
  99          {
 100   1              while(*str)
 101   1              {
 102   2                      WriteData_LCD(*str++);
 103   2              }
 104   1      }
 105          
 106          void PutStrXY_LCD(unsigned char x, unsigned char y, unsigned char *str) //PutStrXY_LCD
 107          {
 108   1              SetPos_LCD(x, y);
 109   1              PutStr_LCD(str);
 110   1      }
 111          
 112          void PutIntXY_LCD(unsigned char x, unsigned char y, unsigned Num)               //PutIntXY_LCD
 113          {
 114   1              unsigned char i = 0;
 115   1              unsigned char Len = 1;
 116   1      
 117   1              if(Num >= 10)           Len++;
C51 COMPILER V8.05a   1602DRIVER                                                           10/10/2007 22:53:11 PAGE 3   

 118   1              if(Num >= 100)          Len++;
 119   1              if(Num >= 1000)         Len++;
 120   1              if(Num >= 10000)        Len++;
 121   1      
 122   1              for(i = 0; i < Len; i++) 
 123   1              {
 124   2                      SetPos_LCD(x + Len - i - 1, y);
 125   2                      WriteData_LCD(Num % 10 + 48);
 126   2                      Num /= 10;
 127   2              }
 128   1      }
 129          
 130          void PutNumXY_LCD(unsigned char x, unsigned char y, unsigned Num, unsigned char Len) //PutNumXY_LCD
 131          {
 132   1              unsigned char i = 0;
 133   1              unsigned char Add = ReadState_LCD() & 0x7f;
 134   1      
 135   1              for(i = 0; i < Len; i++)
 136   1              {
 137   2                      SetPos_LCD(x + Len - i - 1, y);
 138   2                      WriteData_LCD(Num % 10 + 48);
 139   2                      Num /= 10;
 140   2              }
 141   1      }
 142          
 143          void SetPos_LCD(unsigned char x, unsigned char y)                 //SetPos_LCD
 144          {
 145   1              unsigned char i = y * 0x40 + x;
 146   1      
 147   1              WriteCommand_LCD(0x80 + i);
 148   1      }
 149          
 150          


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