梁工 发表于 2023-3-26 15:25:08

本帖最后由 梁工 于 2023-3-26 15:29 编辑

sky999 发表于 2023-3-26 14:12
u16 READADC(u8 i)
{
u16 k;

ADC_CONTR |= 0x08+i;
这句操作错误,导致你读几个通道之后,就全部是读15通道了。
应该是这样:
ADC_CONTR &= 0x90;
ADC_CONTR|= 0x08+i;或者 ADC_CONTR |= i;

有否测试过我们的例子?我们的例子都是只在初始化时打开,后面一直不关。

sky999 发表于 2023-3-26 15:42:27

神农鼎 发表于 2023-3-26 14:33
具体哪个型号的MCU我们给你个完整的演示程序参考

8A8K64D4

sky999 发表于 2023-3-26 15:45:39

梁工 发表于 2023-3-26 15:25
ADC_CONTR |= 0x08+i;
这句操作错误,导致你读几个通道之后,就全部是读15通道了。
应该是这样:


ADC_CONTR |= 0x08+i; 这里的i是 0-6,因为用的是P0口,所以要加0X08呀

sky999 发表于 2023-3-26 15:54:37

梁工 发表于 2023-3-26 15:25
ADC_CONTR |= 0x08+i;
这句操作错误,导致你读几个通道之后,就全部是读15通道了。
应该是这样:


哦哦哦,懂了懂了,总算明白了,用“|”就会不断累加,你不说我还不知道,谢谢谢谢

神农鼎 发表于 2023-3-26 16:03:11

梁工辛苦了,每天要坚持学习错误程序:)
能否大家坚持学习我们的正确程序


还有这种问题,你用仿真器仿真,立即就可以观察到的啊,没必要学大佬,不仿真也照样出产品
下贴我们销售部客服全部会仿真,都可以教您啊

【新提醒】用STC-USB Link1D仿真STC8系列MCU - 编译器/仿真器/ISP下载/做自己的ISP/ID号加密/程序加密后传输 国芯论坛-STC全球32位8051爱好者互助交流社区 - STC全球32位8051爱好者互助交流社区 (stcaimcu.com)

sky999 发表于 2023-3-26 16:08:28

梁工 发表于 2023-3-26 15:25
ADC_CONTR |= 0x08+i;
这句操作错误,导致你读几个通道之后,就全部是读15通道了。
应该是这样:


另外再问个问题啊,为什么ADCEXCFG设置为16次平均值,数值却还是依旧不是很稳定,但是如果我ADCEXCFG设置为2次,然后用for循环3次结果相加,再除以3,这样得到的数值就很稳定?

神农鼎 发表于 2023-3-26 16:14:30

STC-USB Link1D /【专业仿真器,全自动在线下载器/自动停电上电,脱机烧录器,USB转双串口工具】

你用这个仿真,实时观察到进行采样转换的是第几个通道,你那个软件错误你自己就会立即发现了

梁工 发表于 2023-3-26 17:46:00

sky999 发表于 2023-3-26 16:08
另外再问个问题啊,为什么ADCEXCFG设置为16次平均值,数值却还是依旧不是很稳定,但是如果我ADCEXCFG设置 ...

有可能跟干扰信号的频谱有一定关系。
举例来说,比如信号叠加有50Hz的市电干扰,则一般的连续采样N次求平均是很难滤除的。但是如果按市电N个周期内采样M次,则能很好的滤除工频干扰,一些Sigma Delta ADC专门有一项参数,就是抑制50/60Hz干扰的能力。
如果是做电压表显示给人眼睛看,我常用400ms刷新(2.5次一秒),则使用1~5KHz的均匀采样400ms求平均,就可以很好滤除。如果要更快的采样(用于控制系统),则20ms刷新,使用10KHz的速度均匀采样20ms求平均。
对于缓慢的信号,比如常用的测温,则可以使用一阶低通、二阶低通这种简单算法,就可以得到很稳定的读数(模拟大惯性的RC滤波)。
而对于电子秤这种高分辨率的应用,则混合多种滤波,各取优点,比如 平均值+一阶低通,就有很好的效果,既照顾到响应速度,又照顾到高分辨率读数的稳定性。

梁工 发表于 2023-3-26 17:51:19

sky999 发表于 2023-3-26 15:45
ADC_CONTR |= 0x08+i; 这里的i是 0-6,因为用的是P0口,所以要加0X08呀

是这个意思。我一般都按0~15给出通道,P1.0~P1.7对应0~7通道,P0.0~P0.6对应8~14通道,15通道是内部的Bandgap电压。有些少引脚的型号(比如STC8G1K08A-SOP8)的通道号与IO对应会不同,以引脚图为准。

梁工 发表于 2023-3-26 17:52:22

神农鼎 发表于 2023-3-26 16:03
梁工辛苦了,每天要坚持学习错误程序
能否大家坚持学习我们的正确程序



:handshake服务大众,全年无休!
页: 1 [2] 3
查看完整版本: ADC的电源控制是不是不能始终保持打开?