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

📄 adccaijinonidianya.lst

📁 主要演示使用ADC0832通道1(CH1)采集模拟电压,并显示在数码管上 由于ADC0832的 Vref=5V,故当外部输入为5V时,转换值实际为255(#0FFH) 当然也可以直接用手按用来模拟
💻 LST
字号:
C51 COMPILER V8.09   ADCCAIJINONIDIANYA                                                    11/21/2007 17:53:47 PAGE 1   


C51 COMPILER V8.09, COMPILATION OF MODULE ADCCAIJINONIDIANYA
OBJECT MODULE PLACED IN C:\DOCUME~1\ADMINI~1\桌面\ADC采~1\ADCCAIJINONIDIANYA.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\DOCUME~1\ADMINI~1\桌面\ADC采~1\ADCCAIJINONIDIANYA.C DB SB OE OT(0)

line level    source

   1          /************************************************************
   2          作者:邱星凌
   3          版本:3.0
   4          描述:主要演示使用ADC0832通道1(CH1)采集模拟电压,并显示在数码管上
   5          由于ADC0832的 Vref=5V,故当外部输入为5V时,转换值实际为255(#0FFH)
   6          当然也可以直接用手按用来模拟0-5V的电压。
   7          硬件:在:"AD输入口"的"CH1"上加0-5V的电压,并调节大小,观查显示变化
   8          *************************************************************/
   9          
  10          #include <reg52.h>
  11          #define FOSC  (12000000UL)
  12          #define OSC  (12)
  13          #define TIMER0 1
  14          typedef unsigned char uchar;
  15          typedef unsigned int uint;
  16          #define T_05ms  (65536-(uchar)(FOSC/(12*200)))
  17          code scan[6]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};
  18          code scan1[6]={0x7D,0xBD,0xDD,0xED,0xF5,0xF9};
  19          code v[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
  20          uchar a[6]={0xFF,0xFF,0xFF,0,0,0};
  21          uchar a1=0,c=0;  //采集电压转换结果
  22          uchar b=0;   
  23          uchar kg=0,n=0,m=0;//标志变量
  24          uchar i=0,j=0,i1=0,i2=0,i3=0,i4=0;  //循环与延时变量
  25          sbit ADC_CS=P3^5;
  26          sbit ADC_CLK=P2^1;
  27          sbit ADC_DI=P3^6;
  28          sbit ADC_DO=P3^7;
  29          bit FADC_CLK;  //ADC_CLK的标志变量
  30          /*========延时函数============*/
  31          void delay(void)
  32          {
  33   1          for(i=0;i<5;i++)
  34   1          {
  35   2             for(j=0;j<10;j++) ;
  36   2          }
  37   1      }
  38          
  39          void delay1(void)
  40          {
  41   1         for(i1=0;i1<3;i1++);
  42   1      }
  43          
  44          void delay2(void)
  45          {
  46   1         for(i2=0;i2<3;i2++);
  47   1      }
  48          
  49          /*==============自定义脉冲函数================*/
  50          void pulsh(void)
  51          {
  52   1         FADC_CLK=1;
  53   1         ADC_CLK=1;
  54   1         delay1();
  55   1         ADC_CLK=0;
C51 COMPILER V8.09   ADCCAIJINONIDIANYA                                                    11/21/2007 17:53:47 PAGE 2   

  56   1         FADC_CLK=0;
  57   1         delay1();
  58   1      }
  59          
  60          /*=============二进制到bcd码的转换====================*/
  61          void bin_bcd(void)
  62          {
  63   1         b=a1/10;
  64   1         a[5]=a1%10;
  65   1         a[4]=b%10;
  66   1         a[3]=b/10;
  67   1         a1=0;
  68   1         b=0;
  69   1      }
  70          
  71          /*==========ADC采集函数电压转换============*/
  72          void ADC_CH1(void)
  73          {
  74   1         ADC_CS=0;
  75   1         m++;   //NOP一下
  76   1         ADC_CS=1;
  77   1         m--;
  78   1         delay2();
  79   1         ADC_CS=0;
  80   1         ADC_DI=1;
  81   1         pulsh();
  82   1         pulsh();
  83   1         pulsh();
  84   1         for(i3=0;i3<8;i3++)
  85   1         {
  86   2             pulsh();
  87   2             a1 |= ADC_DO;
  88   2             a1=a1<<1;
  89   2         }
  90   1         c=a1;
  91   1         pulsh();
  92   1         a1=0;
  93   1         for(i4=0;i4<8;i4++)
  94   1         {
  95   2            pulsh();
  96   2            a1 |=ADC_DO;
  97   2            a1=a1<<1;  //此处a已经清零了,所有可以用同样地方法
  98   2         }
  99   1         if(c==a1)
 100   1         {
 101   2             n=1;
 102   2             ADC_CS=1;
 103   2             ADC_CLK=0;
 104   2             ADC_DI=1;
 105   2             ADC_DO=1;  
 106   2         }
 107   1      }
 108          void ADC_CH0(void)
 109          {
 110   1         ADC_CS=0;
 111   1         m++;   //NOP一下
 112   1         ADC_CS=1;
 113   1         m--;
 114   1         delay2();
 115   1         ADC_CS=0;
 116   1         ADC_DI=1;
 117   1         pulsh();
C51 COMPILER V8.09   ADCCAIJINONIDIANYA                                                    11/21/2007 17:53:47 PAGE 3   

 118   1         pulsh();
 119   1         ADC_DI=0;
 120   1         pulsh();
 121   1         ADC_DI=1;
 122   1         for(i3=0;i3<8;i3++)
 123   1         {
 124   2             pulsh();
 125   2             a1 |= ADC_DO;
 126   2             a1=a1<<1;
 127   2         }
 128   1         c=a1;
 129   1         pulsh();
 130   1         a1=0;
 131   1         for(i4=0;i4<8;i4++)
 132   1         {
 133   2            pulsh();
 134   2            a1 |=ADC_DO;
 135   2            a1=a1<<1;  //此处a已经清零了,所有可以用同样地方法
 136   2         }
 137   1         if(c==a1)
 138   1         {
 139   2             n=1;
 140   2             ADC_CS=1;
 141   2             ADC_CLK=0;
 142   2             ADC_DI=1;
 143   2             ADC_DO=1;  
 144   2         }
 145   1      }
 146          
 147          
 148          /*==================中断服务函数===================*/
 149          static void Timer0_isr(void) interrupt TIMER0
 150          {
 151   1         TR0=0;
 152   1         TH0=T_05ms/256;
 153   1         TL0=T_05ms%256;
 154   1         TR0=1;
 155   1         switch (kg)
 156   1         {
 157   2             case 0:
 158   2                   if(FADC_CLK==1)
 159   2                   {
 160   3                      P2=scan[kg];
 161   3                      P0=0xFF;
 162   3                   }
 163   2                   else
 164   2                   {
 165   3                        P2=scan1[kg];
 166   3                        P0=0xFF;
 167   3                   }
 168   2                   break;
 169   2             case 1:
 170   2                   if(FADC_CLK==1)
 171   2                   {
 172   3                      P2=scan[kg];
 173   3                      P0=v[a[kg]];
 174   3                   }
 175   2                   else
 176   2                   {
 177   3                        P2=scan1[kg];
 178   3                        P0=v[a[kg]];
 179   3                   }
C51 COMPILER V8.09   ADCCAIJINONIDIANYA                                                    11/21/2007 17:53:47 PAGE 4   

 180   2                   break;
 181   2             case 2:
 182   2                   if(FADC_CLK==1)
 183   2                   {
 184   3                      P2=scan[kg];
 185   3                      P0=v[a[kg]];
 186   3                   }
 187   2                   else
 188   2                   {
 189   3                        P2=scan1[kg];
 190   3                        P0=v[a[kg]];
 191   3                   }
 192   2                   break;
 193   2             case 3:
 194   2                   if(FADC_CLK==1)
 195   2                   {
 196   3                      P2=scan[kg];
 197   3                      P0=v[a[kg]];
 198   3                   }
 199   2                   else
 200   2                   {
 201   3                        P2=scan1[kg];
 202   3                        P0=v[a[kg]];
 203   3                   }
 204   2                   break;
 205   2             case 4:
 206   2                   if(FADC_CLK==1)
 207   2                   {
 208   3                      P2=scan[kg];
 209   3                      P0=v[a[kg]];
 210   3                   }
 211   2                   else
 212   2                   {
 213   3                        P2=scan1[kg];
 214   3                        P0=v[a[kg]];
 215   3                   }
 216   2                   break;
 217   2             case 5:
 218   2                   if(FADC_CLK==1)
 219   2                   {
 220   3                      P2=scan[kg];
 221   3                      P0=v[a[kg]];
 222   3                   }
 223   2                   else
 224   2                   {
 225   3                        P2=scan1[kg];
 226   3                        P0=v[a[kg]];
 227   3                   }
 228   2                   break;
 229   2             default :
 230   2                     break;
 231   2         }
 232   1         kg++;
 233   1         if(kg==6)
 234   1         {
 235   2             kg=0;
 236   2         }
 237   1      }
 238          
 239          /*====================中断初始函数==========================*/
 240          static void Timer0_initialize(void)
 241          {
C51 COMPILER V8.09   ADCCAIJINONIDIANYA                                                    11/21/2007 17:53:47 PAGE 5   

 242   1          EA=0;
 243   1          TR0=0;
 244   1          TMOD=0x11;
 245   1          TH0=T_05ms/256;
 246   1          TL0=T_05ms%256;
 247   1          TF0=0;
 248   1          PT0=1;
 249   1          ET0=1;
 250   1          TR0=1;
 251   1          EA=1;  
 252   1      }
 253          
 254          void main (void)
 255          {
 256   1         P0=0xFF;
 257   1         P1=0xFF;
 258   1         P2=0xFF;
 259   1         P3=0xFF;
 260   1         Timer0_initialize();
 261   1         delay();
 262   1         while(1)
 263   1         {
 264   2           while(n!=1)
 265   2           {
 266   3              ADC_CH1();
 267   3              ADC_CH0();
 268   3           }
 269   2           bin_bcd();
 270   2           delay();
 271   2           delay();
 272   2           n=0;
 273   2         }
 274   1      }
C51 COMPILER V8.09   ADCCAIJINONIDIANYA                                                    11/21/2007 17:53:47 PAGE 6   

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P0 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0080H  1
P1 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0090H  1
P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
ADC_CLK. . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A1H  1
EA . . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00AFH  1
IE . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A8H  1
delay. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
a1 . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0000H  1
uchar. . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_CHAR   -----  1
IP . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B8H  1
i1 . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0001H  1
i2 . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0002H  1
i3 . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0003H  1
i4 . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0004H  1
main . . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
scan . . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0000H  12
pulsh. . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
SCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0098H  1
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
TCON . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0088H  1
ADC_DI . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B6H  1
ADC_DO . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B7H  1
ADC_CS . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B5H  1
uint . . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
delay1 . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
delay2 . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
bin_bcd. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
ET0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00A9H  1
FADC_CLK . . . . . . . . . . . . . . .  PUBLIC   DATA   BIT      0000H  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
Timer0_initialize. . . . . . . . . . .  STATIC   CODE   PROC     0000H  -----
TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
kg . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0005H  1
PT0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      00B9H  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
scan1. . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    000CH  12
a. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   ARRAY    0006H  6
b. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000CH  1
c. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000DH  1
Timer0_isr . . . . . . . . . . . . . .  STATIC   CODE   PROC     0000H  -----
ADC_CH0. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
ADC_CH1. . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
T2CON. . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00C8H  1
i. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000EH  1
j. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   000FH  1
m. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0010H  1
n. . . . . . . . . . . . . . . . . . .  PUBLIC   DATA   U_CHAR   0011H  1
v. . . . . . . . . . . . . . . . . . .  PUBLIC   CODE   ARRAY    0018H  20
PSW. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00D0H  1


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1114    ----
   CONSTANT SIZE    =     44    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
C51 COMPILER V8.09   ADCCAIJINONIDIANYA                                                    11/21/2007 17:53:47 PAGE 7   

   DATA SIZE        =     18    ----
   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 + -