如何使用STM8S单片机的多通道AD转换

发布者:AdventureSeeker最新更新时间:2015-11-19 来源: eefocus关键字:STM8S  单片机  AD转换 手机看文章 扫描二维码
随时随地手机看文章
STM8S单片机的A/D结构简介:

   具有ADC1 ADC2(部分型号没有ADC2)最多提供16个转换通道,A/D转换的各个通道可以执行单次和连续的转换模式。

1.电压0到Vdda;

2.在64和80引脚封装的有独立的Vref,其他的封装形式Vref连接在Vdda

3.续转换形式;

4.时间14个时钟周期;

5.10位转换精度;

6.产生转换结束中断;

[转载]如何使用STM8S单片机的多通道AD转换

ADC1结构图

编程中注意的知识点:

    过置位ADC_CR1寄存器的 ADON位来开启ADC。当首次置位ADON位时,ADC从低功耗模式唤醒。为了启动转换必须第二次使用写指令来置ADC_CR1寄存器的ADON 位。在转换结束时ADC会保持在上电状态,用户只需要置位ADON位一次来启动下一次的转换。

    如果长时间没有使用ADC,推荐将ADC模块切换到低功耗模式来降低功耗,这可以通过清零 ADON 位来实现。ADC模块上电后,所选通道对应的I/O口输出模块是被禁用的。因此推荐在ADC上电之前要选择合适的ADC转换通道。

    如果单次模式在单次转换模式中,ADC仅在由ADC_CSR寄存器的CH[3:0]选定的通道上完成一次转换。该模式是在当CONT位为0时通过置位ADC_CR1寄存器的ADON位来启动的。

一旦转换完成,转换后的数据存储在ADC_DR寄存器中,EOC(转换结束)标志被置EOCIE 被置位将产生一个中断。

代码如下:

#include "adc.h"

 u16  TempADC;

void ADC_Config(void) 

{

    ADC_CR1 |= 0x01;    //开始启动初始化必须启动一次

                        //第一次写1,ADC从低功耗唤醒,第二次写1,启动ADC转换

   //ADC_CR1 |= 0x20; //使能转换结束中断,本例中采用的查询方式。

}

 

uint16_t Get_ADCCH_Value(ADC1_Channel_TypeDef ADC_Channel)

  ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS,ADC_Channel, ADC1_PRESSEL_FCPU_D2,

     ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_ALL, DISABLE);

    //你也可以用操作寄存器的方式代码如下,但未验证。

#if 0

ADC_CR2 = 0x00;             // A/D结果数据左对齐

CLK_PCKENR2 |= 0x08;        // 使能fMASTER与ADC的连接

ADC_CR1 = 0x00;// ADC时钟=主时钟/2=8MHz,单次转换模式

ADC_CSR = 0x01;             // 选择通道2

ADC_TDRL = 0x01;            // 禁止施密特触发功能 

ADC_TDRH = 0x01;

ADC_CR1 = 0x03; //2分频,连续转换,启动ADC

ADC_CR2 = 0x31; //外部事件保留,数据右对齐,禁止扫描模式,

ADC_CSR|= 0x01; //选择通道1

#endif

 ADC1_ConversionConfig(ADC1_CONVERSIONMODE_CONTINUOUS, ADC_Channel,ADC1_ALIGN_RIGHT);

     ADC_CR1 |= 0x01;      //开始启动转换

     while(!(ADC_CSR & 0x80));   //等待转换结束

    return ADC1_GetConversionValue(); //返回ADC结果

}

//这个初始化代码很重要,不能省,每次切换通道都要初始化一次!

在main函数中直接调用即可:

  TempADC=Get_ADCCH_Value(ADC1_CHANNEL_1); //获取AD转化值

  WetADC=Get_ADCCH_Value(ADC1_CHANNEL_3; //获取AD转化值

 

 到此结束!开始你的代码快乐之旅吧~~~~

关键字:STM8S  单片机  AD转换 引用地址:如何使用STM8S单片机的多通道AD转换

上一篇:单片机控制的韩氏穴位神经刺激仪
下一篇:单片机四口注意事项

推荐阅读最新更新时间:2024-03-16 14:40

用51单片机做一个电子钟
学了一个多月51了,终于整了个电子钟出来,个人感觉还是比较有趣的。 需要注意的是我用的是普中的板子,板子类型不同,io口的功能可能会有所差异。然后我这个k1开关和k2开关是接反了的,原本k1应该是接P3^0,k2接P3^1的,结果我一测试才知道k1接到了P3^1,k2接到P3^0了,不过这不要紧,用sbit定义位变量时注意换一下就可以了。然后大概讲讲功能,用8个数码管显示目前时间和闹铃时间,然后用4个独立按键对目前时间和闹铃时间进行调整(k2是加,k3是减 ,k4是用来停止闹铃的),第一次按k1是对目前时间秒数调整,第2次按k1是对目前时间分钟数调整,第三次按k1是对目前时间小时数调整,第4次按k1是对闹铃秒数调整,第5次按k
[单片机]
关于MSP430单片机时钟的注意事项
XT2OFFG 、XT1LFOFFG 、 XT1HFOFFG 、 DCOFFG这四个标志位对应着相应振荡源的运行状态, XT2OFFG 、XT1LFOFFG 、 XT1HFOFFG上电时默认都是1,即上电时晶振1和晶振2都是关闭的,如果相应接口上确实接上了晶振,则需要在程序开始时运行一下语句: do { UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG); // Clear XT2,XT1,DCO fault flags SFRIFG1 &= ~OFIFG; // Clear fault flags for(unsigned int i = 0; i 10000; i
[单片机]
单片机数的本质和物理现象
单片机执行指令 我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令。 那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢? 这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。 为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。 单片机数的本质
[单片机]
简述MCS51单片机的中断响应过程
单片机一旦响应 中断 请求, 就由硬件完成以下功能: (1) 根据响应的中断源的中断优先级, 使相应的优先级状态触发器置1; (2) 执行硬件中断服务子程序调用, 并把当前程序计数器PC的内容压入堆栈,保护断点,寻找中断源; (3) 清除相应的中断请求标志位(串行口中断请求标志RI和TI除外); (4) 把被响应的中断源所对应的中断服务程序的入口地址(中断矢量)送入PC, 从而转入相应的中断服务程序。 (5)中断返回,程序返回断点处继续执行。
[单片机]
意法半导体STM32微控制器加密算法库通过美国安全标准认证
中国,2016年7月19日 横跨多重电子应用领域、全球领先的半导体供应商意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)的STM32微控制器加密算法库成功通过美国密码算法验证体系(US Cryptographic Algorithm Validation Program,CAVP)验证,有助于客户快速、经济地提高新产品的安全性。 作为STM32Cube软件包的扩展模块,X-CUBE-CRYPTOLIB算法库可直接用于基于STM32的注重安全的产品,包括物联网(IoT)硬件、销售终端设备、智能表计、门禁系统和指纹识别模块。CAVP认证免除了企业的算法验证负担,让那些想要获取美国联邦信息处理
[半导体设计/制造]
使用AVR单片机驱动舵机
1.舵机驱动的基本原理   (可以参考http://blog.sina.com.cn/s/blog_8240cbef01018hu1.html)    控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。 简单的来讲,就是输出一个周期为20Ms,不同的占空比对应舵机转过不同的角度。 难点主要在于 舵机控制信号需要保持,这样就比用脉冲控制步进电机要复杂一些。 你需要
[单片机]
使用AVR<font color='red'>单片机</font>驱动舵机
单片机远程语音报警系统
1 硬件电路设计 screen.width-500){this.style.width=screen.width-500};" border=0> 系统工作过程: 单片机AT89C51采集设备的各种信息,根据不同设备和传感器,可以是压力、流量、温湿度、电压、电流等,然后与预先存储在单片机内的阈值比较,若超出正常范围,则通过电话机拨号电路拨打维护人员的固定或移动电话,等待拨通后再控制ISD4004构成的数码语音电路播放相对应的故障信息。维护人员听到信息后根据故障优先级作相应处理。 1.1 语音电路 ISD4004 语音芯片是由美国ISD公司推出的新产品,单片录放语音时间8-16min,操作简单,音质好。芯片内含振荡
[单片机]
<font color='red'>单片机</font>远程语音报警系统
一种基于单片机和SG3525的程控开关电源设计与实现
引言 直流稳压电源是一种常见的电子仪器,其广泛应用于实验教学和科学研究等领域。目前使用的直流稳压电源大部分存在诸多缺点,如输出不可调、电压不稳定等等,因而导致实验结果不精确。以SG3525控制芯片和单片机为核心设计制造的智能稳压开关电源,电路简单,价格低廉,性能卓越。因其利用单片机设置周密的保护监测系统,确保了电源运行可靠,所以具有较高的使用价值。 1、调节原理及控制方案 图1 3525传统控制框图 采用SG3525控制的开关电源传统控制方案如图1所示。3525通过检测输出电压,与给定基准电压进行比较,从而自身调节输出的脉冲波形占空比,控制主电路开关管的关断以达到稳定输出的目的。3525传统的控制方式突出的缺点在于基准电压是恒
[单片机]
一种基于<font color='red'>单片机</font>和SG3525的程控开关电源设计与实现
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved