找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

STC8H1k28单片机自带adc跳来跳去 求分析

查看数: 9862 | 评论数: 15 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2020-11-28 22:22

正文摘要:

对,就是跳来跳去……我都没想到这么不准…… 用来测热敏电阻的,用的电阻分压,原理图见下。 万用表测量在1.65-1.75之间,但是用单片机adc就跳来跳去,一会零点几,一会一点几…… 如果把单片机静置,单片机就会 ...

回复

ID:1101600 发表于 2023-11-28 19:27
楼主你测出来精度多少,0.01v吗,还是0.1v
ID:111280 发表于 2021-8-31 02:28
cocolala 发表于 2020-12-1 11:28
本人用了STC8H系列的另外一款芯片STC8H8K64U,使用了2.5V基准电压,测试ADC效果很好。不过用的是TB上买的现 ...

请问STC8H8K64U支持USB硬件接口仿真吗?
ID:584288 发表于 2021-3-2 14:41
你好,楼主,你有么有用STC8H1K28这个单片机做PWM波形输出的程序。这款单片机刚出来不久,找不到相关例程。如果有能不能分享一下。
ID:292876 发表于 2021-1-12 14:04
经常用AD,实际使用中出现的问题点,简单总结下,参考下。
AD取样,没有特殊情况啥的,两个算法必须,不然不专业!
1:注意输入阻抗问题。电源要稳定做好滤波处理,电源很重要,片内AD一般都用电源当基准。
2:头两次取样建议丢弃,速度允许,尽可能慢档位
3:加【中位值平均滤波】 【全程区间线性插值】
4:如果不使用595或者1650 1638之类LED驱动芯片,MCU频率尽可能提高!
5:尽可能用外部晶振。
ID:837101 发表于 2020-12-5 00:11
1922323908 发表于 2020-12-4 23:31
可以做个卡尔曼滤波器,或是把采到的数据放到matlab中曲线拟合一下

已经解决了!根据楼上大佬的回复,确实是使用了不正确的公式导致数据溢出。谢谢!
ID:837101 发表于 2020-12-5 00:10
wulin 发表于 2020-11-29 07:26
出现问题不要轻易怀疑单片机问题,首先要确认特殊功能寄存器的配置是否正确。
仔细核对通道选择,转换速度 ...

解决了!谢谢大佬!
ID:790408 发表于 2020-12-4 23:31
可以做个卡尔曼滤波器,或是把采到的数据放到matlab中曲线拟合一下
ID:837101 发表于 2020-12-4 23:24
wulin 发表于 2020-11-29 07:26
出现问题不要轻易怀疑单片机问题,首先要确认特殊功能寄存器的配置是否正确。
仔细核对通道选择,转换速度 ...

谢谢!
ID:837101 发表于 2020-12-4 21:20
lovexulu 发表于 2020-11-29 14:40
刚没仔细看。。。发现是采用中断读取adc的这个应该就是问题所在了,假如恰好正在执行运算时,中断并改变了a ...

51官方的datasheet就是个大坑呀!用的51官方的中断程序……发现了好几个错误
ID:226055 发表于 2020-12-1 11:28
本人用了STC8H系列的另外一款芯片STC8H8K64U,使用了2.5V基准电压,测试ADC效果很好。不过用的是TB上买的现成的板子,我把原理图ADC部分和实验源码发你参考下,都是STC8H系列的应该参考意义比较大。同意楼上见解,STC芯片依然出库不会有那么大问题的。





实验2-9-2:ADC电位器实验(P0.4读取电压值).rar

49.48 KB, 下载次数: 125

评分

参与人数 2黑币 +50 收起 理由
REwilliam + 20 很给力!
admin + 30 回帖助人的奖励!

查看全部评分

ID:401564 发表于 2020-11-30 09:25
ab = ah*4+al
这个什么意思?
ADCCFG = 0x2f,这个寄存器改一下,ADC结果就直接取高位和低位运算就可以了
你参考一下楼上的几位,先把ADC部分的资料看一下再修改
这没有什么难度的
ID:687694 发表于 2020-11-29 14:40
本帖最后由 lovexulu 于 2020-11-29 14:45 编辑

刚没仔细看。。。发现是采用中断读取adc的这个应该就是问题所在了,假如恰好正在执行运算时,中断并改变了ah,al值,那得到的结果就不知道是啥了。
流程改一下,开启转换,中断读取,读取一次,刷新一次 开启转换,这样应该不会有问题了。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:213173 发表于 2020-11-29 07:26
出现问题不要轻易怀疑单片机问题,首先要确认特殊功能寄存器的配置是否正确。
仔细核对通道选择,转换速度选择,转换结果格式选择(合并转换结果高低位的方式不同)。
正确选择电压换算公式的数据类型,楼主采用的公式错误,运算过程数据溢出。
十二位ADC结果换算成10进制(4舍5入)公式
毫伏=(参考电压*十二位ADC结果*10000/4096+5)/10
依据楼主程序配置建议算法:
void ad()
{
        unsigned int ab = 0;
        unsigned int ac = 0;
        unsigned int ad;
        ab = ((unsigned int)ah<<4)|(al>>4);//两个寄存器(adc结果)合并
        ad = (long)ab*10000/4096*3.2;//计算电压(无小数点)
        ac = ad;
        ......

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:420836 发表于 2020-11-29 02:25
添加数字滤波器以平均模拟变量采样; 此外,请检查模拟参考电压是否稳定。
ID:837101 发表于 2020-11-28 22:29
就离谱

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表