MC9S12XS128AD转换详解知识讲解Word文档格式.docx

上传人:b****3 文档编号:6873950 上传时间:2023-05-07 格式:DOCX 页数:11 大小:32.68KB
下载 相关 举报
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第1页
第1页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第2页
第2页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第3页
第3页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第4页
第4页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第5页
第5页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第6页
第6页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第7页
第7页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第8页
第8页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第9页
第9页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第10页
第10页 / 共11页
MC9S12XS128AD转换详解知识讲解Word文档格式.docx_第11页
第11页 / 共11页
亲,该文档总共11页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

MC9S12XS128AD转换详解知识讲解Word文档格式.docx

《MC9S12XS128AD转换详解知识讲解Word文档格式.docx》由会员分享,可在线阅读,更多相关《MC9S12XS128AD转换详解知识讲解Word文档格式.docx(11页珍藏版)》请在冰点文库上搜索。

MC9S12XS128AD转换详解知识讲解Word文档格式.docx

也就是说,在参考电压一定时,输出位数越多,量化单位就越小,分辨率就越高。

S12的ATD模块中,若输出设置为8位的话,那么转换器能区分的输入信号最小电压为19.53mV。

b)转换时间

A/D转换器按其工作原理可以分为并联比较型(转换速度快ns级)、逐次逼近型(转换速度适中us级)、双积分型(速度慢抗干扰能力强)。

不同类型的转化的A/D转换器转换时间不尽相同,S12的ATD模块中,8位数字量转换时间仅有6us,10位数字量转换时间仅有7us。

S12内置了2组10位/8位的A/D模块:

ATD0和ATD1,共有16个模拟量输入通道,属于逐次逼近型A/D转换器(这个转换过程与用天平称物的原理相似)。

1、功能结构图

图17A/D模块功能结构图

图17所示的是A/D模块的功能结构,这个功能模块被虚线划分成为图示所示的虚线所隔离的三个部分:

IP总线接口、转换模式控制/寄存器列表,自定义模拟量。

IP总线接口负责该模块与总线的连接,实现A/D模块和通用I/O的目的,还起到分频的作用;

转换模式控制寄存器列表中有控制该模块的所有的寄存器,执行左右对齐运行和连续扫描。

自定义模拟量负责实现模拟量到数字量的转换。

包括了执行一次简单转换所需的模拟量和数字量。

2、HCS12中A/D转化模块特点

8/10位精度;

7us,10-位单次转换时间.;

采样缓冲放大器;

可编程采样时间;

左/右对齐,有符号/无符号结果数据;

外部触发控制;

转换完成中断;

模拟输入8通道复用;

模拟/数字输入引脚复用;

1到8转换序列长度;

连续转换模式;

多通道扫描方式。

ATD模块有模拟量前端、模拟量转换、控制部分及结果存储等四部分组成。

其中模拟前端包括多路转换开关、采样缓冲器、放大器等,结果存储部分主要有8个16位的存储器和反映工作状态的若干标志位。

A/D转换应用实例

要让ATD开始转换工作,必须经过以下三个步骤:

1.将ADPU置1,使ATD启动;

2.按照要求对转换位数、扫描方式、采样时间、时钟频率及标志检查等方式进行设置;

3.发出启动命令;

如果上电默认状态即能满足工作要求,那么只要将ADPU置1,然后通过控制寄存器发出转换命令,即可实现转换。

程序描述:

由通道ATD0进行单通道A/D转换,转换值在B口显示。

程序如下:

程序一:

#include<

hidef.h>

/*commondefinesandmacros*/

#include"

derivative.h"

/*derivative-specificdefinitions*/

bytead_value;

//AD转换结果

voidDelay(inti){//延时程序

intj;

for(;

i>

0;

i--)

for(j=500;

j>

j--)

;

}

/***---------------初始化程序---------------***/

voidInitBusClk(void){

CLKSEL=0X80;

//PLLSEL1:

BusClock=PLLCLK/2

//0:

BusClock=OSCCLK/2

PLLCTL_PLLON=1;

//开启PLL

SYNR=0;

REFDV=0X03;

//OSCCLK=16MHz

//PLLCLK=2*OSCCLK*[(1+SYNR)/(1+REFDV]=32/4=8MHz

while(!

(CRGFLG_LOCK==1));

//直到LOCK=1,whenPLLisready,退出循环

CLKSEL_PLLSEL=1;

//PLLSEL1:

BusClock=PLLCLK/2=8MHz/2=4MHz

//0:

BusClock=OSCCLK/2=16M/2=8MHz

}

voidInitAD(void){

ATD0CTL2=0XC0;

//11000000启动A/D,快速清除标志位

//无等待模式,外部触发禁止(bit2=0),

中断禁止(bit1=0)

ATD0CTL3=0X0C;

//00001100转换序列为1、FIFO模式启动,冻结模式下继续转换

ATD0CTL4=0XE1;

//111000018位精度,16AD采样时间

//总线(1+1)*2=4分频,AD时钟=1MHz

ATD0CTL5=0X27;

//00100111右对齐,无符号,连续转换,单通道,起始通道ATD7

//DJMDSGNSCANMULT0CCCBCA

//DJM:

1-Rightjustified0-Leftjustified

//DSGN:

1-Signeddata0-Unsigneddata

//SCAN:

1-Continuous0-Singleconversion

//CCCBCA:

AnalogInputChannelSelectCode

ATD0DIEN=0X00;

//数字输入disabled

/***---------------主程序---------------***/

voidmain(void){

/*putyourowncodehere*/

_DISABLE_COP();

//关看门狗

InitBusClk();

InitAD();

DDRB=0XFF;

//设PORTB为输出口

PORTB=0x00;

EnableInterrupts;

//开放总中断

;

){

ATD0STAT2L_CCF7);

//等待转换结束,退出循环

ad_value=(byte)ATD0DR7H;

//左对齐,右对齐时转换结果都先存储在ATD0DRxH,后存储在ATD0DRxL.

Delay(200);

//延时

PORTB=ad_value;

//PORTB输出AD转换结果,并用8个LED发光二极管显示

//_FEED_COP();

/*feedsthedog*/

}/*loopforever*/

/*pleasemakesurethatyouneverleavemain*/

程序二:

(用指针实现AD转换)

byteAD_Value;

(初始化程序与上述相同)

/***---------------读取AD转换结果---------------***/

voidAD_GetValue(word*AD_Value){

*AD_Value=ATD0DR0;

//关看门狗

//设PORTB为输出口

AD_GetValue(&

AD_Value);

//读取转换结果

Delay(400);

PORTB=AD_Value;

//转换结果在B口显示

_FEED_COP();

程序三:

(用中断实现AD转换)

mc9s12xs128.h>

byteAD_Data=0;

//*

voidDelay(inti){

//*/

//PLLSEL1:

//开启PLL

//PLLCLK=2*OSCCLK*[(1+SYNR)/(1+REFDV]=32/4=8MHz

//直到LOCK=1,whenPLLisready,退出循环

//0:

ATD0CTL2=0XC3;

//11000011启动A/D,快速清除标志位,无等待模式,外部触发禁止(bit2=0)

//中断开放(bit1=1,bit0=1)

//bit1:

ATDSequenceCompleteInterruptEnable

//bit0:

ATDSequenceCompleteInterruptFlag

ATD0CTL3=0X0C;

//总线(1+1)*2=4分频,AD时钟=1M

ATD0CTL5=0XA7;

//10100111右对齐,无符号,连续转换,单通道,起始通道ATD7

//数字输入disabled

DisableInterrupts;

//关中断

//设B口为输出口

PORTB=0X00;

//开中断

){

//while(!

PORTB=(byte)AD_Data;

//B口显示转换结构

}

/***---------------中断服务程序---------------***/

#pragmaCODE_SEGNON_BANKED

voidinterrupt22IntAD(void){//AD转换的中断向量号为33

AD_Data=ATD0DR0H;

//读取AD转换结果

//开中断

#pragmaCODE_SEGDEFAULT

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2