完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
大家好,这里有个问题求助一下,希望有人帮我指点一下,先谢谢了!
我用的是PIC16F1937, 对同一个电压值AD采样的结果相差有时比较大,有时相差二三十。不知是什么问题。 我把代码贴上来,大家帮我看一下: AD初始化是: OSCCON=0x78; //sytem clock, 16Mhz 0 1111 000 ANSELA=0x01;//0000 0001 TRISA0=1; ADCON0=0x01;//choose the AN0, and allow the AD convert ADCON1=0xB0;//1011 0000 right justified AD转换程序是:(采集8次,取平均值) void AD_Convert(void) { uchar i; uint result,temph; result=0; for(i=0;i<8;i++) { GO_nDONE=1; while(GO_nDONE); temph=ADRESH; result+=((temph<<8)+ADRESL); } press_ad=result>>3; } |
|
相关推荐
15个回答
|
|
有什么想法的,尽情发言,感谢了
|
|
|
|
看看基准电压 别和VCC一样 单独供电
|
|
|
|
我就是用单片机的VDD作为基准电压来用的。 我这个不用很精密,所以按道理应该可以的 |
|
|
|
有干扰?
|
|
|
|
|
|
|
|
你ADC电源和CPU别用一个 要不误差就大 |
|
|
|
万用表根本看不出来。模拟量消抖挺恶心。多多少少都有。如果硬件电路没有处理好的话,软件处理起来很棘手。 |
|
|
|
|
|
|
|
是电压波动太大倒置的,用万用表看不出来。以为电压是稳的。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
result+=((temph<<8)+ADRESL);去掉
修改为: temph=temph<<8|ADRESL; result=result+temph; result=result/8; 再试试看 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
求解外围电路实现的是4脚给持续低电平复位并正常工作,高电平不工作的原因
1917 浏览 1 评论
2974 浏览 3 评论
PIC1946程序有一个变量在运行过程中恢复初始值其他变量保持不变
2172 浏览 2 评论
2542 浏览 0 评论
PIC16F1825的RC5引脚,在主程序中操作无效,在中断中可以改变是为什么?
3660 浏览 5 评论
630浏览 0评论
用XC8编译PIC18F25K80时提示下面Error,求怎么解决这个问题
1732浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 22:03 , Processed in 0.470087 second(s), Total 92, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号