如何使用STM8S微控制器中的AD转换

供稿:hz-xin.com     日期:2025-01-08
如何使用STM8S单片机的多通道AD转换

int ADC_Work(unsigned char CN){ unsigned int i; ADC_CR2 =0x00; // A/D结果数据左对齐 ADC_CR1 =0x50; //ADC时钟=主时钟/10 // ADC转换模式=单次 // 禁止ADC转换 ADC_CSR =CN; // 选择通道 ADC_TDRL =0x01; //禁止施密特触发 ADC_CR1 |=0x01; // CR1寄存器的最低位置1,使能ADC转换 for(i=0;i=1)&&(dat3<=40))//最低4MA最大20MA{ LCD12864_SetPos(3,6); LCD12864_DisplayString("PASS "); result=1;delay_ms(1000);} else{ LCD12864_SetPos(3,6); LCD12864_DisplayString("FAIL "); result=0;delay_ms(1000);}}

static void(int[]group)
{
int temp;
int pos=0;
for(int i=0;i< group.Length-1;i++)
{
pos=i;
for(intj=i+1;j<group.Length;j++)
{
if(group[j]<group[pos])
{
pos=j;
}
}//第i个数与最小的数group[pos]交换
temp=group[i];
group[i]=group[pos];
group[pos]=temp;
}
}

STM8S单片机的A/D结构简介:
具有ADC1 ADC2(部分型号没有ADC2)最多提供16个转换通道,A/D转换的各个通道可以执行单次和连续的转换模式。
1.电压0到Vdda;
2.在64和80引脚封装的有独立的Vref,其他的封装形式Vref连接在Vdda
3.续转换形式;
4.时间14个时钟周期;
5.10位转换精度;
6.产生转换结束中断;
编程中注意的知识点:
过置位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转换
在main函数中直接调用即可:TempADC=Get_ADCCH_Value(ADC1_CHANNEL_1); \/\/获取AD转化值 WetADC=Get_ADCCH_Value(ADC1_CHANNEL_3; \/\/获取AD转化值

求大家给STM8S003单片机,LQFP封装的,引脚定义?
STM8S003单片机的引脚定义非常灵活,用户可以根据实际需要进行调整。例如,用户可以将引脚0至7配置为GPIO,用于控制LED灯的亮灭;将引脚8至15配置为ADC,用于采集模拟信号;将引脚16至23配置为定时器,用于实现定时功能;将引脚24至31配置为外部中断控制器,用于检测外部事件。此外,STM8S003还提供了多种...

基于DALI协议的智能照明系统
灯具控制电路以STM8S105C6微控制器为核心,由四部分电路组成,包括Debug调试接口、复位电路、振荡电路以及DALI接口电路。驱动电路主要由四个部分组成,包括PFC功率因数校正电路、AC\/DC转换电路、恒流源电路和DC\/DC降压电路,通过调节微控制器输出PWM占空比,从而来改变恒流源输出电流的大小,以此方式得到输出的恒定电流具有较...

快速易上手,8个实例方案带你由浅入深学STM系列微控制器
实例四:家用商用安防智能静音锁。STM8S003F3控制,具备断电自动开锁功能,使用DC-DC降压芯片供电,通过门磁、光电开关控制步进电机。实例五:MPPT控制器。以STM32F334C4T6为主控,实现15~60V输入、12\/24V输出、20A输出电流,采用BUCK-BOOST拓扑结构。实例六:智能垃圾桶。STM32F103控制,通过语音识别和板载...

stm32和stm8有啥区别
1,操作不同:用寄存器或者库的方式编写,8相对简单。32较复杂。2,价格不同:8大部分在10块以内。32大部分在10块以上。3,相关资料不同:8的资料少,可用模块少。32的资料多,可用模块多。

什么是单片机STM8
STM8S,通用微控制器 STM8L,超低功耗EnergyLite™微控制器 STM8A,汽车级微控制器 以上是ST公司官方给出的介绍。对于选型来讲STM8的主要特点是最高工作频率24MHz,性能可以达到20MIPS。定时器等外设资源的架构和现在炙手可热的STM32系列ARM基本相同,可以用类似的方式控制,官方提供了软件架构...

STM8库函数开发手册(1) \/\/工程模板、GPIO、时钟
首先,你需要准备一个整洁的项目结构,包括BSP(板级支持包)、IAR集成开发环境、LIB(库文件)、USR(用户程序和头文件)以及一个Readme文件,用于记录项目信息。1. 初始化工程: - 在LIB文件夹中,复制STM8官方库函数,包括inc和src子目录。 - 将STM8中断入口文件stm8s_it.c和stm8s_it....

stm8s207是什么集成电路
意法半导体(ST)再次扩大8位微控制器的产品阵容,针对工业温度范围,推出基于新一代STM8内核的STM8S系列产品。新系列微控制器整合新一代内核的高速度、处理性能和代码效率,以及多用途外设接口,并具备多项特殊功能,可提高芯片的强轫度和可靠性。片内集成的存储器(包括真EEPROM)可以简化应用仿真。在...

LGTMCU是什么单片机?
STM8S按atasheet说是可以跑20MIPS@25Mhz。8. 稳定性、可靠性承诺与AVR差不多。9.最重要一点: 由我们网站进行技术支持,并且邮购部能提供充足的货源。10. 预期的零售价是1.99元。 大批量使用可以再谈。11. 这个芯片的真正目标不是AVR,而是STC。官方网站: http:\/\/www.mcugreen.com 技术论坛:...

8S103F2P6是什么元件
原厂类别:嵌 入 式 - 微控制器 系列:STM8S 核 心 处理器:STM8 芯体 尺 寸:8-位 速度:16MHz 外围设备:欠 压检测\/复位,POR,PWM,WDT 输入\/输出数:16 程序存储器容量:4KB (4K x 8)程序存储器类型:闪存 EEPROM 大 小:640 x 8< RAM 容量:1K x 8 电压 - 电源 (Vcc\/Vdd)...