| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STC8A单片机ADC功能使用 -> 正文阅读 |
|
[嵌入式]STC8A单片机ADC功能使用 |
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、范例程序:
???????? |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 11:27:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |