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

📄 7219.lst

📁 用at89s52访问MAX7219(LED数码显示)
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.09   7219                                                                  08/23/2004 22:32:06 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE 7219
OBJECT MODULE PLACED IN 7219.OBJ
COMPILER INVOKED BY: C:\KEIL\C51\BIN\C51.EXE 7219.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include <reg51.h>
   2          #include <math.h>
   3          #include <stdio.h>
   4          #include <absacc.h>
   5          #include <intrins.h>
   6          #include <string.h>
   7          #include <stdlib.h>
   8          #define  True     1
   9          #define  False    0
  10          #define  Ctop_temper    75
  11          #define  Cbottom_temper 18
  12          #define  Ftop_temper    167
  13          #define  Fbottom_temper 64
  14          #define  Hot_time       30
  15          #define  Pre_time       10
  16          
  17          typedef unsigned char uchar;
  18          typedef unsigned int  uint;
  19          sfr WDTRST   = 0xA6;
  20          sbit Temper_add      = P1^0; //= P0^0;
  21          sbit Temper_subb     = P3^5; //= P0^1;
  22          sbit Time_add        = P0^1; //= P0^2;
  23          sbit Time_subb       = P2^3; //= P0^3;
  24          sbit Lamp_onoff      = P3^6; //= P0^4;
  25          sbit Lamp            = P3^4; //= P0^5;
  26          sbit Setup_lamp        = P2^6; //= P0^6;
  27          sbit setup_led         = P0^6;
  28          sbit Precontract_lamp  = P2^7; //= P0^7;
  29          
  30          sbit set_key   = P0^2; //= P2^0;
  31          sbit Off_power = P2^2; //= P2^1;
  32          sbit Choose_cf = P2^1; //= P2^2; 
  33          sbit Hot_up    = P1^1; //= P2^3;
  34          /**************** DS18B20 ********************/
  35          sbit TMDAT       = P1^2; //= P2^4;    
  36          /**************** Max7219 ********************/
  37          sbit M7219_in    = P0^5; 
  38          sbit M7219_cs    = P0^6; 
  39          sbit M7219_clock = P0^7; 
  40          /*********************************************/
  41          sbit Speak       = P1^3; //= P1^0;
  42          sbit Precontract = P2^0; //= P1^1;
  43          sbit Open_power  = P0^0; //= P1^2;
  44          sbit LED         = P3^7; //= P1^3;
  45          sbit Power_led   = P3^0;
  46          /* 定义调用子程序 */
  47          void  Max7219_send(uchar add, uchar dat);
  48          void temperature(bit C_f);
  49          bit   tmreset(void);
  50          uchar readbyte(void);
  51          void  delay3(uint Tm_count);
  52          void  writebyte(uchar dat);
  53          uchar read_temper(bit C_F);
  54          void  tmstart(void);
  55          void  Max7219_int(void);
C51 COMPILER V7.09   7219                                                                  08/23/2004 22:32:06 PAGE 2   

  56          void  disp(uchar y3,bit id);
  57          
  58          void  sound(bit f,uchar i);
  59          void  delay(uchar i);
  60          void  Watch(void);
  61          void shift8(uchar a);
  62          
  63          uchar TH0_T,TL0_T;
  64          bit   run;
  65          uint  V_ml;
  66          uchar bdata AD;
  67          sbit  AD_0=AD^0;
  68          sbit  AD_1=AD^1;
  69          sbit  AD_7=AD^7;
  70          uchar now_temper = 20;
  71          uchar  sys_1 ;
  72          uchar  sys_2 ;
  73          uchar  sys_3 ;
  74          /*********************/
  75          /*     演示主程序    */
  76          /*********************/
  77          
  78          void main()
  79          { uchar now_time , now_time2,count,Led_count;
  80   1        uchar system_count,top,bottom,Over_count;
  81   1        uint data1;
  82   1        bit CF;          /* 0=C,1=F */
  83   1        bit Set_flag,set_flag2,Over;
  84   1        uchar set_time = 0; /* work 时间 */
  85   1        uchar set_time2 = 0;/* no work */
  86   1        uchar set_temper = 42;
  87   1              top        = Ctop_temper;
  88   1                  bottom     = Cbottom_temper;
  89   1                      V_ml  = 0;                
  90   1                  TH1   = 0xFA;
  91   1              TL1   = 0xFa;
  92   1              TH0_T = 0;
  93   1              TL0_T = 0;
  94   1                  CF    = False;
  95   1                      delay(1);
  96   1                  Max7219_int();
  97   1                  delay3(800);
  98   1                  ES           = True;
  99   1              run          = True;
 100   1              Set_flag     = False;
 101   1                  set_flag2    = True;
 102   1              now_time     = 0;
 103   1              now_time2    = 0;
 104   1                  system_count = 0;
 105   1                      count        = 0;
 106   1                      Led_count    = 0;
 107   1                      Over_count   = 0;
 108   1                      LED          = False;
 109   1              Over         = False;
 110   1                      Watch();
 111   1                      if (sys_1==0x33 && sys_2==0x51 && sys_3==0x90)  goto Power; 
 112   1                      sys_1      = 0x33;
 113   1              sys_2      = 0x51;
 114   1                      sys_3      = 0x90;
 115   1              Max7219_send(0x0c, 0x00);
 116   1      /*****************************/
 117   1      while (Open_power)
C51 COMPILER V7.09   7219                                                                  08/23/2004 22:32:06 PAGE 3   

 118   1                                        {
 119   2                                               Watch();
 120   2                                               V_ml = 0;
 121   2                                               TR0  = 0;
 122   2                               delay3(10); 
 123   2                                        }
 124   1                                        do { Watch(); }
 125   1                                        while (!Open_power);
 126   1              Power:            Max7219_send(0x0c,0x01);
 127   1                                        sound(False,1);
 128   1                                        set_flag2    = True;
 129   1                                        LED          = True;
 130   1                                        Power_led    = False;
 131   1                                        
 132   1      /*****************************/
 133   1      
 134   1       while (1)
 135   1       {       
 136   2               Watch();
 137   2               SCON = 0x50;
 138   2               TMOD = 0x21; //TR1  = 1;
 139   2               EA   = 1; 
 140   2                       ET0  = 1;
 141   2               if (set_flag2) 
 142   2                       {
 143   3                              Led_count++;
 144   3                       }
 145   2                       if (Led_count >= 130)
 146   2                       {
 147   3                               LED = False;
 148   3                               Led_count = 0;
 149   3                                   set_flag2    = False;
 150   3                                   if (Set_flag) 
 151   3                                       {
 152   4                                  Set_flag = 0;  
 153   4                                                          Precontract_lamp = True;
 154   4                                                          Setup_lamp = True; 
 155   4                                                              system_count = 0;
 156   4                       } 
 157   3      
 158   3                       }
 159   2                       if (Lamp_onoff == False)    /* 开关灯控制 */
 160   2                       {
 161   3                                Lamp =~ Lamp; delay3(10);
 162   3                                        do { Watch(); }
 163   3                                        while (!Lamp_onoff);
 164   3                                        sound(False,1);
 165   3                                        Led_count = 0;
 166   3                                        LED = True;
 167   3                                        set_flag2    = True;
 168   3                       }
 169   2                       if (Off_power == False)    /* 开关控制 */
 170   2                       {
 171   3                     off:   delay3(10);
 172   3                                        now_time     = 0;
 173   3                        now_time2    = 0;
 174   3                            set_time     = 0;
 175   3                                        set_time2    = 0;
 176   3                            system_count = 0;
 177   3                                        count        = 0;
 178   3                                        Precontract_lamp = True;
 179   3                                        Setup_lamp   = True;
C51 COMPILER V7.09   7219                                                                  08/23/2004 22:32:06 PAGE 4   

 180   3                                        Hot_up       = True;
 181   3                                        LED          = False;
 182   3                                        Power_led    = True;
 183   3                        Lamp = True;
 184   3                                        do { Watch(); }
 185   3                        while (!Off_power);
 186   3                                        sound(False,1);
 187   3                                        Max7219_send(0x0c, 0x00);
 188   3                        delay3(10);
 189   3                                        Max7219_send(0x0c, 0x00);
 190   3                        while (Open_power)
 191   3                                        {
 192   4                                               V_ml = 0;
 193   4                                               TR0  = 0;
 194   4                                                       delay3(10);
 195   4                                                       Watch(); 
 196   4                                        }
 197   3                                        do { Watch(); }
 198   3                                        while (!Open_power);
 199   3                                        Max7219_send(0x0c,0x01);
 200   3                        delay3(10);
 201   3                        Max7219_send(0x0c,0x01);
 202   3                                        sound(False,1);
 203   3                                        set_flag2    = True;
 204   3                                        LED          = True;
 205   3                                        Power_led    = False;  
 206   3                       }
 207   2               if (Choose_cf == False) /* 华氏与温度转换 */
 208   2                       { 
 209   3                                  CF  = ~CF ;
 210   3                                          delay3(10); 
 211   3                                              do { Watch(); }
 212   3                                              while (!Choose_cf); 
 213   3                                              if (CF) 
 214   3                                              { 
 215   4                                                   top = Ftop_temper; bottom = Fbottom_temper; data1 = set_temper;
 216   4                                                       set_temper = (data1*9)/5+32;
 217   4                                              }
 218   3                                                else  
 219   3                                              { 
 220   4                                                   top = Ctop_temper; bottom = Cbottom_temper; data1 = set_temper;
 221   4                                                       set_temper = (data1 - 32)*5/9;
 222   4                                              }
 223   3                                              sound(False,1);
 224   3                                              Led_count = 0;
 225   3                                          LED = True;
 226   3                                              set_flag2    = True;
 227   3                       }
 228   2                       if (set_key == False)   /* 设置键处理 */
 229   2                       { 
 230   3                                 switch (system_count)
 231   3                                         {
 232   4                                case 0: 
 233   4                                {    
 234   5                                       Set_flag = 1;  Setup_lamp = False; Precontract_lamp = True; system_count+
             -+;                                                                   Led_count++;               
 235   5                                                                       if (set_time==0 || set_time>90) set_time = Hot_time;
 236   5                                                                       set_time2 = 0;

⌨️ 快捷键说明

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