STM8 AD转换

以下资料由微雪电子整理并发布,未经许可不得转载,否则追究相应责任!

系统功能

  大部分STM8内部带有AD,本节以使用STM8S105的内部AD为例,给出AD转换中断程序。   

硬件设计


AD转换值低位,LED控制电路原理图

AD转换值高位,LED控制电路原理图

软件设计

/*********************************************************************
微 雪 电 子 WaveShare http://www.waveShare.net
目标系统: 基于STM8单片机
应用软件: Cosmic CxSTM8
说 明: 若用于商业用途,请保留此段文字或注明代码来源
深 圳 市 微 雪 电 子 有 限 公 司 保 留 所 有 的 版 权
*********************************************************************/

#include <stm8s207s8.h>

void Init_AD(void)
{
        ADC_CSR=0x09; //选择通道
       ADC_CR2|=0x08; // 数据排列,右对齐
       ADC_TDRL=0x20;
}

void main(void)
{
       PB_DDR = 0xff;
       PB_CR1 = 0xff;
       PB_CR2 = 0x00;

       PD_DDR = 0xff;
       PD_CR1 = 0xff;
       PD_CR2 = 0x00;

       PE_DDR &= (~0x40);

       Init_AD();
       while (1)
       {
              ADC_CR1|=0x01;
              for(i=0;i<100;i++); // 延时一段时间,至少7uS,保证ADC模块的上电完成
              ADC_CR1|=0x01; // 再次将CR1寄存器的最低位置1,开启AD转换

              while((ADC_CSR & 0x80)!=0x80); // 等待转换结束
              PB_ODR=ADC_DRH;
              PD_ODR=ADC_DRL;
              ADC_CSR&=(~0x80);
       }
}


系统调试

用LED显示AD转换值,调“ADJ0.AD0”的可调电阻可改变AD转换值,观察它的变化。

STM8 AD转换

——