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

📄 lcd.lst

📁 1、数控直流恒流源的单片机代码。 2、重要包括电源、输入处理、A/D采集、键盘、LCD显示、D/A输出。
💻 LST
字号:
C51 COMPILER V7.09   LCD                                                                   08/24/2007 09:37:12 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN LCD.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE LCD.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          #include"Config.h"
   3          #include"IOCfg.c"
   4          #include"TimeDLY.h"
   5          #include"LCD.h"
   6          
   7          //IO输入输出控制
   8          void InitLCDData(bit i) 
   9          {
  10   1              if(i==1) LCDData = 0xff;
  11   1              else     LCDData = 0x00;
  12   1              } 
  13          
  14          //指令/数据选择函数:SetLCD_RS()
  15          void  SetLCD_RS(bit i)
  16          {
  17   1              if(i==1) LCDRS = 1;
  18   1              else     LCDRS = 0;
  19   1              }
  20          
  21          //读写操作控制信号:SetLCD_RW()
  22          void SetLCD_RW(bit i)
  23          {
  24   1              if(i==1) LCDRW = 1;
  25   1              else     LCDRW = 0;
  26   1              }
  27          
  28          //使能信号:SetLCD_EN()
  29          void SetLCD_EN(bit i)
  30          {
  31   1              if(i==1) LCDE = 1;
  32   1              else     LCDE = 0;
  33   1              }       
  34                  
  35          //复位:SetLCD_RST()
  36          void SetLCD_RST(bit i)
  37          {
  38   1              if(i==1) LCDRST = 1;
  39   1              else     LCDRST = 0;
  40   1              }
  41          
  42          //读状态函数:ReadStatus()
  43          INT8U ReadStatus(void)
  44          {
  45   1        INT8U i;
  46   1        InitLCDData(1);
  47   1        SetLCD_RW(1);
  48   1        SetLCD_RS(0);
  49   1        SetLCD_EN(0);
  50   1        nNop(10);
  51   1        SetLCD_EN(1);
  52   1        nNop(20);
  53   1        i = LCDData;
  54   1        nNop(40);
  55   1        SetLCD_EN(0);
C51 COMPILER V7.09   LCD                                                                   08/24/2007 09:37:12 PAGE 2   

  56   1        return(i);
  57   1      }
  58          
  59          //读一字节数据函数:ReadOneByte()
  60          INT8U ReadOneByte(void)
  61          {
  62   1        INT8U i;
  63   1        InitLCDData(1);
  64   1        SetLCD_RW(1);
  65   1        SetLCD_RS(1);
  66   1        SetLCD_EN(0);
  67   1        nNop(10);
  68   1        SetLCD_EN(1);
  69   1        nNop(20);
  70   1        i = LCDData;
  71   1        nNop(40);
  72   1        SetLCD_EN(0);
  73   1        return(i);
  74   1      }
  75          
  76          //写指令函数:WriteInstruc()
  77          void WriteInstruc(INT8U Instruction)
  78          {
  79   1        while((ReadStatus() & 0x80)!= 0x00);
  80   1        InitLCDData(0);
  81   1        SetLCD_RW(0);
  82   1        SetLCD_RS(0);
  83   1        SetLCD_EN(0);
  84   1        LCDData = Instruction;
  85   1        nNop(100);
  86   1        SetLCD_EN(1);
  87   1        nNop(100);
  88   1        SetLCD_EN(0);  
  89   1      }
  90          
  91          //写一字节数据函数:WriteOneByte()
  92          void WriteOneByte(INT8U Data)
  93          {
  94   1        while((ReadStatus() & 0x80)!= 0x00);
  95   1        InitLCDData(0);
  96   1        SetLCD_RW(0);
  97   1        SetLCD_RS(1);
  98   1        SetLCD_EN(0);
  99   1        LCDData = Data;
 100   1        nNop(100);
 101   1        SetLCD_EN(1);
 102   1        nNop(100);
 103   1        SetLCD_EN(0);
 104   1      }
 105          
 106          //复位函数:ResetLCD()
 107          void ResetLCD(void)
 108          {
 109   1        LDelay(40);
 110   1        SetLCD_RST(0);
 111   1        LDelay(1);
 112   1        SetLCD_RST(1);
 113   1        LDelay(1);
 114   1      }
 115          
 116          //初始化函数:InitLCD()
 117          void InitLCD(void)
C51 COMPILER V7.09   LCD                                                                   08/24/2007 09:37:12 PAGE 3   

 118          {
 119   1        ResetLCD();
 120   1        FunctionSet(0x30); // Function Set: 8_bits_Data, Base_Instrution
 121   1        LDelay(1);
 122   1        FunctionSet(0x30); // Function Set: 8_bits_Data, Base_Instrution
 123   1        LDelay(1);
 124   1        Disp_OnOff(0x0c);  // Disp_ON: The Whole ALL_ON
 125   1        LDelay(1);
 126   1        ClearLCD();        // Clear LCD
 127   1        LDelay(1);
 128   1        PointSet(0x06);    // Entry Mode Set: DDRAM Address Counter(AC) + 1
 129   1        LDelay(1);
 130   1      }
 131          
 132          //显示一个汉字(16x16)函数:DispOneWord()
 133          void DispOneWord(INT8U X,INT8U Y,INT16U Word)
 134          {
 135   1        INT8U Disp_Address;
 136   1        INT8U Address_H;
 137   1        INT8U Address_L;
 138   1        
 139   1        if((X == 0x00)||(X == 0x02)) // 0,2行
 140   1              Address_H = 0x80;
 141   1        else // 1,3行
 142   1              Address_H = 0x90;
 143   1              
 144   1        if((X == 0x00)||(X == 0x01)) // 0,1行
 145   1              Address_L = Y;
 146   1        else // 2,3行
 147   1              Address_L = Y + 0x08;
 148   1        Disp_Address = (Address_H | Address_L) & 0xff;
 149   1        SetDDRAM_Add(Disp_Address);                           // Set DDRAM(Disp_Address)
 150   1        WriteOneByte(((Word & 0xff00) >> 8) & 0xff); // H_Byte
 151   1        WriteOneByte(Word & 0xff);             // L_Byte  
 152   1      }
 153          
 154          
 155          //显示两个字符(8x16)函数:DispTwoCharacter()
 156          void DispTwoCharacter(INT8U X,INT8U Y,INT8U Character1,INT8U Character2)
 157          {
 158   1        INT8U Disp_Address;
 159   1        INT8U Address_H;
 160   1        INT8U Address_L;
 161   1        
 162   1        if((X == 0x00)||(X == 0x02)) // 0,2行
 163   1              Address_H = 0x80;
 164   1        else // 1,3行
 165   1              Address_H = 0x90;
 166   1              
 167   1        if((X == 0x00)||(X == 0x01)) // 0,1行
 168   1              Address_L = Y;
 169   1        else // 2,3行
 170   1              Address_L = Y + 0x08;
 171   1        Disp_Address = Address_H | Address_L;
 172   1        SetDDRAM_Add(Disp_Address); // Set DDRAM(Disp_Address)
 173   1        WriteOneByte(Character1);
 174   1        WriteOneByte(Character2);
 175   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    452    ----
C51 COMPILER V7.09   LCD                                                                   08/24/2007 09:37:12 PAGE 4   

   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      14
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       5
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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