实验5 STC单片机ADC转换实验-V20170317

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.实验目的

学习STC12C5A单片机ADC知识;

2.实验设备

硬件:12号节点,串口线;

软件:Keil u Vision4编译软件,STC下载软件STC_ISP;

芯片手册:配套光盘\附件\芯片手册\STC单片机手册

源码路径:

hex路径:

3.实验原理

3.1 A/D相关寄存器介绍

与A/D转换有关的寄存器如表3.1所示:

表3.1 A/D相关寄存器

P1ASF:P1口的模拟功能控制器。STC12C5A16S2系列单片机的A/D转换口,在P1口(P1.7-P1.0),上电复位后P1口默认为弱上拉型I/O口,用户可以通过软件设置将8路中的任何一路设置为A/D转换,不需作为A/D使用的P1口可继续作为I/O 口使用(建议只作为输入)。需作为A/D使用的口需先将P1ASF特殊功能寄存器中的相应位置为‘1’,将相应的口设置为模拟功能。P1ASF寄存器的定义如表3.2所示:

表3.2 P1ASF寄存器定义

ADC_CONTR:ADC控制寄存器。该寄存器的描述如表3.3所示:

表3.3 ADC_CONTR寄存器定义

对ADC_CONTR寄存器的操作建议使用直接赋值语句,不要使用“与”和“或”语句。

ADC_POWER:?ADC电源控制位。

0:关闭A/D转换器电源

1:打开A/D转换器电源

建议进入空闲模式时,将ADC电源关闭,即ADC_POWER?=0。启动A/D转换前一定要确认A/D电源已打开,A/D转换结束后关闭A/D电源可降低功耗,也可不关闭。初次打开内部A/D转换模拟电源,需适当延时,等内部模拟电源稳定后,再启动A/D 转换。

建议启动A/D转换后,在A/D转换结束之前,不改变任何I/O口的状态,有利于高精度A/D?转换,若能将定时器/串行口/中断系统关闭更好。

SPEED1,SPEED0:模数转换器转换速度控制位,其描述如表3.4所示:

表3.4 SPEED1、SPEED0描述

ADC_FLAG:模数转换器转换结束标志位,当A/D转换完成后,ADC_FLAG=1,要由软件清0。不管是A/D转换完成后由该位申请产生中断,还是由软件查询该标志位A/D转换是否结束,当A/D转换完成后,ADC_FLAG = 1,一定要软件清0。

ADC_START:模数转换器(ADC)转换启动控制位,设置为“1”时,开始转换,转换结束后为0。

CHS2/CHS?/CHS0:模拟输入通道选择,CHS2/CHS1/CH0描述如表3.5所示:

图3.5 CHS2/CHS1/CH0定义

ADC_RES、ADC_RESL:ADC结果寄存器。该寄存器用于存A/D转换结果,其定义如表3.6所示:

表3.6 ADC_RES、ADC_RESL寄存器定义

AUXR1寄存器的ADRJ位是A/D转换结果寄存器(ADC_RES,ADC_RESL)的数据格式调整控制位。当ADRJ=0时,10位A/D转换结果的高8位存放在ADC_RES中,低2位存放在ADC_RESL的低2位中,如表3.7所示:

表3.7 ADRJ=0时AD结果

此时,如果用户需需取完整10位结果,按下面公式计算:

如果用户只需要8位结果,按下面公式计算:

式中,Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。

当ADRJ=1时,10位A/D转换结果的高2位存放在ADC_RES的低2位中,低8位存放在ADC_RESL中。

此时,如果用户需要完整10位结果,按下面公式计算:

式中,Vin为模拟输入通道输入电压,Vcc为单片机实际工作电压,用单片机工作电压作为模拟参考电压。

IE:中断允许控制寄存器。该寄存器的描述如表3.8所示:

表3.8 IE寄存器定义

EA:CPU的中断开放标志,EA=1,CPU开放中断,EA=0,CPU屏蔽所有的中断申请。EA的作用是使中断允许形成多级控制。即各中断源首先受EA控制;其次还受各中断源自己的中断允许控制位控制。

EADC:A/D转换中断允许位

EADC=1,允许A/D转换中断

EADC=0,禁止A/D转换中断

如果要允许A/D转换中断则需要将相应的控制位置1:

1、将EADC置1,允许ADC中断,这是ADC中断的中断控制位。

2、将EA置1,打开单片机总中断控制位,此位不打开,也是无法产生ADC中断的A/D中断服务程序中要用软件清A/D中断请求标志位ADC_FLAG(也是A/D转换结束标志位)。

IPH、IP:中断优先级控制寄存器,该寄存器的定义如表3.9所示:

表3.9 IPH、IP寄存器定义

PADCH,PADC,A/D转换中断优先级控制位。

当PADCH=0且PADC=0时,A/D转换中断为最低优先级中断(优先级0)

当PADCH=0且PADC=1时,A/D转换中断为较低优先级中断(优先级1)

当PADCH=1且PADC=0时,A/D转换中断为较高优先级中断(优先级2)

当PADCH=1且PADC=1时,A/D转换中断为最高优先级中断(优先级3)

4.实验步骤

4.1 编写实验源代码文件

4.1.1 打开Keil集成开发环境,打开下的工程文件,编译源码,生成ADC.hex 可执行文件,该可执行文件自动保存在目录下。(注意:请根据该目录下ADC.hex文件的生成时间,判断该文件是否是自己刚刚编译完成的)

4.1.2 将12号节点的开关S1拨打到左边,让STC单片机与DB9相连。

4.1.3 根据配套光盘\第三方应用软件\STC_ISP\STC-ISP软件使用说明书

4.2 实验源代码解析

ADC.c源代码

/************************************************************** * 晶振频率:选取用RC 11.0592MHz

* 文件名:ADC.c

* 功能说明:STC12C5A16S2单片机的A/D转换演示实验

* 变更记录:2013.05.5

* 变更内容:新建造

**************************************************************/

/************* 用户系统配置**************/

相关文档
最新文档