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

📄 max7219.lst

📁 电磁流量计的源程序。将流体流量用电磁转换方式变换成弱电信号
💻 LST
字号:
C51 COMPILER V6.02  MAX7219                                                                09/10/2005 17:11:41 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE MAX7219
OBJECT MODULE PLACED IN D:\2005_09\Max7219.OBJ
COMPILER INVOKED BY: D:\C51\BIN\C51.EXE D:\2005_09\Max7219.c SMALL DB OE CO OT(SIZE) 

stmt level    source

   1          /************************************************************************/
   2          /*                                                                      */
   3          /*			7 Segment Driver MAX7219			                        */
   4          /*                                                                      */
   5          /*                                                                      */
   6          /*                                                                      */
   7          /*      right seg is named first seg                                    */
   8          /************************************************************************/
   9          
  10          #include "reg52.h"
  11          #include "typedef.h"
  12          #include "function.h"
  13          #include "define.h"
  14          #include "varible.h"
  15          
  16          
  17          sbit	DISP_CS = P3^5;
  18          sbit	DISP_OUT = P3^3;
  19          sbit	DISP_CLK  = P1^6;
  20          /***************************************/
  21          /*       functoion declare             */
  22          /***************************************/
  23          void Disp_init(void);
  24          void Disp_write( unsigned int disp_data);
  25          void Get_dispdata(float disp_fdata);
  26          void Convert_data(unsigned char j,unsigned char seg_data);
  27          void Disp_out( void );
  28          
  29          void Clear_disp_memory(void);
  30          void Convert_hdata(unsigned long int temp_data);
  31          void Convert_ldata(unsigned int temp_data);
  32          
  33          
  34          const unsigned char  code dp_blink_potion[]=
  35          {  0x00,0x02,0x04,0x08 } ;	
  36             
  37          
  38          /***************************************/
  39          
  40          const unsigned char code disp_data[]=
  41          { 0x7e,                     //led disp 0
  42            0x30,                     //led disp 1
  43            0x6d,                     //led disp 2
  44            0x79,                     //led disp 3
  45            0x33,                     //led disp 4
  46            0x5b,                     //led disp 5
  47            0x5f,                     //led disp 6
  48            0x70,                     //led disp 7
  49            0x7f,                     //led disp 8
  50            0x7b                      //led disp 9
  51           };                         //0--9
  52          /**************************************/
  53          /*   varible declare                  */
  54          /**************************************/
  55          void Disp_init(void)
C51 COMPILER V6.02  MAX7219                                                                09/10/2005 17:11:41 PAGE 2   

  56          { 
  57   1        unsigned char i ;
  58   1        disp_mode = PARA_DISP ;
  59   1        disp_mode_old = disp_mode ;
  60   1        disp_no_u = 0 ;
  61   1        disp_time = 0 ;
  62   1        DISP_CLK = 0;
  63   1        DISP_CS = 0;
  64   1        
  65   1        
  66   1        Disp_write( 0x0900 );		// no decode for digits7-0
  67   1        Disp_write( 0x0B06 );		// 7 Digits /last digit si alarm led
  68   1        Disp_write( 0x0C01 );		// normal operation 
  69   1        Disp_write( 0x0F00 );		// Testmode off
  70   1        Disp_write( 0x0A04 );		// 9/32 Bright
  71   1        
  72   1        for(i=0;i<7;i++)
  73   1            disp_memory[i] = disp_BLANK ;
  74   1         
  75   1        Disp_out();
  76   1      }
  77          
  78          /**************************************/
  79          /**************************************/
  80          
  81          
  82          void Disp_write( unsigned int disp_data )
  83          {
  84   1        unsigned char i = 16;
  85   1        
  86   1         DISP_CS = 0;            //MAX chip valid
  87   1        do
  88   1          {
  89   2              DISP_OUT = disp_data & 0x8000;
  90   2              disp_data <<= 1;
  91   2              DISP_CLK = 1;
  92   2              DISP_CLK = 0;
  93   2           } while( --i );
  94   1      
  95   1      //  DISP_OUT = 0;
  96   1        DISP_CS = 1;           //invalid
  97   1       
  98   1      }
  99          
 100          /**************************************/
 101          /**************************************/
 102          
 103          
 104          
 105          
 106          
 107          
 108          
 109          
 110          /**********************************************/
 111          /*     disp_memory                            */
 112          /**********************************************/
 113          
 114          void Get_dispdata(float disp_fdata)
 115          {
 116   1         unsigned char disp_byte ;
 117   1        unsigned char i;
C51 COMPILER V6.02  MAX7219                                                                09/10/2005 17:11:41 PAGE 3   

 118   1        if( disp_fdata == 0)
 119   1              { 
 120   2      		    for(i=0;i<4;i++)
 121   2      		      {
 122   3      			     disp_memory[i] = disp_0 ;
 123   3      				 if((dp_point == i)&&(i!=0))
 124   3      				     disp_memory[i]|=disp_DP;
 125   3      			  }
 126   2      			  return;
 127   2      		 }
 128   1        if(dp_point == ONE_BIT )
 129   1            disp_fdata *= 10.0 ;
 130   1        else if(dp_point == TWO_BIT )
 131   1            disp_fdata *= 100.0 ;
 132   1        else if(dp_point == THREE_BIT)
 133   1            disp_fdata *= 1000.0 ;
 134   1       
 135   1        
 136   1        i=0;
 137   1      
 138   1        while(i<6)
 139   1           {    
 140   2                disp_byte = (unsigned long int)disp_fdata%10;  //get disp (seg) data
 141   2                Convert_data(i,disp_byte);
 142   2                i++;
 143   2                disp_fdata /= 10.0 ;
 144   2           }
 145   1      	 return;
 146   1           
 147   1           
 148   1       }
 149          
 150          
 151          
 152          /*********************************************/
 153          /*********************************************/
 154          void Convert_data(unsigned char j, unsigned char seg_data)
 155          {        
 156   1           if(seg_data <= 9)
 157   1                disp_memory[j] = disp_data[seg_data];
 158   1       
 159   1      	if((j != 0)&&(dp_point ==j ))
 160   1      
 161   1      	   disp_memory[j] |= disp_DP ;   //disp DP
 162   1      	   return;
 163   1      	
 164   1       }
 165          
 166          
 167           /*************************************************/
 168           /*************************************************/
 169          
 170           void Disp_out(void)
 171           {
 172   1           unsigned char data  i;
 173   1           unsigned int byte ;
 174   1           unsigned int disp_seg ;
 175   1      /* repeat reset 7219 interface /2004-07-24 */
 176   1          Disp_write( 0x0900 );		// no decode for digits7-0
 177   1          Disp_write( 0x0B06 );		// 7 Digits /last digit si alarm led
 178   1          Disp_write( 0x0C01 );		// normal operation 
 179   1          Disp_write( 0x0F00 );		// Testmode off
C51 COMPILER V6.02  MAX7219                                                                09/10/2005 17:11:41 PAGE 4   

 180   1          Disp_write( 0x0A04 );		// 9/32 Bright
 181   1      /*  2004-07-24 over */     
 182   1      
 183   1           disp_seg = 0x100 ;            //seg0-seg6
 184   1           for(i=0;i<7;i++)
 185   1           {
 186   2           
 187   2           byte = disp_memory[i] + disp_seg ;
 188   2           Disp_write(byte) ;
 189   2           disp_seg = disp_seg + 0x100 ;   //next seg
 190   2      
 191   2           }
 192   1        }
 193          
 194            /************************************************/
 195            /************************************************/
 196          
 197          /************************************************/
 198          /************************************************/
 199          
 200          void Clear_disp_memory(void)
 201          {
 202   1       unsigned char i ;
 203   1       for(i=0;i<7;i++)
 204   1          disp_memory[i] = disp_BLANK;
 205   1      
 206   1       return;
 207   1      }
 208          
 209          /**************************************/
 210          /*************************************/
 211          void Convert_hdata(unsigned long int temp_data)
 212          {
 213   1       unsigned char i,disp_code;
 214   1       if(temp_data <= 99999)
 215   1       {
 216   2       	for(i=0;i<5;i++)
 217   2         	{
 218   3         		disp_code = temp_data%10 ;
 219   3         		if(disp_code <= 9)
 220   3             		disp_memory[i]=disp_data[disp_code];
 221   3      		temp_data=(unsigned int)(temp_data/10);
 222   3         }
 223   2       }
 224   1      
 225   1        return;
 226   1      
 227   1       }
 228          
 229           /*********************************/
 230           /*********************************/
 231           void Convert_ldata(unsigned int temp_data)
 232           {
 233   1        unsigned char i,byte;
 234   1        if(temp_data <= 9999)
 235   1        {
 236   2        	for(i=0;i<6;i++)
 237   2          {
 238   3            byte=temp_data%10;
 239   3            Convert_data(i,byte);
 240   3            temp_data=temp_data/10;
 241   3            }
C51 COMPILER V6.02  MAX7219                                                                09/10/2005 17:11:41 PAGE 5   

 242   2        }
 243   1         return;
 244   1       }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    604    ----
   CONSTANT SIZE    =     14    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      17
   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 + -