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

📄 adc0804.lst

📁 51单片机与adc0804为主要芯片的数字电压表的源程序
💻 LST
字号:
C51 COMPILER V8.05a   ADC0804                                                              02/24/2009 11:35:15 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE ADC0804
OBJECT MODULE PLACED IN adc0804.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE adc0804.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*****************************************************************/ 
   2          /*                                                               */                                       
             -                         
   3          /*名称:                 AD转换+显示程序                         */                                       
             -                                                                                                                        
             -            
   4          /*功能:           读取当前输入的转换电压,由数码管显示出来。    */                                       
             -             
   5          /*难度等级:                   中                                */                                       
             -                              
   6          /* 作者:                  zengrenliang                          */
   7          /* 版权:           http://www.51kaifa.com                       */
   8          /*编写日期:        2006.05.19                                   */                                       
             -                                                                                                                        
             -                                              
   9          /*****************************************************************/
  10          
  11          
  12          #include<reg52.h>
  13          #define  uchar  unsigned char
  14          
  15          sbit LED_Disp = P3^3;//显示段码锁存信号
  16          sbit Read_AD = P3^5;//P0扩展锁存信号,用于读键选通
  17          //行扫描数组
  18          uchar code scan[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//row0--row7
  19          //数码管显示的段码表
  20          uchar code table[18] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,//0,1,2,3,4,5
  21                                 0x82,0xf8,0x80,0x90,0x88,0x83,//6,7,8,9,a,b
  22                                 0xc6,0xa1,0x86,0x8e,0xbf,0xff};//c,d,e,f,-,空格
  23          
  24          uchar dispbuf[8]; //显示缓冲区                         
  25          
  26          /*****************************延时函数**************************/
  27          
  28          void delay (unsigned int us)  
  29          {
  30   1        while(us--);
  31   1      }
  32          
  33          /******************************显示+读键*************************/
  34          
  35          void ledscan()
  36          {  unsigned char i,dispcode;  
  37   1      
  38   1          for(i=0;i<8;i++){
  39   2             LED_Disp =0;
  40   2             dispcode =table[dispbuf[i]]; //取一行显示数据
  41   2             LED_Disp =1;
  42   2             if(i==2)
  43   2              P0 = dispcode & 0x7f; 
  44   2             else 
  45   2              P0 = dispcode;
  46   2             P2 = scan[i];//取row0--row7行扫描数据
  47   2             delay(50); //延时50us
  48   2             P2 = 0xff;
C51 COMPILER V8.05a   ADC0804                                                              02/24/2009 11:35:15 PAGE 2   

  49   2             }
  50   1       }
  51          
  52          
  53          /*******************0804转换程序********************/
  54          void  ADC0804(void)
  55          {  uchar adc0804value;
  56   1         float voltage,decimal;
  57   1         unsigned int intvolt,tofloat;
  58   1         Read_AD = 0;
  59   1         P1 = 0xbf;
  60   1         Read_AD = 1;//片选ADC0804
  61   1         P0 = 0xff;//向ADC0804发任何数据,0804开始转换
  62   1         WR = 0;//向ADC0804写数据
  63   1         WR = 1;
  64   1         delay(100);//等待转换完成
  65   1         RD = 0;
  66   1         adc0804value=P0;//读取转换后的值
  67   1         RD = 1;
  68   1         Read_AD = 0;
  69   1         P1 = 0xff;
  70   1         Read_AD = 1;
  71   1         voltage = adc0804value;
  72   1         voltage = voltage * 0.0391;//将二进制字节数据变成实际电压值   10/256 = 0.0196
  73   1         intvolt = voltage;//取整数部分
  74   1         tofloat = intvolt; 
  75   1         decimal = voltage - tofloat;//取小数部分
  76   1         decimal = decimal * 100;//小数部分取两位
  77   1         dispbuf[2] = intvolt % 0x0a;//整数部分个位
  78   1         intvolt = decimal;
  79   1         dispbuf[4] = intvolt % 0x0a;//小数部分低位
  80   1         intvolt = intvolt / 0x0a;
  81   1         dispbuf[3] = intvolt % 0x0a;//小数部分高位 
  82   1      }
  83          
  84          
  85          /*******************************主函数***********************/
  86          
  87          main()
  88          { uchar i; 
  89   1        Read_AD = 0;
  90   1        P1 = 0xff;
  91   1        Read_AD = 1;
  92   1        P1 = 0x40;//点亮A/D转换指示灯  
  93   1        for(i=0;i<8;i++)
  94   1         dispbuf[i] = 17;
  95   1        while(1){
  96   2         for(i=0;i<10;i++)
  97   2           ledscan(); //显示,读键扫描 
  98   2         ADC0804();
  99   2        }
 100   1      }
 101          
 102          /********************************结束************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    296    ----
   CONSTANT SIZE    =     26    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8      11
C51 COMPILER V8.05a   ADC0804                                                              02/24/2009 11:35:15 PAGE 3   

   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 + -