打印

STC单片机AD转换问题

[复制链接]
2747|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuxiaolinsara|  楼主 | 2012-7-6 22:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "STC12C5A.h"
#include "string.h"
#include "intrins.h"
#define NOP _nop_()
#define  u32   unsigned long
#define  u8    unsigned char  
///************初始化时串口1的设置**************////
void UART_Init(void)
{  
    TMOD = 0x20;         
    TH1 = 0xFA;
    TL1 = 0xFA;
SCON = 0x50;
    PCON = 0x00;
    EA = 0;
    ES = 0;
    TR1 = 1;
    AUXR=0x40;
}

void UART_Send_Byte(unsigned char mydata)
{
ES=0;
TI=0;
SBUF=mydata;
while(!TI);
TI=0;
ES=0;
}

static void Delay(unsigned int t)
{
  unsigned int j;
  while(t--)
  {
    for(j = 0; j < 120; j++);
  }
}

u8  ADconversion()
{
  ADC_CONTR=0x00;
  Delay(1);
  ADC_RES=0;  //清除结果
  P1ASF=0x01;         //选择P1.0口作为AD转换通道
  Delay(1000);
  P1M1 |= 0x01; //P1.7~P1.0:0000 0001(高阻)//注意:更改ADC通道时须同时将对应的IO接口修改为高阻输入。  
  P1M0 |= 0x01;
  AUXR1=AUXR1&0xFB;    //设置模数转换的结果,取ADC_RES中的8位
  ADC_CONTR |=0xE0;   //开启AD转换电源,并设置最高的转换速度
  Delay(1000);    //延时1ms
  ADC_CONTR|=0x08;   //启动AD转换
  NOP;
  NOP;
  NOP;
  NOP;
  while(!(ADC_CONTR&0x10));  //等待AD转换结束
  ADC_CONTR&=0xEF;  //清标志位ADC_FLAG
   
   P1M0&=0xfe;   
   P1M1&=0xfe; //设置普通IO
  return ADC_RES;  //返回AD转换结果(8位)
}

void main()
{
    UART_Init();
  while(1)
  {
ADconversion();
UART_Send_Byte(ADC_RES);
if(ADC_RES>=0x99)  P0=P0&0xFD;  //P0.1=0 ,D8灯亮
else     P0=P0&0xFE;  //P0.0=0 ,D9灯亮
   }
}


我的程序运行的结果总是输出:FF
请教高手,是哪里出了问题?

相关帖子

沙发
liuxiaolinsara|  楼主 | 2012-7-13 15:11 | 只看该作者
哎,原来是单片机的输入管脚出了问题。

使用特权

评论回复
板凳
anazel| | 2012-7-13 15:34 | 只看该作者
STC单片机的AD精度怎么样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

44

帖子

0

粉丝