找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1114|回复: 9
打印 上一主题 下一主题
收起左侧

STC单片机 ADC模拟量有个地方不理解,每次读ADC的值时,要先打开转换ADC_CONTR |=...

[复制链接]
跳转到指定楼层
楼主
STC单片机  ADC模拟量有个地方不理解,每次读ADC的值时,要先打开转换ADC_CONTR |= 0x40;
转换完成后又关闭转换ADC_CONTR &= 0xBF;
读完ADC的值后,又打开转换ADC_CONTR |= 0x40;
每次要读ADC数据,都要这样操作一便。
什么是转换?为什么每次读数据都要打开和关闭一次转换?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:227818 发表于 2024-1-10 06:18 | 只看该作者
ADC_CONTR |= 0x40,是把ADC_CONTR的D6置1,D6是ADC_START位,应该是开始AD转换的意思。
看手册是这样说的:ADC_START:ADC 转换启动控制位。写入 1 后开始 ADC 转换,转换完成后硬件自动将此位清零。看手册,读完AD值后,应该不用关闭了。
回复

使用道具 举报

板凳
ID:213173 发表于 2024-1-10 07:16 | 只看该作者
模拟量转换成数字量不是立即完成,需要一点时间。启动转换后等待转换完成标志ADC_FLAG为1后,读取的数字量才有效,并且软件清0 ADC_FLAG,为下一次转换作准备。
回复

使用道具 举报

地板
ID:427868 发表于 2024-1-10 08:37 | 只看该作者
根据手册得知,每次转换前是需要先写入ADC_CONTR |= 0x40,但转换结束不需要再写入ADC_CONTR &= 0xBF了,因为单片机会自己清零,在实际应用中也是这样的。





回复

使用道具 举报

5#
ID:226055 发表于 2024-1-10 09:22 | 只看该作者
    1、要看下你的芯片版本,STC很多芯片如果不是最终版本会有硬件BUG,那么有问题不奇怪。
    2、你的应用是不是需要多个通道切换,如果是,这种打开ADC之后关闭ADC再到打开是属于正常的逻辑。如果是单个固定通道,又不考虑功耗,那么打开一次就可以不用关闭的。
    3、楼上正解,ADC打开后,包括ADC电源打开,是需要稍作延时的,这样检测出的值才更准确。
回复

使用道具 举报

6#
ID:1064915 发表于 2024-1-10 10:30 | 只看该作者
这是STC12的

回复

使用道具 举报

7#
ID:1063563 发表于 2024-1-12 16:26 | 只看该作者
刘佑红 发表于 2024-1-10 08:37
根据手册得知,每次转换前是需要先写入ADC_CONTR |= 0x40,但转换结束不需要再写入ADC_CONTR &= 0xBF了,因 ...

谢谢!
回复

使用道具 举报

8#
ID:1063563 发表于 2024-1-12 16:27 | 只看该作者
wulin 发表于 2024-1-10 07:16
模拟量转换成数字量不是立即完成,需要一点时间。启动转换后等待转换完成标志ADC_FLAG为1后,读取的数字量 ...

谢谢!
回复

使用道具 举报

9#
ID:1019324 发表于 2024-1-12 16:47 | 只看该作者
adc采集是独立于51单片机运行的,AD转换芯片与51单片机通过对应通信协议进行数据通信。0x40相当于二者沟通的门户,当单片机需要使用ADC的数据时打开通道进行数据交换。习惯上在读完后关闭通道,解放cpu资源。
回复

使用道具 举报

10#
ID:106977 发表于 2024-1-13 17:15 | 只看该作者
提出这类问题或是表明你没有认真阅读STC的说明书。或是你没有读懂说明书,那就是就是基础问题,还需要加倍努力提高单片机开发基础能力!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by 单片机教程网

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