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

📄 temperature_ad.lst

📁 汽车ABS系统车速显示和自动空调系统温度显示
💻 LST
字号:
C51 COMPILER V7.50   TEMPERATURE_AD                                                        11/06/2008 20:49:04 PAGE 1   


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

line level    source

   1          //-----------------------------------------------------------------------------
   2          // JDCS.c
   3          //-----------------------------------------------------------------------------
   4          //
   5          //-----------------------------------------------------------------------------
   6          
   7          //-----------------------------------------------------------------------------
   8          // Includes
   9          //-----------------------------------------------------------------------------
  10          #include <REG52.h>                 // SFR declarations
  11          #include "I2C.h"
  12          #include "ZLG7290.h"
  13          #include <intrins.h>
  14          #include <absacc.h>
  15          #include <stdio.h>
  16          #include <math.h>
  17          
  18          
  19          #define uchar unsigned char
  20          #define uint unsigned int
  21          
  22          sbit  IOclk  =     P1^0; //AD时钟信号
  23          sbit  Dout   =     P1^1; //AD数据信号
  24          sbit  ADcs   =     P1^2; //AD片选信号 
  25          
  26          
  27          //-----------------------------------------------------------------------------
  28          //全局变量定义
  29          //-----------------------------------------------------------------------------
  30          
  31          //-----------------------------------------------------------------------------
  32          // 函数原型定义
  33          //-----------------------------------------------------------------------------
  34          void  INT0_Init(void);                   //外部中断初始化,该中断用于ZKG7290的键盘中断
  35          //ZLG7290显示与键盘测试例程
  36          void INT0_SVC();
  37          void Delay1(unsigned int);
  38          void Delay(uint);
  39          void ZLG7290_Init();
  40          void Display_Temperature(float );
  41          uchar sample(void);
  42          unsigned int SystemCount=0;
  43          unsigned long FreqOne=0;
  44          unsigned long FreqCountOne=0;
  45          //-----------------------------------------------------------
  46          //函数:Delay1()
  47          
  48          //------------------------------------------------------------
  49          void Delay1(unsigned int t)
  50          {
  51   1         int i, j;
  52   1         for(i=1;i<t;i++)
  53   1         {
  54   2            for (j=1;j<100;j++) ;
  55   2         }
C51 COMPILER V7.50   TEMPERATURE_AD                                                        11/06/2008 20:49:04 PAGE 2   

  56   1      }
  57          
  58          /*********************************
  59                BASE  DRIVE
  60          **********************************/
  61          void DELAY(uint t)
  62          {
  63   1              while(t!=0)
  64   1              t--;
  65   1      }
  66          
  67          
  68          /************************************
  69                     AD DRIVE
  70          *************************************/
  71          uchar sample(void)
  72          {
  73   1          uchar i;
  74   1          uint temp=0;
  75   1          IOclk=0;
  76   1              ADcs=0;
  77   1              DELAY(4);
  78   1          for(i=0;i<10;i++)
  79   1          {
  80   2             IOclk=1;
  81   2             temp=temp<<1;
  82   2                 CY=Dout;
  83   2             if(CY)             //必须含有 "INTRINS.H"文件
  84   2             {
  85   3                temp|=0x01;
  86   3             }
  87   2             DELAY(2);
  88   2             IOclk=0;
  89   2             DELAY(2);
  90   2          }
  91   1          
  92   1              ADcs=1;
  93   1              temp=temp>>2;
  94   1              return temp;  
  95   1          
  96   1      } 
  97          
  98          
  99          
 100          
 101          //在数码管上显示电压
 102          void Display_Temperature(float tem1)
 103          {
 104   1         unsigned char d ;
 105   1         unsigned int flag;   //为0显示正,为1显示负
 106   1         float tem;
 107   1         if (tem1 >= 0) flag = 0;
 108   1         else 
 109   1            flag = 1;
 110   1         tem = abs(tem1);
 111   1         
 112   1         if (tem >= 100) 
 113   1         {  
 114   2                if (flag == 1) ZLG7290_WriteReg(ZLG7290_DpRam4,0x02);
 115   2                else ZLG7290_WriteReg(ZLG7290_DpRam4,0x00);
 116   2            d = tem / 100;
 117   2            ZLG7290_Download(3,0,0,d);
C51 COMPILER V7.50   TEMPERATURE_AD                                                        11/06/2008 20:49:04 PAGE 3   

 118   2            tem = tem - d * 100;
 119   2            d = tem / 10;
 120   2            ZLG7290_Download(2,0,0,d);
 121   2            d = tem - d * 10;
 122   2            ZLG7290_Download(1,0,0,d);
 123   2         }
 124   1         else if (tem >= 10) 
 125   1         {
 126   2                if (flag == 1) ZLG7290_WriteReg(ZLG7290_DpRam4,0x02);
 127   2                else ZLG7290_WriteReg(ZLG7290_DpRam4,0x00);
 128   2            tem = tem * 10;
 129   2            d = tem / 100;
 130   2            ZLG7290_Download(3,0,0,d);
 131   2            tem = tem - d * 100;
 132   2            d = tem / 10;
 133   2            ZLG7290_Download(2,1,0,d);
 134   2            d = tem - d * 10;
 135   2            ZLG7290_Download(1,0,0,d);
 136   2         } 
 137   1         else 
 138   1         {
 139   2                if (flag == 1) ZLG7290_WriteReg(ZLG7290_DpRam4,0x02);
 140   2                else ZLG7290_WriteReg(ZLG7290_DpRam4,0x00);
 141   2            tem = tem * 100;
 142   2            d = tem / 100;
 143   2            ZLG7290_Download(3,1,0,d);
 144   2            tem = tem - d * 100;
 145   2            d = tem / 10;
 146   2            ZLG7290_Download(2,0,0,d);
 147   2            d = tem - d * 10;
 148   2            ZLG7290_Download(1,0,0,d);
 149   2         } 
 150   1      
 151   1         /*
 152   1         if (tem >= 10) 
 153   1         {
 154   1            //if (flag == 1) ZLG7290_SegOnOff(7,1);
 155   1                if (flag == 1) ZLG7290_WriteReg(ZLG7290_DpRam1,0x02);
 156   1                else ZLG7290_WriteReg(ZLG7290_DpRam1,0x00);
 157   1                d = tem / 10;
 158   1            ZLG7290_Download(2,0,0,d);
 159   1            d = tem - d * 10;
 160   1            ZLG7290_Download(3,0,0,d);
 161   1         } 
 162   1         else 
 163   1         {
 164   1            //if (flag == 1) ZLG7290_SegOnOff(7,1);
 165   1                if (flag == 1) ZLG7290_WriteReg(ZLG7290_DpRam1,0x02);
 166   1                else ZLG7290_WriteReg(ZLG7290_DpRam1,0x00);
 167   1            tem = tem * 10;
 168   1            d = tem / 10;
 169   1            ZLG7290_Download(2,1,0,d);
 170   1            d = tem - d * 10;
 171   1            ZLG7290_Download(3,0,0,d);
 172   1         } 
 173   1         */
 174   1      }
 175          
 176          
 177          
 178          void main()
 179          {
C51 COMPILER V7.50   TEMPERATURE_AD                                                        11/06/2008 20:49:04 PAGE 4   

 180   1        // uchar temp;
 181   1         int i,j;
 182   1         float vx;
 183   1        
 184   1         EA = 0;
 185   1         INT0_Init();                        //初始化外部中断,该函数打开了EA
 186   1         ZLG7290_Init();                     //系统初始化
 187   1         EA = 1;
 188   1         while(1)
 189   1         {
 190   2           // temp = sample(); 
 191   2               // tempf = temp;
 192   2           // vx = (tempf/256)*5.0;
 193   2          //  temperature = -25 * (vx) +70;
 194   2           // Display_Temperature(temperature);
 195   2                vx=(FreqOne/43.0)*2*3.14*0.262*36/10.0;   //速度=count()*2*3.14*0.262*3600/1000/6
 196   2           // vx=(FreqOne/1.0);  
 197   2             Display_Temperature(vx);
 198   2            for (i=1;i<20;i++)
 199   2                   for (j=1;j<400;j++) ;
 200   2         }
 201   1      }
 202          
 203          
 204          
 205          //--------------------------------------------------------------------------------
 206          //外部中断初始化函数
 207          //--------------------------------------------------------------------------------
 208          void INT0_Init(void)
 209          {
 210   1          //TCON=0x05;
 211   1          T2CON=0x00;
 212   1      //      T2MOD=0x00;
 213   1              //定时10ms
 214   1              RCAP2H =0xDC;
 215   1              RCAP2L =0x00;
 216   1              TH2=0xDC;
 217   1              TL2=0x00;
 218   1          ET2=1;      
 219   1          IT0 = 1;                //负边沿触发中断
 220   1          EX0 = 1;                //允许外部中断0
 221   1              //IT1 = 1;
 222   1          //EX1=1;
 223   1              TR2=1;
 224   1      }
 225          
 226          //---------------------------------------------------------------
 227          //函数:ZLG7290_Init()
 228          //功能:ZLG7290初始化
 229          //-----------------------------------------------------------------
 230          void ZLG7290_Init()
 231          {
 232   1         I2C_Init();
 233   1         Delay1(30); //等待ZLG7290 复位完毕。延时完毕定时器0被关闭。
 234   1      }
 235          
 236          void timer2(void) interrupt 5 
 237           {
 238   1                      SystemCount++;
 239   1                      if(SystemCount>=37)
 240   1                      {
 241   2                              TR2=0;
C51 COMPILER V7.50   TEMPERATURE_AD                                                        11/06/2008 20:49:04 PAGE 5   

 242   2                              SystemCount=0;
 243   2                              FreqOne=FreqCountOne;
 244   2                      //      FreqTwo=FreqCountTwo;
 245   2                              FreqCountOne=0;
 246   2                      //      FreqCountTwo=0;
 247   2                              TH2=0xDC;
 248   2                              TL2=0x00;
 249   2                              TR2=1;
 250   2                      }
 251   1                                              
 252   1              TF2=0;
 253   1         } 
 254          void External0(void) interrupt 0  using 0//外部中断,用来检测和计算频率
 255           {
 256   1              FreqCountOne++;
 257   1       } 
 258          //#include <REGX51.H>


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    862    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10      11
   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 + -