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

📄 lcd.lst

📁 LC75823E_TEST[字符测试程序],主要是用来测试芯片是否工作正常.
💻 LST
字号:
C51 COMPILER V7.50   LCD                                                                   09/17/2008 16:34:37 PAGE 1   


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

line level    source

   1          /****************************************************************************
   2          File Name:lcd.c
   3          Version:
   4          Discription:
   5          Author:
   6          Date:
   7          *****************************************************************************/
   8          #include "key_display.h"
   9          
  10          unsigned char lcd_byte = 0;//LC75823E的显示缓冲区中的byte计数
  11          unsigned char lcd_bit = 0;//LC75823E的显示缓冲区中一个byte的bit计数
  12          unsigned char lcd_cnt = 0;//用于全屏显示计数
  13          
  14          bit vfd_flag = 0;//更新显示标志
  15          typedef   unsigned   char   BYTE;
  16          BYTE disp_buff[SHADOW_LENGTH];//LC75823E的20byte的显示缓冲区
  17          
  18          //下面的数组用于传送数据的每一个bit//
  19          BYTE code Byte_Bit_Mask[8] = {  /* Define the byte mark bit */
  20                  0x01, 0x02, 0x04, 0x08,
  21                  0x10, 0x20, 0x40, 0x80
  22          }; 
  23          /***************************************************************************************
  24          *   函数名称:LCDDelay()
  25          *   功    能:
  26                        
  27          *   输入参数:
  28          *   输出参数:
  29          *   说    明:
  30          ****************************************************************************************/
  31          void LCDDelay(unsigned char n)
  32          {
  33   1              while(n--)
  34   1              {
  35   2                      _nop_();
  36   2                      _nop_();
  37   2              }
  38   1      }
  39          /***************************************************************************************
  40          *   函数名称:VFD_Refresh()
  41          *   功    能:更新显示函数,每一次都要发送CCB地址、20byte的数据与控制位
  42                        
  43          *   输入参数:
  44          *   输出参数:
  45          *   说    明:
  46          ****************************************************************************************/
  47          void VFD_Refresh( void ) 
  48           {   
  49   1              BYTE i,j;
  50   1              BYTE TxData;
  51   1                      
  52   1              if(vfd_flag == 1) 
  53   1               {
  54   2                      vfd_flag = 0;
  55   2                      
C51 COMPILER V7.50   LCD                                                                   09/17/2008 16:34:37 PAGE 2   

  56   2                      disp_buff[19] &= 0x0f;          // clear the high-nibble
  57   2                      disp_buff[19] |= 0x10;          // set it.(the high-nibble is the control nibble)
  58   2                  
  59   2                      /* Send CCB address 41H */
  60   2                      FP_CE = 0;
  61   2                      TxData = 0x41;
  62   2                      for (i=0; i<8; i++) 
  63   2                       {
  64   3                              FP_CLK = 0;
  65   3                              if (TxData & Byte_Bit_Mask[i]) 
  66   3                              {
  67   4                                      FP_DAT = 1;
  68   4                              } 
  69   3                              else 
  70   3                               {
  71   4                                      FP_DAT = 0;
  72   4                               }
  73   3                              LCDDelay(1);    
  74   3                              FP_CLK = 1;
  75   3                              LCDDelay(1);
  76   3                      }
  77   2                      FP_CE = 1;
  78   2              
  79   2                      /* Send display data */ 
  80   2                      for (i=0; i<20; i++) 
  81   2                      {
  82   3                              TxData = disp_buff[i];
  83   3                              for (j=0; j<8; j++) 
  84   3                              {
  85   4                                      FP_CLK = 0;
  86   4                                      if (TxData & Byte_Bit_Mask[j]) 
  87   4                                      {
  88   5                                              FP_DAT = 1;
  89   5                                      } 
  90   4                                      else 
  91   4                                      {
  92   5                                              FP_DAT = 0;
  93   5                                      }
  94   4                                      LCDDelay(1);
  95   4                                      FP_CLK = 1;
  96   4                                      LCDDelay(1);
  97   4                              }
  98   3              }
  99   2                      FP_CE = 0;
 100   2                      FP_DAT = 1;
 101   2                      FP_CLK = 1;
 102   2              } 
 103   1       }
 104          /***************************************************************************************
 105          *   函数名称:test_lcd()
 106          *   功    能:函数设置三个按键:KEY_NEXT用于显示下一个字段;KEY_PREV用于显示上一个字段
 107                        KEY_P_P用于恢复初始显示的字段;当前显示字段以闪烁形式显示
 108                        
 109          *   输入参数:
 110          *   输出参数:
 111          *   说    明:
 112          ****************************************************************************************/
 113          void test_lcd(void) 
 114           {
 115   1      
 116   1              unsigned char glb_InputKey;
 117   1          glb_InputKey = get_msg();
C51 COMPILER V7.50   LCD                                                                   09/17/2008 16:34:37 PAGE 3   

 118   1      
 119   1              for (lcd_cnt=0; lcd_cnt<SHADOW_LENGTH; lcd_cnt++) //全屏显示
 120   1              {
 121   2                 disp_buff[lcd_cnt] = 0xff; 
 122   2              }
 123   1      
 124   1              if ((glb_InputKey == KEY_NEXT) || (glb_InputKey == KEY_PREV)||(glb_InputKey == KEY_P_P)) 
 125   1              {
 126   2                      if (glb_InputKey == KEY_NEXT) //显示下一个点
 127   2                      {
 128   3                              lcd_bit++;
 129   3                              if (lcd_bit > 7) 
 130   3                              {
 131   4                                      lcd_bit = 0;
 132   4                                      lcd_byte++;
 133   4                                      if (lcd_byte >= SHADOW_LENGTH) lcd_byte = 0;
 134   4                              }
 135   3                      } 
 136   2                  if(glb_InputKey == KEY_PREV)//显示上一个点 
 137   2                  {
 138   3                              if (lcd_bit) lcd_bit--;
 139   3                              else 
 140   3                              {
 141   4                                      lcd_bit = 7;
 142   4                                      if (lcd_byte) lcd_byte--;
 143   4                                      else 
 144   4                                      {
 145   5                                              lcd_byte = SHADOW_LENGTH-1;
 146   5                                      }
 147   4                              }
 148   3                      }
 149   2                      if(glb_InputKey == KEY_P_P)//恢复起始点
 150   2                      {
 151   3                       lcd_bit = 0;
 152   3                       lcd_byte = 0;
 153   3                      }
 154   2      
 155   2                      disp_buff[lcd_byte] |= (1<<lcd_bit);//显示当前字段
 156   2                      vfd_flag = 1;
 157   2              }                         
 158   1      }                       


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    229    ----
   CONSTANT SIZE    =      8    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     23    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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