历史上的今天
今天是: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
}
}
上一篇:IAR for STM8 研究
下一篇:STM8的启动过程(基于IAR)
史海拾趣
|
用PADS2007 选择管脚对pin pair 为什么有的不能选上呢 ? 用PADS2007 选择管脚对pin pair 为什么有的不能选上呢?哪位大侠遇到过这种问题, 请帮忙指点一下。… 查看全部问答> |
|
由Jung Dae Hoon设计的一款前卫的手镯式概念手机Dial Phone,外形时尚,设计师将手机设计成环形,可以像手镯一样戴在手腕上,相当有创意。该手机的数字键通过手镯边缘透射出来,然后根据手镯上对应的按键拨号,接听来电应该是要靠外接耳机来协助完 ...… 查看全部问答> |
|
一、 模拟电梯控制器 设计基于单片机的电梯模拟器,模拟4层电梯运行,具体要求如下: 1. 采用51系列单片机 2. 采用直流电机驱动 3. 采用光电方法实现楼层精确对位 4. 采用键盘模拟电梯楼层选择(1/2/3/4, ...… 查看全部问答> |
|
跪求2007年B题无线识别装置,有没有由西安电子科技大学,作者是闵彪 谢胜祥 周涛,赛前辅导老师:谢楷 的相关资料,跪求了!!!!!!!!!!,感激不尽啊… 查看全部问答> |
|
启动VxSim时,出现 Connecting to target agent... Error: rpccore backend client Timed out failed. 请问,这个问题我应该如何解决??… 查看全部问答> |
|
简介:本书详细地介绍了TI公司的MSP430系列单片机。全书共分5章。首先讲述MSP430全系列所涉及的片内外围模块的功能、原理、应有及各个系列的模块构成情况;其次讲述MSP430的开发环境及如何使用汇编语言、C语言进行程序设计;最后例举大量的以MSP430为 ...… 查看全部问答> |
|
之前调 系统层 程序的时候,用的是别人的 核心板+底板。现在需要一些其他功能,于是自己按照原来的底板的,又自己制作了一张底板。但是发现在新底板上,程序运行是有问题的。比如说sapi.c中SAPI_Init函数中osal_set_event(task_id, ZB_ENTRY_EVENT) ...… 查看全部问答> |
|
分享MSP430单片机ADC12模块 序列单次采集的 应用范例 转 //****************************************************************************** //MSP430F149 ADC12模块+串行通讯的实验程序 //使用ADC12采集实验,将采集到数据送向PC.(序列单次采集) //P3.4为发送,P3.5为接收 晶体使32768HZ/8MHZ. 串 ...… 查看全部问答> |




