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

📄 main.lst

📁 通过adc0809采集电压
💻 LST
字号:
C51 COMPILER V7.50   MAIN                                                                  07/05/2008 14:59:22 PAGE 1   


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

line level    source

   1          
   2          /*
   3          ****************************************************
   4          
   5                          
   6          
   7          ****************************************************
   8          */
   9          
  10          #include <reg52.H>
  11          #include "Typedef.H"
  12          #include "UserDef.H"
  13          #include "Disp.H"
  14          #include "ADC0809.H"
  15          #include "TLC0832.H"
  16          #include "DAC0832.H"
  17          
  18          /* 常数定义 */
  19          #define T_ADDA  10                              //ADDA周期:10ms
  20          
  21          /*---------------------<<< 修改1 >>>---------------------------------*/
  22          //      按照实际数值修改,可用电压探针查看相应IC的REF引脚电压
  23          //      注:TLC0832使用5V的固定电压作为基准电压值
  24          #define V_REF_AD0       5.0             //ADC0809的基准电压值
  25          #define V_REF_AD1       5.0             //TLC0832的基准电压值
  26          #define V_REF_DA        5.0             //DAC0832的基准电压值
  27          /*--------------------------------------------------------------------*/
  28          
  29          
  30          /*  全局变量 */
  31          bit bDispRef = FALSE;           //信号灯:显示更新时间到
  32          bit bADDARef = FALSE;           //信号灯:ADDA采样时间到
  33          
  34          
  35          /***************************************
  36          
  37                  
  38          
  39          ****************************************/
  40          void main(void)
  41                  {
  42   1              INT8U AD0,AD1,DA;
  43   1              float Volt_AD0,Volt_AD1,Volt_DA;
  44   1      
  45   1              //初始化
  46   1              TMOD = 0x11;
  47   1              TH0 = (INT8U)(KTDLY>>8);
  48   1              TL0 = (INT8U)(KTDLY);
  49   1              TR0 = 1;
  50   1              
  51   1              ET0 = 1;
  52   1              EA = 1;
  53   1      
  54   1              DispInit();             //LCD初始化
  55   1              AD0809_init();  //AD0809初始化
C51 COMPILER V7.50   MAIN                                                                  07/05/2008 14:59:22 PAGE 2   

  56   1      
  57   1              /* LCD清屏 */
  58   1              DispCls();
  59   1      
  60   1              /* 显示固定的文字 */
  61   1              DispXYSet(0,20);
  62   1              DispHZ(2);
  63   1              DispHZ(3);
  64   1      /*----------------------<<< 修改2 >>>--------------------------------*/
  65   1      // 液晶屏幕上显示“数据采集”的汉字,现只有显示“数据”的程序。
  66   1      // 请补充显示“采集”的相关程序及补充字库中的汉字字模
  67   1      // 字模的获取通过工具软件实现
  68   1      // 注:汉字字模在font.h中的FontHZ14x14数组
  69   1              DispHZ(4);
  70   1              DispHZ(5);
  71   1      /*--------------------------------------------------------------------*/
  72   1      
  73   1              DispFontSet(1);         
  74   1              DispXYSet(3,0);
  75   1              DispStr("AD0=");
  76   1              DispXYSet(5,0);
  77   1              DispStr("AD1=");
  78   1              DispXYSet(7,0);
  79   1              DispStr("DA =");
  80   1      
  81   1              
  82   1              
  83   1              while(TRUE)
  84   1                      {
  85   2                      /* 显示扫描刷新,输出可变的文字 */
  86   2                      if (bDispRef == TRUE)
  87   2                              {
  88   3                              bDispRef = FALSE;
  89   3      
  90   3                              // 显示当前的AD、DA数值
  91   3                              DispFontSet(1);
  92   3                              DispXYSet(3,35);
  93   3                              DispInt(AD0,3);
  94   3                              DispXYSet(5,35);
  95   3                              DispInt(AD1,3);
  96   3                              DispXYSet(7,35);
  97   3                              DispInt(DA,3);
  98   3      
  99   3                              // 显示当前的AD、DA所对应的实际电压值
 100   3                              DispFontSet(0);
 101   3                              DispXYSet(3,64);
 102   3                              DispFloat(Volt_AD0,6);  DispChr('V');
 103   3                              DispXYSet(5,64);
 104   3                              DispFloat(Volt_AD1,6);  DispChr('V');
 105   3                              DispXYSet(7,64);
 106   3                              DispFloat(Volt_DA,6);   DispChr('V');
 107   3                              }
 108   2      
 109   2                      /* ADDA采样,进行AD、DA转换并计算AD、DA值对应的实际电压值 */
 110   2                      if (bADDARef == TRUE)
 111   2                              {
 112   3                              bADDARef = FALSE;
 113   3                              AD0 = AD0809(0);
 114   3                              AD1 = TLC0832();
 115   3                              DA = AD0-AD1;
 116   3                              Dac0832(DA);
 117   3      /*----------------------<<< 修改3 >>>---------------------------------*/
C51 COMPILER V7.50   MAIN                                                                  07/05/2008 14:59:22 PAGE 3   

 118   3      // 根据公式计算AD,DA所对应的实际电压值
 119   3                              Volt_AD0 = AD0 / 256.0 * V_REF_AD0;
 120   3                              Volt_AD1 = AD1 / 256.0 * V_REF_AD1;
 121   3                                                                                                                                              //根据DAC0832的外围硬件电路,选择下列2个公示中的一个
 122   3                              Volt_DA = (signed char)(DA - 128) / 128.0 * V_REF_DA;   //双极性输出
 123   3      //                      Volt_DA = -1.0 * DA / 256.0 * V_REF_DA;                                 //单极性输出
 124   3      /*--------------------------------------------------------------------*/
 125   3                              }
 126   2                      }
 127   1              }
 128          
 129          
 130          
 131          
 132          /*************************************
 133          
 134                  定时器中断程序 
 135          
 136          **************************************/
 137          void int_t0(void) interrupt 1 using 1
 138                  {
 139   1              static int cnt = 0;
 140   1      
 141   1              TH0 = (unsigned char)(KTDLY>>8);
 142   1              TL0 = (unsigned char)(KTDLY);
 143   1      
 144   1              cnt ++;
 145   1      
 146   1              /* 显示扫描信号灯  */
 147   1              if ((cnt % T_DISPREF) == 0)
 148   1                      {
 149   2                      bDispRef = TRUE;
 150   2                      }
 151   1              
 152   1              /* ADDA采样信号灯  */
 153   1              if ((cnt % T_ADDA) == 0)
 154   1                      {
 155   2                      bADDARef = TRUE;
 156   2                      }
 157   1              
 158   1              }
 159          
 160          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    457    ----
   CONSTANT SIZE    =     15    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2      15
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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