文档详情

基于51单片机数字电压表.doc

发布:2025-05-16约1.67千字共3页下载文档
文本预览下载声明

基于51单片机的数字电压表

作品简介

本制作是基于51单片机的简易数字电压表。

制作背景

对于学电子的同学,电压表是必不可少的仪表。但是市场上的万用表的价格都不低,而且市场上的万用表量程过宽,大量程对于学电子的同学并不经常用到。而这款数字电压表,既能满足大学生一些基本项目中的要求,而且成本比较低廉。

实现的功能

测量5V以内的正电压(精度为0.02V)。

工作原理

通过8位A/D转换器ADC0804采样模拟电压,经过芯片内部转换,将转换出来的8位数字信号送至单片机进行处理,经过运算后输出。

调试与制作

系统整体结构

本系统主要包括数据采集电路,单片机最小数据处理系统,和数码管显示部分等。系统的电路图如下:

硬件设计

本电路采用模块化设计,主要由A/D转换模块、控制模块和LED显示模块组成(如图2.1)。

LED显示模块

LED显示模块

控制

A/D转换模块

A/D转换模块

系统总体硬件框图

软件设计

汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所以不易移植。C语言是一种结构化的高级语言。其优点是可读性好,移植容易,是普遍使用的一种计算机语言。缺点是占用资源较多,执行效率没有汇编高。而C语言是一种编译型程序设计语言,它兼顾了多种高级语言的特点,并具备汇编语言的功能。C语言有功能丰富的库函数、运算速度快、编译效率高、有良好的可移植性,而且可以直接实现对系统硬件的控制。C语言是一种结构化程序设计语言,它支持当前程序设计中广泛采用的由顶向下结构化程序设计技术。此外,C语言程序具有完善的模块程序结构,从而为软件开发中采用模块化程序设计方法提供了有力的保障。因此,使用C语言进行程序设计已成为软件开发的一个主流。所以,本软件设计采用C语言编写。

开始

开始

调用ADC转换子程序

调用ADC转换子程序

调用

调用数据转换程序

调用数码管显示程序

调用数码管显示程序

安装与调试

在设计这款电压表时,我们先做了Proteus仿真,其中就遇到一些问题。由于仿真都是基于一些比较理想化的元器件的仿真。我们按照实际电路来设计仿真电路,结果发现有的元器件没找到,然后找了类似的代替。而我们知道,单片机的拉电流能力是很弱的,只有微安的数量级,而数码管要显示比较明显的话,需要几十毫安,所以需要放大电流,我们采用的是NPN型的8050三极管放大(我们采用的是共阴数码管),把电流放大到几十毫安。而在Proteus仿真时,发现,不需要三极管放大就可以点亮数码管。而刚开始,我们按照实际电路图的时候却发现我们控制不了四个数码管。由于采用三极管放大接地,所有的数码管均是全部点亮,显示相同数字。经过一番讨论和不断反复实验,最后才发现这个问题。然后我们把三极管去掉。后来又出现了一个问题,就是数码管的“鬼影”现象,这个我以前没仿真过,只是在板子上用过,而我写出来的和我以前在板子上跑的显示程序基本一样,却显示效果不一样。仿真几乎无显示。后来经过两人的讨论,和不断的实验,最终成功了。最后就是做出实际的板级实验,其中主要的问题就是显示的不精确。误差有将近10%。经过一定的修改,最后还是得到比较满意的效果。

作品技术指标与功能描述

技术指标

电压量程:0~5V

测量精度:2%

显示:最大显示值为5.00,能自动显示小数点。

采样速度:采样速度为大约60次/s,每次测量时,被测电压的转换时间为大约100us。可对频率小于5KHz的信号采样。

实现效果

如图所示:

Proteus仿真效果图

应用前景

可以在学生中广泛使用。由于此作品价格低廉,又能满足学生朋友的基本要求,性价比高。同时,此作品有很多需要改进的地方,就是可以采用更加低廉的串行AD芯片,同时,可以采用STC89C2051来对收到的数据进行运算,然后输出至数码管显示。价格可以在10元左右。

显示全部
相似文档