您当前的位置:五五电子网电子知识单片机-工控设备源码-程序基于STC12C56系列单片机的AD转换C程序 正文
基于STC12C56系列单片机的AD转换C程序

基于STC12C56系列单片机的AD转换C程序

点击数:7760 次   录入时间:03-04 11:44:39   整理:http://www.55dianzi.com   源码-程序

    /****************
STC12c56    AD转换

    入口参数:通道数(0,1,2,3,4,5,6,7)
返回值:  AD转换结果

   
*****************/

    #include<reg51.h>

    sfr ADC_CONTR=0xc5;    //AD转换寄存器
sfr  ADC_DATA=0xc6;    //AD转换结果寄存器,为10位
sfr      P1M0=0x91;
sfr      P1M1=0x92;

   
/***************************
微秒延时函数
********************************/
void delay_us(unsigned int i)//延时 如果需要高精度延时 请嵌入汇编
{
  unsigned char a;
if (i == 0)
  { 
  return ; 
  }

    for (a = 1; a < i; a++)
  {
    ;
   
}
}

     

    /***************************
毫秒延时函数
********************************/
void delay_ms(int num)
{
    int x,y;
    for(y=0;y<num;y++)
    {
      for(x = 0;x <5000;x)
          x++;
    }
}

     

    /*********************
入口参数:通道数(0,1,2,3,4,5,6,7)
返回值:  AD转换结果
**************************/
unsigned char  AD(unsigned char Channel)
{
  unsigned char ADResult;
  ADC_CONTR|=0x80;  //开AD转换电源
  delay_ms(1);  //延时1ms
  switch(Channel)
  {
    case 0:
          P1M0|=0x01;P1M1|=0x01; //设置开漏
    ADC_CONTR=0xe0;        //选择AD转换通道
    break;
  case 1:
          P1M0|=0x02;P1M1|=0x02;
    ADC_CONTR=0xe1;
    break;
  case 2:
          P1M0|=0x04;P1M1|=0x04;
    ADC_CONTR=0xe2;
    break;
  case 3:
          P1M0|=0x08;P1M1|=0x08;
    ADC_CONTR=0xe3;
    break;
  case 4:
          P1M0|=0x10;P1M1|=0x10;
    ADC_CONTR=0xe4;
    break;
  case 5:
          P1M0|=0x20;P1M1|=0x20;
    ADC_CONTR=0xe5;
    break;
  case 6:
          P1M0|=0x40;P1M1|=0x40;
    ADC_CONTR=0xe6;
    break;
  case 7:
          P1M0|=0x80;P1M1|=0x80;
    ADC_CONTR=0xe7;
    break;
  }
  delay_us(100);
  ADC_DATA=0x00;
  ADC_CONTR|=0x08;    //启动AD转换
  delay_us(200);  //等待转换完成
  ADC_CONTR&=0xe7;    //清0 ADC_FLAG,ADC_START 位,停止AD转换
  ADResult=ADC_DATA;  //保存转换结果
  switch(Channel)
  {
    case 0:
          P1M0&=0xfe;P1M1&=0xfe; //设置普通IO
    break;
  case 1:
          P1M0&=0xfd;P1M1&=0xfd;
    break;
  case 2:
          P1M0&=0xfb;P1M1&=0xfb;
    break;
  case 3:
          P1M0&=0xf7;P1M1&=0xf7;
    break;
  case 4:
          P1M0&=0xef;P1M1&=0xef;
    break;
  case 5:
          P1M0&=0xdf;P1M1&=0xdf;
    break;
  case 6:
          P1M0&=0xbf;P1M1&=0xbf;
    break;
  case 7:
          P1M0&=0x7f;P1M1&=0x7f;
    break;
  }
  return ADResult;
}
 




本文关键字:单片机  程序  源码-程序单片机-工控设备 - 源码-程序