模数转换实验报告..
8位数模转换器ADC0809实验报告

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
单片机原理与接口技术
课程设计说明书
8位数模转换器ADC0809项目设计
专业
电气工程及其自动化
学生姓名
林雯雯
班级
D电气122
学号
1220601220
指导教师
周云龙
完成日期
2015年12月12日
一 理论部分
1
8位数模转换器ADC0809实验
(1)、设计一个0-5V可调的直流模拟电压信号
(2)、扩展2位静态显示的数码管
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:来自反向振荡器的输出。
特性概述:
AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
PCF8591模数与数模转换实验

源程序:#include <reg52.h>#include <intrins.h>#define uint unsigned int#define uchar unsigned char#define Delay4us() {_nop_();_nop_();_nop_();_nop_();}sbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;sbit SCL = P1^0;sbit SDA = P1^1;uchar Recv_Buffer[4];uint V oltage[]={'0','0','0','0'};bit bdata IIC_ERROR;uchar LCD_Line_1[] = {"1- . V 2- . V"}; uchar LCD_Line_2[] = {"3- . V 4- . V"};void Delay(uint ms){uchar i;while(ms--){for(i=0;i<120;i++)Delay4us();}}bit LCD_Busy_Check(){bit Result;LCD_RS = 0;LCD_RW = 1;LCD_EN = 1;Delay4us();Result = (bit)(P0&0x80);LCD_EN = 0;return Result;}void LCD_Write_Command(uchar cmd) {while(LCD_Busy_Check());LCD_RS = 0;LCD_RW = 0;LCD_EN = 0;_nop_();_nop_();P0 = cmd;Delay4us();LCD_EN = 1;Delay4us();LCD_EN = 0;}void LCD_Write_Data(uchar dat){while(LCD_Busy_Check());LCD_RS = 1;LCD_RW = 0;LCD_EN = 0;P0 = dat;Delay4us();LCD_EN = 1;Delay4us();LCD_EN = 0;}void LCD_Initialise(){LCD_Write_Command(0x38);Delay(5);LCD_Write_Command(0x0c);Delay(5);LCD_Write_Command(0x06);Delay(5);LCD_Write_Command(0x01);Delay(5);}void LCD_Set_Position(uchar pos){LCD_Write_Command(pos | 0x80);}void LCD_Display_A_Line(uchar Line_Addr,uchar s[]){uchar i;LCD_Set_Position(Line_Addr);for(i=0;i<16;i++){LCD_Write_Data(s[i]);}}// 将模数转换后得到的值分解存入缓存void Convert_To_V oltage(uchar val){uchar Tmp; //最大值为255,对应5V,255/5=51 V oltage[2] = val/51+'0'; //整数部分Tmp = val%51*10; //第一位小数V oltage[1] = Tmp/51+'0';Tmp = Tmp%51*10;V oltage[0] = Tmp/51+'0';}void IIC_Start() {SDA = 1;SCL = 1;Delay4us();SDA = 0;Delay4us();SCL = 0;}void IIC_Stop() {SDA = 0;SCL = 1;Delay4us();SDA = 1;Delay4us();SCL = 0;}void Slave_ACK() {SDA = 0;SCL = 1;Delay4us();SCL = 0;SDA = 1;}void Slave_NOACK(){SDA = 1;SCL = 1;Delay4us();SCL = 0;SDA = 0;}void IIC_SendByte(uchar wd){uchar i;for(i=0;i<8;i++){SDA=(bit)(wd&0x80);_nop_();_nop_();SCL = 1;Delay4us();SCL=0;wd<<=1;}Delay4us();SDA = 1;SCL = 1;Delay4us();IIC_ERROR = SDA; //IIC_ERROR=1表示无应答SCL = 0;Delay4us();}uchar IIC_ReceiveByte(){uchar i,rd = 0x00;for(i=0;i<8;i++){SCL = 1;rd <<= 1;rd |= SDA;Delay4us();SCL = 0;Delay4us();}SCL = 0;Delay4us();return rd;}//连续读入4路通道的A/D转换结果并保存到Recv_Buffer void ADC_PCF8591(uchar CtrlByte){uchar i;IIC_Start();//PCF8591地址定义1001****,高四位固定1001//第3,2,1位对应A2,A1,A0第0位为读写标志位,1为读0为写//下面代码中0x90,0x91分别为10010000,10010001 IIC_SendByte(0x90);if(IIC_ERROR == 1) return;IIC_SendByte(CtrlByte);if(IIC_ERROR == 1) return;IIC_Start();IIC_SendByte(0x91);if(IIC_ERROR == 1) return;IIC_ReceiveByte();Slave_ACK();for(i=0;i<4;i++){Recv_Buffer[i] = IIC_ReceiveByte();Slave_ACK();}Slave_NOACK();IIC_Stop();}void DAC_PCF8591(uchar CtrlByte,uchar dat){IIC_Start();Delay4us();IIC_SendByte(0x90);//发送地址字节if(IIC_ERROR == 1) return;IIC_SendByte(CtrlByte);//发送控制字节if(IIC_ERROR == 1) return;IIC_SendByte(dat);//发送待转换为模拟量的数值if(IIC_ERROR == 1) return;IIC_Stop();Delay4us();Delay4us();}/*PCF8591控制字节定义:0***0***,第3,7位固定为0 第6位取0时为模拟输入,取1时为模拟输出第4,5位为00表示4路单端的模拟输入第二位为自动递增标志,取1时自动递增第0,1位取值为00,01,10,11分别表示通道0,1,2,3 调用ADC_PCF8591时参数为00000100,即0x04调用DAC_PCF8591时参数为01000000,即0x40*/void main(){LCD_Initialise();while(1){ADC_PCF8591(0x04);Convert_To_V oltage(Recv_Buffer[0]);LCD_Line_1[2]=V oltage[2];LCD_Line_1[4]=V oltage[1];LCD_Line_1[5]=V oltage[0];Convert_To_V oltage(Recv_Buffer[1]);LCD_Line_1[10]=V oltage[2];LCD_Line_1[12]=V oltage[1];LCD_Line_1[13]=V oltage[0];Convert_To_V oltage(Recv_Buffer[2]);LCD_Line_2[2]=V oltage[2];LCD_Line_2[4]=V oltage[1];LCD_Line_2[5]=V oltage[0];Convert_To_V oltage(Recv_Buffer[3]);LCD_Line_2[10]=V oltage[2];LCD_Line_2[12]=V oltage[1];LCD_Line_2[13]=V oltage[0];LCD_Display_A_Line(0x00, LCD_Line_1);LCD_Display_A_Line(0x40, LCD_Line_2);DAC_PCF8591(0x40,Recv_Buffer[0]);}}。
微机实验报告数模转换器和模数转换器实验

实验报告课程名称微机接口与汇编语言实验项目实验五数/模转换器和模/数转换器实验实验仪器 TPC-USB通用微机接口实验系统系别计算机学院专业班级/学号学生姓名实验日期 2013.12.19成绩指导教师胡信裕实验五数/模转换器和模/数转换器实验一、实验目的1. 了解数/模转换器的基本原理,掌握DAC0832芯片的使用方法。
2. 了解模/数转换器的基本原理,掌握ADC0809的使用方法。
二.实验设备1.PC微机系统一套2.TPC-USB通用微机接口实验系统一套三.实验要求1.实验前要作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。
2.熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)使用方法。
在程序调试过程中,有意识地了解并掌握TPC-USB通用微机接口实验系统的软硬件环境及使用,掌握程序的调试及运行的方法技巧。
3.实验前仔细阅读理解教材相关章节的相关内容,实验时必须携带教材及实验讲义。
四.实验内容及步骤(一)数/模转换器实验1.实验电路原理如图:DAC0832采用单缓冲方式,具有单双极性输入端(图中的Ua、Ub),编程产生以下锯齿波(从Ua和Ub输出,用示波器观察)参考电路图2. 8位D/A转换器DAC0832的口地址为290H,输入数据与输出电压的关系为:(UREF表示参考电压,N表示数数据),这里的参考电压为PC机的+5V电源。
3. 产生锯齿波只须将输出到DAC0832的数据由0循环递增。
4. 参考流程图:参考流程图(二)模/数转换器1. 实验电路原理图如图。
将(一)的DAC的输出Ua,送入ADC0809通道1(IN1)。
连接参考电路图2. 编程采集IN1输入的电压,在屏幕上显示出转换后的数据(用16进制数)。
3. ADC0809的IN0口地址为298H,IN1口地址为299H。
4. IN0单极性输入电压与转换后数字的关系为:其中Ui为输入电压,UREF为参考电压,这里的参考电压为PC机的+5V电源。
试验一模数数模转换试验

实验一模/数、数/模转换试验一、实验目的1、加深理解模/数、数/模转换的工作原理,熟练使用和掌握ADC0809和DAC0832。
2、了解掌握A/D、D/A转换流程以及计算机分时控制模/数、数/模转换器的情况。
[试验1.1](试验线路图见图1.1-1)8088CPU的OPCLK信号与ADC0809单元电路的CLOCK相连作为ADC0809的时钟信号。
ADC0809芯片输入选通地址码A、B、C为“1”状态,选通输给A/D转换器输入-5V~+5V的模拟电压。
8253入通道IN7。
通过电位器W141的2#口用于5ms定时输出OUT2信号启动A/D转换器。
由8255口A为输入方式,A/D转换器的数据通过A口采入计算机,送到显示器上显示,并由数据总线送到D/A转换器0832的输入端。
选用8088CPU的地址输入信号IOY0为片选信号(CS), XIOW信号为写入信号(WR),D/A转换器的口地址为00H。
调节W即可改变输入电压,可从显示器上看A/D转换器对应输出的数141码,同时这个数码也是D/A转换器的输入数码。
图1.1-1A/D、D/A转换程序流程(见图1.1-2)对应下面的流程,程序已编好放在8088的监控中,可用U(反汇编)命令查看。
图1.1-2[试验1.2](试验线路图见图1.2-1)设置8253为定时方式,OUT2信号为采样脉冲,采样周期为5ms。
8255的A口为输入方式,用于采入数据。
8255的B口为输出方式,用于选择控制双路输入输出通道。
A/D转换单元可对多路模拟量进行转换,这里用6、7两路分别接入图1.2-2所示信号。
计算机控制A/D变换器分时对这两路模拟信号进行A/D转换。
将转换的数字量送至D/A变换器还原成模拟量,并送至两个采样保持器。
由8255B 口分别控制两个采样保持器的采样开关,以保证采样保持器单元电路中的OUT1输出信号与A/D变换单元U12的IN6输入信号一致;采样保持器单元电路的OUT2输出信号与A/D变换单元U12的IN7输入信号一致。
51单片机数模转换实验报告

51单片机数模转换三角波实验报告
一、实验目的
1.熟悉DAC0832的结构和用法
2.掌握DAC0832与80C51连接方法并输出锯齿波
二、实验器材
安装有驱动程序的电脑、51单片机开发板、烧录器
三、实验原理
内部结构图如下:
有三种工作方式,这里只用直通方式,所谓直通方式就是使DAC8032内部的两个寄存器(输入寄存器和DAC寄存器)处于不锁存状态,数据一旦到达输入端di7—di0,就直接送入D/A转换器,被转换成模拟量。
输入数据变化,D/A转换器的输出模拟量跟着变化。
为实现直通方式,必须使ILE为高电平,
、和端都须数字接地,这时锁存信号LE1、LE2均为高电CS、12
WR WR XFER
平,输入寄存器和DAC寄存器便均处于不锁存状态。
程序流程图:
根据流程图编程:
MOV DPTR,#7FFFH
MOV A,#00H
LOOP:MOVX @DPTR,A
DEC A
AJMP LOOP
END
使用Proteus对电路进行绘制如下图所示:
四、实验结果及总结
总结:通过本次试验我完全掌握了DAC0832的基本结构,并能熟练地使用它做出基本的模拟信号,对我以后的工作有很大的帮助。
在实验的过程中程序很好编写也很好理解,但是在连接线路时老出错,尽管把程序写进去了但是出不来结果很郁闷,最后经过不断检查,查找资料才找到少连了一根从VREF到电源的线路,通过本次试验我再次注意到简单的问题,出现错误的时候不好找到问题所在,所以以后实验再不能粗心大意了,不能看轻每个
实验。
南昌大学计算机控制实验报告数/模转换实验汇编

南昌大学实验报告学生姓名:学号:专业班级:实验类型:■验证□综合□设计□创新实验日期:实验成绩:实验一数/模转换实验一.实验要求掌握DAC0832芯片的性能、使用方法及对应的硬件电路。
编写程序控制D/A输出的波形,使其输出周期性的三角波。
二.实验说明电路实现见主板模块B1,具体说明请见用户手册。
DAC0832的片选CS0832接00H,观察输出端OUTl(B1部分)产生三角波由数字量的增减来控制,同时要注意三角波要分两段来产生。
三.实验步骤1、接线:此处无需接线。
2、示例程序:见Cpl源文件,程序流程如下图所示。
3、运行虚拟示波器方法:打开LCAACT软件中“设置”一>“实验机”,将其中的程序段地址设为8100,偏移地址0000。
然后选择“设置”一>“环境参数”一>“普通示波”,选择“工具”一>“加载目标文件”,本实验加载C:\AEDK\LCAACT\试验软件\CPI.EXE,然后选择在“工具”栏中“软件示波器”中“普通示波”,点击开始示波器即程序运行。
以后每个实验中的虚拟示波器运行方法同上。
只是加载的程4、现象:程序执行,用虚拟示波器(CHl)观察输出点OUT(B1数模转换中),可以测量到连续的周期性三角波。
通过实验结果的图片,我们可以知道得出来的三角波的幅值为U=(3.01V+1.95V)=4.96V。
T=1.3s模拟输出来的幅值和我们输入的5V有一定的偏差。
相对误差为(5-4.96)/5=0.8%,因为0832是8为的,所以分辨率为1/256即0.004。
相比较一下本次实验的误差只有0.8%,相当于掉了两个单位的分辨率。
在允许的误差范围之内。
所以本次实验的结果还算是比较成功的。
四、实验小结通过本次实验,我对数模转换的知识理解得更加透彻,以及如何使用DAC0832进行数模转换把数字量转换为模拟量并以三角波形式输出。
还知道实践和理论是有一定差距的南昌大学实验报告学生姓名:学号:专业班级:实验类型:■验证□综合□设计□创新实验日期:实验成绩:实验二模/数转换实验一.实验要求了解A/D芯片ADC0809转换性能及编程。
实验2.6模数转换
实验2.6模数转换(ADC)实验⏹实验目的●学习模数转换的原理,了解其应用方向;●学习模数转换芯片TLV0832的原理及使用;●学习掌握ICETEK-DM6437-A板扩展ADC功能的原理和具体实现方式;●学习并掌握模数转换的程序设计。
⏹实验设备●PC一台,安装WindowsXP或以上版本操作系统;安装ICETEK-DM6437-A所需实验和开发环境。
●ICETEK-DM6437-A实验箱一台。
如选择脱离实验箱测试,则配备ICETEK-XDS100v2+仿真器和ICETEK-DM6437-A,+5V电源一只,ICETEK-SG-A信号源一台及相关线缆电源。
●标准USB A口转Mini口电缆一条。
●示波器一台(20M或以上)。
⏹实验原理通用计算机(包括单片机、DSP等)采用数字电路,其输入和输出的信号都是数字量,即高电压和低电压代表的1和0信号。
但物理世界中存在的事物并不是按这种方式存在的,现实世界中的电信号也不一定与计算机的电平相同。
我们管现实世界存在的信号(转化为电信号后)为模拟量,而计算机用的输入输出信号量叫数字量。
那么就存在个问题:如何让我们要解决的物理世界中的各种信号输入到计算机(输入模拟量),计算机通过运算得到的解决方案再通过一定方式能影响到现实世界中的事物(输出模拟量)呢?计算机输入外部信号的过程叫做信号采集,对于模拟量,使用专门的电路,将被采集的模拟量变换成计算机可以识别的数据,进行分时多次采集后输入计算机系统,我们管这种方式叫做信号的数字化,由于这个采集工作并非连续进行,而是要间隔一段时间(由于电路转换需要一定时间才能完成,在转换完成过程中的信号则无法转换而被舍弃),所以又称被测信号的离散化。
●模数转换对于将连续的模拟信号转换为离散的数字信号的过程,称之为模数转换(ADC),实现这一转换的电子电路称为模数转换器(ADC转换器,Analog-to-Digital Converter)。
ad16实验报告(一)
ad16实验报告(一)AD16实验报告1. 实验背景AD16是一款常用的模数转换器,广泛应用于采集和处理模拟信号。
本次实验旨在探究AD16的工作原理及其在实际应用中的性能表现。
2. 实验环境•AD16模数转换器•信号发生器•示波器•计算机3. 实验过程3.1 连接电路将AD16模数转换器接入信号发生器和示波器,利用示波器观察输入信号和输出信号的变化。
3.2 调节参数逐步调节AD16的参数,如采样频率、量化位数等,观察输出信号的变化情况。
3.3 记录数据记录每组调节参数时的输入信号和输出信号数据,便于后续分析和比较。
4. 实验结果通过实验可以发现,AD16的性能表现优秀,在各项参数调节下都能够输出较为准确的模拟信号转换结果,且误差较小。
5. 实验分析经对实验数据的分析比较,发现采样频率对于AD16的性能影响较大,高采样率能够得到更加准确的模拟信号转换结果。
此外,量化位数也是影响AD16性能的重要因素,较高的量化位数可以提升模拟信号转换的精度。
6. 实验总结AD16模数转换器是一款性能优秀的模拟信号转换器,在实际应用中具有广泛的应用前景。
本次实验通过对其工作原理和参数调节的分析和探究,使我们更加深入了解了AD16的性能表现和应用前景。
7. 实验中的问题及改进方案在本次实验中,可能会出现测试电路失效、参数调节不准确等问题,可以通过以下改进方案解决:•使用更稳定的信号发生器和示波器,以提高测试电路的精度和准确度。
•在调节参数时,应根据实际需要逐步调整,并记录下每次调整的结果,以方便后续对比和分析。
8. 实验应用与展望AD16模数转换器在电子信息领域的应用前景十分广泛,可以广泛应用于高精度模拟信号转换、数据采集、图像处理等方面。
随着科技的不断发展,模数转换器的性能和应用领域也将不断拓展和优化,未来可以预见的是,这些设备将在更多领域得到广泛应用和发展。
9. 实验代码和数据以下是本次实验记录的部分数据和代码:import numpy as npimport matplotlib.pyplot as plt# 输入信号数据x = np.linspace(0, 2*np.pi, 50)y = np.sin(x)# 采样率为100Hz,量化位数为12位fs =100bits =12V_ref =5# AD16模拟转换V_in = V_ref*yV_out = ((2**bits)/V_ref)*V_in# 绘制输入信号和输出信号图像fig, ax = plt.subplots()ax.plot(x, y, label='input signal')ax.plot(x, V_out, label='output signal')ax.set_xlabel('Time')ax.set_ylabel('Voltage')ax.legend()plt.show()10. 参考资料1.AD16模数转换器产品手册2.模数转换器原理及应用(吴宏志,电子工业出版社)。
实验三模数转换实验
4、实验程序分析
本实验程序设计设置DSP采用连续采集的方式工作,同时采集两个通道
(ADCIN0, ADCIN1)的模拟输量输入;使用片内通过定时器1产生定时中断,用以定时保存转换数据。
unsigned int nADCIn1[ADCNUMBER];/*存储区2,保存通道ADCIN1的转换结果,循环保存*/
main()
{
asm(" CLRCSXM");/*清标志,关中断*/
asm(" CLRCOVM");
asm(" CLRCCNF");
pResult1=RESULT0;
pResult2=RESUபைடு நூலகம்T1;
uWork=(*pResult1);/*取ADCINT0通道转换结果*/
uWork>>=6;/*移位去掉低6位*/
nADCIn0[nADCount]=uWork;/*保存结果*/
uWork=(*pResult2);/*取ADCINT1通道转换结果*/
uWork>>=6;/*移位去掉低6位*/
nADCIn1[nADCount]=uWork;/*保存结果*/
源程序框图如下所示:
主程序框图:
N
N
定时器中断服务程序框图:
本实验的源程序如下:
#include "2407c.h"
#define ADCNUMBER 256
void interrupt gptime1(void);/*中断服务程序,用于设置保存标志*/
数模-模数转换实验
实验报告实验项目名称: D/A、A/D转换实验同组人:实验时间:实验室:指导教师:一、实验目的:(l)学习外部接口的应用。
ADC0809、DAC0832的工作方式,输入/输出方式的应用。
(2)熟悉Proteus软件电路设计和Keil软件程序调试方法。
重点:ADC0809、DAC0832的工作方式二、实验顶备知识:(l)AT89S51与ADC、DAC接口的连接,ADC0809、DAC0832的基本原理.(2)Proteus软件应用,Keil软件程序调试应用.三、实验内容㈠利用DAC0832转换器输出锯齿波、三角波、方波和正弦波.1、设计要求:以DAC0832转换器和AT89C52单片机设计仿真电路,该电路能在虚拟示波器上显示出锯齿波、三角波、方波和正弦波,并能用虚拟电压表显示输出电压值,要求电压范围为0~15V且周期约为510ms。
2、仿真电路原理图元器件选取:①AT89C52:单片机;②RES、RX8:电阻、8排阻;③CRYSTAL:晶振;④CAP、CAP-ELEC:电容、电解电容;⑤DAC0832:D/A转换器;⑥LM358N:运算放大器。
}void TransformData4(uchar c0832data4){*((uchar xdata*)DAC0832Addr4)=c0832data4;}void Uart_Init( void ){SCON=0x52;TMOD=0x21;TCON=0x69;TH1=0xf3;}void Delay(){uint i;for (i=0;i〈250;i++) ;}㈡ ADC0809电压模/数转换1、设计要求:以AT89C52单片机为核心设计ADC0809模数转换仿真电路,模拟电压输入由可变电位器提供。
输入电压范围0~4.99V,经ADC0809转换成对应的0~255通过数码管显示。
2、仿真电路原理图元器件选取:① AT89C52:单片机;②RES:电阻;③CRYSTAL:12MHz晶振;④CAP、CAP—ELEC:电容、电解电容;⑤7SEG—MPX4—CC:4位七段共阴极数码管;⑥74LS02、74LS04、74LS74、74LS373︰或非门、反相位、D触发器、地址锁存器;⑦POT-LIN:变阻器;⑧ADC0809:8位A/D转换器。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HEFEI UNIVERSITY 单片机课程综述报告
主 题 基于51单片机的模数转换(A/D)实验设计 姓 名 华奇林 专 业 通信工程 学 号 ********** 班 级 12级通信(1)班 指导老师 汪济洲 ·2·
模数转换实验报告 学号:1205021042 姓名:华奇林 第一章 设计思想与方案 1.1模数转换的选择 A/D转换器的种类很多,就位数来分有8位、10位、12位和16位等。位数越高分辨率就越高,价格也就越贵。A/D转换器的型号很多,在精度和转换速度上的差异很大。 (a) 双积分A/D转换器:双积分是一种间接式A/D转换器,优点是转换精度高,速度快。缺点是转换时间长,一般要40~50ms,适用于转换速度不快的场合。 (b) 逐次逼近式A/D转换器:逐次逼近式的属于直接式A/D转换器,转换精度高,速度高,价格适中,是目前种类最多,应用最广的A/D转换器,典型的8位模数转换器有ADC0809。 鉴于方案(b)的转换速度方案(a)快,价格适中,种类繁多,应用广泛,本设计中采用ADC0809。
1.2.2 51单片机选择 单片机是属于嵌入式系统,此系统是把CPU加上一些少量的内存 ·3·
和输入出组件(I/O),都嵌入在一颗芯片内,再使用特定的组译和编译软件编辑程序,利用烧录器把程序储存在芯片内,如此加上一些简单的外围电路,即可变成一个控制系统,所以单芯片又称为微控制器。 本设计中选用STC89C52其内部已有程序存储器ROM,不用再去外扩程序存储器,使用方便。
1.2.3 显示部分 LED数码管有共阴和共阳两种,都是由七个发光管组成8字形构成的,加上小数点就是8个。这些段分别由字母a,b,c,d,e,f,g,dp来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样。LED数码管以发光二极管作为发光单元,颜色有单红, 黄,蓝,绿,白,七彩效果。其外壳采用阻燃PC塑料制作,强度高,抗冲击,抗老化,防紫外线,防尘,防潮。LED数码管具有功耗小,无热量,耐冲击,长寿命等优点。 本设计中采用共阴极数码管来显示。
第二章 系统总体设计 2.1系统设计框图 本设计主要包括:模拟数据的采集,八路模拟开关及A/D转换,数据处理模块,显示模块,按键模块,供电系统等几个基本部分。 ·4·
其设计框图如下: 图2.1 系统设计方框图 系统原理:用电位器模拟数据输入经过ADC0809的模拟开关的选
择选出一通道进行A/D转换,转换后的数字量经过单片机的处理,使输入量得以在数码管上显示。 按键复位电路是上电复位加手动复位,使用方便,在程序跑时,可以手动复位,这样就不用在重启单片机电源,就可以实现复位。还有两个按键是实现在循环显示的同时可以看任意一路模拟输入量的显示及确认,即加一和确认键。 数码管显示模块选用了4位数码管显示,第一位是通道显示,后三位是输入量的显示。
2.2 系统部分部件简介 2.2.1 ADC0809 功能简介 ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位
模
拟
输
入
A/D 转 换 单 片 机
显示部分
按键 ·5· 逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。是目前国内应用最广泛的8位通用A/D芯片。 a、主要特性 1)8路输入通道,8位A/D转换器,即分辨率为8位。 2)具有转换起停控制端。 3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时) 4)单个+5V电源供电 5)模拟输入电压范围0~+5V,不需零点和满刻度校准。 6)工作温度范围为-40~+85摄氏度 7)低功耗,约15mW。 b、内部结构 ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。如下图所示: ·6·
图2.3 ADC0809内部逻辑图 c、引脚功能
ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。下面说明各引脚功能。 IN0~IN7:8路模拟量输入端。 2-1~2-8:8位数字量输出端。 ADDA、ADDB、ADDC:3位地址输入线,用于选通8路模拟输入中的一路 ALE:地址锁存允许信号,输入,高电平有效。 START: A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。 EOC: A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。 OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。 CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。 ·7·
REF(+)、REF(-):基准电压。 Vcc:电源,单一接+5V。 GND:接地。 d、工作过程 首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。 转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。 1)定时传送方式 对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-52单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送 2)查询方式 A/D转换芯片由表明转换完成的状态信号,例如ADC0809的EOC ·8·
端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。 3)中断方式 把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。 不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。
2.2.2 显示模块 LED数码管正向压降一般为1.5~2V,额定电流为10mA,最大电流为40mA。数码管及其内部结构图如下所示:
图2.5 数码管及其内部结构图 共阴数码管数字编码,如下表所示:
显示数字 共阴极字段码
0 3FH 1 06H ·9·
2 5BH 3 4FH 4 66H 5 6DH 6 7DH 7 07H 8 7FH 9 6FH 表2.1 共阴数码管数字编码
第三章 系统硬件电路的仿真实现 3.1 系统硬件电路的组成 要完成本设计的任务,系统硬件电路的组成主要有:电源电路、复位电路、晶振电路、电位器模拟输入电路、A/D选择转换电路、分频电路、数码管驱动显示电路等。
3.2部分硬件电路简介 3.2.1 复位电路 单片机复位电路时系统中必不可少的,本设计采用手动复位。这种复位电路的工作原理是:通电时,电容两端相当于是短路,于 ·10·
是RST引脚上为高电平,复位按钮松开后,电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程度,即为低电平,单片机完成复位工作。
图3.2 复位电路 3.2.2晶振电路
晶振在单片机系统中作用非常大,它结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片机的一切指令的执行都是建立在单片机晶振提供的时钟频率。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。本设计采用的电容C5、C6为30pF,晶振是12MHz。工作原理:单片机晶振电路即分频器的原始工作振荡频率,由石英晶体多谐振荡器的谐振频率来产生,晶振其实是一个频率产生器,他主要把传进去的电压转化为频率信号。提供给分频率一个基准的振荡频率,它是一个多 ·11·
谐振荡器的正回馈环电路,也就是说它把输入作为输出,把输出作为输入的回馈频率,象这样一个永无休止的循环自激过程。晶振电路如下图所示:
图3.3 晶振电路 3.2.3 模拟输入电路
本设计用电位器来模拟现场变送器的模拟信号,采用高精度的阻值为50KΩ的电位器,其输入量可变且较为精确。电位器与ADC0809的输入通道相接,另外本设计模拟输入量选择三路通道,其余五路通道全部接地,即模拟输入量为零。模拟输入电路如下图所示: