微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 关于ATMEGA16的AD转换

关于ATMEGA16的AD转换

时间:10-02 整理:3721RD 点击:


用PA0单通道输入进行AD转换,但显示的结果都是1023? 检查了好几遍也没发现程序有什么问题~

你的程序再看看


  1. uint mega16_ad()
  2. {
  3.          uint addata;

  4.          DDRA&=~BIT(PA0);          //PA0口设置为输入,无上垃电阻,高阻态
  5.          PORTA&=~BIT(PA0);

  6.          SFIOR =0;                 //连续转换模式
  7.          ADMUX=0X40;               //AVCC,AREF引脚外加滤波电容
  8.                                    //右对齐,ADC0单端输入
  9.          ADCSR =0X80;                         //启动ADC转换
  10.          ADCSR |=BIT(ADSC);                   //开始转换
  11.          while(!(ADCSR&(BIT(ADIF)))); //等待转换结束,ADIF置1
  12.          addata=ADCL;

  13.          addata=addata+ADCH*256;              //把ADCL,ADCH转换成10进制
  14.          ADCSR |=BIT(ADIF);                   //对ADIF写”1”,ADIF清0
  15.          ADCSR =0X00;                         //关闭ADC转换
  16.          return addata;
  17. }

复制代码


你调节可变电阻,还是没有变化吗?

还是不行 ~~   估计是软件的问题吧 。5555~~

技术是无极限的

我的也这样!电阻小可以!但是稍微大点就不可以了!

每次都要读取ADCH 的值  否则那么下次读取的值就不会变化

我的AD也在坑爹

我也遇到这个问题了,但是在网上下了一个可以用AD,而且读数也是对的,两个芯片都是ATMEGA16,可是一个能读一个不能读,两个元件的元件编辑界面不一样,很奇怪。

解决了,是单片机AVCC和AREF没有接电源的原因,呵呵,我的接上去就好了

程序是没问题 关键是,我用液晶显示,但是我调电位器的时候,液晶显示不变化,但是我从新拔掉电源的时候 却又可以了

AVCC和AREF上不接电源不能进行AD转换吗?ADMUX不是可以进行参考电压的选择吗?

没有外部的模拟电源,内部的参考电压应该是无效的吧,你可以自己仿真试一下。

ADATE这一位要设置为1

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top