精校版用lcd1602和adc0808设计的数字电压表.docx

上传人:b****1 文档编号:297471 上传时间:2022-10-08 格式:DOCX 页数:13 大小:174.05KB
下载 相关 举报
精校版用lcd1602和adc0808设计的数字电压表.docx_第1页
第1页 / 共13页
精校版用lcd1602和adc0808设计的数字电压表.docx_第2页
第2页 / 共13页
精校版用lcd1602和adc0808设计的数字电压表.docx_第3页
第3页 / 共13页
精校版用lcd1602和adc0808设计的数字电压表.docx_第4页
第4页 / 共13页
精校版用lcd1602和adc0808设计的数字电压表.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

精校版用lcd1602和adc0808设计的数字电压表.docx

《精校版用lcd1602和adc0808设计的数字电压表.docx》由会员分享,可在线阅读,更多相关《精校版用lcd1602和adc0808设计的数字电压表.docx(13页珍藏版)》请在冰豆网上搜索。

精校版用lcd1602和adc0808设计的数字电压表.docx

精校版用lcd1602和adc0808设计的数字电压表

(完整word版)用lcd1602和adc0808设计的数字电压表

编辑整理:

 

尊敬的读者朋友们:

这里是精品文档编辑中心,本文档内容是由我和我的同事精心编辑整理后发布的,发布之前我们对文中内容进行仔细校对,但是难免会有疏漏的地方,但是任然希望((完整word版)用lcd1602和adc0808设计的数字电压表)的内容能够给您的工作和学习带来便利。

同时也真诚的希望收到您的建议和反馈,这将是我们进步的源泉,前进的动力。

本文可编辑可修改,如果觉得对您有帮助请收藏以便随时查阅,最后祝您生活愉快业绩进步,以下为(完整word版)用lcd1602和adc0808设计的数字电压表的全部内容。

学习情境6—数字电压表的设计

之用lcd1602和adc0808设计的数字电压表

☆点名,复习

1、ADC0832的引脚及其功能,以及与单片机的硬件连接?

引言:

数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表.较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。

数字电压表的核心部件是A/D转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。

一般说来,A/D转换的方式可分为两类:

积分式和逐次逼近式。

积分式A/D转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其数字化。

根据转化的中间量不同,它又分为U—T(电压—时间)式和U-F(电压-频率)式两种.

逐次逼近式A/D转换器分为比较式和斜坡电压式,根据不同的工作原理,比较式又分为逐次比较式及零平衡式等。

斜坡电压式又分为线性斜坡式和阶梯斜坡式两种。

在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式A/D转换器。

本设计以AT89C51单片机为核心,以逐次比较型A/D转换器ADC0808、液晶显示器LCD1602为主体,构造了一款简易的数字电压表,能够测量1路0~5V直流电压,最小分辨率0.02V。

☆新课讲授

6。

2基于LCD1602和ADC0808设计的数字电压表

逐次逼近型A/D转换器属于直接型A/D转换器,它能把输入的模拟电压直接转换为输出的数字代码,而不需要经过中间变量。

主要由比较器、环形分配器、控制门、寄存器与D/A转换器组成。

6。

2.1ADC0808简介

1、主要技术指标和特性

(1)分辨率:

8位。

(2)总的不可调误差:

ADC0808为±

LSB,ADC0809为±1LSB。

(3)转换时间:

取决于芯片时钟频率,如CLK=500kHz时,TCONV=128μs。

(4)单一电源:

+5V。

(5)模拟输入电压范围:

单极性0~5V;双极性±5V,±10V(需外加一定电路).

(6)具有可控三态输出缓存器。

(7)启动转换控制为脉冲式(正脉冲),上升沿使所有内部寄存器清零,下降沿使A/D转换开始。

(8)使用时不需进行零点和满刻度调节。

2、ADC0808引脚功能

图6—2—1ADC0808引脚图

(1)IN0~IN7--8路模拟输入,通过3根地址译码线ADDA、ADDB、ADDC来选通一路.

(2)D7~D0——A/D转换后的数据输出端,为三态可控输出,故可直接和微处理器数据线连接.8位排列顺序是D7为最高位,D0为最低位.

(3)ADDA、ADDB、ADDC——模拟通道选择地址信号,ADDA为低位,ADDC为高位。

地址信号与选中通道对应关系如表11.3所示。

(4)VR(+)、VR(-)——正、负参考电压输入端,用于提供片内DAC电阻网络的基准电压。

在单极性输入时,VR(+)=5V,VR(-)=0V;双极性输入时,VR(+)、VR(-)分别接正、负极性的参考电压。

表6-1-1地址信号与选中通道的关系

地址

选中通道

ADDC

ADDB

ADDA

0

0

0

0

1

1

1

1

0

0

1

1

0

0

1

1

0

1

0

1

0

1

0

1

IN0

IN1

IN2

IN3

IN4

IN5

IN6

IN7

(5)ALE——地址锁存允许信号,高电平有效。

当此信号有效时,A、B、C三位地址信号被锁存,译码选通对应模拟通道。

在使用时,该信号常和START信号连在一起,以便同时锁存通道地址和启动A/D转换。

(6)START——A/D转换启动信号,正脉冲有效。

加于该端的脉冲的上升沿使逐次逼近寄存器清零,下降沿开始A/D转换.如正在进行转换时又接到新的启动脉冲,则原来的转换进程被中止,重新从头开始转换。

(7)EOC—-转换结束信号,高电平有效。

该信号在A/D转换过程中为低电平,其余时间为高电平。

该信号可作为被CPU查询的状态信号,也可作为对CPU的中断请求信号。

在需要对某个模拟量不断采样、转换的情况下,EOC也可作为启动信号反馈接到START端,但在刚加电时需由外电路第一次启动。

(8)OE——输出允许信号,高电平有效。

当微处理器送出该信号时,ADC0808/0809的输出三态门被打开,使转换结果通过数据总线被读走.在中断工作方式下,该信号往往是CPU发出的中断请求响应信号。

3、ADC0808内部结构图

逐次逼近型A/D转换器ADC0808由八路模拟开关、地址锁存与译码器、比较器、D/A转换器、寄存器、控制电路和三态输出锁存器等组成。

其内部结构如图4所示。

图6-2-2ADC0808内部结构

4、工作时序与使用说明

图6-2—3ADC0808工作时序

ADC0808/0809的工作时序如图11.21所示。

当通道选择地址有效时,ALE信号一出现,地址便马上被锁存,这时转换启动信号紧随ALE之后(或与ALE同时)出现。

START的上升沿将逐次逼近寄存器SAR复位,在该上升沿之后的2μs加8个时钟周期内(不定),EOC信号将变低电平,以指示转换操作正在进行中,直到转换完成后EOC再变高电平。

微处理器收到变为高电平的EOC信号后,便立即送出OE信号,打开三态门,读取转换结果。

6。

2。

2系统硬件设计

从以上分析可知.ADC0808有8个模拟通道,本文的模拟量从0通道输入,由ADC0808的模拟通道地址表可知,电路中应当把ADDC、ADDB、ADDA三个引脚全部接地。

根据ADC0808的工作时序图可知,START引脚在一个高电平后启动A/D转换,当EOC引脚出现一个低电平时转换结束,然后由OE引脚控制,从并行输出端读取一个字节的转换结果。

转换后的结果为0x00-0xFF,转换过程中芯片所需的时钟信号由单片机定时器中断子程序提供。

具体硬件结构图如图6-2—4所示:

图6-2-4系统硬件连接图

6.2.3系统软件设计

根据需要,可将系统软件按照功能划分为4个模块,分别是主程序模块、A/D转换模块、液晶显示模块、中断服务程序模块(改变显示的小数点位置).编写系统软件时,可首先编写各模块的底层驱动程序,而后是系统联机调试,最后编写上层主程序。

1、主程序设计

主程序主要负责初始化工作:

设置定时器、寄存器的初值,启动A/D转换,读取转换结果,处理量程转换响应,控制液晶实时显示等,其流程图如图6—2-5所示。

图6—2-5主程序流程图

2、A/D转换程序

图6—2—6A/D转换程序流程图

A/D转换程序的功能是采集数据,在整个系统设计中占有很高的地位。

当系统设置好后,单片机扫描转换结束管脚P1。

7的输入电平状态,当输入为高电平则转换完成,将转换的数值转换并显示输出。

若输入为低电平,则继续扫描。

程序流程图如图6—2-6所示。

程序如下:

#include

h〉

#include

h>

unsignedlongdat_adc0808;

uintadc0808_init()//AD初始化

{

START=0;

OE=0;

START=1;

START=0;

while(EOC==0);

OE=1;

dat_adc0808=P1;

OE=0;

returndat_adc0808;

}

得到ADC0808的转换结果后,应当及时处理成LCD1602能够显示的数字字符.以下函数实现此功能,为ADC0808显示刷新子程序:

voidRefresh_show()//刷新显示

uintt=dat_adc0808*500.0/255;//

display_buffer[1][7]=t/100+'0';//整数位

display_buffer[1][9]=t/10%10+’0’;//两个小数位

display_buffer[1][10]=t%10+’0';

}

☆课堂小结

本节课我们主要学习了如何应用ADC0808设计一个数字电压表。

知道了在硬件上ADC0808芯片和单片机的连接,在软件方面,我们着重介绍了如何获取A/D转换结果函数的设计,这需要我们从ADC0808芯片的技术资料中获得设计程序的方法。

通过和前面一个项目的对比可知,对于模数转换芯片的使用,关键的一点就是我们必需明白A/D芯片的转换机制,ADC0808转换时和时钟引脚的频率有很大的关系,频率设置不当,ADC0808就不能转换,这一点同学们要特别注意.

☆完整程序代码

1、LCD1602。

c源程序

//液晶控制与显示驱动程序

#include

#include〈intrins.h>

#include

h〉

#include”LCD1602。

h”

#include"ADC0808.h”

//-—-———--—-—-—-—忙检查-——-—-————--—-———-—//

ucharLCD_Busy_Check()

{

ucharLCD_Status;

RS=0;

RW=1;

E=1;

delay4us();

LCD_Status=P0;

E=0;

returnLCD_Status;

//—————-—-—-—-——向LCD写入命令—-—————-—-——--—---——//

voidWrite_LCD_Command(ucharcmd)

{

while((LCD_Busy_Check()&0x80)==0x80);//忙等待

RS=0;

RW=0;

E=0;

P0=cmd;

delay4us();

E=1;

delay4us();

E=0;

}

//-—-—-—----—向LCD写入一个字节的数据函数--—----———-——-———*/

voidWrite_LCD_Data(uchardat)

while((LCD_Busy_Check()&0x80)==0x80);

RS=1;

RW=0;

E=0;

P0=dat;

delay4us();

E=1;

delay4us();

E=0;

//-—-----——--LCD初始化----—---———----——*/

voidInitialize_LCD1602()//液晶初始化函数

{

Write_LCD_Command(0x38);delay50us(10);//功能设置,数据长度为8位,双行显示,5×7点阵字体

Write_LCD_Command(0x0C);delay50us(10);//显示开,关光标

Write_LCD_C

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1