一、准备工作

1、KEIL C51编译环境

2、CodeGen8 代码生成器

3、MC96F6332D 开发板

4、USB-OCD II仿真器

二、ADC的配置和代码生成

1、在CodeGen8 代码生成器的外设窗口中选择内部RC时钟作为时钟源,设置时钟源的频率为8MHz;设置外部P02引脚为ADC模拟输入引脚AN0,如下图①所示,ADC配置部分,触发采用ADST进行触发,数据对齐方式为LSB对齐,ADC采样时钟采用系统fx/1的时钟,具体配置如下图②所示;ADC部分生成的代码如下如③所示,其中包括ADC的初始化、开始和读取三部分:

2、点击CodeGen8 中的C 图标,自动打开KEIL C51软件;

3、在工程中增加ADC的计算函数:ADC读取内部数据寄存器后,对数据进行转换计算,可以方便的从单片机串口输出转换的结果,即ADC采集的数据便可以直观的被展现出来;ADC的计算函数代码如下所示:

float ADC_Calculation(void)
{unsigned int adcVal;ADC_start(0);adcVal = ADC_read();            //获取ADC采集到的数据,为下面的计算做准备return ((5.0/4096)*adcVal);    //此处的参考电压默认为5.0V,如果MCU供电为3.3V,修改为3.3即可
}

注意:本例中MC96F6332D的ADC参考电压选择为MCU的供电电压,MC96F6332D同样支持外部的参考电压AVREF供电;本例中针对的MCU供电电压为5.0V;如果电源供电为3.3V,仅仅需要修改代码中数值从5.0V到3.3V即可实现;

4、编译工程,结果如下所示:

5、关于ADC工作流程简介:

1)、ADC的方框图如下所示:

2)、ADC的转换过程应该遵循如下流程:

3)、寄存器中重点分析控制寄存器:

ADCCRH寄存器配置为:无中断,ADST触发,LSB数据对齐方式,ADC转换频率选择fx/1;

ADCCRL配置为:内部的VDD为ADC的参考电压,选择模拟通道AN0(注意在I/O配置P02功能为AN0)

6、点击编译器的下载按钮,将刚刚编译好的代码下载到MCU中进行仿真调试。

7、连接串口助手到PC端,可以看到代码运行符合预期,因为工程程序中采用了WT定时1秒,所以ADC同样会进行1秒1次的数据采集,串口同样会1秒1次进行数据输出,如下所示:

上图①:MCU上电前已经把AN0接到了demo板的地引脚,可以看出板子上电初始化后对ADC的读取是正常的;

上图②:拔下AN0的连接线,ADC在不停的采集数据,此时AN0处于悬空状态,采集的数据会出现跳变,属于正常现象;

上图③:AN0连接到电源引脚,可以看出ADC读取的数据符合预期。

注意:本例中没有对数据进行滤波消抖处理,正常的项目上需要对数据进行滤波消抖,以防止ADC的数据跳变引起系统的误操作;关于ADC的滤波消抖算法大家可以自行百度,进行查阅。

三、实验现象(具体内容可以参考工程中的Readme.txt文件)

1、MCU主频选择为内部8MHz;

2、ADC没有连续转换功能,需要不断的进行触发转换;ADC的流程应该遵循参考用户手册中图11.56给出的流程;

3、本例中完整代码可以访问链接:https://share.weiyun.com/5dTOWxP;进行免费获取。


因为小编自己能力水平有限,文中难免有错误或表达失误的信息,还望广大阅读者留言批评指正,谢谢!

ABOV单片机模数转换ADC部分代码实现讲解及示例代码-[MC96F6332D]相关推荐

  1. ABOV单片机外部引脚中断EINT实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成外部引脚中断的代码 1.在CodeGen8 代码 ...

  2. ABOV单片机内部中断优先级寄存器IP1x/IPx的设置代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.外部中断EINT示例代码-MC96F6332D 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.代码部分 1.现代单片机MC96F ...

  3. ABOV单片机内部看门狗WDT的代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部看门狗代码生成 1.在CodeGen8 代码生成 ...

  4. ABOV单片机内部定时器Timer1的定时器代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部定时器PWM代码生成 1.在CodeGen8 代 ...

  5. ABOV单片机内部WT时钟RTC的代码实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.内部WT时钟代码生成 1.在CodeGen8 代码生 ...

  6. ABOV单片机UART串口通讯实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口通讯代码 1.在CodeGen8 代码生成器 ...

  7. ABOV单片机端口引脚GPIO讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成GPIO的代码 1.在CodeGen8 代码生成 ...

  8. ABOV单片机UART串口通讯中Printf函数实现讲解及示例代码-[MC96F6332D]

    一.准备工作 1.KEIL C51编译环境 2.CodeGen8 代码生成器 3.MC96F6332D 开发板 4.USB-OCD II仿真器 二.生成串口代码 1.在CodeGen8 代码生成器的外 ...

  9. 常用数据结构与经典算法 简单讲解与示例代码

    数据结构与算法 数据结构与算法是一个学习计算机绕不过去的话题,而我们大学之中多数课程之中都使用伪代码进行讲解,给对我们的学习理解也是一把双刃剑,虽然可以让我们自己通过算法.思路自己写出程序,但也可能& ...

最新文章

  1. 防静电塑料包装袋周围的静电场
  2. python3 http服务端响应源码
  3. mysql1300错误什么意思_mysql error 1201-1300错误大全
  4. Android 第三课 构建简单的用户界面
  5. Python报错:IndentationError: unindent does not match any outer indentation level解决办法
  6. 学习JavaScript的24条实用建议
  7. Linux入门笔记——文件操作命令2
  8. 前端学习(2702):重读vue电商网站23之element-ui 如何按需导入
  9. 基于canvas的原生JS时钟效果
  10. 26.Yii 模块(2)
  11. 科罗拉多大学波尔得分校计算机科学,科罗拉多大学波尔得分校排名
  12. 成功上岸,心得分享(计算机专业)
  13. 2560x1600分辨率高吗_2560x1600是多大尺寸的屏幕
  14. 程序员之路:Gmail邮箱客户端配置_彭世瑜_新浪博客
  15. 2021年十大开源web应用防火墙
  16. ES7和 ES8 一览
  17. Thinkphp5的项目配置到西部数码虚拟主机
  18. 10招有效预防电脑辐射
  19. android手机开机密码,android手机开机密码忘了怎么办?
  20. rstudio线性回归_R语言统计分析(一元线性回归和多元线性回归)

热门文章

  1. python3多行输入字符串_python中怎么输入多行字符串
  2. html中的table跨行跨列用法
  3. 未来星计算机一级分数截图,托福成绩单截图评语
  4. 极路由 安装php,自己动手DIY:极路由贰移植WiFi Pineapple
  5. 絮絮叨叨的2020年小总结
  6. STM32物联网项目-通过ESP12S模块连接TCP服务器
  7. 名空间(namespace)
  8. dstwo linux n64,纳尼?论坛惊现NDS用的N64模拟器正在开发?
  9. Python实现“EMD\EEMD\VMD+Hilbert时频图”与“CWT小波时频图”
  10. 系统集成项目管理工程师(软考中级)—— 第二十三章 风险管理 笔记分享