找回密码
 立即注册

QQ登录

只需一步,快速开始

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

请问大佬们知道怎么设置单片机STC8G1k08—20PIN的多路内部ADC运用

[复制链接]
跳转到指定楼层
楼主

我只会用P1.0作ADC口使用,现在需要多路ADC同时测量,请问大佬们知道怎么设置吗
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏5 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-5-27 22:26 | 只看该作者
会使用P1.0作ADC就会有使用多路ADC的基础。芯片内ADC转换电路只有一套,微观不可能同时测量多路ADC,而是分时测量,因为速度非常快,达到us级,宏观感觉多路ADC可以同时完成转换。给你一个8通道ADC转换示例。
  1. #include "reg51.h"
  2. #include "intrins.h"

  3. //测试工作频率为11.0592MHz
  4. sfr     ADC_CONTR   =   0xbc;
  5. sfr     ADC_RES     =   0xbd;
  6. sfr     ADC_RESL    =   0xbe;
  7. sfr     ADCCFG      =   0xde;
  8. sfr     P1M0        =   0x92;
  9. sfr     P1M1        =   0x91;

  10. unsigned char data dis_buf[8];

  11. void main()
  12. {
  13.         unsigned char CHA;
  14.         P1M0 = 0x00;                                //设置P1为ADC口
  15.         P1M1 = 0xff;
  16.         ADCCFG = 0x0f;                              //设置ADC时钟为系统时钟/2/16/16
  17.         ADC_CONTR = 0x80;                           //使能ADC模块
  18.         for(CHA=0;CHA<8;CHA++)
  19.         {
  20.                 ADC_CONTR=ADC_CONTR|0x40|CHA;                        //启动AD转换
  21.                 _nop_();
  22.                 _nop_();
  23.                 while (!(ADC_CONTR & 0x20));            //查询ADC完成标志
  24.                 ADC_CONTR &= ~0x20;                     //清完成标志
  25.                 dis_buf[CHA] = ADC_RES;                 //读取ADC结果       
  26.         }
  27.         while (1);
  28. }
复制代码
回复

使用道具 举报

板凳
ID:589833 发表于 2020-5-28 11:46 | 只看该作者
谢谢大佬
回复

使用道具 举报

地板
ID:589833 发表于 2020-5-28 11:51 | 只看该作者
wulin 发表于 2020-5-27 22:26
会使用P1.0作ADC就会有使用多路ADC的基础。芯片内ADC转换电路只有一套,微观不可能同时测量多路ADC,而是分 ...

谢谢大佬
回复

使用道具 举报

5#
ID:337139 发表于 2022-3-26 13:38 | 只看该作者
这个是很好的借鉴。
回复

使用道具 举报

6#
ID:975054 发表于 2022-4-22 23:45 | 只看该作者
嗯,我用了两路,多路一样很快的,分时测量,一路一路逐个测量记录就可以了。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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