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

📄 lcd.lst

📁 无线模块A7102的C语言测试程序源码,
💻 LST
字号:
C51 COMPILER V7.50   LCD                                                                   07/14/2008 10:33:20 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE LCD
OBJECT MODULE PLACED IN lcd.obj
COMPILER INVOKED BY: E:\Program Files\Keil\C51\BIN\C51.EXE source\lcd.c BROWSE DEBUG OBJECTEXTEND PRINT(.\lcd.lst) OBJEC
                    -T(lcd.obj)

line level    source

   1          // LCD型号:TC802B
   2          // P0为数据口线 
   3          #include    "../header/lcd.h" 
   4          /***********************************************
   5          函 数:  InitLcdMouble
   6          功 能:  初始化TCB802B所有内部寄存器 
   7          输 入:  /  
   8          输 出:  /
   9          描 述:  /
  10          ***********************************************/
  11          void    InitLcdMouble(void)
  12          {
  13   1          WriteLcdCmd(0x01);                          // 清屏命令
  14   1          Delay(3);                                   // 延时3ms
  15   1          
  16   1          WriteLcdCmd(0x38);                          // 8位数据接口,两行5x7点显示
  17   1          Delay(3);                                   // 延时3ms
  18   1              
  19   1          WriteLcdCmd(0x06);                          // 地址从左至右,自动加1
  20   1          Delay(3);                                   // 延时3ms    
  21   1          
  22   1          WriteLcdCmd(0x0c);                          // 开显示,光标关闭,无闪烁
  23   1          
  24   1          LcdDclear();
  25   1          LcdDisplay(&logo,0x10);
  26   1      }
  27          /***********************************************
  28          函 数:  WriteLcdCmd
  29          功 能:  写TCB802B一个内部寄存器 
  30          输 入:  CmdValue  
  31          输 出:  /
  32          描 述:  /
  33          ***********************************************/
  34          void    WriteLcdCmd(uchar CmdValue)
  35          {
  36   1          LCD_Rs  = false;                             // 选择指令寄存器
  37   1          LCD_Rw  = false;                             // 选择写使能
  38   1          
  39   1          LCD_En  = true;
  40   1          Delay(1);                                    // 延时1ms
  41   1          P0      = CmdValue;
  42   1          Delay(1);                                    // 延时1ms
  43   1          LCD_En  = false;                             // 下降沿触发锁定
  44   1          
  45   1          LCD_Rw  = true;                             // 恢复默认读使能
  46   1          LCD_Rs  = true;                             // 恢复默认数据寄存器
  47   1      }
  48          /***********************************************
  49          函 数:  WriteLcdData
  50          功 能:  写TCB802B一个显示数据 
  51          输 入:  DataValue  
  52          输 出:  /
  53          描 述:  /
  54          ***********************************************/
C51 COMPILER V7.50   LCD                                                                   07/14/2008 10:33:20 PAGE 2   

  55          void    WriteLcdData(uchar DataValue)
  56          {
  57   1          LCD_Rw  = false;                             // 选择写使能
  58   1          Delay(1);                                    // 延时1ms
  59   1          LCD_En  = true;
  60   1          Delay(1);                                    // 延时1ms
  61   1          P0      = DataValue;
  62   1          Delay(1);                                    // 延时1ms
  63   1          LCD_En  = false;                             // 下降沿触发锁定
  64   1          
  65   1          LCD_Rw  = true;                             // 恢复默认读使能
  66   1      }
  67          /***********************************************
  68          函 数:  Lcd_Display_Hex()
  69          功 能:  显示十六进制数据在LCD上 
  70          输 入:  /
  71          输 出:  /
  72          描 述:  /
  73          ***********************************************/
  74          void    Lcd_Display_Hex(uchar hex)
  75          {
  76   1              uchar temp;
  77   1              
  78   1              temp    = hex;
  79   1              temp  >>= 0x04;
  80   1              
  81   1              /* 以下程序为把十六进制数据换为LCD显示的字模 */
  82   1              if((temp&0x0f) >= 0x0a)
  83   1                  WriteLcdData((temp&0x0f)+0x37);
  84   1              else
  85   1                  WriteLcdData((temp&0x0f)+0x30);
  86   1              
  87   1              if((hex&0x0f) >= 0x0a)
  88   1                  WriteLcdData((hex&0x0f)+0x37);
  89   1              else
  90   1                  WriteLcdData((hex&0x0f)+0x30);
  91   1      }
  92          /***********************************************
  93          函 数:  LcdDisplay
  94          功 能:  显示缓冲区数据 
  95          输 入:  buffer,number 
  96          输 出:  /
  97          描 述:  从LCD第一个位置开始显示number个数据 
  98          ***********************************************/
  99          void    LcdDisplay(uchar *buffer,uchar number)
 100          {
 101   1          uchar   i;
 102   1          uchar   temp;
 103   1          
 104   1          WriteLcdCmd(0x08);                          //关显示,光标关闭,无闪烁      
 105   1          Delay(3);                                   // 延时3ms
 106   1             
 107   1          if(number>0x08)
 108   1          {
 109   2              temp = number - 0x08;
 110   2              
 111   2              WriteLcdCmd(0x80);                      // 设置DDRAM地址第一行
 112   2              Delay(3);                               // 延时3ms
 113   2              for(i=0x00;i<0x08;i++)
 114   2              {
 115   3                  WriteLcdData(*buffer);
 116   3                  buffer ++;
C51 COMPILER V7.50   LCD                                                                   07/14/2008 10:33:20 PAGE 3   

 117   3              }
 118   2              
 119   2              Delay(3);                               // 延时3ms
 120   2              WriteLcdCmd(0xc0);                      // 设置DDRAM地址第二行
 121   2              Delay(3);                               // 延时3ms
 122   2              for(i=0x00;i<temp;i++)
 123   2              {
 124   3                  WriteLcdData(*buffer);
 125   3                  buffer ++;
 126   3              }
 127   2          }
 128   1          else
 129   1          {
 130   2              WriteLcdCmd(0x80);                      // 设置DDRAM地址第一行
 131   2              Delay(3);                               // 延时3ms             
 132   2              for(i=0x00;i<number;i++)
 133   2              {
 134   3                  WriteLcdData(*buffer);
 135   3                  buffer ++;
 136   3              }
 137   2          }
 138   1          
 139   1          WriteLcdCmd(0x0c);                          // 开显示,光标关闭,无闪烁     
 140   1      }
 141          /***********************************************
 142          函 数:  Lcd_Display_Character
 143          功 能:  显示一个字符 
 144          输 入:  / 
 145          输 出:  /
 146          描 述:  /
 147          ***********************************************/
 148          void    Lcd_Display_Character(uchar character)
 149          {
 150   1              WriteLcdData(character);
 151   1      }
 152          /***********************************************
 153          函 数:  LcdDclear
 154          功 能:  清除缓冲区数据 
 155          输 入:  / 
 156          输 出:  /
 157          描 述:  /
 158          ***********************************************/
 159          void    LcdDclear(void)
 160          {
 161   1          uchar   i;
 162   1          
 163   1          WriteLcdCmd(0x08);                          // 关显示,光标关闭,无闪烁     
 164   1          Delay(3);                                   // 延时3ms
 165   1      
 166   1              
 167   1          WriteLcdCmd(0x80);                          // 设置DDRAM地址第一行
 168   1          Delay(3);                                   // 延时3ms
 169   1      
 170   1          for(i=0x00;i<0x08;i++)
 171   1          {
 172   2              WriteLcdData(0x20);            
 173   2          }
 174   1      
 175   1          Delay(3);                                   // 延时3ms    
 176   1          WriteLcdCmd(0xc0);                          // 设置DDRAM地址第二行
 177   1          Delay(3);                                   // 延时3ms
 178   1      
C51 COMPILER V7.50   LCD                                                                   07/14/2008 10:33:20 PAGE 4   

 179   1          for(i=0x00;i<0x08;i++)
 180   1          {
 181   2              WriteLcdData(0x20);
 182   2          }    
 183   1          
 184   1          WriteLcdCmd(0x0c);                          // 开显示,光标关闭,无闪烁     
 185   1      }
 186          /***********************************************
 187          函 数:  Delay
 188          功 能:  延时X(0x00-0xff)毫秒 
 189          输 入:  X  
 190          输 出:  /
 191          描 述:  误差1ms,要求有定时器定时1ms,使用全局变量Time_count
 192          ***********************************************/
 193          void    Delay(uchar X)
 194          {
 195   1          Time_Count  = X;
 196   1          while(Time_Count)
 197   1          {
 198   2          }
 199   1      }


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