关于ATMEGA16的AD转换
时间:10-02
整理:3721RD
点击:
![](../imgqa/ele/mcu/mcu-3721rd.com-25371shre2dp4i23.png)
![](../imgqa/ele/mcu/mcu-3721rd.com-25372y3du5t4u2zg.png)
你的程序再看看
- uint mega16_ad()
- {
- uint addata;
-
- DDRA&=~BIT(PA0); //PA0口设置为输入,无上垃电阻,高阻态
- PORTA&=~BIT(PA0);
-
- SFIOR =0; //连续转换模式
- ADMUX=0X40; //AVCC,AREF引脚外加滤波电容
- //右对齐,ADC0单端输入
- ADCSR =0X80; //启动ADC转换
- ADCSR |=BIT(ADSC); //开始转换
- while(!(ADCSR&(BIT(ADIF)))); //等待转换结束,ADIF置1
- addata=ADCL;
-
- addata=addata+ADCH*256; //把ADCL,ADCH转换成10进制
- ADCSR |=BIT(ADIF); //对ADIF写”1”,ADIF清0
- ADCSR =0X00; //关闭ADC转换
- return addata;
- }
你调节可变电阻,还是没有变化吗?
还是不行 ~~ 估计是软件的问题吧 。5555~~
技术是无极限的
我的也这样!电阻小可以!但是稍微大点就不可以了!
每次都要读取ADCH 的值 否则那么下次读取的值就不会变化
我的AD也在坑爹
我也遇到这个问题了,但是在网上下了一个可以用AD,而且读数也是对的,两个芯片都是ATMEGA16,可是一个能读一个不能读,两个元件的元件编辑界面不一样,很奇怪。
解决了,是单片机AVCC和AREF没有接电源的原因,呵呵,我的接上去就好了
程序是没问题 关键是,我用液晶显示,但是我调电位器的时候,液晶显示不变化,但是我从新拔掉电源的时候 却又可以了
AVCC和AREF上不接电源不能进行AD转换吗?ADMUX不是可以进行参考电压的选择吗?
没有外部的模拟电源,内部的参考电压应该是无效的吧,你可以自己仿真试一下。
ADATE这一位要设置为1