您的当前位置:首页基于ADC0809的多路模数转换电路的设计

基于ADC0809的多路模数转换电路的设计

2020-04-12 来源:六九路网


基于ADC0809的多路模数转换电路的设计

Design of AD Circuit of Multichannel Based on ADC0809

【摘要】本次设计的目的在于学习基于51单片机和ADC0809多路模数转换电

路的设计。本设计采用ADC0809对多路模拟信号进行采集转换,单片机对数据进行处理,发出控制信息。本系统可以实现多路信号采集与处理,可以外接传感器,通过进行传感器信号数据的运算处理,发出控制信号达到控制的目的。

【关键词】 多路信号采集 ADC0809模数转换

【Abstract】The article aims to design AD circuit of multichannel based on

51 mcu and ADC0809.The design use ADC0809 to realize multichannel acquisition of signal.51 mcu deal with the signal in order to generate control instructions.Sensor can be connected to the system to realize acquisition and process of signal.Data from the sensor can be processed and control signal can be generated to achive control.

【Key words】acquisition of multichannel signal ADC0809

第一章 引言

随着现代信息技术的飞速发展,各行各业都要实现自动化,这就需要将模拟信号转化成数字信号进行处理,因此信号采集处理系统的设计与研究有十分重要的意义。

第二章 硬件电路设计

2.1总体硬件电路图

基于ADC0809的模数转换电路主要由两部分电路组成:单片机最小系统和ADC0809的电路。如图所示ADC0809电路完成模拟量到数字量的转换,单片机完成接收、存储并处理数据的任务。

2.2单片机最小系统电路

2.2.1最小系统电路图

单片机最小系统电路图主要由主要由8051单片机、复位电路和晶振电路组成。

2.2.2 8051单片机简介

     

8位CPU。

布尔代数处理器,具有位寻址能力。

128B内部RAM数据存储器,21个专用寄存器。 4KB内部掩膜ROM程序存储器。 两个16位可编程定时器/计数器。

32个(4*8位)双向可独立寻址的I/O接口。

     

一个全双工UART(异步串行通信口)。

5个中断源,两级中断优先级的中断控制器。

时钟电路,外接晶振和电容可产生1.2~12MHz的时钟频率。

外部程序存储器寻址空间为64KB,外部数据存储器寻址空间为64KB。 111条指令,大部分为单字节指令。

单一+5V电源供电,双列直插40引脚DIP封装。

2.2.3 复位电路

复位电路有两种:上电自动复位和上电/按键手动复位。在这里我们采用上电/按键手动复位,如图所示按下按键SW,电源对电容C充电,使RESET端快速达到高电平。松开按键,电容向芯片的内阻放电,恢复为低电平,从而使单片机可靠复位。既可上电复位,又可按键复位。一般R1选470欧姆,R2选8.2K欧姆,C选22uF。

2.2.4 晶振电路

晶振电路的两端接到单片机的18(XTAL2)和19(XTAL1)引脚,晶振采用12MHZ,两端各接一个30pF的电容。如图所示

2.3 模数转换电路

2.3.1 模数转换电路图

模数转换电路主要由ADC0809模数转换芯片、74LS02或非门、CC4013D触发器(ALE引脚4分频)

2.3.2 ADC0809芯片简介

      

分辨率为8位

误差正负1LSB,无漏码。

转换时间为100us(当外部时钟输入频率Fc=640kHz时)。 很容易与微处理器连接。

单一电源+5V,采用单一电源+5V供电时,量程为0~5V。 无须零位或满量程调整。

带有锁存控制逻辑的8通道多路转换开关,便于选择8路中的任一路进行转换。

 DIP28封装

 使用5V或采用经调整模拟间距的电压基准工作。  带锁存器的三态数据输出。

2.3.3 ADC0809 CLK信号产生电路

ADC0809的CLK(10号引脚)所需的时钟输入信号的典型值为640kHz,鉴于

640kHz频率的获取比较复杂,我们采用在8051的ALE信号的基础上分频的方法。单片机的晶振频率为12MHz时,ALE引脚上的频率大约为2MHz,经4分频后能达到500kHz,4分频是由CC4013两个D触发器实现的,如图所示,在D触发器中,当Q与D相接时,输出是输入的二分频。所以采用两个D触发器就能实现4分频。

2.3.4 ADC0809的8路通道的地址锁存电路

地址锁存采用74LS373芯片,如图所示,OE(1号引脚)端接低电平,锁存控制端LE(11号引脚)可以直接与CPU的地址锁存控制信号ALE相连,当LE为高电平时,Q端等于D端,当LE端从高电平下降到低电平时,输入端D的数据锁入锁存器中。D0~D7与8051的P0.0~P0.7相连。A0,A1,A2分别接ADC0809的A,B,C端,当A0A1A2=000~111时,就实现了对ADC0809的8路通道的选择。

2.3.4 读写控制信号电路

读写控制电路由或非门实现的。74LS02是4输入或非门,其中A,B为输入,Y为输出。8051的P2.7(A15)和WR经或非门后的信号YSA与ADC0809的ALE端和START端相连,平时START因译码器输入端P2.7上的高电平而封锁,当单片机执行如下程序后 MOV DPTR,#7FF8H MOV @DPTR,A

就启动了AD转换。

8051的P2.7(A15)和RD经或非门后的信号YOE与ADC0809的OE端相连,但单

片机执行如下程序后, MOV DPTR,#7FF8H MOV A,@DPTR

就可以获取AD的转换结果。

转换数据的传送可以有定时传送方式,查询方式和中断方式,在这里我们采用中断方式。因为ADC0809的转换时间为100us,而单片机执行一条指令的时间为1us,它们之间相差两个数量级。而且采用中断方式的好处在于可以不占用CPU硬件资源,使CPU可以在转换的过程中完成其他的工作。将ADC0809的EOC引脚经或非门后与8051的INT0相连,这样就能在外部中断子程序中实现对采集来的数据进行存储。

第三章 软件设计

3.1 Keil uVison 3 集成开发环境简介

Keil uVison 3 是一套在windows环境下8051单片机整合性开发接口(Intergrated Development Environment,IDE )软件,它具备完善的项目管理系统,提供编译器以编写程序及说明文件,可以协助编写,翻译(包含C语言的编译器C51 Compiler以及A51组译器)除错和测试嵌入式系统程序。其中C51compiler是C语言软件开发系统。与汇编相比,C语言在功能,结构性,可读性和可维护性等方面有明显的优势,而且易学易用,Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外,重要的一点是只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码的效率是非常高的。

3.2 主程序

主程序主要是设置数据区的起始地址为60H,模拟路数为8路,设置外部中断方式是下降沿触发,开总中断,向ADC0809写数据启动AD转换。

开始 设数据区的起始地址,模拟路数 设外部中断方式,开总中断

启动AD转换 转换数据结束,触发中断 响应中断服务子程序T0

中断返回 结束 图1 主流程图的设计框架

3.3中断服务程序

中断服务程序主要完成取AD转换结果存储,模拟路数自增1,存储区自增1,判断8路是否转换完毕,若完毕则返回。 T0中断服务程序 取AD转换结果,存储

DPTR,R0自增。R2自减

否 R2=0? 是 中断返回 图2 T0中断服务程序流程图

汇编语言代码 ORG 0000H LJMP MAIN ORG 0003H LJMP INT_T0 ORG 0010H MAIN:

MOV R0,#60H ;数据区起始地址送R0 MOV R2,#08H ;模拟量路数 8路 SETB EA SETB IT0

MOV DPTR,#7FF8H

MOVX @DPTR,A ;启动AD转换 SJMP $ ;等待中断

INT_T0:

MOVX A,@DPTR MOV @R0,A INC DPTR INC R0

DJNZ R2,LOOP CLR EA CLR EX0 RETI LOOP:

MOVX @DPTR,A ;再次启动 RETI END

C语言代码

#include #include

#define uchar unsigned char

#define ADC0809 XBYTE[0x7FF8]//ADC0809的地址

#define STO0809 PBYTE[0x60]//将采集来的8路数据存到内存0x60~0x67中去

uchar data R_data[8]={0}; uchar i=0;

uchar idata *p,*q; void Init() {

EA=1; CPU开总中断 EX0=1; IT0=1;

*p=ADC0809; *q=STO0809;

ADC0809=0x00; //启动ADC0809 }

void main() { Init() while(1) {;} }

void Int_t0 interrupt 0 using 1 {

ACC=*p;

R_data[i]=ACC;

*q=ACC; //存入数据区 p++; //模拟路数加1 q++; //存储区指针加1 i++; //数据区指针加1

if(i==8) //判断是否转换完毕。转换完毕关总中断

{

EA=0; EX0=0 } }

第四章 总结

这一次的单片机课程设计使我学到不少东西,尽管上课的时候听的挺带劲的,也感觉自己学的不错,但还是暴露了不少的问题。第一个问题就是ADC0809

的CLK信号的产生,D触发器当Q与D相接时,输出是输入的2分频。这个知识点以前是没有掌握的。第二个问题是数据传输方式的问题,有三种传输方式:定时方式,查询方式和中断方式,我感觉这三种方式各有应用场合,但中断方式应用的应该更宽广一些。第三个问题就是软件这一块的程序流图画的不太好,想以后用Visio画一下。

单片机的课程已经结课了,也挺怀念杨老师对我们讲课的时光。但我觉得我们对单片机的学习才正式开始,以后不能在课堂上学习单片机,可以在业余时间买一个开发板研究一下,单片机对我们电子工科的学生是立身之本,学好它我们完全可以找一个不错的工作。在这里感谢杨老师对我们的风趣,认真的授课。 参考文献

【1】 张鑫主编.单片机原理与应用(第2版).电子工业出版社.2010.

【2】 常喜茂、孔英会、付小宁.C51基础与应用实例.电子工业出版社.2009. 【3】 王迎旭.单片机原理与应用.机械工业出版社.2004 何利民.单片机应用系统设计.北航出版社.1990

.

【4】

因篇幅问题不能全部显示,请点此查看更多更全内容