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

📄 adc0804.lst

📁 2、《ADC0804a》实验 1)下载程序 2)数码管默认显示“4.65” 3)通过K3按钮切换板载输入或外部输入
💻 LST
字号:
C51 COMPILER V7.06   ADC0804                                                               11/19/2006 14:52:52 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE ADC0804
OBJECT MODULE PLACED IN adc0804.OBJ
COMPILER INVOKED BY: E:\Program Files\C51\BIN\C51.EXE adc0804.c BROWSE DEBUG OBJECTEXTEND

stmt 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 addr0 = P1^4;//系统片选地址线0
  16          sbit addr1 = P1^5;//系统片选地址线1
  17          sbit addr2 = P1^6;//系统片选地址线2
  18          sbit addr3 = P1^7;//系统片选地址线3
  19          sbit led = P1^0;
  20          //行扫描数组
  21          uchar code scan[8] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//row0--row7
  22          //数码管显示的段码表
  23          uchar code table[18] ={0xc0,0xf9,0xa4,0xb0,0x99,0x92,//0,1,2,3,4,5
  24                                 0x82,0xf8,0x80,0x90,0x88,0x83,//6,7,8,9,a,b
  25                                 0xc6,0xa1,0x86,0x8e,0xbf,0xff};//c,d,e,f,-,空格
  26          
  27          uchar dispbuf[8]; //显示缓冲区                         
  28          
  29          /*****************************延时函数**************************/
  30          
  31          void delay (unsigned int us)  
  32          {
  33   1        while(us--);
  34   1      }
  35          
  36          /******************************显示+读键*************************/
  37          
  38          void ledscan()
  39          {  unsigned char i,dispcode;  
  40   1      
  41   1          for(i=0;i<8;i++){
  42   2             addr3 = 0;
  43   2             addr0 = 0;
  44   2             addr1 = 1;
  45   2             addr2 = 0;//开发板上U4(74HC574)的片选地址
  46   2             dispcode =table[dispbuf[i]]; //取一行显示数据
  47   2             if(i==3)
  48   2              P0 = dispcode & 0x7f; 
C51 COMPILER V7.06   ADC0804                                                               11/19/2006 14:52:52 PAGE 2   

  49   2             else 
  50   2              P0 = dispcode;
  51   2             addr3 = 1; 
  52   2             addr3 = 0;//在U4的11脚(锁存信号)产生上升沿
  53   2             P2 = scan[i];//取row0--row7行扫描数据
  54   2             delay(50); //延时50us
  55   2             }
  56   1       }
  57          
  58          
  59          /*******************0804转换程序********************/
  60          void  ADC0804(void)
  61          {  uchar adc0804value;
  62   1         float voltage,decimal;
  63   1         unsigned int intvolt,tofloat;
  64   1         led = ~led;
  65   1         addr0 = 1;
  66   1         addr1 = 1;
  67   1         addr2 = 0;//输出AD0804片选地址。
  68   1         addr3 = 1;
  69   1         P0 = 0xff;//向ADC0804发任何数据,0804开始转换
  70   1         WR = 0;
  71   1         WR = 1;
  72   1         addr3 = 0;
  73   1         delay(100);//等待转换完成
  74   1         addr3 = 1;
  75   1         RD = 0;
  76   1         adc0804value=P0;//读取转换后的值
  77   1         RD = 1;
  78   1         addr3 = 0;
  79   1         voltage = adc0804value;
  80   1         voltage = voltage * 0.0391;//将二进制字节数据变成实际电压值   10/256 = 0.0196
  81   1         intvolt = voltage;//取整数部分
  82   1         tofloat = intvolt; 
  83   1         decimal = voltage - tofloat;//取小数部分
  84   1         decimal = decimal * 100;//小数部分取两位
  85   1         dispbuf[3] = intvolt % 0x0a;//整数部分个位
  86   1         intvolt = decimal;
  87   1         dispbuf[5] = intvolt % 0x0a;//小数部分低位
  88   1         intvolt = intvolt / 0x0a;
  89   1         dispbuf[4] = intvolt % 0x0a;//小数部分高位 
  90   1      }
  91          
  92          
  93          /*******************************主函数***********************/
  94          
  95          main()
  96          { uchar i;   
  97   1        for(i=0;i<8;i++)
  98   1         dispbuf[i] = 17;
  99   1        while(1){
 100   2         for(i=0;i<10;i++)
 101   2           ledscan(); //显示,读键扫描 
 102   2         ADC0804();
 103   2        }
 104   1      }
 105          
 106          /********************************结束************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    293    ----
C51 COMPILER V7.06   ADC0804                                                               11/19/2006 14:52:52 PAGE 3   

   CONSTANT SIZE    =     26    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      8      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 + -