关于ATMEGA16的AD转换

2019-07-16 06:49发布

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
16条回答
A670521546
1楼-- · 2019-07-16 10:34
你的程序再看看

  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. }
复制代码
huangjunbo
2楼-- · 2019-07-16 12:49
{:44:}
A670521546
3楼-- · 2019-07-16 16:48
你调节可变电阻,还是没有变化吗?
jijianxun435
4楼-- · 2019-07-16 18:09
A670521546 发表于 2011-8-15 16:37
你调节可变电阻,还是没有变化吗?

还是不行 ~~   估计是软件的问题吧 。5555~~
微love笑
5楼-- · 2019-07-16 19:51
 精彩回答 2  元偷偷看……
非法菜鸟
6楼-- · 2019-07-17 01:19

一周热门 更多>