实验5 STC单片机ADC转换实验-V20170317
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
* 变更内容:新建造
**************************************************************/
/************* 用户系统配置**************/