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

📄 max7219.lst

📁 51单片机开发与应用技术详解(珍藏版)PPT及源码
💻 LST
字号:
C51 COMPILER V8.08   MAX7219                                                               04/02/2008 11:20:16 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE MAX7219
OBJECT MODULE PLACED IN max7219.OBJ
COMPILER INVOKED BY: C:\Program Files\keil\C51\BIN\C51.EXE max7219.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include  <reg51.h>   
   2                  
   3          #define DECODE_REG        0x09                  //译码方式寄存器
   4          #define INTENSITY_REG     0x0a                  //亮度寄存器
   5          #define SCANLIMIT_REG    0x0b                   //扫描界限寄存器
   6          #define SHUTDOWN_REG      0x0c            //停机寄存器
   7          #define DISPLAYTEST_REG  0x0f                   //显示测试寄存器
   8          
   9          #define MIN     0x00                                            //最小显示亮度
  10          #define MAX     0x0f                                            //最大显示亮度
  11          
  12          sbit DATA=P2^0;                                                 //DATA接口
  13          sbit CLK=P2^1;                                                          //CLK接口
  14          sbit LOAD=P2^2;                                                 //LOAD接口
  15          
  16          static const struct 
  17          {
  18          char   ascii;
  19          char   segs;
  20          } Font[] =                                                                      //定义并初始化显示数字和字符的段码数组
  21          {
  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          
  30          static void SendByte (unsigned char dataout) 
  31          {
  32   1        char i;
  33   1        for (i=8; i>0; i--)                                                   //循环发送
  34   1      {
  35   2          unsigned char mask = 1 << (i - 1); 
  36   2          CLK=0;                                      //CLK变低电平
  37   2          if (dataout & mask)                         //发送一位数据
  38   2            DATA=1; 
  39   2          else 
  40   2            DATA=0; 
  41   2          CLK=1;                                    //CLK变高电平
  42   2      }
  43   1      }
  44          
  45          static void WriteMAX7219 (unsigned char reg_number, unsigned char dataout) 
  46          {
  47   1        LOAD=1;                                               //置LOAD为高电平,用于启动串行数据发送
  48   1        SendByte(reg_number);                                 //发送内部寄存器地址
  49   1        SendByte(dataout);                                    //发送数据
  50   1        LOAD=0;                                               //置LOAD为低电平,锁存数据
  51   1        LOAD=1;                                               //置LOAD为高电平,结束串行数据
  52   1      }
  53          
  54          void OpenShutdown (void) 
  55          {
C51 COMPILER V8.08   MAX7219                                                               04/02/2008 11:20:16 PAGE 2   

  56   1        WriteMAX7219(SHUTDOWN_REG, 0);                        //写停机寄存器
  57   1      }
  58          
  59          void StopShutdown (void)
  60          {
  61   1        WriteMAX7219(SHUTDOWN_REG, 1);          //写停机寄存器
  62   1      }
  63          
  64          void OpenLEDTest (void) 
  65          {
  66   1        WriteMAX7219(DISPLAYTEST_REG, 1);             //写显示测试寄存器
  67   1      }
  68          
  69          void StopLEDTest (void) 
  70          {
  71   1        WriteMAX7219(DISPLAYTEST_REG, 0);             //写显示测试寄存器
  72   1      }
  73          
  74          void SetLevel (char ch) 
  75          {
  76   1        ch &= 0x0f;                                           //屏蔽参数中的多余位
  77   1        WriteMAX7219(INTENSITY_REG, ch);          //写亮度寄存器
  78   1      }
  79          
  80          void ClearLED (void) 
  81          {
  82   1        char i;
  83   1        for (i=1; i <= 8; i++)                                                //循环
  84   1          WriteMAX7219(i, 0x00);                      //写数字寄存器,关闭全部数码管
  85   1      }
  86          
  87          static unsigned char FindCode (char character) 
  88          {
  89   1        char i;
  90   1        for (i = 0; Font[i].ascii; i++)                       //循环查表
  91   1          if (character == Font[i].ascii)
  92   1            return Font[i].segs;                      //返回对应的显示段码
  93   1        return 0;                                     //未找到,返回0
  94   1      }
  95          
  96          void LEDDisplay (char digit, char character) 
  97          {
  98   1        WriteMAX7219(digit, FindCode(character));             //写数字寄存器
  99   1      }
 100          
 101          void main(void) 
 102          {
 103   1      //初始化MAX7219
 104   1      DATA=1;LOAD=1;CLK=1;
 105   1          WriteMAX7219(SCANLIMIT_REG, 7);         //扫描8位数字
 106   1          WriteMAX7219(DECODE_REG, 0x00);        //设置不译码方式
 107   1          StopShutdown();                             //结束停机方式,正常工作
 108   1          StopLEDTest();                                      //结束显示测试,正常工作
 109   1          ClearLED();                                         //清零全部显示器
 110   1          SetLevel(MAX/2);                                            //设置一半的亮度
 111   1      
 112   1              OpenLEDTest ();                                 //显示测试
 113   1              StopLEDTest ();                                         //结束显示测试
 114   1       
 115   1              LEDDisplay (0x01, '0');                                 //第1位LED显示0
 116   1              LEDDisplay (0x02, '1');                                 //第2位LED显示1
 117   1              LEDDisplay (0x03, '2');                                         //第3位LED显示2
C51 COMPILER V8.08   MAX7219                                                               04/02/2008 11:20:16 PAGE 3   

 118   1              LEDDisplay (0x04, '3');                                         //第4位LED显示3
 119   1              LEDDisplay (0x05, '4');                                 //第5位LED显示4
 120   1              LEDDisplay (0x06, '5');                                 //第6位LED显示5
 121   1              LEDDisplay (0x07, '6');                                         //第7位LED显示6
 122   1              LEDDisplay (0x08, '7');                                         //第8位LED显示7
 123   1      
 124   1              ClearLED ();                            //关闭全部LED显示器
 125   1      
 126   1              LEDDisplay (0x01, 'A');                                 //第1位LED显示A
 127   1              LEDDisplay (0x02, 'B');                                 //第2位LED显示B
 128   1              LEDDisplay (0x03, 'C');                                         //第3位LED显示C
 129   1              LEDDisplay (0x04, 'D');                                         //第4位LED显示D
 130   1              LEDDisplay (0x05, 'E');                                 //第5位LED显示E
 131   1              LEDDisplay (0x06, 'F');                                 //第6位LED显示F
 132   1              LEDDisplay (0x07, 'H');                                         //第7位LED显示H
 133   1              LEDDisplay (0x08, 'L');                                         //第8位LED显示L
 134   1      
 135   1              OpenShutdown ();                                //停机 
 136   1              StopShutdown ();                                //结束停机
 137   1      
 138   1              while(1)                                                                //主循环
 139   1              {
 140   2              }
 141   1      }


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