文档库 最新最全的文档下载
当前位置:文档库 › PIC单片机自学手记之ADC采样 采集 模数转换

PIC单片机自学手记之ADC采样 采集 模数转换

PIC单片机自学手记之ADC采样 采集 模数转换
PIC单片机自学手记之ADC采样 采集 模数转换

//ADC采样实验//

#include

#define uchar unsigned char

#define uint unsigned int

uchar LED_CODE[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//不带小数点的字型码

uchar LED_CODE1[]={0x40,0x79,0x24,0x30,0x19,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};//带小数点的字型码

void delay(uchar x);

void init();

void display(uchar num1,uchar num2,uchar num3,uchar num4);

void beep();

uint get_ad()//整型带返回值子函数

{

uint adval,ad;//定义两个无符号整型变量

ADGO=1;//启动AD转换

//while(ADGO);//查询AD转换是否完成,此行可以不用,程序一样运行正常

//if(ADGO==1);//可以采用while查询也可以用if查询AD转换是否完成,此行一样可以不要

//adval=ADRESH;//注释此行可以不要

adval=ADRESH<<8|ADRESL;//ADRESH高8位数据左移8位,然后再与ADRESL低8位数据相加

ad=adval*41;//这里的41是VDD电压,adval的值在0-1023之间,假设adval当前数字量是800,那么800*41=32800

adval=ad/10;//因为我的是4位数码显示,将得到的32800除以10以后给数码管显示当前电压值即:3280(3.28V)

return(adval); //返回adval值给主程序调用的地方

}

void main()

{

init();//程序初始化

uint tempad;//定义临时整型变量

uchar s1,s2,s3,s4;//定义4个无符号字符型变量

while(1)

{

tempad=get_ad();//调用ad子程序

s1=tempad/1000;//将得到的值3280除以1000取商丢去余数,所以s1的值是3(即千位)s2=tempad%1000/100;//3280除1000求余280再除以100取商,所以s2的值是2(取百位)

s3=tempad%100/10;//3280除100求余80再除以10取商,所以s3的值是8(取十位)s4=tempad%10;//3280除10求余,余数是0(取个位)

display(s1,s2,s3,s4); //给数码管分别显示四位值

/////以下是判断ad采样的电压是否大于4v,大于或等于4v时led等亮///// if(s1>=4)//判断千位值

{

RA5=0;

}

/////////////~~~~~~~~~~~~~~~~~~~~~~~~~~///////////////////////////////////

}

}

void init()

{

TRISA=0x01;//RA0设置为输入AN0(AD采集端口)

TRISD=0;//D端口全部设置成输出

PORTA=0x01;

PORTD=0xFF;

TRISE=0;

PORTE=0;

ADCON0=0x41;

ADCON1=0x8e;

delay(1);//延时5ms稳定AD采用

}

void display(uchar num1,uchar num2,uchar num3,uchar num4)

{

PORTD=LED_CODE[num4];//数码管个位显示值

PORTA=0xfd;//1111 1101 开数码管个位位选

delay(1);

PORTD=LED_CODE[num3];//数码管十位显示值

PORTA=0xfb;//1111 1011

delay(1);

PORTD=LED_CODE[num2];//数码管百位显示值

PORTA=0xf7;//1111 0111

delay(1);

PORTD=LED_CODE1[num1];//数码管千位显示值(这个值是带小数点的)

PORTA=0xef;

delay(1);

}

void delay(uchar x)//5ms延时子函数{

uint y,k;

for(y=0;y

for(k=0;k<200;k++);

}

void beep()

{

RE1=0;

delay(20);

RE1=1;

delay(20);

}

数模模数转换实验报告

数模模数转换实验报告 一、实验目的 1、了解数模和模数转换电路的接口方法及相应程序设计方法。 2、了解数模和模数转换电路芯片的性能和工作时序。 二、实验条件 1、DOS操作系统平台 2、数模转换芯片DAC0832和模数转换器ADC0809芯片。 三、实验原理 1、数模转换: (1)微机处理的数据都是数字信号,而实际的执行电路很多都是模拟的。因此微机的处理结果又常常需要转换为模拟信号去驱动相应的执行单元,实现对被控对象的控制。这种把数字量转换为模拟量的设备称为数模转换器(DAC),简称D/A。 (2)实验中所用的数模转换芯片是DAC0832,它是由输入寄存器、DAC 寄存器和D/A 转换器组成的CMOS 器件。其特点是片内包含两个独立的8 位寄存器,因而具有二次缓冲功能,可以将被转换的数据预先存在DAC 寄存器中,同时又采集下一组数据,这就可以根据需要快速修改DAC0832 的输出。 2、模数转换: (1)在工程实时控制中,经常要把检测到的连续变化的模拟信号,如温度、压力、速度等转换为离散的数字量,才能输入计算机进行处理。实现模拟量到数字量转换的设备就是模数转换器(ADC),简称A/D。

(2)模数转换芯片的工作过程大体分为三个阶段:首先要启动模数转换过程。其次,由于转换过程需要时间,不能立即得到结果,所以需要等待一段时间。一般模数转换芯片会有一条专门的信号线表示转换是否结束。微机可以将这条信号线作为中断请求信号,用中断的方式得到转换结束的消息,也可以对这条信号线进行查询,还可以采用固定延时进行等待(因为这类芯片转换时间是固定的,事先可以知道)。最后,当判断转换已经结束的时候,微机就可以从模数转换芯片中读出转换结果。 (3)实验采用的是8 路8 位模数转换器ADC0809 芯片。ADC0809 采用逐次比较的方式进行A/D 转换,其主要原理为:将一待转换的模拟信号与一个推测信号进行比较,根据推测信号是大于还是小于输入信号来决定增大还是减少该推测信号,以便向模拟输入逼近。推测信号由D/A 转换器的输出获得,当推测信号与模拟信号相等时,向D/A 转换器输入的数字就是对应模拟信号的数字量。ADC0809 的转换时间为64 个时钟周期(时钟频率500K 时为128S)。分辨率为 8 位,转换精度为±LSB/2,单电源+5V 供电时输入模拟电压范围为04.98V。 四、实验内容 1、把DAC0832 的片选接偏移为10H 的地址,使用debug 命令来测试 DAC0832 的输出,通过设置不同的输出值,使用万用表测量Ua 和Ub 的模拟电压,检验DAC0832 的功能。选取典型(最低、最高和半量程等)的二进制值进行检验,记录测得的结果。实验结果记录如下:

∑-△模数转换器的原理及应用

∑-△模数转换器的原理及应用 张中平 (东南大学微电子机械系统教育部重点实验室,南京210096) 摘要:∑-△模数转换器由于造价低、精度高、性能稳定及使用方便等特点,越来越广泛地使用在一些高精度仪器仪表和测量设备中,介绍该转换器的基本原理,并重点举例介绍AD7708芯片的应用,该芯片是16 bit模数转换器,与24 bit AD7718引脚相同,可直接升级。 关键词:模数转换器;寄存器;串行口 我们通常使用的模数转换器(ADC)大多为积分型和逐次逼近型,积分型转换效果不够好,转换过程中带来的误差比较大;逐次逼近型转换效果较好但制作成本较高,尤其是高位数转换,转换位数越多,精度越高,制作成本就越高。而∑-△ADC可以以相对逐次逼近型简单的电路结构,而得到低成本,高位数及高精度的转换效果∑-△ADC大多设计为16或24 bit转换精度。近几年来,在相关的高精度仪器制作领域该转换器得到了越来越广泛的应用[1]。 1 ∑-△ADC的基本工作原理简介 ∑-△模数转换器的工作原理简单的讲,就是将模数转换过后的数字量再做一次窄带低通滤波处理。当模拟量进入转换器后,先在调制器中做求积处理,并将模拟量转为数字量,在这个过程中会产生一定的量化噪声,这种噪声将影响到输出结果,因此,采用将转换过的数字量以较低的频率一位一位地传送到输出端,同时在这之间加一级低通滤波器的方法,就可将量化噪声过滤掉,从而得到一组精确的数字量[1,2]。 2 AD7708/AD7718,∑-△ADC的应用 AD7708/AD7718是美国ADI公司若干种∑ΔADC中的一种。其中AD7708为16 bit转换精度,AD7718为24 bit转换精度,同为28条引脚,而且相同引脚功能相同,可以互换。为方便起见,下面只介绍其中一种,也是我们工作中用过的AD7708。 2.1AD7708的工作原理 同其它智能化器件一样,AD7708也可以用软件来调节其所具有的功能,即通过微控制器MCU编程向AD7708的相应寄存器填写适当的参数。AD7708芯片中共有11个寄存器, 当模式寄存器(Mode Regis-ter)的最高位后,其工作方框图[2]如图1所示。

STC12C5A60S2单片机的AD转换

A/D转换测试程序(ADC查询方式) #include “stc12c5a.h”//头文件在STC公司主页上下载 #include ”intrins.h” //与STC12C5A60S2单片机ADC相关的寄存器说明// Sfr ADC_CONTR = 0xBC;//AD转换控制寄存器 Sfr ADC_RES = 0xBD;//AD转换结果寄存器高 Sfr ADC_RESL = 0xBE;//AD转换结果寄存器低 Sfr P1ASF = 0x9D;//P1口模拟转换功能控制寄存器 Sfr AURX1 = 0xA2;//AD转换结果存储方式控制位 #define ADC_POWER 0x80 //ADC电源开 #define ADC_FLAG 0x10 //ADC结束标志位 #define ADC_START 0x08 //ADC启动控制位设为开 #define ADC_SPEEDLL 0x00 //设为540个时钟周期ADC一次 #define ADC_SPEEDL 0x20 //设为360个时钟周期ADC一次 #define ADC_SPEEDH 0x40 //设为180个时钟周期ADC一次 #define ADC_SPEEDHH 0x60 //设为90个时钟周期ADC一次 void AD_init(void); void delay(unsigned int a); unsigned int AD_get(unsigned char n); float AD_work(unsigned char n); void main() { unsigned char i; AD_init(); while(1) { for(i=0;i<8;i++) { AD_work(i); delay(20); } } } unsigned int AD_get(unsigned char n) //第n通道ADC采样函数 { unsigned int adc_data; ADC_RES = 0; //清零 ADC_CONTR=ADC_POWER|ADC_SPEEDLL|n|ADC_START;//打开AD转换电源、

单片机:模数转换

模数转换 一.单片机对ADC0809的控制过程 先选择一个模拟输入通道,本连接选择IN4。当执行MOVX @DPTR,A是,单片机WR有效,产生脉冲。脉冲给ADC0809的START,开始对模拟信号进行转换。当转换结束后EOC为高电平。一次转换结束。 二.单片机与ADC0809的连接 1.单片机P0.0-P0.7数据线接ADC0809的OUTI-OUT8. 2.单片机的地址线低8位接锁存器输出接ADC0809的三根地址线A,B,C.选通IN0-IN7通道。 3.START 为启动信号输入端,OE为输出允许端。由于ADC0809没有片选端,用P2.7与单片机的WR,RD进行控制。WR与P2.7接或非门控制START。RD 与P2.7接或非控制OE。 因为START与ALE连在一起,所以ADC0809A在锁存通道地址的同时,启动并进行转换。 4.单片机的CLK输出是被6分频之后的1MHZ,接一个触发器之后降频到500K 后与ADC0809连接使其正常运行。 三.单片机在读取ADC转换结果时有查询和中断两种方式 1.查询方式 程序如下 ORG 0000H SJMP MAIN EOC EQU P3.0

MAIN: MOV SP,#60H SP初值赋60H MOV DPTR,#7FFCH IN4的地址7FFCH给DPTR LL: MOV A,#0 MOVX @DPTR,A A值给7FFCH.启动转换器,开始转换 LCALL DL 延时程序,跳过EOC的延时 JNB P3.0,$ EOC变低电平。当EOC变高电平是转换完成。 MOVX A,@DPTR RD为低电平,OE为高电平,允许输出。 MOV P1,A 输出到P1口 SJMP LL DL: MOV R7,#10 DJNZ R7,$ RET END 2.中断方式 程序如下 ORG 0000H SJMP MAIN ORG 0003H LJMP BB MAIN: SETB EX0 打开外部中断子开关 SETB IT0 选择边沿触发方式 SETB EA 打开中断总开关

数模转换器和模数转换器实验报告

实验报告 课程名称微机原理与接口技术 实验项目实验五 数/模转换器和模/数转换器实验实验仪器 TPC-USB通用微机接口实验系统 系别计算机系 专业网络工程 班级/学号 学生 _ 实验日期 成绩_______________________ 指导教师王欣

实验五数/模转换器和模/数转换器实验 一、实验目的 1. 了解数/模转换器的基本原理,掌握DAC0832芯片的使用方法。 2. 了解模/数转换器的基本原理,掌握ADC0809的使用方法。 二.实验设备 1.PC微机系统一套 2.TPC-USB通用微机接口实验系统一套 三.实验要求 1.实验前要作好充分准备,包括程序框图、源程序清单、调试步骤、测试方法、对运行结果的分析等。 2.熟悉与实验有关的系统软件(如编辑程序、汇编程序、连接程序和调试程序等)使用方法。在程序调试过程中,有意识地了解并掌握TPC-USB通用微机接口实验系统的软硬件环境及使用,掌握程序的调试及运行的方法技巧。 3.实验前仔细阅读理解教材相关章节的相关容,实验时必须携带教材及实验讲义。 四.实验容及步骤 (一)数/模转换器实验 1.实验电路原理如图1,DAC0832采用单缓冲方式,具有单双极性输入端(图中的Ua、Ub),编程产生以下锯齿波(从Ua和Ub输出,用示波器观察) 图1 实验连接参考电路图之一 编程提示: 1. 8位D/A转换器DAC0832的口地址为290H,输入数据与输出电压的关系为:

(UREF表示参考电压,N表示数数据),这里的参考电压为PC机的+5V电源。 2. 产生锯齿波只须将输出到DAC0832的数据由0循环递增。 3. 参考流程图(见图2): 图2 实验参考流程图之一 (二)模/数转换器 1. 实验电路原理图如图3。将实验(一)的DAC的输出Ua,送入ADC0809通道1(IN1)。 图3 实验连接参考电路图之二 2. 编程采集IN1输入的电压,在屏幕上显示出转换后的数据(用16进制数)。编程提示: 1. ADC0809的IN0口地址为298H,IN1口地址为299H。 2. IN0单极性输入电压与转换后数字的关系为:

单片机AD模数转换实验报告

1、掌握单片机与ADC0809的接口设计方法。 2、掌握Proteus软件与Keil软件的使用方法。 二、设计要求。 1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与0809接口。 2、在0809的某一模拟量输入通道上接外部模拟量。 3、在单片机的外部扩展数码管显示器。 4、分别采用延时和查询的方法编写A/D转换程序。 5、启动A/D转换,将输入模拟量的转换结果在显示器上显示。 三、电路原理图。 图1、电路仿真图 四、实验程序流程框图和程序清单。

1、 查询法: ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH NT: MOV DPTR, #0FF78H MOVX @DPTR, A LOOP: JB , LOOP MOVX A, @DPTR MOV B, #51 DIV AB MOV R0, A MOV A, B MOV B, #5 DIV AB MOV R1, A MOV R2, B LCALL DIR SJMP NT DIR: MOV R7, #0 SJMP LOOP1 BH: MOV A, R1 MOV R2, A LOOP1: MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R2 MOVC A, @A+DPTR MOV P1, A LCALL DELAY INC R7 CJNE R7, #2, BH MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R0 MOVC A, @A+DPTR ANL A, #7FH MOV P1, A LCALL DELAY RET DELAY: MOV R5, #01H DL1: MOV R4, #8EH DL0: MOV R3, #02H DJNZ R3, $ DJNZ R4, DL0 DJNZ R5, DL1 RET WK: DB 10H DB 20H DB 40H DK: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END display 送百分位字符代码送位选信号延时1ms 送十分位字符代码送位选信号延时1ms 送个位及小数点字符代码送位选信号延时1ms 熄灭第四位数码管延时1ms 返回

基于51单片机用PCF8591进行AD_DA转换用1602LCD显示的电流采样

大学学院 本科生课程设计 题目:可编程序控制器实训姓名: 学号: 系别: 专业: 年级: 指导教师:

目录 1、PCF8591概述 (3) 2、芯片介绍 (3) 3、PCF8591的A/D 转换 (4) 4、A/D转换程序设计流程 (5) 5、1602LCD主要技术参数 (7) 6、Proteus仿真原理图 (10) 7、程序代码 (10) 8、结语 (17) 9、参考文献 (17)

1、PCF8591 概述 PCF8591 是一种具有 I2C 总线接口的 8 位 A/D D/A 转换芯片,在与 CPU 的信息传输过程中仅靠时钟线 SCL 和数据线 SDA 就可以实现。 I2C 总线是Philips (飞利浦)公司推出的串行总线,它与传统的通信方式相比具有读写方便,结构简单,可维护性好,易实现系统扩展,易实现模块化标准化设计,可靠性高等优点。 2、芯片介绍 2.1部结构及引脚功能描述 PCF8591 为单一电源供电(2.5 6 V)典型值为 5 V,CMOS 工艺 PCF8591 有 4 路 8 位 A/D 输入,属逐次比较型,含采样保持电路; 1 路 8 位 D/A 输出,含有 DAC的数据寄存器 A/D D/A 的最大转换速率约为 11 kHz,但是转换的基准电源需由外部提供 PCF8591 的引脚功能如图1所示 图1 PCF8591引脚功能 2.2片可编程功能设置 在 PCF8591 部的可编程功能控制字有两个,一个为地址选择字,另一个为转换控制字 PCF8591 采用典型的I2C总线接口的器件寻址方法,即总线地址由器件地址引脚地址和方向位组成 Philips (飞利浦)公司规定 A/D器件高四位地址为 1001,低三位地址为引脚地址A0A1A2,由硬件电路决定,地址选择字格式具体描述如表 2 所示因此 I2C 系统中最多可接 2^3=8 个具有总线接口的A/D 器件地址的最后一位为方向位 R/W,当主控器对 A/D 器件进行读操作时为1,进行写操作时为 0 总线。操作时,由器件地址引脚地址和方向位组成的从地

基本模数转换器(ADC)的设计

《数字逻辑电路分析与设计》课程 项目 实施报告 题目(A):基本模数转换器(ADC)的设计 组号: 8 任课教师:。。。 组长:。。。。 成员:。。。。 成员:。。。 成员:。。。 成员:。。。 联系方式:。。。 二零一四年十月二十五日

基本模数转换器(ADC )的设计 一.设计要求 (1) 设计一个每单次按下按钮,就能够实现数模转换的电路,并用LED 显示对应输入模拟电压(0—3V )的等级,当输入电压>3V 后,有“溢出”显示。 (2) 功能模块如图: (3) 图中的“模数转换”为本教材第六章的并行ADC 转换电路。在此基础上自行设计按键、LED 显示、模拟电压调节等模块,实现单次模数转换的功能。 模拟电压 调节模数转换LED 显示 按键 5V 电源

自行设计溢出标记的显示。 (4) 本电路的测试方法是,通过一个电位器对电源电压连续分压,作为ADC 的输入电压,每按下一次按键时,ADC 电路进行一次ADC 转换,并将转换的结果用数码管显示出来。注意不要求显示实际的电压值,仅显示模拟电压的量化等级。 二.电路原理图 LED 显示

三.设计思路 根据题目要求,我们的电路本应分五个个模块,但实验室缺少8-3编码器不能实现转化,所以只能有四个一下模块:模拟电压调节;比较电路;记忆模块;LED显示。模拟电压的调节可以用划变电阻来调节电压,理想中数模转化模块应由比较器,D触发器和编码器来实现,在我们的实际电路中我们只用了前两者。最终我们用LED的亮灭来显示结果。 具体原理叙述如下: 在比较电压时,将参考电压V ref经电阻分压器产生一组不同的量化电平V i:v1=1/16V ref,v2=3/16V ref,v3=5/16V ref ,v4=7/16V ref ,v5=9/16V ref ,v6=11/16V ref ,v7=13/16V ref ,v8=15/16V ref ,这些量化电平分别送到相应lm339比较器的反相输入端,而输入电压V同时作用于lm339比较器的同相输入端。 当V大于V i时,第i个比较器输出状态1,即高电平;反之,比较器输出状态0,即低电平。比较器的输出加到D触发器的输入端,在时钟脉冲CP的作用下,把比较器的输出存入触发器,得到稳定的状态输出Q,再由LED的亮暗状态显示,高电平则亮,低电平就暗。 当V≥15/16 V ref的时候,即V超过该转换器的最大允许的输入电压的时候产生“溢出”,我们使用了一个红色的报警LED亮作为显示。 此外,鉴于会因为按键时间的长短不一而造成的脉冲不整齐的问题,需要

基于51单片机的模数转换(AD)实验设计

HEFEI UNIVERSITY 单片机课程综述报告 主题基于51单片机的模数转换(A/D)实验设计姓名郭丽丽 专业通信工程 学号 1105021006 班级 11级通信(1)班 指导老师汪济洲 2014 年 6 月 2 日

目录 1.实验目的与要求 (1) 1.1实验目的 (1) 1.2实验要求 (1) 2.实验原理 (1) 2.1电路原理图 (1) 2.2 Proteus7.4 软件简介 (2) 3、实验步骤 (6) 4、源程序代码 (6) 5. 实验结果分析 (10) 6.总结 (10)

1.实验目的与要求 1.1实验目的 1.掌握A/D转换与单片机的接口方法 2.了解A/D芯片ADC0809转换性能及编程方法 3.通过实验了解单片机如何进行数据采集 1.2实验要求 1.采用查询法或中断法编程进行A/D采集; 2.采集0~5V范围的电压信号(以电位器模拟被测信号),使用4位串行数码管显示0~5V数值,小数点保留三位,实现简易电压表功能。 2.实验原理 2.1电路原理图 熟悉8051的输入输出端口的使用方法, 本实验的电路连接如图1所示。 图1 连接电路

2.2 Proteus7.4 软件简介 Proteus是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是: ①实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。 ②支持主流单片机系统的仿真。目前支持的单片机类型有:ARM7(LPC21xx)、8051/52系列、AVR系列、PIC10/12/16/18系列、HC11系列以及多种外围芯片。 ③提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2、MPLAB等软件。 ④具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。 其操作界面如下图所示: 图2 Proteus操作页面

单片机_LCD-LED_AD转换

三位半LCD/LED显示A/D转换器 摘要:ICL7106和ICL7107是高性能、低功耗的三位半A/D转换电路。它包含有七段译码器、显示驱动器、参考源和时钟系统。ICL7106含有一背电极驱动线,适用于液晶显示(LCD),ICL7107可直接驱动发光二极管(LED)。 ICL7106和ICL7107将高精度、通用性和真正的低成本很好地结合在一起,它有低于10μV的自动校零功能,零点漂移小于1Μv/℃,低于10pA的输入电流,极性转换误差小于一个计数。真正的差动输入和差动参考源在各种系统中都很有用。在用于测量负载单元、压力规管和其他桥式传感器时会有更突出的优点。另外,只要有十个左右的无源元件和一个LCD屏就可以与ICL7106构成一个高性能的仪表面板,实现了低成本的单电源工作。 关键字:三位半 LCD/LED A/D转换器 1 主要特点 (1)保证零电平输入时,各量程的读值均为零。 (2)1pA典型输入电流。 (3)真正的差动输入和差动参考源,直接LCD显示驱动(ICL7106)和LED显示驱动(ICL7107)。 (4)很低的噪声。(小于15μVp-p)。 (5)芯片上时钟。 (6)低功耗(典型值小于10mW)。 (7)不需外接有源电路。 2 详细说明 2.1 模拟部分 图1示ICL7106和ICL7107的模拟部分。每个测量周期分为三个阶段,他们分别是(1)自动校零阶段(A~Z);(2)信号积分阶段(INT)和(3)反向积分阶段(DE)。

图1 ICL7106和ICL7107的模拟部分 2.2 自动校零阶段 在自动校零阶段做三件事。第一,内部高端输入和低端输入与外部管脚脱开,在内部与模拟公共管脚短接。第二,参考电容充电到参考电压值。第三,围绕整个系统形成一个闭合回路,对自动校零电容C AZ 进行充电,以补偿缓冲放大器、积分器和比较器的失调电压。由于比较器包含在回路中,因此自动校零的精度仅受限于系统噪声。任何情况下,折合到输入端的失调电压小于10μV。 2.3 信号积分阶段 在信号积分阶段,自动校零回路断开,内部短接点也脱开,内部高端输入和低端输入与外部管脚相连。转换器将IN HI和IN LO之间输入的差动输入电压进行一固定时间的积分,此差动输入电压可以在一个很宽的共模范围内,与正、负电源的差距各为1V 之内。另一方面,若该输入信号相对于转换器的电源电压没有回转,可将IN LO连接到模拟公共端上,以建立正确的共模电压。在此积分阶段的最后,积分信号的极性也已经确定了。 2.4 反向积分阶段 最后一个积分阶段是反向积分阶段。低端输入在芯片内部连接到模拟公共端,高端输入通过先前已充电的参考电容进行连接,内部电路能使电容的极性正确地连接以确保积分器的输出能回到零。积分器的输出回到零的时间正比于输入信号的大小。对应的数

单片机AD模数转换实验报告

一、实验目的和要求 1、掌握单片机与ADC0809的接口设计方法。 2、掌握Proteus软件与Keil软件的使用方法。 二、设计要求。 1、用Proteus软件画出电路原理图,在单片机的外部扩展片外三总线,并通过片外三总线与0809接口。 2、在0809的某一模拟量输入通道上接外部模拟量。 3、在单片机的外部扩展数码管显示器。 4、分别采用延时和查询的方法编写A/D转换程序。 5、启动A/D转换,将输入模拟量的转换结果在显示器上显示。 三、电路原理图。 图1、电路仿真图

四、实验程序流程框图和程序清单。 1、 查询法: ORG 0000H START: LJMP MAIN ORG 0100H MAIN: MOV SP, #2FH NT: MOV DPTR, #0FF78H MOVX @DPTR, A LOOP: JB P3.3, LOOP MOVX A, @DPTR MOV B, #51 DIV AB MOV R0, A MOV A, B MOV B, #5 DIV AB MOV R1, A MOV R2, B LCALL DIR SJMP NT DIR: MOV R7, #0 SJMP LOOP1 BH: MOV A, R1 MOV R2, A LOOP1: MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R2 MOVC A, @A+DPTR MOV P1, A LCALL DELAY INC R7 CJNE R7, #2, BH MOV DPTR, #WK MOV A, R7 MOVC A, @A+DPTR MOV P2, A MOV DPTR, #DK MOV A, R0 MOVC A, @A+DPTR ANL A, #7FH MOV P1, A LCALL DELAY RET DELAY: MOV R5, #01H DL1: MOV R4, #8EH DL0: MOV R3, #02H DJNZ R3, $ DJNZ R4, DL0 DJNZ R5, DL1 RET WK: DB 10H DB 20H DB 40H DK: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H display 送百分位字符代码送位选信号延时1ms 送十分位字符代码送位选信号延时1ms 送个位及小数点字符代码 送位选信号延时1ms 熄灭第四位数码管 延时1ms 返回

模数转换器ADC0809应用原理

AD0809应用原理--很全面的资料 1. 0809的芯片说明: ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS 组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。 (1)ADC0809的内部逻辑结构 由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当O E端为高电平时,才可以从三态输出锁存器取走转换完的数据。 (2).引脚结构 IN0-IN7:8条模拟量输入通道

如下图所示,从ADC0809的通道IN3输入0-5V之间的模拟量,通过ADC0809转换成数字量在数码管上以十进制形成显示出来。ADC0809的VREF接+5V电压。 4.电路原理图 5.程序设计: (1).进行A/D转换时,采用查询EOC的标志信号来检测A/D转换是否完毕,若完毕则把数据通过P0端口读入,经过数据处理之后在数码管上显示。 (2).进行A/D转换之前,要启动转换的方法: ABC=110选择第三通道 ST=0,ST=1,ST=0产生启动转换的正脉冲信号 . (3). 关于0809的计算: ad0809是根据逐位逼近的方法产生数据的。。 参考电压为0-5V的话。以0809八位255的转换精度每一位的电压值为(5-0)/255≈0. 0196V 设输入电压为X则: X-27*0.0196>=0则AD7=1否则AD7=0。 X-26*0.0196>=0则AD6=1否则AD6=0。 X-20*0.0196>=0则AD0=1否则AD0=0。 (27指2的7次方。26-------20同理) 若参考电压为0-1V (1-0)/255≈0.0039V精度自然高了。。可测量范围小了。 1)汇编源程序: CH EQU 30H DPCNT EQU 31H DPBUF EQU 33H GDATA EQU 32H ST BIT P3.0

51单片机驱动ADC0832模数转换程序lcd1602显示

51单片机驱动ADC0832模数转换程序 -lcd1602显示 /*这个芯应用不多*/ #include ; #define uchar unsigned char #define uint unsigned int uchar Chan0Value,Chan1Value; sbit RS=P1^0; //1602各控制脚 sbit RW=P1^1; sbit EN=P1^2; sbit Cs0832= P2^0; //0832各控制脚 sbit Clk0832= P3^6; sbit Di0832= P3^7; sbit Do0832= P3^7; void delay1ms(unsigned int ms)//延时1毫秒(不够精确的) { int i,j; for(i=0;i;>;i; }

for(i=0;i<8;i++) //从低到高取一次数 { if(Do0832) Dat2|=0x01<

AD转换实验报告

A/D转换实验报告

摘要 本设计是利用AT89C51、ADC0809、CD4027芯片为核心,加以其他辅助电路实现对信号的A/D转换,其中以单片机AT89C51为核心控制A/D转换器。先是对信号进行采集,然后用ADC0809对信号实现从模拟量到数字量的转换。改变采样数据,调整电路,使其达到精确转换。

目录 1.方案设计与论证 (1) 1.1理论分析 (1) 1.2输出、输入方案选择 (1) 1.3显示方案 (2) 1.4时钟脉冲选择 (2) 2.硬件设计 (2) 2.1A/D转换器模块 (2) 2.2单片机模块 (3) 2.3JK触发器模块 (4) 3软件设计 (4) 4.仿真验证与调试 (5) 4.1测试方法 (5) 4.2性能测试仪器 (7) 4.4误差分析 (7) 5.设计总结及体会 (5) 附录(一)实物图 (6) 附录(二)软件程序 (6)

1.方案设计与论证 1.1理论分析 8位A/D转换由芯片内部的控制逻辑电路、时序产生器、移位寄存器、D/A转换器及电压比较器组成,它具有将模拟量转换成数字量的特性,其原理图如下: AD转换原理图(1) 1.2输出、输入方案选择 A/D转换器有多路选择器,可选择八路模拟信号IN0~IN7中的一路进入A/D转换。现在选择IN0通道作为输入,则对应的地址码位ADD C=0、ADD B=0、ADD A=0。当转换完成后,OE=1,打开三态输出锁存缓冲器,将转换数据从D7~D0口输出到单片机的P0端口。 IN口输入D端口输出 A/D转换器 图(2)

1.3显示方案 单片机控制数码管显示有两种动态和静态两种方法,由于静态控制数码管每次只能显示一位,造成资源浪费,所以选择动态扫描,并增加变换频率。 1.4时钟脉冲选择 方案一:可以直接用矩形波来控制 方案二:ALE通过JK触发器完成二分频,然后 Q端接CLK。因为晶振的频率是12MHz,ALE的频率为12NHz×1/6=2MHz,经过JK 触发器二分频后就是1MHz. 2.硬件设计 2.1 A/D转换器模块 A/D转换电路图(3) 模拟量从IN0端口输入,经电压比较器后输入到控制电路,转换后从D0~D7口输出,地址码位ADD C=0、ADD B=0、ADD A=0。OE 端输出允许控制信号,EOC转换结束控制信号,EOC=0,转换结束后EOC=1。START转换启动信号,上升沿将片内寄存器清零,下降

TLC549模数转换器的控制实验

A/D芯片TLC549的转换与数据采集实验 1、实验目的 (1) 掌握A/D转换与单片机的接口方法; (2)掌握A/D芯片TLC549的编程方法; (3)掌握数据采集程序的设计方法; 2、实验内容 利用实验开发装置上的TLC549做A/D转换器,对电位器提供的模拟电压信号进行定时采样,结果在数码管上进行显示。 3、I/O地址 A/D转换芯片 TLC549 CLK P1.5 时钟位 DAT P1.7 数据位 CS P1.6 选片位 4、实验线路 将TLC549的CLK接P1.5、DAT接P1.7、CS接P1.6,将模拟电压输入端连到电位器的电压输出端,并接万用表进行输入电压测量。 5、实验步骤 在PC机输入源程序并汇编,然后下载到单片机上,进行调试。 调节电位器,电压从0V到5V变化,记录数码管的显示数值。记录到表中。

6、实验报告 (1) 整理好实验程序和实验记录,进行数据处理分析并做图。 (2) 数据采集中,如何实现精确的定时数据采集? (3) 数码管动态扫描显示程序设计中,显示刷新的时间如何确定? TLC549实验程序 #include "reg52.h" #include #define uchar unsigned char #define uint unsigned int /*************************************************** TLC549 A/D转换 ****************************************************/ sbit CLK=P1^5; sbit DAT=P1^7; sbit CS =P1^6; uchar TLC549ADC(void) { uchar i,x; CLK=0; DAT=1; CS=0; for(i=0;i<8;i++) { CLK=1; x<<=1; if(DAT==1) x++; CLK=0; } CS=1; return (x); } uint y; uchar x; void main() { while(1)

单片机实验数据采集_AD转换

单片机实验报告 姓名: XX 班级: XXXXX 学号: XXXXXXX 专业:电气工程与自动化

实验1 名称:数据采集_A/D转换 一、实验目的 ⑴掌握A/D转换与单片机接口的方法; ⑵了解A/D芯片0809 转换性能及编程方法; ⑶通过实验了解单片机如何进行数据采集。 二、实验设备 装有proteus和keil软件的电脑一台 三、实验说明及实验原理: A/D 转换器大致分有三类:一是双积分A/D 转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近式A/D转换器,精度、速度、价格适中;三是并联比较型A/D转换器,速度快,价格也昂贵。实验用ADC0809属第二类,是8位A/D转换器。每采集一次一般需100μs。由于ADC0809A/D 转换器转换结束后会自动产生EOC 信号(高电平有效),取反后将其与8031 的INT0 相连,可以用中断方式读取A/D转换结果。ADC0809 是带有8 位A/D转换器、8 路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。 (1) ADC0809 的内部逻辑结构 由图1.1 可知,ADC0809 由一个8 路模拟开关、一个地址锁存与译码器、一个A/D 转换器和一个三态输出锁存器组成。多路开关可选通8 个模拟通道,允许8 路模拟量分时输入,共用A/D 转换器进行转换。三态输出锁器用于锁A/D 转换完的数字量,当OE 端为高电平时, 才可以从三态输出锁存器取走转换完的数据。 (2) ADC0809 引脚结构 ADC0809各脚功能如下: D7 ~ D0:8 位数字量输出引脚。IN0 ~ IN7:8位模拟量输入引脚。 VCC:+5V工作电压。GND:地。 REF(+):参考电压正端。REF(-):参考电压负端。 START:A/D转换启动信号输入端。 ALE:地址锁存允许信号输入端。(以上两种信号用于启动A/D转换). EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。 OE:输出允许控制端,用以打开三态数据输出锁存器。 CLK:时钟信号输入端(一般为500KHz)。 A、B、C:地址输入线。 (3) ADC0809 对输入模拟量要求:信号单极性,电压范围是0-5V,若信号太小,必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持电路。地址输入和控制线:4 条ALE为地址锁存允许输入线,高电平有效。当ALE 线为高电平时,地址锁存与译码器将A,B,C 三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进转换器进行转换。A,B 和C为地址输入线,用于选通IN0-IN7 上的一路模拟量输入。通道选择表如下表所示。 C B A 选择模拟通道 0 0 0 IN0 0 0 1 IN1 0 1 0 IN2 0 1 1 IN3 1 0 0 IN4 1 0 1 IN5

单片机模数转换与液晶

单片机课程设计 ADC输入控制 姓名涂序平 学号 201220120236 专业测控技术与仪器班级 1221202 指导教师周伟

目录 摘要 (1) 1.系统设计方案 .................................... 错误!未定义书签。 1.1. 设计思路................................... 错误!未定义书签。 1.2 方案选择与比较 (2) 2.系统硬件设计 (2) 2.1 MCS-52单片机硬件结构以及主要引脚 (3) 2.2复位电路 (3) 2.3 晶振电路 (4) 2.4模数转换电路 (5) 2.5 TLC549的管脚功能 (5) 2.6显示电路 (6) 2.7 12864液晶引脚图及各引脚功能 (6) 2.8 主控制器电路 (7) 3.系统软件设计 3.1 系统整体流程 (7) 3.2 模数转换程序设计 (8) 3.3 12864驱动程序 (8) 4.系统调试 (19) 4.1 Protues简介 (19) 4.2 硬件调试 (19) 4.3 软件调试 (19) 4.4 调试结果 (20) 4.5 结果分析 (20) 实验结论 (21) 实验心得 (22)

摘要 单片机是利用半导体集成技术将中央处理单元CPU和一定数量的数据存储器RAM、程序存储器ROM、定时/计数器单元T/C、并行输入输出接口I/O和串行通信接口UART等多个功能部件集成在一块芯片上,是一台具有完整计算功能的大规模集成电路。单片机具有体积小、功能全、价格便宜、功耗低、控制能力强和运算速度快等优点,被广泛应用在国民建设、工业控制、通信技术、农业机械化、国防军事及家用电器中。 数字信号相对与模拟信号有诸多的优点,通常所见到的信号均为模拟信号,而计算机所能处理的是数字信号,为了实现用计算机进行工程控制,需要对模拟信号和数字信号进行相互转换。能够将模拟信号转换位数字信号的器件为A/D 器件,将数字信号转换为模拟信号的器件为D/A器件。 采集模拟信号转换为数字信号是现在社会仪器方面的趋向,可以说大自然中不存在数字信号,模以信号的输入控制是非常有必要掌握的技能。;

实验十ADC0832数模转换的显示

实验报告十 实验名称:ADC0832数模转换的显示 目的:ADC0832是8脚双列直插式双通道A/D转换器,能分别对两路模拟信号实现模—数转换,可以用在单端输入方式和差分方式下工作。ADC0832采用串行通信方式,通过DI 数据输入端进行通道选择、数据采集及数据传送。8位的分辨率(最高分辨可达256级),可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在0~5V之间。具有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片使能输入,使多器件挂接和处理器控制变的更加方便。 ADC0832的工作原理: 正常情况下ADC0832 与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI。但由于DO端与DI端在通信时并未同时使用并与单片机的接口是双向的,所以在I/O口资源紧张时可以将DO和DI并联在一根数据线上使用。当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行A/D转换时,须先将CS使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟(CLK)输入端输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第一个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号。在第二、三个脉冲下沉之前DI端应输入两位数据用于选择通道功能。 通道地址通道 工作方式说明 SGL/DIF ODD/SIGN 0 1 0 0 + - 差分方式 0 1 - + 1 0 + 单端输入方式 1 1 + 表1:通道地址设置表 如表1所示,当此两位数据为“1”、“0”时,只对CH0 进行单通道转换。当2位数据为“1”、“1”时,只对CH1进行单通道转换。当两位数据为“0”、“0”时,将CH0作为正输入端IN+,CH1作为负输入端IN-进行输入。当两位数据为“0”、“1”时,将CH0作为负输入端IN-,CH1 作为正输入端IN+进行输入。到第三个脉冲的下降之后DI端的输入电平就失去输入作用,此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下降沿开始由DO端输出转换数据最高位Data7,随后每一个脉冲的下降沿DO端输出下一位数据。直到第11个脉冲时发出最低位数据Data0,一个字节的数据输出完成。也正是从此位开始输出下一个相反字节的数据,即从第11个字节的下降沿输出Data0。随后输出8位数据,到第19 个脉冲时数据输出完成,也标志着一次A/D 转换的结束。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。时序说明请参照图4。

相关文档