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

📄 max7219.lst

📁 max7219控制的源程序
💻 LST
字号:
C51 COMPILER V7.50   MAX7219                                                               04/24/2007 15:03:10 PAGE 1   


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

line level    source

   1          /*---------------------------------------------------------
   2           *                     程序说明                           *
   3           * 1、本程序已经通过测试,非常好用;                      *
   4           * 2、在非译码方式下编码和一般书上写的不一样,请注意;    *
   5           * 3、每次送显示的时候先初始化一次;                      *
   6           * 4、在设计电路或制作试验板时注意添加Vcc到GND之间的电容,*
   7           *    一个10vF的电解电容和0.1vF的陶瓷电容。并在DIN、LOAD、*
   8           *    CLK到GND之间接入30pF的瓷片电容。                    *
   9           *                                                        *
  10           *                程序提供人:苏建宇                      *
  11           *                                                        *
  12           *                                                        *
  13          ----------------------------------------------------------*/
  14          
  15          #include <reg52.H>
  16          #include <intrins.h>
  17          //#include <absacc.h>
  18          /*--------------------------------------------------*/
  19          sbit dis_DIN=P1^0;           /*显示串行数据输入端*/
  20          sbit dis_LOAD=P1^1;          /*显示数据锁存端*/
  21          sbit dis_CLK=P1^2;           /*显示时钟输入端*/
  22          
  23          #define NoOp   0x00         /*空操作*/
  24          #define Digit0 0x01         /*数码管1*/
  25          #define Digit1 0x02         /*数码管2*/
  26          #define Digit2 0x03         /*数码管3*/
  27          #define Digit3 0x04         /*数码管4*/
  28          #define Digit4 0x05         /*数码管5*/
  29          #define Digit5 0x06         /*数码管6*/
  30          #define Digit6 0x07         /*数码管7*/
  31          #define Digit7 0x08         /*数码管8*/
  32          #define DecodeMode 0x09     /*译码模式*/
  33          #define Intensity 0x0a     /*亮度*/
  34          #define ScanLimit 0x0b      /*扫描界限*/
  35          #define ShutDown 0x0c       /*掉电模式*/
  36          #define DisplayTest 0x0f    /*显示测试*/
  37          
  38          #define ShutdownMode 0x00      /*掉电方式工作*/
  39          #define NormalOperation 0x01   /*正常操作方式*/
  40          
  41          #define DecodeDigit 0xff       /*译码位数设置*/
  42          
  43          #define IntensityGrade 0x0a    /*显示亮度级别设置*/
  44          
  45          #define ScanDigit 0x07         /*扫描位数设置*/
  46          
  47          #define TestMode 0x01          /*显示测试方式*/
  48          #define TextEnd 0x00           /*显示测试结束,正常工作*/
  49          
  50          unsigned char data DisBuffer[8]={0,0,0,0,0,0,0,0};    /*显示缓存区*/
  51          
  52          unsigned char code dispaly_list[]=
  53              { 
  54          0x7e,0x30,0x6d,0x79,0x33,0x5b,0x5f,0x70,0x7f,0x7b,    /*0,1,2,3,4,5,6,7,8,9*/
  55                0x77,0x1f,0x4e,0x3d,0x4f,0x47,0x67,0x3e,0xff,0x00};   /*A,B,C,D,E,F,P,U,全
C51 COMPILER V7.50   MAX7219                                                               04/24/2007 15:03:10 PAGE 2   

  56          亮,全灭*/
  57          
  58          /*--------------------------------------------------------
  59                             10ms延时子程序
  60          ---------------------------------------------------------*/
  61          void delayX10ms(unsigned char count)
  62               {
  63   1            unsigned char j,k;
  64   1            while(count--!=0)
  65   1              {
  66   2               for(j=0;j<43;j++)
  67   2                 for(k=0;k<73;k++)
  68   2                 ;
  69   2              }
  70   1           }
  71          
  72          /*-------------------------------------------------
  73                          向MAX7219写入字节(8位)
  74          --------------------------------------------------*/
  75          void SendChar (unsigned char ch)
  76             {
  77   1          unsigned char i,temp;
  78   1          _nop_();
  79   1          for (i=0;i<8;i++)
  80   1             {
  81   2                 temp=ch&0x80;
  82   2                 ch=ch<<1;
  83   2                 if(temp)
  84   2                {
  85   3                 dis_DIN=1;
  86   3                 dis_CLK=0;
  87   3                 dis_CLK=1;
  88   3                }
  89   2              else
  90   2                {
  91   3                 dis_DIN=0;
  92   3                 dis_CLK=0;
  93   3                 dis_CLK=1;
  94   3                }
  95   2             }
  96   1         }
  97          
  98          /*-------------------------------------------------
  99                         向MAX7219写入字(16位)
 100          -------------------------------------------------*/
 101          void WriteWord (unsigned char addr,unsigned char num)
 102             {
 103   1          dis_LOAD=0;
 104   1          _nop_();
 105   1          SendChar (addr);
 106   1          _nop_();
 107   1          SendChar (num);
 108   1          _nop_();
 109   1          dis_LOAD=1;
 110   1         }
 111          
 112          /*-------------------------------------------------
 113                           MAX7219初始化
 114          -------------------------------------------------*/
 115          void InitDis (void)
 116             {
 117   1          WriteWord (ScanLimit,ScanDigit);         /*设置扫描界限*/
C51 COMPILER V7.50   MAX7219                                                               04/24/2007 15:03:10 PAGE 3   

 118   1          WriteWord (DecodeMode,DecodeDigit);      /*设置译码模式*/
 119   1          WriteWord (Intensity,IntensityGrade);    /*设置亮度*/
 120   1          WriteWord (ShutDown,NormalOperation);    /*设置电源工作模式*/
 121   1         }
 122          
 123          /*-------------------------------------------------
 124                              系统上电初始化
 125          -------------------------------------------------*/
 126          void InitMain (void)
 127             {
 128   1          IE=0x00;    /*设置中断允许寄存器*/
 129   1          IP=0x00;    /*设置中断优先级管理寄存器*/
 130   1          TH0=0xd8;   /*设定时器初值,10ms*/
 131   1          TL0=0xf0;
 132   1          TMOD=0x01;  /*T1 定时器模式2,波特率发生器,T0 定时器模式1*/
 133   1          TCON=0x11;  /*设置定时器控制寄存器,INT0设置为边沿触发方式*/
 134   1          PSW=0x00;
 135   1         }
 136          
 137          /*-------------------------------------------------
 138                              主函数
 139          -------------------------------------------------*/
 140          void main(void)
 141            {
 142   1         InitMain ();
 143   1         InitDis ();
 144   1         WriteWord (DisplayTest,TestMode);
 145   1            delayX10ms(0x64);
 146   1             delayX10ms(0x64);
 147   1         WriteWord (DisplayTest,TextEnd);
 148   1      
 149   1          while(1)
 150   1                  {
 151   2                   unsigned char i;
 152   2                   for (i=0;i<=9;i++)
 153   2                      {
 154   3                     delayX10ms(0x64);
 155   3                     delayX10ms(0x64);
 156   3                       InitDis ();
 157   3                     DisBuffer[0]=i;
 158   3                     DisBuffer[1]=i;
 159   3                     DisBuffer[2]=i;
 160   3                     DisBuffer[3]=i;
 161   3                     DisBuffer[4]=i;
 162   3                     DisBuffer[5]=i;
 163   3                     DisBuffer[6]=i;
 164   3                     DisBuffer[7]=i;
 165   3                     
 166   3                     WriteWord (Digit0,DisBuffer[0]);
 167   3                     WriteWord (Digit1,DisBuffer[1]);
 168   3                     WriteWord (Digit2,DisBuffer[2]);
 169   3                     WriteWord (Digit3,DisBuffer[3]);
 170   3                     WriteWord (Digit4,DisBuffer[4]);
 171   3                     WriteWord (Digit5,DisBuffer[5]);
 172   3                     WriteWord (Digit6,DisBuffer[6]);
 173   3                     WriteWord (Digit7,DisBuffer[7]);
 174   3                    }
 175   2      
 176   2                }
 177   1      
 178   1         } 

C51 COMPILER V7.50   MAX7219                                                               04/24/2007 15:03:10 PAGE 4   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    249    ----
   CONSTANT SIZE    =     20    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8       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 + -