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

📄 vfdtask.lst

📁 一个带收音的功放程序, VFD显示驱动用一个非常实用的方法, 稍加修改即可换成不同的VFD, 功放芯片用M61538
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.20   VFDTASK                                                               07/16/2005 13:42:40 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE VFDTASK
OBJECT MODULE PLACED IN ..\output\vfdtask.obj
COMPILER INVOKED BY: C:\Keil51\C51\BIN\C51.EXE ..\source\UI\vfdtask.c BROWSE DEBUG OBJECTEXTEND CODE PRINT(..\output\vfd
                    -task.lst) OBJECT(..\output\vfdtask.obj)

line level    source

   1          #include "reg52.h"
   2          #include "intrins.h"
   3          #include "..\..\inc\globedef.h"
   4          #include "..\..\inc\delay.h"
   5          #include "..\..\inc\keyproc.h"
   6          #include "..\..\inc\vfddef.h"
   7          #include "..\..\inc\Tuner.h"
   8          
   9          
  10          
  11          /*===========================================
  12                 将输入的数转换成VFD显示字符输出
  13          ===========================================*/
  14          code WORD NUMBER_DISPLAY[10] = 
  15          {
  16                  CHAR_0,CHAR_1,CHAR_2,CHAR_3,CHAR_4,
  17                  CHAR_5,CHAR_6,CHAR_7,CHAR_8,CHAR_9
  18          };
  19          
  20          /*===========================================
  21                 将输入的字母转换成VFD显示字符输出
  22          ===========================================*/
  23          code WORD LETTER_DISPLAY[26] = 
  24          {
  25                  CHAR_A,CHAR_B,CHAR_C,CHAR_D,CHAR_E,
  26                  CHAR_F,CHAR_G,CHAR_H,CHAR_I,CHAR_J,
  27                  CHAR_K,CHAR_L,CHAR_M,CHAR_N,CHAR_O,
  28                  CHAR_P,CHAR_Q,CHAR_R,CHAR_S,CHAR_T,
  29                  CHAR_U,CHAR_V,CHAR_W,CHAR_X,CHAR_Y,
  30                  CHAR_Z
  31          };
  32          
  33          /*===============================================
  34          描述:    从PT16312读取一个字节的数据
  35          参数:    无
  36          返回:    从VFD芯片读到的数据
  37          ================================================*/
  38          BYTE    VFD_ReadByte(void)
  39          {
  40   1              BYTE i;
  41   1              BYTE ReceiveData = 0;
  42   1              for (i = 0;i <8;i++)
  43   1              {
  44   2                      ReceiveData >>= 1;
  45   2                      CLEAR_VFD_CLK;
  46   2                  Delay5US();
  47   2                      SET_VFD_CLK;
  48   2                      Delay5US();
  49   2                      if (VFD_DATA_HIGH)
  50   2                              ReceiveData |= 0x80;
  51   2              }
  52   1              TRISTATE_DATA;
  53   1              return ReceiveData;
  54   1      }
C51 COMPILER V7.20   VFDTASK                                                               07/16/2005 13:42:40 PAGE 2   

  55          /*===============================================
  56          描述:    向PT16312发送一个字节的数据
  57          参数:    向VFD芯片发送的数据字节
  58          返回:    无
  59          ================================================*/
  60          void    VFD_SendByte(BYTE VFD_SendByte)
  61          {
  62   1              BYTE i;
  63   1              CLEAR_VFD_DATA;
  64   1              Delay5US();
  65   1              for (i = 0;i <8;i++)
  66   1              {
  67   2                      CLEAR_VFD_CLK;
  68   2                      _nop_();        
  69   2                  if (VFD_SendByte & 0x01) {
  70   3                      SET_VFD_DATA;
  71   3                  }
  72   2                  else
  73   2                      {
  74   3                      CLEAR_VFD_DATA;
  75   3                  }
  76   2                  _nop_();
  77   2                       SET_VFD_CLK;
  78   2                  VFD_SendByte >>= 1;
  79   2                      _nop_();        
  80   2              }
  81   1              TRISTATE_DATA;
  82   1      }
  83          /*===============================================
  84          描述:    向PT16312发送命令
  85          参数:    向VFD芯片发送的数据字节
  86          返回:    无
  87          ================================================*/
  88          void    VFD_SendCmd(BYTE VFD_Byte)
  89          {
  90   1              DelayX1ms(1);
  91   1              CLEAR_VFD_CS;
  92   1              Delay5US();
  93   1              Delay5US();
  94   1              VFD_SendByte(VFD_Byte);
  95   1              Delay5US();
  96   1              Delay5US();
  97   1              SET_VFD_CS;
  98   1              DelayX1ms(2);
  99   1      }
 100          
 101          /*===============================================
 102          描述:    向VFD显示芯片发送一系列数据
 103          参数:    length,向VFD芯片发送的数据字节的长度,
 104                           *str, 指向数据的指针
 105          返回:    无
 106          ================================================*/
 107          
 108          /*===============================================
 109          描述:    向VFD显示芯片发送一系列数据
 110          参数:    length,向VFD芯片发送的数据字节的长度,
 111                           *str, 指向数据的指针
 112          返回:    无
 113          ================================================*/
 114          
 115          #ifdef  FUT_ZYC25085
 116          code    BYTE  VFD_Refresh_Address[Max_Segment_Display] = 
C51 COMPILER V7.20   VFDTASK                                                               07/16/2005 13:42:40 PAGE 3   

 117          {
 118                  GRID_6, GRID_5, GRID_4, GRID_3, GRID_2
 119          };
 120          #endif
 121          
 122          
 123          #ifdef  NEW_VFD
              
              #if(MAX_Segment == 8)
              code WORD VFD_CHAR_SEGMENTS[MAX_8Char][MAX_Segment] = 
              {
                      {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P6,  ICON_empty},  /* Track high */
              
                  {ANODE_G7P11, ANODE_G7P10, ANODE_G7P9,  ANODE_G2P16,
                   ANODE_G2P15, ANODE_G2P14, ANODE_G2P13, ICON_empty},  /* Track low  */
              
                  {ANODE_G5P12, ANODE_G5P11, ANODE_G5P10, ANODE_G5P9,
                   ANODE_G5P8,  ANODE_G5P7,  ANODE_G5P6,  ICON_empty},  /* Minute high */
              
                  {ANODE_G9P3,  ANODE_G9P2,  ANODE_G9P1,  ANODE_G5P16,
                   ANODE_G5P15, ANODE_G5P14, ANODE_G5P13, ICON_empty},  /* Minute low */
              
                  {ANODE_G6P12, ANODE_G6P11, ANODE_G6P10, ANODE_G6P9,
                   ANODE_G6P8,  ANODE_G6P7,  ANODE_G6P6,  ICON_empty},  /* Second high */
              
                  {ANODE_G9P11, ANODE_G9P10, ANODE_G9P9,  ANODE_G6P16,
                   ANODE_G6P15, ANODE_G6P14, ANODE_G6P13, ICON_empty},  /* Second low */
              
                  {ANODE_G8P11, ANODE_G8P10, ANODE_G8P9,  ANODE_G4P16,
                   ANODE_G4P15, ANODE_G4P14, ANODE_G4P13, ICON_empty},  /* Minute 100 */
              
                  {ANODE_G3P12, ANODE_G3P11, ANODE_G3P10, ANODE_G3P9,
                   ANODE_G3P8,  ANODE_G3P7,  ANODE_G3P6,  ICON_empty},  /* Chapter high */
              
                  {ANODE_G8P3,  ANODE_G8P2,  ANODE_G8P1,  ANODE_G3P16,
                   ANODE_G3P15, ANODE_G3P14, ANODE_G3P13, ICON_empty},  /* Chapter low */
              };
              
              code BYTE NUMBER_DISPLAY[10] = 
              {
                      CHAR_0,CHAR_1,CHAR_2,CHAR_3,CHAR_4,
                      CHAR_5,CHAR_6,CHAR_7,CHAR_8,CHAR_9
              };
              
              /*===========================================
                     将输入的字母转换成VFD显示字符输出
              ===========================================*/
              code BYTE LETTER_DISPLAY[26] = 
              {
                      CHAR_A,CHAR_B,CHAR_C,CHAR_D,CHAR_E,
                      CHAR_F,CHAR_G,CHAR_H,CHAR_I,CHAR_J,
                      CHAR_K,CHAR_L,CHAR_M,CHAR_N,CHAR_O,
                      CHAR_P,CHAR_Q,CHAR_R,CHAR_S,CHAR_T,
                      CHAR_U,CHAR_V,CHAR_W,CHAR_X,CHAR_Y,
                      CHAR_Z
              };
              #else //14 SEGMENT
              code WORD VFD_CHAR_SEGMENTS[MAX_8Char][MAX_Segment] = 
              {
                      {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                       ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
C51 COMPILER V7.20   VFDTASK                                                               07/16/2005 13:42:40 PAGE 4   

                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P6,  ICON_empty},  /* Track high   */
              
                  {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                       ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P6,  ICON_empty},  /* Track low    */
              
                  {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                       ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P6,  ICON_empty},  /* Minute high */
              
                  {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                       ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P6,  ICON_empty},  /* Minute low */
              
                  {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                       ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P6,  ICON_empty},  /* Second high */
              
                  {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                       ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P6,  ICON_empty},  /* Second low */
              
                  {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                       ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P6,  ICON_empty},  /* Minute 100 */
              
                  {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                       ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P6,  ICON_empty},  /* Chapter high */
              
                  {ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                       ANODE_G2P12, ANODE_G2P11, ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P8,  ANODE_G2P7,  ANODE_G2P10, ANODE_G2P9,
                   ANODE_G2P6,  ICON_empty},  /* Chapter low */
              };
              
              code WORD NUMBER_DISPLAY[10] = 
              {
                      CHAR_0,CHAR_1,CHAR_2,CHAR_3,CHAR_4,
                      CHAR_5,CHAR_6,CHAR_7,CHAR_8,CHAR_9
              };
              
              /*===========================================
                     将输入的字母转换成VFD显示字符输出
              ===========================================*/
              code WORD LETTER_DISPLAY[26] = 
              {
                      CHAR_A,CHAR_B,CHAR_C,CHAR_D,CHAR_E,
                      CHAR_F,CHAR_G,CHAR_H,CHAR_I,CHAR_J,
                      CHAR_K,CHAR_L,CHAR_M,CHAR_N,CHAR_O,
                      CHAR_P,CHAR_Q,CHAR_R,CHAR_S,CHAR_T,
                      CHAR_U,CHAR_V,CHAR_W,CHAR_X,CHAR_Y,
                      CHAR_Z
              };
C51 COMPILER V7.20   VFDTASK                                                               07/16/2005 13:42:40 PAGE 5   

              #endif
              
              void    VFD_Display(BYTE *str,BYTE str_length, WORD Number)
              {
                      //要显示的转换数据
              #if(MAX_Segment == 8)
                      BYTE VFD_DATA;  
                      BYTE VFD_RAM[MAX_8Char];        
              #else
                      WORD VFD_DATA;  
                      WORD VFD_RAM[MAX_8Char];
                      BYTE Gird_Locate;
              #endif
                      BYTE grid_temp;

⌨️ 快捷键说明

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