实验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转换实验报告
单片机实验报告(五)
实验名称: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)
进入点设 定
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)
交流电压测量和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
实验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转换结果
#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转换
#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使用
随着各种电子设备的普及,信号处理的重要性日益凸显。而一款好的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转换实验
试验五. 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转换
⼀、实验⽬的
了解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单片机是一种常用的嵌入式微控制器,广泛应用于各种电子设备中。其中,采集温度传感器的数据是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转换程序设计
#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单片机原理及应用实验指导书
单片机原理与及应用实验指导书
测控系
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转换实验
二、实验目的
了解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的性能特点。具体的实验目标如下:
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转换
/*------------------------------------------------------------------*/
/* --- 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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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转换通道