基于8051单片机的简易数字电压表的设计

更新时间:2023-12-20 21:42:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于单片机的数字电压表的设计

李力

(长江大学电子信息学院, 湖北 荆州 434023)

摘 要 : 介绍了一种基于单片机的直流数字电压表的设计。该设计主要由三个模块组成:A/D转换模块,采样数据处理模块及显示模块。A/D转换主要由芯片ADC0808来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。数据处理则由芯片AT89C51来完成,其负责把ADC0808传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此数字电压表

可以测量0-5V的1路模拟直流输入电压值,并通过LCD显示出来。 关键词 : AT89C51单片机;数字电压表;A/D转换;ADC0808;LCD1602

Design of Digital Voltmeter Based on Microcontroller

Li Li

(College of Electronics and Information,Yangtze University,Jingzhou 434023,

China)

Abstract:a kind of DC digital voltmeter which is based on single-chip microcontroller design is introduced in this paper. The circuit of the voltage meter is mainly consisted of three mould pieces: A/D converting mould piece, A/D converting is mainly completed by the ADC0808, it converts the collected analog data into the digital data and transmits the outcome to the manifestation controlling mould piece. Data processing is mainly completed by the AT89C51 chip, it processes the data produced by the ADC0808 chip and generates the right manifestation codes, also transmits the codes to the manifestation controlling mould piece. The voltmeter is capable of measuring voltage inputs from 1 route ranging from 0 to 5 volt, and displaying the measurements though LCD. Keywords :AT89C51 microcontroller; Digital voltmeter; A/D converter; ADC0808;LCD1602

1. 引言

数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域显示出强大的生命力。

2.硬件电路设计

2.1 设计原理

1

选定以8051单片机为核心器件,组成一个简单的直流数字电压表。此电路的 工作原理是:+5V模拟电压信号通过变阻器RV2分压后由ADC08008的IN0通道进入(由于使用的IN0通道,所以ADDA,ADDB,ADDC均接低电平),经过模/数转换后,产生相应的数字量经过其输出通道D0-D7传送给AT89C51芯片的P0口,AT89C51负责把接收到的数字量经过数据处理,产生正确的二进制数码经过算法转化成十进制数,然后将数据送往显示缓冲区,最后单片机通过调用LCD显示子程序,进行循环显示;同时它还通过其它的I/O口P2.1控制LCD寄存器选择信号,P2.2控制LCD读/写选择信号,P2.3控制LCD使能信号。此外,AT89C51还控制ADC0808的工作。其中,单片机AT89C51通过P2.0发正脉冲启动A/D转换,P3.3检测A/D转换是否完成,转换完成后,AD0808的EOC口置高,然后通过74LS02变成低电平,再通过查询的方式P3.3口是否为低电平,若转化完成从P0口读取转换结果送给LCD显示出来。该电路采用1路模拟量输入,通过模拟的电位器的控制改变,能够测量0-5V之间的直流电压值。电压显示用LCD显示,至少能够显示两位小数。硬件电路设计由6个部分组成; A/D转换电路,AT89C51单片机系统,LCD显示系统、时钟电路、报警电路以及测量电压输入电路。硬件电路设计框图如图1所示。这里选用的8051单片机集成了并行I/O口、异步串行口、16位定时器/计数器、中断系统、片内RAM、和片内ROM以及一些功能部件。

AT89C51 P1 P2 P2 P0 时钟电路 A/D转换电路 测量电压输入 液晶显示 报警电路

图1 数字电压表系统硬件设计框图

2.2 显示数据的转换存储

从IN0.0输入的模拟量经ADC0808转换后的到的是一个二进制数.我们无法知道实际电压是多少。于是需要我们转换成实际模拟电压值并显实出来.便于记录。

由于ADC0808是8位A/D转换.转换成的二进制最大为11111111,又因ADC0808的基准电压我设计的是5V。可用如下公式表示模拟量与A/D转换后的二进制数的关系:

模拟量模拟量转化后的二进制数= 5V111111112

将公式的右边换成十进制数:

模拟量二进制转化后的十进制数= 5V255在显示数据的转换存储模块部分中.我主要的任务是将单片机读到的数据再次转换成模拟量的数值大小.并将这个数值的整数值,小效值这三个十迸制值存入相应存储地址中去。具体的编程思想:设定8路模拟量转换成的二进制数存在30H-34H的片内缓冲区,用于存放A/D转化数据。

2.3 显示电路的设计

接口分配设计如图所示: RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。由单片机P2.1口控制,R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。由单片机P2.2口控制,E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。由单片机P2.3口控制,D0~D7为8位双向数据线。 单片机P0口输入,经过阻值为1K?的上拉电阻连接。

2.4 报警电路的设计

主要是将采样值和预设值进行比较,如果大于预设值,则会启动报警,硬件部分表现为灯亮或者是蜂鸣器会响 ,如图2所示

图2 报警仿真电路

3 软件设计

3.1 程序设计总方案

根据模块的划分原则,将该程序划分初始化模块,A/D转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,主程序开始后进行初始化,LCD间接控制下的初始化,定时器的初始化,然后调用A/D转化子程序,再调用

3

显示子程序。

3.2 系统子程序设计

3.2.1 初始化程序

所谓初始化,是对将要用到的MCS_51系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。 3.2.2 A/D转换子程序

A/D转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图3所示。

启动转换 N A/D转换结束? Y 输出转换结果 数值转换 显示 结束

图3 A/D转化流程图

3.2.3部分程序

从ADC0808数据端口取出来的数据是0—255,代表电压0-4.99 V,通过单片机AT89C51内编写好的汇编语言程序来完成计算工作,并把测量的电压值还原显示出来;采样值需要和预设值进行比较,若大于预设值,则显示报警。 ;****定时初始化*********** S2:MOV TMOD,#0

MOV TH0,#4cH;赋定时初值,定时采样 MOV TL0,#00H

MOV IE,#82H;开中断 SETB TR0

;*****定时器中断服务程序 ******

4

BT0:

push ACC

MOV DPTR,#0F6FFH MOV A,#00H

MOVX @DPTR,A JB P3.3,$

MOVX A,@DPTR

QS:CJNE A ,#204 ,BJ ;判断读的数据与204的大小 相等则向下执行 不等则跳转

;********二级制如何转化为十进制****** TURN: MOV A,#10 MUL AB MOV 70H,B MOV B,#51 DIV AB MOV 72H,A MOV 71H,B MOV A,#5 MOV B,70H MUL AB ADD A,72H ADD A,#30H RET

4 仿真

4.1 软件调试

该系统的调试主要以软件为主,其中,系统电路图的绘制和仿真我采用的是Proteus软件,Proteus它不仅能仿真单片机外围电路或没有单片机参与的其它电路的工作情况,也能仿真单片机CPU的工作隋况。从某种意义上讲Proteus仿真,基本接近于工程应用。利用设计好的仿真电路图,调用已生成的HEX文件,即可 运用Proteus软件仿真实现本设计,结合uvision2集成开发环境进行调试,然后在单片机硬件开发板上进行实际操作,并采用将最程序固化到单片机中,实现0~5V直流电压的数字电压表,而程序方面,采用的是汇编语言,用Keil软件将程序写入单片机。仿真电路图如图4

5

本文来源:https://www.bwwdw.com/article/qxb5.html

Top