历史上的今天
返回首页

历史上的今天

今天是:2025年06月02日(星期一)

正在发生

2018年06月02日 | stm8 ADC模数转换

2018-06-02 来源:eefocus

第一步:stm8 ADC简介


stm8的ADC1和ADC2是10位逐次比较型模拟数字转换器。A/D转换的各个通道可以执行单次和连续的转换模式。




stm8S103k5引脚图如下:



stm8


可以看见它只有16/15/14/13引脚是ADC的引脚,分别是AIN0、AIN1、AIN2、AIN3。都是ADC1。


第二步:ADC相关寄存器说明







基本还是和前几节一样都是直接截图的数据手册。

第三步:具体实现

实现功能:PB0脚AIN0,当接3.3V电压时点亮LED,接地时LED熄灭,没有可调电阻和可调电源,就这么操作了。

#include "IOSTM8S105K4.h"  

  

#define u16 unsigned int  

#define u8 unsigned char  

  

void System_Init(void)  

{  

   CLK_SWR = 0xE1;  //选择高速内部时钟HSI为主时钟  

   CLK_ICKR |= 0x01;  //高速内部HSI时钟使能  

   while(!(CLK_ICKR&0x02)); //等待内部高速HSI就绪  

   CLK_CKDIVR = 0x18;   // Fhsi = Fhsi = Fcpu = Fmaster = 2MHz  

}  

/*延时xms函数@ HSI 2MHz*/  

void delay_ms(u16 xms)  

{  

  u16 i,j;  

  for(i=xms;i>0;i--)  

   for(j=330;j>0;j--)  

   {  

      asm("nop");  

   }  

}  

void Gpio_Init(void)  

{  

  /*PE5设置为推挽输出*/  

  PE_DDR|=0x20;  

  PE_CR1|=0x20;  

  PE_CR2|=0x00;  //最大为10MHz  

}  

/*ADC初始化*/  

void Adc_Init(void)  

{  

  /*PB0 设置为悬浮输入*/  

  PB_DDR &=0xFE;  //PB0输入模式  

  PB_CR1 &=0xFE;  //PB0浮空输入  

  PB_CR2 &=0xFE;  //PB0禁止外部中断  

  /*开启ADC时钟*/  

  CLK_PCKENR2 |= 0x08;  //开启ADC时钟  ADC时钟默认是开启的,可不设置  

  /*设置ADC时钟、转换模式、数据对齐格式和通道*/  

  ADC_CR1 = 0x00;  //ADC时钟1MHz,单次转换,关闭ADC  默认如此  

  ADC_CR2 = 0x00;  //数据左对齐,禁止外部触发,禁止扫描模式   默认如此  

  ADC_CSR = 0x00;  //选择通道0 AIN0   默认如此  

}  

/*获取10位的ADC转换结果*/  

u16 Get_Adc_Result(void)  

{  

  u8 ADC_H,ADC_L;  

  u16 ADC_temp;  

  ADC_CR1 |= 0x01;  //启动ADC 启动ADC电源  

  delay_ms(1);      //延时1ms 等待ADC启动  

  ADC_CR1 |= 0x01;  //再次启动ADC转换  

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

  ADC_H = ADC_DRH;  //左对齐 先读高八位  

  ADC_L = ADC_DRL;  //读取低位值  

  ADC_temp = (ADC_H << 8) +ADC_L; //两个八位数据合并成一个16位数据  

  return ADC_temp;  //返回10位ADC转换结果  

}  

  

int main( void )  

{  

  u16 temp;  

  System_Init();  

  Gpio_Init();  

  Adc_Init();  

  while (1)  

  {  

    temp = Get_Adc_Result();  

    if(temp>=800)  //如果ADC转换结果大于800  

    {  

      PE_ODR = 0x00;  //PE5口的LED点亮  

    }  

    else PE_ODR = 0xFF;  //否则PE5口的LED不点亮  

    delay_ms(800);  //延时800ms  

  }  

}  


推荐阅读

史海拾趣

佰鸿(BrtLed)公司的发展小趣事

近年来,佰鸿公司开始将业务触角延伸至再生医学领域。通过多年的努力,公司成功建立了再生医学医疗与健康科技生态圈,并逐步实现了产业集群化。在再生医学领域,佰鸿不仅建立了产业化场地和研发设备,还计划在未来几年内打造国际领先的再生医学产业集群。这一多元化的发展战略,使得佰鸿在电子行业之外,也找到了新的增长点。

Alpha & Omega Semiconductor(万国半导体)公司的发展小趣事

随着业务规模的不断扩大,佰鸿意识到提升产能效率的重要性。于是,公司在1990年转投资中国大陆兴建东莞高步厂,现有土地面积和厂房面积均达到相当规模,员工数量也增至数千人。这一举措极大地提升了佰鸿的生产能力,使其能够更好地满足市场需求,同时也为公司后续的发展提供了有力的支持。

Acme Electric Corporation公司的发展小趣事

佰鸿公司在2008年成立之初,正值LED行业蓬勃发展的时期。面对激烈的市场竞争,公司经过深入的市场调研,确立了LED大功率路灯制造商、方案提供商、系统集成商的市场定位。随后,佰鸿在大功率路灯照明市政LED改造方面投入大量精力,成功完成了兰池大道、咸阳快速干道等多个大型LED路灯方案设计及老旧路灯改造项目。这些项目的成功实施,不仅为佰鸿在市场上站稳了脚跟,也为其后续发展奠定了坚实的基础。

DREMEL公司的发展小趣事

在电子行业的快速发展中,Dremio公司以其独特的数据治理技术崭露头角。他们开发了一种新型的数据处理引擎,能够直接在云数据湖中查询和分析数据,无需将数据复制到专有数据仓库中。这一创新技术大大提高了数据处理效率,降低了成本,并为企业提供了更灵活的数据管理方式。Dremio凭借这一技术,迅速在电子行业中树立了领先地位。

AEM [ American Electronic Materials]公司的发展小趣事

在电子行业的发展过程中,AEM始终保持着对技术创新的追求。公司不断投入巨资进行技术研发,引进先进的生产设备和制造工艺,致力于提升产品的性能和品质。通过多年的努力,AEM成功突破了多项技术难题,取得了一系列重要的技术成果。

此外,AEM还积极与产业上下游的企业进行合作,共同推动电子行业的发展。通过与供应商和客户的紧密合作,AEM不断优化供应链和销售渠道,提高了公司的运营效率和市场竞争力。

Herotek Inc公司的发展小趣事

随着半导体技术的飞速发展,Henkel公司紧跟行业趋势,不断研发适用于半导体封装的高性能粘合剂。其研发的粘合剂产品不仅满足了半导体封装过程中对于高精度、高可靠性的要求,还显著提升了封装效率。例如,Henkel的某些粘合剂产品能够在极端温度条件下保持稳定的性能,确保半导体器件在各种工作环境中都能正常运行。这一技术突破为Henkel在半导体封装市场赢得了广泛的认可。

问答坊 | AI 解惑

用PADS2007 选择管脚对pin pair 为什么有的不能选上呢 ?

用PADS2007 选择管脚对pin pair 为什么有的不能选上呢?哪位大侠遇到过这种问题, 请帮忙指点一下。…

查看全部问答>

时尚手机变手镯 Dial Phone美丽创意

由Jung Dae Hoon设计的一款前卫的手镯式概念手机Dial Phone,外形时尚,设计师将手机设计成环形,可以像手镯一样戴在手腕上,相当有创意。该手机的数字键通过手镯边缘透射出来,然后根据手镯上对应的按键拨号,接听来电应该是要靠外接耳机来协助完 ...…

查看全部问答>

模拟电梯控制器(仅供参考,不可抄袭)

一、 模拟电梯控制器 设计基于单片机的电梯模拟器,模拟4层电梯运行,具体要求如下: 1. 采用51系列单片机 2. 采用直流电机驱动  3. 采用光电方法实现楼层精确对位 4. 采用键盘模拟电梯楼层选择(1/2/3/4, ...…

查看全部问答>

ARM的循环问题

小弟刚接触ARM汇编 现在想写个程序求2^n 比如求2^10 我写的代码如下       MOV R0, #10       MOV R1, #1 loop       SUB R0, R0, #1       MUL R1, R1, 2 ...…

查看全部问答>

跪求2007年B题无线识别装置

跪求2007年B题无线识别装置,有没有由西安电子科技大学,作者是闵彪 谢胜祥 周涛,赛前辅导老师:谢楷 的相关资料,跪求了!!!!!!!!!!,感激不尽啊…

查看全部问答>

使用Tornado,启动VxSim时出现错误

启动VxSim时,出现     Connecting to target agent...     Error: rpccore backend client Timed out failed. 请问,这个问题我应该如何解决??…

查看全部问答>

MSP430系列单片机接口技术及系统设计实例

简介:本书详细地介绍了TI公司的MSP430系列单片机。全书共分5章。首先讲述MSP430全系列所涉及的片内外围模块的功能、原理、应有及各个系列的模块构成情况;其次讲述MSP430的开发环境及如何使用汇编语言、C语言进行程序设计;最后例举大量的以MSP430为 ...…

查看全部问答>

是不是处理器的IO口都应该接上电阻(120R~470R)再接外设呀??

是不是处理器的IO口都应该接上电阻(120R~470R)再接外设呀??…

查看全部问答>

自己刚做的底版,协议栈不能运行,请大伙帮忙看看,先谢过了

之前调 系统层 程序的时候,用的是别人的 核心板+底板。现在需要一些其他功能,于是自己按照原来的底板的,又自己制作了一张底板。但是发现在新底板上,程序运行是有问题的。比如说sapi.c中SAPI_Init函数中osal_set_event(task_id, ZB_ENTRY_EVENT) ...…

查看全部问答>

分享MSP430单片机ADC12模块 序列单次采集的 应用范例

转 //****************************************************************************** //MSP430F149 ADC12模块+串行通讯的实验程序 //使用ADC12采集实验,将采集到数据送向PC.(序列单次采集) //P3.4为发送,P3.5为接收 晶体使32768HZ/8MHZ. 串 ...…

查看全部问答>