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

📄 adc0832.lst

📁 51单片机示例程序
💻 LST
字号:
C51 COMPILER V7.20   ADC0832                                                               12/11/2007 10:26:07 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE ADC0832
OBJECT MODULE PLACED IN ADC0832.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE ADC0832.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*******************************************************
   2          
   3                         ADC0832数字电压表实验
   4                    网址:http://www.kaifaban.com
   5          
   6                     传感器接口说明:从左到右依次为通道1,地,通道2
   7                 功能:在数码管上显示传感器接口通道2输入的电压
   8                      小数部分为7位,整数部分1位
   9                                  测量范围:0~5V
  10          
  11          *******************************************************/
  12          #include <reg52.h>
  13          #include <intrins.h>
  14          #define  uint unsigned int
  15          #define  uchar unsigned char
  16          uchar Code[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf,0xff}; //共阳数码管编码表
  17          uchar Bit[8]={0,0,0,0,0,0,0,0}; //数码管各位显示的数字
  18          sbit CLK=P1^7; //定义时钟信号IO口
  19          sbit CS=P3^3; //定义片选信号IO口
  20          sbit DI=P1^5; //定义数据输入IO口
  21          sbit DO=P1^6; //定义数据输出IO口
  22          sbit DsySelect=P3^6; //控制数码管的74HC244所在IO口
  23          uchar BitCode=0x80; //数码管位码初值
  24          unsigned long V=0; //电压扩大10000000的值
  25          uchar Data=0; //从AD中读取的值
  26          //延时函数
  27          void delay(uchar ms){
  28   1      uchar i;
  29   1      while(ms--){
  30   2      for(i=0;i<125;i++);
  31   2      }
  32   1      }
  33          //实现AD转换
  34          void AdChange(){
  35   1      uchar i;
  36   1      CLK=0;
  37   1      CS=0; //打开芯片
  38   1      
  39   1      DI=1; //启动位
  40   1      CLK=1;
  41   1      CLK=0;
  42   1      
  43   1      DI=1; //配置位1
  44   1      CLK=1;
  45   1      CLK=0;
  46   1      
  47   1      DI=1; //配置位2
  48   1      CLK=1;
  49   1      CLK=0;
  50   1      //读取转换后的值
  51   1      for(i=0;i<8;i++){
  52   2      CLK=1;
  53   2      CLK=0;
  54   2      Data=(Data<<1)|DO;
  55   2      }
C51 COMPILER V7.20   ADC0832                                                               12/11/2007 10:26:07 PAGE 2   

  56   1      
  57   1      CS=1;//关闭芯片
  58   1      }
  59          //扫描显示程序
  60          void Dispaly(){
  61   1      uchar i;
  62   1      for(i=0;i<8;i++){
  63   2      P2=BitCode; //输出位码
  64   2      if(i==0){ //输出段码,如果第1位显示小数点
  65   3      P0=Code[Bit[i]]&0x7F;
  66   3      }else{
  67   3      P0=Code[Bit[i]];
  68   3      }
  69   2      BitCode=_cror_(BitCode,1); //位码循环右移一位
  70   2      delay(1); //延时1ms
  71   2      P0=0xFF;
  72   2      }
  73   1      }
  74          //电压计算程序
  75          void GetV(){
  76   1      V=Data*(50400000/255); //计算电压并扩大10000000倍,50400000是参考电压5.04扩大10000000倍得到的
  77   1      //计算数码管各位要显示的数值
  78   1      Bit[0]=V/10000000;
  79   1      Bit[1]=V%10000000/1000000;
  80   1      Bit[2]=V%1000000/100000;
  81   1      Bit[3]=V%100000/10000;
  82   1      Bit[4]=V%10000/1000;
  83   1      Bit[5]=V%1000/100;
  84   1      Bit[6]=V%100/10;
  85   1      Bit[7]=V%10;
  86   1      }
  87          //主函数
  88          main(){
  89   1      DsySelect=0; //打开数码管
  90   1      P0=0xFF; //复位P0口
  91   1      P2=0xFF; //复位P2口
  92   1      while(1){
  93   2      AdChange(); //AD转换
  94   2      GetV(); //计算电压值
  95   2      Dispaly(); //电压显示程序
  96   2      }
  97   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    433    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26    ----
   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 + -