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

📄 iread.lst

📁 凌阳非接触式红外测温传感器的C51源程序。
💻 LST
字号:
C51 COMPILER V7.06   IREAD                                                                 07/31/2006 11:11:55 PAGE 1   


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

stmt level    source

   1          /*------------------------------------------------------------------------------
   2          ;    Copyright (C) 2006  WangChanghong INTEGRATED PRODUCTS, INC.
   3          ;    All rights reserved.
   4          ;    MCU:AT89s52 ,晶体频率:12MHz
   5          :    作者:汪长洪
   6          :    时间:2006年07月31日
   7          :    地点:威海
   8          ;-----------------------------ZyTemp红外测温仪程序-----------------------------*/ 
   9          #include <reg52.h>
  10          #define uchar unsigned char
  11          #define uint  unsigned int  
  12          /*----------------------------------工程说明--------------------------------------
  13          ;       工程名称:      ZyTemp.Uv2
  14          ;       功能描述:      测量环境温度和目标温度,并用键盘控制显示温度值,
  15          ;               按K1,显示目标温度
  16          ;               按K2,显示环境温度
  17          ;   IDE环境:   Keil uVision3 V3.31
  18          ;       硬件连接:      VCC-------VCC                
  19          ;               P1.0------Data
  20          ;                               P1.2------Clk
  21          ;               P1.4------ACK              
  22          ;               GND-------GND
  23          ;------------------------------------定义接口------------------------------------*/ 
  24          sbit TN_Data = P1^0;
  25          sbit TN_Clk  = P1^2;
  26          sbit TN_ACK  = P1^4;
  27          sbit key_1 = P2^2;
  28          sbit key_2 = P2^3;
  29          
  30          /*-----------------------------------变量列表------------------------------------*/
  31          unsigned char code keytab_1[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,
             -0x8e,0x89};//H: 0x89;//L: 0x87;//P: 0x8a;//Q: 0X98;
  32          unsigned char code keytab_2[]={0xef,0xdf,0xbf,0x7f};
  33          uchar  ReadData[5],iShow[5];
  34          
  35          /*-----------------------------------函数列表------------------------------------*/
  36          void display_1(uchar i,uchar num);                  //定位显示单个字符
  37          void display_2(void);                               //定位显示四个字符
  38          void TN_ReadData(uchar Flag);                                           //读数据        
  39          void TN_GetData(void);                              //计算数据
  40          
  41          /*----------------------------------主程序入口-----------------------------------*/
  42          void main()
  43          {
  44   1          TN_ACK=1;
  45   1              while(1)
  46   1              {
  47   2                      if(!key_1)
  48   2                      {
  49   3                              TN_ACK=0;
  50   3                              TN_ReadData(0x4c);                                //目标温度的第一个字节为0x4c
  51   3                      }
  52   2                      else if(!key_2)
  53   2                      {
  54   3                              TN_ACK=0;
C51 COMPILER V7.06   IREAD                                                                 07/31/2006 11:11:55 PAGE 2   

  55   3                              TN_ReadData(0x66);                                //环境温度的第一个字节为0x66
  56   3                      }
  57   2      
  58   2                      if((ReadData[0]==0x4c)&&(ReadData[4]==0x0d))         //每帧的最后一个字节为0x0d
  59   2                      {
  60   3                              TN_GetData();
  61   3                              display_2();
  62   3                      }
  63   2                      else if((ReadData[0]==0x66)&&(ReadData[4]==0x0d))    //每帧的最后一个字节为0x0d
  64   2                      {
  65   3                              TN_GetData();
  66   3                              display_2();
  67   3                      }    
  68   2              }
  69   1      }
  70          
  71          /*------------------------------定位显示单个字符-------------------------------*/
  72          void display_1(uchar i,uchar num)               
  73          {   
  74   1          P0=keytab_1[i];
  75   1              P2=keytab_2[num]; 
  76   1      }
  77          
  78          /*------------------------------定位显示四个字符-------------------------------*/
  79          void display_2(void)
  80          {
  81   1          uchar kk;
  82   1          display_1(iShow[3]&0x0f,3);                  //显示十位
  83   1              for(kk=200;kk>0;kk--);                           //延时
  84   1              display_1(iShow[2]&0x0f,2);                      //显示个位
  85   1              for(kk=200;kk>0;kk--);                           //延时
  86   1              display_1(iShow[1]&0x0f,1);              //显示小数第一位
  87   1              for(kk=200;kk>0;kk--);                           //延时
  88   1              display_1(iShow[0]&0x0f,0);                      //显示小数第二位
  89   1              for(kk=200;kk>0;kk--);                           //延时
  90   1      }
  91          
  92          /*------------------------------------读数据-------------------------------------*/
  93          void TN_ReadData(uchar Flag)    
  94          {
  95   1              uchar i,j,k;
  96   1              bit  BitState=0; 
  97   1              for(k=0;k<7;k++)                        //每次发七帧
  98   1              {       
  99   2                      for(j=0;j<5;j++)                    //每帧五个字节
 100   2                      {
 101   3                              for(i=0;i<8;i++)
 102   3                              {
 103   4                                      while(TN_Clk);
 104   4                                      BitState= TN_Data;
 105   4                                      ReadData[j]=ReadData[j]<<1;
 106   4                                      ReadData[j]=ReadData[j]|BitState;                           
 107   4                              while(!TN_Clk);
 108   4                           }
 109   3                      }
 110   2                      
 111   2                      if(ReadData[0]==Flag)  k=8;
 112   2              }
 113   1              TN_ACK=1;
 114   1      }
 115          
 116          /*-----------------------------------计算数据------------------------------------*/
C51 COMPILER V7.06   IREAD                                                                 07/31/2006 11:11:55 PAGE 3   

 117          void  TN_GetData(void)
 118          {
 119   1          int Temp;
 120   1          Temp=(ReadData[1]<<8)|ReadData[2];
 121   1          Temp = Temp/16 - 273.15;
 122   1          Temp=Temp*100;                               //温度值乘100,以方便计算小数点后两位
 123   1              iShow[4]=Temp/10000;                         //计算温度值的百位数
 124   1              iShow[3]=(Temp/1000);                        //计算温度值的十位数
 125   1              iShow[3]=iShow[3]%10;                        
 126   1              iShow[2]=(Temp/100);                         //计算温度值的个位数
 127   1          iShow[2]=iShow[2]%10;
 128   1              iShow[1]=(Temp/10);                          //计算温度值的小数点后第一位数
 129   1              iShow[1]=iShow[1]%10;
 130   1              iShow[0]=(Temp);                             //计算温度值的小数点后第二位数                         
 131   1              iShow[0]=iShow[0]%10;
 132   1      }
 133          
 134          
 135          
 136          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    335    ----
   CONSTANT SIZE    =     21    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     10       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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