单片机原理与应用-基于汇编、C51及混合编程第9章STC12C5A60S2单片机的片内AD转换器课件_第1页
单片机原理与应用-基于汇编、C51及混合编程第9章STC12C5A60S2单片机的片内AD转换器课件_第2页
单片机原理与应用-基于汇编、C51及混合编程第9章STC12C5A60S2单片机的片内AD转换器课件_第3页
单片机原理与应用-基于汇编、C51及混合编程第9章STC12C5A60S2单片机的片内AD转换器课件_第4页
单片机原理与应用-基于汇编、C51及混合编程第9章STC12C5A60S2单片机的片内AD转换器课件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第9章STC12C5A60S2单片机的片内A/D转换器

9.1A/D转换器的内部结构9.2A/D转换器的相关寄存器9.3A/D转换器的应用第9章STC12C5A60S2单片机的片内A/D转换器传统的单片机只能处理数字量信息,但在应用中经常需要处理一些连续变化的模拟量,例如温度、流量、电压、频谱等,这就需要先经过A/D转换转变成单片机可以处理的数字量。STC90C58AD、STC12C5A60S2、STC12C5410AD等单片机内部集成了8路10位A/D转换电路,转换速度可达到250KHz(25万次/秒),即转换周期为4μs。9.1A/D转换的内部结构STC12C5A60S2单片机的A/D转换的输入端在P1口(P1.7-P1.0),上电复位后,P1口为弱上拉,用户可以通过程序将8路中的任何一路设置为A/D转换,不需作为A/D使用的口可继续作为I/O口使用。9.2A/D转换器的相关寄存器

与A/D转换器相关的寄存器有:P1口模拟功能控制寄存器P1ASFA/D转换器控制寄存器ADC_CONTRA/D转换结果寄存器ADC_RES、ADC_RESL辅助寄存器AUXR1与A/D中断有关的寄存器IE、IPH和IP1.P1口模拟功能控制寄存器P1ASF(地址9DH)

当P1口中某引脚要作为A/D使用时,要将P1ASF寄存器

中该引脚所对应的位置1,即该引脚设置为模拟功能;

通过MOVP1ASF,#DATA指令实现。2.ADC控制寄存器ADC_CONTR(地址BCH)

启动A/D转换之前一定要保证A/D转换器的电源已打开,并且首次开启内部A/D转换电源时,需要适当的延时,等内部电源稳定后,再启动A/D转换。A/D转换结束后关闭A/D转换器的电源可降低功耗。ADC_POWER:A/D转换器的电源控制位。当该位为1时,开启A/D转换器电源;当该位为0时,关闭A/D转换器电源。SPEED1、SPEED0:转换速度控制位。对SPEED1、SPEED0两位取不同的值时,A/D转换所需的时间不同,具体情况如表9-1所示SPEED1SPEED0A/D转换所需时间1190个时钟周期转换一次10180个时钟周期转换一次01360个时钟周期转换一次00540个时钟周期转换一次ADC_FLAG:A/D转换器转换结束标志位,当A/D转换完成后,硬件自动将ADC_FLAG位置1,但要通过程序将其清0。ADC_START:

转换启动控制位。将该位设置为1时,启动转换。转换结束后,该位自动清0。下次需要启动A/D转换时,必须再次将该位置1。CHS2、CHS1、CHS0:模拟输入通道选择。当CHS2、CHS1、CHS0三位取不同的值时,选择P1口不同的引脚作为模拟输入通道,具体情况如表9-2所示。CHS2CHS1CHS0模拟输入通道选择000P1.0作为A/D输入001P1.1作为A/D输入010P1.2作为A/D输入011P1.3作为A/D输入100P1.4作为A/D输入101P1.5作为A/D输入110P1.6作为A/D输入111P1.7作为A/D输入3.A/D转换结果寄存器ADC_RES、ADC_RESL

(地址0BDH、0BEH)

用于保存A/D转换结果。当辅助寄存器AUXR1(参见图2-8)中ADRJ(A/D转换结果寄存器的数据格式调整控制)位为0时,10位A/D转换结果的高8位存放在ADC_RES中,低2位存放在ADC_RESL的低2位中。ADRJ位为1时,10位A/D转换结果的高2位存放在ADC_RES寄存器的低2位中,低8位存放在ADC_RESL寄存器中。10位A/D转换的结果与输入电压的关系为:(ADC_RES[1:0],ADC_RESL[7:0])=210【例9-1】设单片机的系统时钟频率为12MHz,利用STC12C5A60S2单片机中的A/D转换模块,将测温电阻PT1000的阻值随温度变化所形成的电压信号转换成数字信号,单片机读取后存放于30H、31H单元,如图9-5所示。

【例9-1】设单片机的系统时钟频率为12MHz,利用STC12C5A60S2单片机中的A/D转换模块,将测温电阻PT1000的阻值随温度变化所形成的电压信号转换成数字信号,单片机读取后存放于30H、31H单元,如图9-5所示。

分析:首先将PT1000阻值变化所反应出的电压信号经仪表放大器AD623放大成0-5V的电压信号。经单片机内部的A/D转换器转换成数字量,为了提高转换的精确度,尽量减小电源噪声的影响,可连续采集64次,并对A/D转换的结果求和,相当于实现16位的A/D转换。汇编语言子程序AD_CONVERT1:

LCALLAD_CONV;调用A/D转换的子程序 DJNZR6,AD_CONVERT1;64次转换未结束,继续转换 MOVA,#0 MOVADC_CONTR,A;清ADC_FLAG位,并停止AD转换 RETAD_CONV: MOV A,ADC_CONTR JNB ACC.4,AD_CONV;等待A/D转换结束 MOV A,#11101000B MOV ADC_CONTR,A ;再次启动AD转换 MOV A,ADC_RESL;读转换结果的低8位 ADD A,AD_RESULT2;与低8位结果相加 MOVAD_RESULT2,A;将得到的结果存放至31H单元MOVA,ADC_RES;读转换结果的高两位ANLA,#03H;屏蔽ADC_RES寄存器的高6位 ADDCA,AD_RESULT1;与高8位结果相加 MOVAD_RESULT1,A;将得到的结果存放至30H单元 RETDELAY_10μs:

MOV

R5,#1EH

DJNZ

R5,$

RETC51程序:#include<STC12C5A.h>#include<intrins.h>//声明本征函数库unsignedinttemp,result;unsignedcharnum=0x40;//设置A/D转换次数voidAD_CONV();//A/D转换函数的声明voidDELAY_10μs();//延时10μs函数的声明voidmain(){ P1ASF=0x01;选择P1.0为A/D转换模拟量的输入 AUXR1=0x04;选择ADRJ位为1 ADC_CONTR=0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论