当前位置:文档之家› 单片机课设AD转换

单片机课设AD转换

单片机课设AD转换
单片机课设AD转换

目录

摘要:A/D转换是指将模拟信号转换为数字信号,这在信号处理、信号传输等领域具有重要的意义。常用的A/D转换电路有专用A/D集成电路、单片机ADC模块,前者精度高、电路复杂,后者成本低、设计简单。基于单片机的A/D转换电路在实际电路中获得了广泛的应用,论文对这一电路结构进行了详细的研究。

关键词:单片机;AD转换器;电路

(二)前言:在设计一个控制系统时,首先要对系统进行分析明确设计任务和设计要求,作为系统方案设计的依据。合理选着系统的构成方案,合理规划分硬件和软件的功能,以有利于兼顾性能、价格比和缩短开发周期。硬件设计应以在充分满足系统功能的前提下最简单为原则,在系统的运用中,单片机被广泛运用。A/D转换的方法是由传输信号与接收信号图解方法,借助这种方法可以在已知发,接收点和存储的条件下,制造出各式各样的电器产品。

(三)目的要求:一.要求

利用实验台上的ADC0809做A/D转换器,实验箱上的电位器提供模拟电压信号输入,编制程序,将模拟量转换成数字量,用数码管显示模拟量转换的结果。

二.目的

1.掌握A/D转换与单片机的接口方法。

2.了解A/D芯片ADC0809转换性能及编程方法。

3.通过设计了解单片机如何进行数据采集。

三.原理

1. ADC0809读写原理

A/D转换器大致有三类:一是双积分A/D转换器,优点是精度高,抗干扰性好,价格便宜,但速度慢;二是逐次逼近法A/D转换器,精度、速度、价格适中;三是并行A/D转换器,速度快,价格也昂贵。

ADC0809属第二类,是八位A/D转换器。每采集一次需100us。

ADC0809 START端为A/D转换启动信号,ALE端为通道选择地址的锁存信号。实验电路中将其相连,以便同时锁存通道地址并开始A/D采样转换,故启动A/D转换只需如下两条指令: MOV DPTR,#PORT

MOVX @DPTR,A

A中为何内容并不重要,这是一次虚拟写。

在中断方式下,A/D转换结束后会自动产生EOC信号,将其与8031CPU板上的INT0相

连接。在中断处理程序中,使用如下指令即可读取A/D转换的结果:

MOV DPTR,#PORT

MOVX A,@DPTR

2.电路原理

实验板连接:将ADC0809的片选信号CS0809接CS0;电位器的输出信号AN0接0809的ADIN0;EOC接CPU板的INT0.

四.编程要点

学习ADC0809原理(参考教材第8章内容),了解本实验电路原理,数码管显示模拟量参照题目5。

五.基本任务

1.利用实验设备正确接线。画出整体原理图。

2.编制采集模拟电压信号及显示程序,并调试运行正确。

3.画出程序流程图。

(四)总体设计

数据采集,主要由三大模块组成:A/D转换模块,8051单片机模块和七段译码显示模块。

首先,通过实验箱产生0---5V可调电压;然后,将0---5V可调电压输入A/D转换进行数模转换,将0---5V的模拟量转换成00H-----FFH的数字信号,出入到单片机中,作为输入量进行倍率变换,并经软件编程实现动态扫描,最终在七段译码显示管上显示出温度变化。

该方案的前面部分本应用温度传感器,但试验设备不足,便用0---5V电压代替,之后的过程理论上皆可由实验箱和编程实现,所以具有较高的可行性。

开始

A/D转

换启动

延时

取A/D

延时

输出

倍率转

BCD码

转换

动态扫

描显示

(五)硬件电路

5.1总体硬件电路图

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

5.2单片机最小系统电路

5.2.1最小系统电路图

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

5.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封装。

5.2.3 复位电路

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

5.2.4 晶振电路

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

5.3 模数转换电路

5.3.1 模数转换电路图

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

5.3.2 ADC0809芯片简介

●分辨率为8位

●误差正负1LSB,无漏码。

●转换时间为100us(当外部时钟输入频率Fc=640kHz时)。

●很容易与微处理器连接。

●单一电源+5V,采用单一电源+5V供电时,量程为0~5V。

●无须零位或满量程调整。

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

换。

●DIP28封装

●使用5V或采用经调整模拟间距的电压基准工作。

●带锁存器的三态数据输出。

5.3.3 ADC0809 CLK信号产生电路

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

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

当Q与D相接时,输出是输入的二分频。所以采用两个D触发器就能实现4分

频。

5.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路通道的选择。

5.3.5 读写控制信号电路

读写控制电路由或非门实现的。74LS02是4输入或非门,其中A,B为输入,

W经或非门后的信号YSA与ADC0809的ALE Y为输出。8051的P2.7(A15)和R

端和START端相连,平时START因译码器输入端P2.7上的高电平而封锁,当单片机执行如下程序后

MOV DPTR,#7FF8H

MOV @DPTR,A

就启动了AD转换。

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

片机执行如下程序后,

MOV DPTR,#7FF8H

MOV A,@DPTR

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

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

(六)软件设计

6.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生成的目标代码的效率是非常高的。

6.2 主程序

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

开始

设数据区的起始地址,模拟路数

设外部中断方式,开总中断

启动AD转换

转换数据结束,触发中断

响应中断服务子程序T0

中断返回

结束

图1 主流程图的设计框架

6.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

}

}

(七)操作说明

(八)结束语:

刚开始,我们一点思路没有,但是大家很积极,很快找到了A/D转换这个切入

点。由此入手,我们进入了硬件连接阶段,由于对实验箱不是很熟悉,我们连线时也不是很顺利。我们请教了实验室老师,顺利连好了电路。并且了解到,连电路前要关闭电源并且检查线是否是完好的。

接着,我们进入了程序编写阶段。光是这个A/D转换的接口问题我们就研究了很久,到最后换了几个试验箱才完成了对A/D转换功能的验证。模块程序的编写并不是特别难,但是各个模块间的衔接需要仔细思考才能做好。

(九)参考文献

相关主题
文本预览
相关文档 最新文档