实验5 STC单片机ADC转换实验-V20170317 联系客服

发布时间 : 星期四 文章实验5 STC单片机ADC转换实验-V20170317更新完毕开始阅读0af7acdb6aec0975f46527d3240c844768eaa052

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

1.实验目的

学习STC12C5A单片机ADC知识;

2.实验设备

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

软件:Keil u Vision4编译软件,STC下载软件STC_ISP; 芯片手册:配套光盘\\附件\\芯片手册\\STC单片机手册

源码路径:配套光盘\\源代码\\单片机原理与技术\\实验5 STC单片机ADC转换实验-V20170317

hex路径:配套光盘\\源代码\\单片机原理与技术\\实验5 STC单片机ADC转换实验-V20170317\\out\\ADC.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集成开发环境,打开配套光盘\\源代码\\单片机原理与技术\\实验5 STC单片机ADC转换实验-V20170317下的工程文件,编译源码,生成ADC.hex可执行文件,该可执行文件自动保存在配套光盘\\源代码\\单片机原理与技术\\实验5 STC单片机ADC转换实验-V20170317\\out目录下。(注意:请根据该目录下ADC.hex文件的生成时间,判断该文件是否是自己刚刚编译完成的)

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

4.1.3 根据配套光盘\\第三方应用软件\\STC_ISP\\STC-ISP软件使用说明书,使用STC-ISP软件将4.1.1步中生成的可执行ADC.hex文件通过STC_ISP串口下载软件,下载到12号节点的STC单片机中。

4.2 实验源代码解析

ADC.c源代码