找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 22539|回复: 5
打印 上一主题 下一主题
收起左侧

STC15F2K60S2单片机内部自带AD转换实验

  [复制链接]
跳转到指定楼层
楼主
ID:329974 发表于 2018-7-5 10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
实验  AD转换

一、实验目的

了解STC单片机ADC的结构;

掌握STC单片机ADC的使用。

二、实验原理

STC15F2K60S2单片机内含8路10位高速AD转换器,速度可达30万次/秒。单片机P1口既可作为普通I/O口,也可作为AD转换器模拟电压输入口。AD转换器相关的寄存器如表1所示。

表1  ADC转换相关寄存器

P1ASF

P17ASF

P16ASF

P15ASF

P14ASF

P13ASF

P12ASF

P11ASF

P10ASF

ADC_CONTR

ADC_POWER

SPEED1

SPEED0

ADC_FLAG

ADC_START

CHS2

CHS1

CHS0

ADC_RES









ADC_RESL









CLK_DIV

PCON2

MCKO_S1

MCKO_S0

ADRJ

Tx_Rx

Tx2_Rx2

CLKS2

CLKS1

CLKS0

IE

EA

ELVD

EADC

ES

ET1

EX1

ET0

EX0

IP

PPCA

PLVD

PADC

PS

PT1

PX1

PT0

PX0


①P1口控制寄存器P1ASF

P1ASF某一位为“1”,P1口对应的引脚设为模拟功能。某一位为“0”,对应的引脚设为普通I/O。

②ADC控制寄存器ADC_CONTR

              ADC_POWER=1,打开AD转换器电源(关闭电源可降低功耗,ADC初次上电需适当延时,再启动AD转换)。

              SPEED1、SPEED0选择AD转换速度。            

SPEED1

SPEED0

AD转换时间

1

1

90个时钟周期

1

0

180个时钟周期

0

1

360个时钟周期

0

0

540个时钟周期


              ADC_FLAG:AD转换结束标志,需由软件清0。

              ADC_START:AD转换启动控制。

              CHS2、CHS1、CHS0:选择模拟输入通道P1.0~P1.7。

转换结果存放在ADC_RES和ADC_RESL寄存器中,当CLK_DIV.5/ADRJ=0时,ADC_RES为结果的高8位,ADC_RESL为结果的低2位(如表2所示)。当CLK_DIV.5/ADRJ=1时,ADC_RES为结果的高2位,ADC_RESL为结果的低8位(如表3所示)。

表2  ADRJ=0时ADC转换结果寄存器格式

ADC_RES

RES9

RES8

RES7

RES6

RES5

RES4

RES3

RES2

ADC_RESL

-

-

-

-

-

-

RES1

RES0


表3  ADRJ=1时ADC转换结果寄存器格式

ADC_RES







RES9

RES8

ADC_RESL

RES7

RES6

RES5

RES4

RES3

RES2

RES1

RES0


STC15F2K60S2的AD转换器以Vcc为参考电压,当ADRJ=0时,10位转换结果与输入模拟电压的关系由式(1)计算:

…………...……………………(1)

如果只取高8位,则由式(2)计算:

……………………………………...…………………(2)

当ADRJ=1时,10位转换结果与输入模拟电压的关系由式(3)计算:

…………………………………(3)

如果单片机Vcc电压不稳,会引起AD转换误差,在实际应用中,可用一路AD采样外部的基准电压(如用TL431基准电源),另一路AD采样被测电压,按式(4)计算:

………………………………..…………………..(4)

三、实验环境

Windows XP;

Keil μ Vision 4;

STC-ISP-6.28。

四、实验内容

1.实验连线

分别用两根8芯杜邦线将单片机P2口与J61、单片机P0口与J62连接起来,P0口用于数码管的位选择,P2口输出数码管的显示码。用跳线帽短接JP8、JP9,模拟输入经过RC滤波(如图1所示)。用杜邦线连接连接J35和P1.3,单片机通道3采样模拟输入电压。

图1  ADC模拟输入滤波电路

2.程序设计

Keil汇编或C语言头文件REG51.H不包含STC单片机ADC寄存器定义,而编程时需要用到ADC_CONTR、ADC_RES等特殊功能寄存器,STC-ISP软件提供各种STC单片机的寄存器定义头文件。在STC-ISP软件界面,选择头文件选项卡,选择好单片机系列,该系列的寄存定义出现在文本框中,可以复制头文件内容,也可以保存头文件(如图8-2所示)。本实验可以将头文件命名为STC15F2K.H,保存到\Keil\C51\INC文件夹中,以后编程时直接用该头文件替换REG51.H。

AD转换可以用中断的方式,也可以用查询的方式。每次转换结束,将ADC_RES寄存器和ADC_RESL寄存器内容存入整型变量result。当ADRJ=0时:

int  result;

    result=(ADC_RES<<2)|(ADC_RESL&3);

    vin=result*Vcc/1024;              //Vcc单位为毫伏

图9-2  STC15F2K系列头文件

3.程序设计

程序经编译生成HEX文件,再利用STC-ISP软件将代码下载到单片机中,调节多圈电位器W3,观察数码管显示值的变化。用数字万用表核对J35的输入电压与数码管显示的电压是否一致。

五、思考题

1. ADC通道2对2.45V基准电压(J41)采样,通道3对模拟输入电压采样,根据(4)式计算并显示被测电压。

2.如何实现多路电压检测并轮流显示?



以上图文的Word格式文档下载(内容和本网页上的一模一样,方便保存):

实验 AD转换.docx (104.09 KB, 下载次数: 225)



评分

参与人数 1黑币 +11 收起 理由
李春雨 + 11 很给力!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:371957 发表于 2018-8-18 17:16 | 只看该作者
分析的很好
回复

使用道具 举报

板凳
ID:396581 发表于 2018-9-26 13:52 | 只看该作者
鸡肋,食之无味,弃之可惜
回复

使用道具 举报

地板
ID:408797 发表于 2018-10-12 22:07 来自手机 | 只看该作者
#include "ad_12c.h"unsigned char ch=0;unsigned int  AD_value[10]={0};unsigned int  AD_data[3]={0};void init_AD(){                P1ASF=0X07;                ADC_RES=0;          ADC_RESL=0;          ADC_CONTR=(ADC_POWER|ADC_SPEEDLL|ADC_START)&(~ADC_FLAG)|ch;          EA=1;          EADC=1;}void AD_areg(){        unsigned char i=0;        unsigned int sum=0;        for(i=0;i<10;i++)        {                sum=sum+AD_value[i];        }        AD_data[ch]=sum/10;        }void ADC_inter()interrupt 5{        static unsigned char i=0;                 ADC_CONTR&=~ADC_FLAG;        AD_value[i]=ADC_RES;        AD_value[i]=(AD_value[i]<<2)+(ADC_RESL&3);  ADC_CONTR=(ADC_POWER|ADC_SPEEDLL|ADC_START)|ch;          i++;        if(i>9)        {                i=0;                AD_areg();                ch++;                if(ch==3)ch=0;        }               
回复

使用道具 举报

5#
ID:420186 发表于 2019-12-25 10:39 | 只看该作者
出来的数据为什么不对
回复

使用道具 举报

6#
ID:960285 发表于 2021-8-13 09:31 | 只看该作者
这个咋仿真
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表