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

合集下载

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

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

实验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转换器电源

单片机AD转换实验报告

单片机AD转换实验报告

单片机实验报告(五)

实验名称:A/D转换

姓名:张昊

学号:110404247

班级:通信2班

时间:2013.12

南京理工大学紫金学院电光系

一、实验目的

1、理解A/D转换的工作原理;

2、理解掌握ADC0809的A/D转换原理和并行A/D转换器接口的编程方法;

3、学习使用并行模/数转换芯片ADC0809进行电压信号的采集和数据处理。

二、 实验原理

在设计A/D 转换器与单片机接口之前,往往要根据A/D 转换器的技术指标选择A/D 转换器。A/D 转换器的主要技术指标-----量化间隔和量化误差是A/D 转换器的主要技术指标之一。量化间隔可用下式表示,其中n 为A/D 转换器的位数:

A/D 转换器芯片种类很多,按其转换原理可分为逐次比较式、双重积分式、量化反馈式和并行式A/D 转换器;按其分辨率可分为8~16位的A/D 转换器芯片。目前最常用的是逐次逼近式和双重积分式。 A/D 转换器与单片机接口具有硬、软件相依性。一般来说,A/D 转换器与单片机的接口主要考虑的是数字量输出线的连接、ADC 启动方式、转换结束信号处理方法以及时钟的连接等。

一个ADC 开始转换时,必须加一个启动转换信号,这一启动信号要由单片机提供。不同型号的ADC ,对于启动转换信号的要求也不同,一般分为脉冲启动和电平启动两种:

对于脉冲启动型ADC ,只要给其启动控制端上加一个符合要求的脉冲信号即可,如ADC0809、ADC574等。通常用WR 和地址译码器的输出经一定的逻辑电路进行控制;

对于电平启动型ADC ,当把符合要求的电平加到启动控制端上时,立即开始转换。在转换过程中,必须保持这一电平,否则会终止转换的进行。因此,在这种启动方式下,单片机的控制信号必须经过锁存器保持一段时间,一般采用D 触发器、锁存器或并行I/O 接口等来实现。AD570、AD571等都属于电平启动型ADC 。

第13章 STC单片机ADC原理及实现(5)

第13章 STC单片机ADC原理及实现(5)

进入点设 定
0
0
0
0
0
0
0
1 I/D S I=0,递减模式。I=1,递增模;S=0,
关闭整个移动。S=1,打开整个移动;
S=0,关闭整个移动;
交流电压测量和12864 LCD显示
---12864图形点阵LCD命令和数据
设置显示(D),光标(C)和光标闪 烁(B)打开/关闭控制。
D=0,显示关闭;
显示打开
R/W=0,写操作
6
E
芯片使能信号
7
DB0
8位数据总线信号
8
DB1
9
DB2
10
DB3
11
DB4
12
DB5
13
DB6
14
DB7
15
PSB
并 / 串 模 式 选 择 。 PSB=1 ,
并行;PSB=0,串行
16
N.C
不连接
17
/RST
复位,低电平有效
18
VOUT
倍压输出脚
19
BLA
背光源正极,接+5.0V
字符发生ROM
即:Character Generation ROM ,CGROM。里面存储了中文汉字的 字模,也称作中文字库,编码方式有GB2312(中文简体)和BIG5(中 文繁体)。

第13章 STC单片机ADC原理及实现(5)

第13章 STC单片机ADC原理及实现(5)

交流电压测量和12864 LCD显示
--12864图形点阵LCD内部存储空间
DDRAM结构如下所示:
80H、81H、82H、83H、84H、85H、86H、87H、88H、89H、8AH、8BH、8CH、8DH、8EH、8FH 90H、91H、92H、93H、94H、95H、96H、97H、98H、99H、9AH、9BH、9CH、9DH、9EH、9FH A0H、A1H、A2H、A3H、A4H、A5H、A6H、A7H、A8H、A9H、AAH、ABH、ACH、ADH、AEH、AFH B0H、B1H、B2H、B3H、B4H、B5H、B6H、B7H、B8H、B9H、BAH、BBH、BCH、BDH、BEH、BFH
20
BLK
背光源负极,接地
交流电压测量和12864 LCD显示
--12864图形点阵LCD指标
12864是指LCD的屏幕分辨率为128×64。
12864中文汉字图形点阵液晶显示模块,可显示汉字及图形,内
置8192 个中文汉字(16×16 点阵)、128个字符(8×16 点阵)
及64X256 点阵显示RAM(GDRAM)。JGD12864图形点阵
屏幕尺寸 93×70×12.5mm(长×宽×高)
多重模式 显示光标、画面移动、自定义字符、睡眠模式等
交流电压测量和12864 LCD显示
--12864图形点阵LCD内部存储空间

(完整word)实验11 NFC通信实验-V20170317

(完整word)实验11 NFC通信实验-V20170317

实验11 NFC通信实验—V20170317

1.实验目的

了解NFC近场通信原理和过程;

学习PN532的使用;

2.实验设备

硬件:RFID实验箱6号NFC节点;

软件:STC下载软件STC_ISP,RFID实验箱管理软件;

芯片手册:配套光盘\附件\芯片手册\PN532用户手册

3.实验原理

3。1 NFC简介

NFC是Near Field Communication缩写,即近距离无线通讯技术。是一种短距离的高频无线通信技术,允许电子设备之间进行非接触式点对点数据传输,在十厘米(3.9英吋)内,交换数据。

这个技术由免接触式射频识别(RFID)演变而来,由飞利浦公司和索尼公司共同开发的NFC 是一种非接触式识别和互联技术,可以在移动设备、消费类电子产品、PC 和智能控件工具间进行近距离无线通信。

3.2 工作模式

1。卡模式(Card emulation):这个模式其实就是相当于一张采用RFID技术的IC卡(个人理解).可以替代现在大量的IC卡(包括信用卡)场合商场刷卡、公交卡、门禁管制,车票,门票等等。此种方式下,有一个极大的优点,那就是卡片通过非接触读卡器的 RF 域来供电,即便是寄主设备(如手机)没电也可以工作.

2。点对点模式(P2P mode):这个模式和红外线差不多,可用于数据交换,只是传输距离比较短,传输创建速度快很多,传输速度也快些,功耗低(蓝牙也类似)。将两个具备 NFC 功能的设备链接,能实现数据点对点传输,如下载音乐,交换图片或者同步设备地址薄。因此通过NFC,多个设备如数字相机,PDA,计算机,手机之间,都可以交换资料或者服务。

STC单片机AD转换结果

STC单片机AD转换结果

#include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义#include //sfr ADC_CONTR = 0xbc ; //AD控制位 不可位寻址sfr ADC_RES = 0xbd ; //AD转换结果8位寄存器sfr ADC_RESL = 0xbe ; //AD转换结果你二位寄存器sfr AUXR1 = 0xa2 ;//sbit EADC=IE^5 ;sfr PIASF = 0x9d ; //P1口通道选择是AD转换引脚 还是I/O引脚有八位void Delay2xus(unsigned char t){ while(--t);}unsigned char ADC_run(unsigned char pass) //只要输入0到7它就可以把AD结果返回{unsigned char temp ;AUXR1=0x04 ;// 取10位AD的低8位结果 EA=0 ; //总中断关闭//选择是那个通道temp=0x01

STC单片机ADC转换

STC单片机ADC转换

STC单片机ADC转换

#include"stc12c5a.h"

#include

#include"adc.h"

uchar P1ASF_Fuction(uchar N) //P1 adc转换传入n脚

{

uchar temp=0;

uint ADC=0;

EA=0; //关闭中断

P1ASF=0x01<

ADC_CONTR=0xe0|N; //打开adc电源,设置转换速率设置P1.0模拟通道

_nop_(); //适当延时

_nop_();

_nop_();

_nop_();

ADC_CONTR=0xe8|N;//启动adc转换

while(!(ADC_CONTR==(0xf0|N))); //循环等待是否转换完毕

ADC_CONTR=0x60; //关闭adc电源清楚ADC_FLAG标志位

ADC=ADC_RES;

ADC<<=2;

ADC|=ADC_RESL;

temp=(ADC)*50/1024; //结果为mV

EA=1; //开启中断

return temp;

}

STC单片机AD转换及EEPROM使用

STC单片机AD转换及EEPROM使用

STC单片机AD转换及EEPROM使用

STC单片机AD转换及EEPROM使用

随着各种电子设备的普及,信号处理的重要性日益凸显。而一款好的ADC (Analog to Digital Convertor) 和一个高效的存储平

台EEPROM (Electrically Erasable Programmable Read-Only Memory) 就成为建立可靠稳定的信号处理系统的重要组成部分。本文将讨论STC单片机如何进行AD转换及EEPROM的

使用。

首先,AD转换是将模拟信号转换成数字量的过程,是建立信

号处理系统的关键步骤之一。STC单片机内置了一个12位的AD转换器,也就是说,它可以将模拟信号转换成一个12位

的数字信号,这是非常精确的。下面我们来看看如何在代码中使用AD转换。

AD转换的原理很简单,即将待转换的模拟信号输入到AD口,接着启动AD转换。当转换结束后,检测转换结束标志位,然后将转换结果读出。这里具体介绍一下代码的实现方法。

首先,需要定义AD口的引脚、参考电压及转换效率等参数。代码如下:

#define ADC_PIN 0x01 //定义AD口所连接的引脚为P1.1

#define ADC_REF 0x80 //定义参考电压为内部参考电压

#define ADC_MODE 0xC0 //定义转换效率为最快

接着,需要配置AD口所连接的引脚,使其成为输入口。代码如下:

P1ASF = 0x02; //定义P1.1为AD口输入

接下来,启动AD转换,等待转换结束标志位的出现。代码如下:

ADC_CONTR = ADC_REF | ADC_MODE | ADC_PIN; //配置AD口

试验五AD、DA转换实验

试验五AD、DA转换实验

试验五. A/D、D/A转换实验

一、实验目的

1. 学习理解模/数信号转换和数/模转换的基本原理。

2. 掌握模/数转换芯片ADC0804和数/模转换芯片DAC0832的使用方法。

二、实验设备

TD-PITE实验装置(带面包板)一套,实验用转换芯片两片,±12V稳压电源一台、运放两片、温度传感器、电位器(5.1KΩ)一个、电阻若干,面包板用导线若干,排线若干,万用表一个。

三、实验内容

(1)设计A/D转换电路,采集可调电阻的输出电压。连+5V电源,调节后的输出电压作为ADC0804的模拟输入量,然后进行A/D转换,转换结果由发光二极管上显示。请填写实验数据表格:

(2)将LM35 精密摄氏度温度传感器连+5V电源,输出电压直接作为ADC0804 的模拟输入量,然后进行A/D转换,转换结果经过计算得到摄氏度值放在内存变量上。

(多数温度传感器是针对绝对温度的,且线形较差。LM35的输出电压与摄氏温度值成正比例关系,每10 mV 为 1 摄氏度。)

(3)设计D/A 转换,要求产生锯齿波、三角波、脉冲波,并用示波器观察电压波形。

四、实验原理

1. 模数转换器ADC0804 简介

ADC0804是用CMOS集成工艺制成的逐次比较型模数转换芯片。分辨率为8位,转换时间为100μs,输入参考电压范围为0~5V。芯片内有输出数据锁存器,与计算机连接时,转换电路的输出可以直接连接在CPU数据总线上。

图5.1 ADC0804引脚图

启动信号:当CS#有效时,WR#可作为A/D转换的启动信号。WR#高电平变为低电平时,转换器被清除;当WR#回到高时,转换正式启动。

实验AD转换

实验AD转换

实验AD转换

实验AD转换

⼀、实验⽬的

了解STC单⽚机ADC的结构;

掌握STC单⽚机ADC的使⽤。

⼆、实验原理

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

表1 ADC转换相关寄存器

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

②ADC控制寄存器ADC_CONTR

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

SPEED1、SPEED0选择AD转换速度。

ADC_FLAG:AD

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所⽰)。

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

Vcc

Vin 1024

0]:ADC_RESL[10],:ADC_RES[7= (1)

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

Vin 256

0]:ADC_RES[7=……………………………………...…………………(2)当ADRJ=1时,10位转换结果与输⼊模拟电压的关系由式(3)计算:

stc单片机ad温度转换计算

stc单片机ad温度转换计算

STC单片机AD温度转换计算

一、概述

STC单片机是一种常用的嵌入式微控制器,广泛应用于各种电子设备中。其中,采集温度传感器的数据是STC单片机的常见应用之一。本

文将介绍如何利用STC单片机的AD转换功能,实现温度数据的采集

和计算。

二、AD转换原理

1. STC单片机内部的AD转换器是一种10位逐次逼近式AD转换器,可以将模拟信号转换为数字信号。

2. 要进行温度转换,需要先连接温度传感器到STC单片机的AD输入引脚,并将相应的引脚配置为输入模式。

3. 通过编程,设置AD转换器的工作模式、参考电压和时钟频率等参数,以确保AD转换的准确性和稳定性。

三、温度传感器的接入

1. 常用的温度传感器有NTC热敏电阻、DS18B20数字温度传感器等。这些传感器可以通过一定的电路连接到STC单片机的AD输入引脚。

2. 在连接时,需要考虑传感器的电气特性,如输入电压范围、输出信

号类型等,以确保传感器与单片机的兼容性。

3. 另外,还需要考虑传感器的精度、响应时间和稳定性等性能指标,

以选择合适的传感器用于温度测量。

四、温度转换计算

1. 获取AD转换后的数字数据后,需要利用一定的算法将其转换为实

际的温度数值。

2. 对于NTC热敏电阻传感器,可以利用斯特林公式和双参数B25/85

值来计算温度。

3. 而对于DS18B20数字温度传感器,可以直接从AD转换的数字值

中得到温度数据。

4. 在计算过程中需要考虑温度传感器的特性曲线、环境温度补偿等因素,以提高温度测量的准确性和可靠性。

五、温度数据的处理与显示

1. 获取到温度数据后,可以进行一定的数据处理和滤波,以消除测量

STC单片机AD转换程序设计

STC单片机AD转换程序设计

#include <reg52.H>

#include <intrins.H>

sfr P1_ADC_EN = 0x97; //A/D转换功能允许寄存器

sfr ADC_CONTR = 0xC5; //A/D转换控制寄存器

sfr ADC_DATA = 0xC6; //A/D转换结果寄存器

sfr P1M0=0x91;

sfr P1M1=0x92;

#define uchar unsigned char ;

#define uint unsigned int ;

void delay(uchar delay_time) // 延时函数

{

uchar n;

uint m;

for (n=0;n<delay_time;n++)

{

for(m=0;m<10000;m++);

}

}

uchar get_AD_result(uchar channel)

{

uchar AD_finished = 0; // 存储A/D 转换标志

ADC_DATA = 0;

ADC_CONTR = channel; // 选择A/D 当前通道

delay(1); //使输入电压达到稳定

ADC_CONTR |= 0x08; //0000,1000 令ADC_START = 1, 启动A/D 转换

AD_finished = 0;

while ( AD_finished == 0 ) // 等待A/D 转换结束

{

AD_finished = (ADC_CONTR & 0x10); //0001,0000, ADC_FLAG ==1测试A/D 转换结束否

2017单片机原理及应用实验指导书

2017单片机原理及应用实验指导书

单片机原理与及应用实验指导书

测控系

2016年4月

目录

1 单片机实验板 (3)

1.1 资源介绍 (3)

1.2原理图 (4)

1.3 PCB丝印图 (6)

2 KEIL软件的使用 (7)

3 STC-ISP下载软件的使用方法 (15)

实验一熟悉KEIL软件的使用 (18)

实验二Keil C51程序设计上机练习 (20)

实验三单片机中断实验 (22)

实验四中断及定时器∕计数器实验 (24)

实验五数码管显示器实验 (27)

实验六串口通信实验 (29)

实验七AD转换器实验 (32)

实验八DA转换器实验 (35)

1 单片机实验板

1.1资源介绍

1)采用STC8952RC(与标准51指令、脚位完全兼容),支持在线串行ISP下载。

2)供电方式:USB供电及下载

3)USB转串口RS232 (PL2303芯片)

4)4个LED发光管,1个电源指示灯

5)四位数码管

6)4个独立式键盘(包含外部中断按键),1个复位或下载按键

7)DS1302一片

8)AT24C02一片

9)热敏电阻1支

10) 加热电阻 1个

11)12864液晶显示接口

12)PCF8573一片

13)AD电位器一个

14) 蜂鸣器一个

15)DS18B20温度传感器(选配件)

16)IrDA红外接收头(遥控器为选配件)

产品图片:

资源分配图如下:

1.2原理图

1.3 PCB丝印图

2 KEIL软件的使用

KEIL是51单片机开发的最常见的开发软件。

成功安装好KEIL软件后,即可看到电脑桌面上Keil软件图标,如下图。

1.双击图标,打开软件,出现如下界面。在打开的窗口中,选择“Project”菜单:

嵌入式系统实验五-ADC转换实验

嵌入式系统实验五-ADC转换实验

《嵌入式系统》课程实验报告

学生姓名:

所在班级:

指导教师:

记分及评价:

一、实验名称

ADC转换实验

二、实验目的

了解S3C2410X处理器ADC相关控制寄存器的使用;通过实验掌握模数转换的原理;掌握S3C2410X处理器的ADC转换功能。

三、实验内容

设计分压电路,利用S3C2410X集成的ADC模块,把分压值转换为数字信号,并通过超级终端和数码管观察转换结果。

四、实验原理

1、S3C2410X处理器的A/D转换

处理器内部集成了采用近似计数式的8路10位ADC,集成零比较器,内部产生比较时钟信号;支持软件使能休眠模式,以减少电压损耗。其主要特性:

—分辩率:10-位

—微分线性度误差:±1.0 LSB

—积分线性度误差:±2.0 LSB

—最大转换速率:500 KSPS

—低功耗

—供电电压:3.3V

—输入模拟电压范围:0 ~ 3.3V

—片上采样保持功能

—普通转换模式

—分离的X/Y轴坐标转换模式

—自动(连续) X/Y轴坐标转换模式

—等待中断模式

2、S3C2410X的AD转换的使用

寄存器组

处理器集成的ADC只使用到两个寄存器,即ADC控制寄存器(ADCCON)、ADC数据寄

存器(ADCDAT)。AD转换器的结构图如下:

五、实验结果

超级终端上显示以下信息:

六、练习题

参考实验程序,对第四通道的输入电压进行循环采样,循环周期为0.5S,并求出采样数据的平均值。

void adc_test(void)

{

int i,j;

UINT16T usConData;

float usEndData;

float usAllData=0.0;

adc实验报告

adc实验报告

adc实验报告

ADC实验报告

引言:

模数转换器(ADC)是一种将模拟信号转换为数字信号的设备。在现代电子技

术中,ADC起着至关重要的作用。本实验旨在通过搭建一个简单的ADC电路,深入了解其工作原理和性能特点。

一、实验目的

本实验的主要目的是通过搭建一个基本的ADC电路,探究其工作原理,并了解ADC的性能特点。具体的实验目标如下:

1. 理解ADC的基本工作原理;

2. 掌握ADC电路的搭建方法;

3. 通过实验观察和分析,了解ADC的性能特点。

二、实验原理

ADC是一种将模拟信号转换为数字信号的设备。它通过取样和量化的方式,将

连续的模拟信号转换为离散的数字信号。ADC的工作原理可以简单概括为以下

几个步骤:

1. 取样:ADC将模拟信号按照一定的时间间隔进行采样,将连续的模拟信号离

散化;

2. 量化:采样后的模拟信号经过量化处理,将其转换为离散的数字信号;

3. 编码:将量化后的数字信号编码成二进制形式,以便计算机进行处理。

三、实验器材和仪器

1. 信号发生器:用于产生模拟信号;

2. 示波器:用于观察和测量信号波形;

3. ADC芯片:用于将模拟信号转换为数字信号;

4. 电阻、电容等元器件:用于搭建ADC电路。

四、实验步骤

1. 搭建电路:根据实验原理,按照电路图搭建ADC电路,连接好信号发生器、示波器和ADC芯片;

2. 设置信号发生器:根据实验要求,设置信号发生器的频率、幅度等参数,产

生模拟信号;

3. 采样和量化:将信号发生器输出的模拟信号输入到ADC芯片中,进行采样和量化处理;

4. 观察和测量:使用示波器观察和测量ADC芯片输出的数字信号波形,并记录相关数据;

STC单片机的A D转换

STC单片机的A  D转换

/*------------------------------------------------------------------*/

/* --- STC1T系列单片机的A / D转换演示-------------------------------*/

/*------------------------------------------------------------------*/

#include "reg51.h"

#include "intrins.h"

#define FOSC 18432000L

#define BAUD 9600

typedef unsigned char BYTE;

typedef unsigned int WORD;

/*声明与ADC相关的SFR */

sfr ADC_CONTR = 0xBC; //ADC控制寄存器

sfr ADC_RES = 0xBD; //存放ADC高8位的寄存器

sfr ADC_LOW2 = 0xBE; //存放ADC低2位的寄存器

sfr P1ASF = 0x9D; //P1辅助功能控制寄存器

/*ADC_COUNT中的ADC操作常量定义*/

#define ADC_POWER 0x80 //ADC电源控制位

#define ADC_FLAG 0x10 //ADC完成标志

#define ADC_START 0x08 //ADC启动控制位

#define ADC_SPEEDLL 0x00 //420 clocks

#define ADC_SPEEDL 0x20 //280 clocks

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

实验 5

1.实验目的

学习STC12C5A单片机ADC知识;

2.实验设备

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

软件:KeiluVision4编译软件,STC下载软件STC_ISP;

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

源码路径:配套光盘\源代码\单片机原理与技术\实验5

hex路径:配套光盘\源代码\单片机原理与技术\实验5

3.实验原理

3.1A/D相关寄存器介绍

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

表3.1A/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.2P1ASF寄存器定义

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

表3.3ADC_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.4SPEED1、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.5CHS2/CHS1/CH0定义

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

表3.6ADC_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.7ADRJ=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.8IE寄存器定义

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

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

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

4.2实验源代码解析

ADC.c源代码

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

*晶振频率:选取用RC11.0592MHz

*文件名:ADC.c

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

*制作

*变更记录:2013.05.5

*变更内容:新建造

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

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

#define模拟串口和和延时会自动适应。5~35MHZ

/************* 以下宏定义用户请勿修改**************/

#include "reg51.H"

#define uchar unsignedchar

#defineuint unsignedint

/****************特殊寄存器声明************************/

sfrP1ASF=0x9D; //12C5A60AD/S2系列模拟输入(AD或LVD)选择

sfrADC_CONTR=0xBC; //带AD系列

sfrADC_RES=0xBD; //带AD系列

sfrADC_RESL=0xBE; //带AD系列

#defineADC_OFF() ADC_CONTR=0//ADC转换关

#defineADC_ON (1<<7) //ADC转换开

#defineADC_90T (3<<5) //90个时钟周期转换一次

#defineADC_180T (2<<5) //180个时钟周期转换一次

#defineADC_360T (1<<5) //360个时钟周期转换一次

#defineADC_540T 0 //540个时钟周期转换一次

#defineADC_FLAG (1<<4) //软件清0

#defineADC_START (1<<3) //开始ADC转换

#defineADC_CH0 0 //P1_0作为AD转换通道

#defineADC_CH1 1 //P1_1作为AD转换通道

#defineADC_CH2 2 //P1_2作为AD转换通道

#defineADC_CH3 3 //P1_3作为AD转换通道

#defineADC_CH4 4 //P1_4作为AD转换通道

#defineADC_CH5 5 //P1_5作为AD转换通道

#defineADC_CH6 6 //P1_6作为AD转换通道

#defineADC_CH7 7 //P1_7作为AD转换通道

相关文档
最新文档