1、概述

STC8系列单片机内部集成了一个12位15通道的高速ADC转换器。ADC的时钟为系统时钟的2分频的16分频的32分频到系统时钟的2分频的16分频的512分频。转换结果有2种格式:左对齐和右对齐。

注:ADC不能多通道同时进行,一次只能检测一个通道!

2、ADC相关的寄存器:

ADC_CONTR:ADC控制寄存器

低4位(ADC_CHS):ADC通道选择位。

第6位(ADC_FLAG):ADC转换标志位。当完成一次AD转换后硬件会自动将这位置1并触发ADC中断,必须手动清零。

第7位(ADC_START):ADC转换启动控制位。写入1开始转换,转换完成后硬件自动置0.为0时无影响,即使ADC正在进行转换也不会停止。

第8位(ADC_POWER):ADC电源控制位。写入1ADC芯片开始供电,写入0停止供电。

ADC_CFG:ADC配置寄存器

低4位(SPEED):ADC时钟控制位。ADC时钟=SYSClk/2/16/SPEED.

第6位(RESFMT):ADC转换结果控制位。为0时,转换结果左对齐。ADC_RES储存转换结果的高8位,ADC_RESL的高4位存储转换结果的低4位,ADC_RESL的低4位为0;为1时转换结果右对齐。ADC_RES的高4位为0,低4位储存转换结果的高4位。ADC_RESL储存转换结果的低8位。

ADC_RES和ADC_RESL:转换结果储存寄存器。

3、转换步骤:

首先ADC通道设置为高阻输入模式。

eg:P1M0=0X00;P1M1=0X01;//配置P1.0为高阻输入模式。

然后开启AD转换器的电源、并且选定ADC转换通道。通过配置ADC_CONTR的值来控制。

eg:ADC_CONTR=0x80;//开启ADC电源,同时选定转换通道为P1.0;

配置ADC转换的时钟、数据储存格式。通过配置ADC_CFG的值来控制。

eg:ADC_CFG=0x0f;//设置转换结果左对齐,同时ADC时钟为系统时钟的2分频的16分频的512分频;

开始进行ADC转换。将ADC_CONTR寄存器的第7位置1即可。

eg:ADC_CONTR=ADC_CONTR|0x40;//通过或运算将ADC_CONTR寄存器的第7位置1而不改变其它位的值。

等待转换ADC完成。通过ADC_CONTR寄存器的第6位来判断是否转换完成。转换完成时这个位为1;

eg:while(!(ADC_CONTR&0X20));//转换未完成时,第6位为0,与运算后结果为0,取反后为1。转换完成后,第6位为1,与运算后结果为0x20,取反后为0;

清除转换标志位。将ADC_CONTR寄存器的第6位置0。

eg:ADC_CONTR=ADC_CONTR&0x9f;//进行与运算,0xdf的第6位和第7位为0,与运算以后的值第6位和第7位一定为0。其余6位如果原来为1依旧为1,原来为0依旧为0。

读取转换结果。保存ADC_RES和ADC_RESL寄存器的值,保存操作为ADCH_Value=ADC_RES ;  ADCL_Value=ADC_RESL; 保存后可以根据个人对寄存器清0,清零操作为:ADC_RES=0;ADC_RESL=0。

至此一次ADC转换就进行完成了。

注:在开始进入等待ADC转换结束之前可以先进行一段延时,如延时两个机器周期(_nop_();)!

4、范例程序:

#include"main.h"
#include "intrins.h"unsigned char ADCH_Value;
unsigned char ADCL_Value;void main(void)
{P1M0 = 0x00;                                //设置P1.1为ADC口P1M1 = 0x02;ADC_CONTR = 0x81;                           //使能ADC模块ADCCFG = 0x0f;                              //设置ADC时钟为系统时钟/2/16/16,右对齐ADC_CONTR |= 0x40;                      //启动AD转换_nop_();_nop_();while (!(ADC_CONTR & 0x20));            //查询ADC完成标志ADC_CONTR = ADC_CONTR & 0x9f;          //清除ADC完成标志ADCH_Value=ADC_RES;                     //保存ADC转换的值ADCL_Value=ADC_RESL;ADC_RES=0;                             //寄存器清零ADC_RESL=0;while(1);
}

STC8A单片机ADC功能使用相关推荐

  1. STM32F103单片机ADC功能使用

      stm32f103系列单片机内部ADC为12位ADC. 12位ADC是一种逐次逼近型模拟数字转换器.它有多达18个通道,可测量16个外部和2个内部 信号源.各通道的A/D转换可以单次.连续.扫描或 ...

  2. 单片机ADC采样算法----有效值采样法

    在使用单片机ADC功能采样数据时,通常情况下用平均值计算就够了,但是在计算功率时就需要用有效值来计算真正做功的情况.如果是标准的正弦波的话,正弦波的峰值是有效值得1.414倍,可以通过峰值来计算有效值 ...

  3. STC8A单片机功能和应用电路

    作者 QQ群:852283276 微信:arm80x86 微信公众号:青儿创客基地 B站:主页 https://space.bilibili.com/208826118 参考 官网 学习笔记之-51单 ...

  4. STM8单片机ADC采样功能通过定时器触发

      在使用STM8单片机的ADC功能时,读取ADC数据时一般有两种方式,一种是通常不断地读取采样标志位,来判断ADC采样是否结束,一种是通过中断的方式来通知系统采样是否结束.   有时候采样ADC数据 ...

  5. STC8A系列单片机ADC的使用

    文章目录 前言 一.单片机 ADC 概述 二.STC8A系列 中的 ADC 1.ADC初始化函数 2.开始转换 总结 前言 在单片机测控系统中,非电量如温度.压力.流量.速度等,经传感器先转换成连续变 ...

  6. 用单片机普通IO口(不用ADC功能)采集模拟量

    http://www.51hei.com/bbs/dpj-126017-1.html 以下介绍的这个方法是用没有 ADC 功能的芯片来检测模拟量,采集温度: 1. 温度检测电路图 :   2. 温度检 ...

  7. LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序

    /* 程序名: LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序 编写时间: 2015年10月4日 硬件支持: LCD1602液晶屏 STC12C5A60S2 外 ...

  8. 一个单片机ADC的挖坑填坑之旅

    [导读] 本文来解析一个盆友在使用STM32采集电池电压踩过的坑.以STM32F4 的ADC属于逐次逼近SAR 型ADC为例进行分析,参考STM32F405xx  Datasheet,对于如何编写AD ...

  9. 基于AVR单片机PWM功能的数控恒流源研制

    随着电子技术的深入发展,各种智能仪器越来越多,涉及领域越来越广,而仪器对电源的要求也越来越高.现今,电源设备有朝着数字化方向发展的趋势.然而绝大多数数控电源设计是通过高位数的A/D和D/A芯片来实现的 ...

最新文章

  1. 15种CSS居中的方式
  2. Oracle隐式游标和显式游标
  3. boost::mpi模块非阻塞点对点操作的测试
  4. docker 导入导出镜像
  5. Hive体系结构(二)Hive的执行原理、与关系型数据库的比较
  6. 银行应用_讲解人脸识别在银行的应用
  7. CSS清除默认样式,聪明人已经收藏了!
  8. apache mesos_试用Apache Mesos HTTP API获得乐趣和收益
  9. C++学习:第一章 开始
  10. 在lua的string库和正则表达式
  11. 在线图片裁剪,关于使用cropperjs踩过的坑
  12. CentOS7安装杀毒软件ClamAV图形界面ClamTk
  13. html文字阴影效果图,CSS3 -- 文字阴影(text-shadow)
  14. 1m照片的宽和高是多少_1M图片大小多少啊?
  15. Java 版植物大战僵尸思路和源码分享!
  16. Google Chrome 浏览器——隐藏功能及快捷键
  17. ddns client
  18. Xshell、Xftp软件评估过期解决方案
  19. 如何进行不同容量硬盘对拷
  20. 009:semihost/ITM机制浅析以及使用JLINK通过ITM调试stm32单片机(转)

热门文章

  1. 优客服基于Nginx+tomcat的SSL改造
  2. Netty框架之多线程的Selector优化
  3. Linux虚拟机安装gcc(解决依赖)
  4. 最佳实践:千巡翼Q30+机载LiDAR在水域三维数据采集中的应用
  5. 【数论】莫比乌斯函数/莫比乌斯反演
  6. 批量提取多个excel文件指定单元格内容,并汇总到一个新excel文件里
  7. windows10平板电脑能做php吗,win10 pro是什么版本
  8. 网易杭州研发中心-算法工程师面经
  9. 区块链世界的“基建”之问——为行业的“黄金十年”做好准备了么?
  10. 5000亿蓝海招手 中国软件业将有更大机会