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

📄 max.lst

📁 自制实验max7219.rar调试仿真和硬件都可用
💻 LST
字号:
C51 COMPILER V8.02   MAX                                                                   11/30/2008 00:04:00 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE MAX
OBJECT MODULE PLACED IN max.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE max.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include  <reg51.h>           
   2          /*********************** 定义MAX7219 内部寄存器 **********************/
   3          #define REG_DECODE        0x09            // 译码方式寄存器
   4          #define REG_INTENSITY     0x0a            // 亮度寄存器
   5          #define REG_SCAN_LIMIT    0x0b            // 扫描界限寄存器
   6          #define REG_SHUTDOWN      0x0c            // 停机寄存器
   7          #define REG_DISPLAY_TEST  0x0f            // 显示测试寄存器
   8          
   9          #define INTENSITY_MIN     0x00            // 最小显示亮度
  10          #define INTENSITY_MAX     0x0f            // 最大显示亮度
  11          
  12          /*********************** 定义MAX7219 端口信号 ************************/
  13          sbit DATA=P1^0;
  14          sbit LOAD=P1^1;
  15          sbit CLK=P1^2;
  16          
  17          /************************** 定义显示常数表格 *************************/
  18          static const struct {
  19                  char   ascii;
  20              char   segs;
  21          } Font[] = {
  22            {' ', 0x00},{'0', 0x7e},{'1', 0x30},{'2', 0x6d},{'3', 0x79},{'4', 0x33},
  23            {'5', 0x5b},{'6', 0x5f},{'7', 0x70},{'8', 0x7f},{'9', 0x7b},{'A', 0x77},
  24            {'B', 0x1f},{'C', 0x4e},{'D', 0x3d},{'E', 0x4f},{'F', 0x47},{'H',0x37},
  25            {'L',0x0e}, {'O',0x7e},{'\0', 0x00}
  26          };
  27          
  28          /************************** 函数原型说明 *****************************/
  29          static void Write (unsigned char reg_number, unsigned char dataout);
  30          static void SendByte (unsigned char dataout);
  31          static unsigned char LookupCode (char character);
  32          void Init (void);
  33          void ShutdownStart (void);
  34          void ShutdownStop (void);
  35          void DisplayTestStart (void);
  36          void DisplayTestStop (void);
  37          void SetBrightness (char brightness);
  38          void Clear (void);
  39          void DisplayChar (char digit, char character);
  40          
  41          /************************************************************************
  42          *  函数原型:void Init()
  43          *  功    能: 对MAX7219进行初始化,调用任何其他函数之前必需先调用此函数
  44          *************************************************************************/
  45          void Init (void) {
  46   1        DATA=1;LOAD=1;CLK=1;
  47   1        Write(REG_SCAN_LIMIT, 7);          // 扫描8位数字
  48   1        Write(REG_DECODE, 0x00);           // 设置不译码方式
  49   1        ShutdownStop();                    // 结束停机方式,正常工作
  50   1        DisplayTestStop();                 // 结束显示测试,正常工作
  51   1        Clear();                           // 清零全部显示器
  52   1        SetBrightness(INTENSITY_MAX);      // 设置最大亮度
  53   1      }
  54          
  55          /*************************************************************************
C51 COMPILER V8.02   MAX                                                                   11/30/2008 00:04:00 PAGE 2   

  56          *  函数原型:void ShutdownStart()
  57          *  功    能: 进入停机方式
  58          **************************************************************************/
  59          void ShutdownStart (void) {
  60   1        Write(REG_SHUTDOWN, 0); 
  61   1      }
  62          
  63          /*************************************************************************
  64          *  函数原型:void ShutdownStop()
  65          *  功    能:结束停机方式
  66          **************************************************************************/
  67          void ShutdownStop (void) {
  68   1        Write(REG_SHUTDOWN, 1);               
  69   1      }
  70          
  71          /*************************************************************************
  72          *  函数原型:void DisplayTestStart()
  73          *  功    能:启动显示测试
  74          **************************************************************************/
  75          void DisplayTestStart (void) {
  76   1        Write(REG_DISPLAY_TEST, 1);
  77   1      }
  78          
  79          /*************************************************************************
  80          *  函数原型:void DisplayTestStop()
  81          *  功    能:结束显示测试
  82          **************************************************************************/
  83          void DisplayTestStop (void) {
  84   1        Write(REG_DISPLAY_TEST, 0);
  85   1      }
  86          
  87          /*************************************************************************
  88          *  函数原型:void SetBrightness(char brightness)
  89          *  功    能:设置LED显示亮度
  90          *  参    数:亮度值(brightness = 0-15)
  91          *************************************************************************/
  92          void SetBrightness (char brightness) {
  93   1        brightness &= 0x0f;                         // 屏蔽参数中的多余位
  94   1        Write(REG_INTENSITY, brightness);           // 设置亮度
  95   1      }
  96          
  97          /*************************************************************************
  98          *  函数原型:void Clear()
  99          *  功    能:关闭全部显示器
 100          **************************************************************************/
 101          void Clear (void) {
 102   1        char i;
 103   1        for (i=1; i <= 8; i++)
 104   1          Write(i, 0x00);                          // 关闭全部显示器
 105   1      }
 106          
 107          /*************************************************************************
 108          *  函数原型:void DisplayChar(char digit, char character)
 109          *  功    能:在指定数位上显示字符
 110          *  参    数:digit = 数位(0-7)
 111                       character = 显示字符(0-9, A-Z)
 112          *************************************************************************/
 113          void DisplayChar (char digit, char character) {
 114   1        Write(digit, LookupCode(character));
 115   1      }
 116          
 117          /*************************************************************************
C51 COMPILER V8.02   MAX                                                                   11/30/2008 00:04:00 PAGE 3   

 118          *  函数原型:static unsigned char LookupCode(char character)
 119          *  功    能:查段码表将显示字符转换为显示段码
 120          *  参    数:character = 显示字符
 121          *  返 回 值:显示段码
 122          **************************************************************************/
 123          static unsigned char LookupCode (char character) {
 124   1        char i;
 125   1        for (i = 0; Font[i].ascii; i++)             // 查表搜寻显示字符的ASCII码
 126   1          if (character == Font[i].ascii)
 127   1            return Font[i].segs;                    // 找到则返回对应的显示段码
 128   1        return 0;                                   // 未找到则返回0
 129   1      }
 130          
 131          /*************************************************************************
 132          *  函数原型:static void Write (unsigned char reg_number, unsigned char dataout)
 133          *  功    能:向指定的MAX7219内部寄存器写入数据
 134          *  参    数: reg_number = MAX7219内部寄存器地址
 135                     dataout = 待写入的数据
 136          **************************************************************************/
 137          static void Write (unsigned char reg_number, unsigned char dataout) {
 138   1        LOAD=1;                               // 使LOAD变高,启动串行数据发送
 139   1        SendByte(reg_number);                 // 发送MAX7219内部寄存器地址
 140   1        SendByte(dataout);                    // 发送待写入的数据
 141   1        LOAD=0;                               // 使LOAD变低,锁存数据
 142   1        LOAD=1;                               // 使LOAD变高,串行数据结束
 143   1      }
 144          
 145          /*************************************************************************
 146          *  函数原型:static void SendByte (unsigned char dataout)
 147          *  功    能:向MAX7219发送一个字节串行数据
 148          *  参    数:dataout = 待发送的数据
 149          **************************************************************************/
 150          static void SendByte (unsigned char dataout) {
 151   1        char i;
 152   1        for (i=8; i>0; i--) {
 153   2          unsigned char mask = 1 << (i - 1);       
 154   2          CLK=0;                                   // 使CLK变低
 155   2          if (dataout & mask)                      // 发送一位数据"1"或"0"
 156   2            DATA=1;                                       
 157   2          else                                             
 158   2            DATA=0;                                       
 159   2          CLK=1;                                    // 使CLK变高
 160   2                }
 161   1      }
 162          
 163          /**************************************************************************
 164          *  函数原型:main()
 165          *  功    能:初始化MAX7219,设置亮度,在指定数位上显示字符
 166          **************************************************************************/
 167          void main(void) {
 168   1              Init ();                            // 初始化MAX7219
 169   1              ShutdownStart ();                   // 停机 
 170   1              ShutdownStop ();                    // 结束停机
 171   1              DisplayTestStart ();                // 显示测试
 172   1              DisplayTestStop ();                 // 结束显示测试
 173   1              SetBrightness (0x0b);               // 设置显示亮度
 174   1              DisplayChar (0x01, '0');            // 第1位LED显示0
 175   1              DisplayChar (0x02, '1');            // 第2位LED显示1
 176   1              DisplayChar (0x03, '2');            // 第3位LED显示2
 177   1              DisplayChar (0x04, '3');            // 第4位LED显示3
 178   1              //Clear ();                           // 关闭全部LED显示器
 179   1              DisplayChar (0x05, 'A');            // 第5位LED显示A
C51 COMPILER V8.02   MAX                                                                   11/30/2008 00:04:00 PAGE 4   

 180   1              DisplayChar (0x06, 'B');            // 第6位LED显示B
 181   1              DisplayChar (0x07, 'C');            // 第7位LED显示C
 182   1              DisplayChar (0x08, 'D');            // 第8位LED显示D
 183   1              DisplayChar (0x08, '\0');           // 第8位LED显示“暗码”
 184   1              while(1);
 185   1      }


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