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

基于单片机的数字电压表设计一、引言在电子测量领域中,电压表是一种常用的测量仪器,用于测量电路中的电压值。
传统的模拟电压表由于精度低、读数不便等缺点,逐渐被数字电压表所取代。
数字电压表具有精度高、读数直观、抗干扰能力强等优点,广泛应用于工业自动化、电子设备检测、实验室测量等领域。
本文将介绍一种基于单片机的数字电压表设计方案,详细阐述其硬件电路设计、软件编程实现以及系统性能测试。
二、系统总体设计方案(一)设计要求设计一款基于单片机的数字电压表,能够测量 0 5V 的直流电压,测量精度为 001V,具有实时显示测量结果的功能。
(二)系统组成本数字电压表系统主要由以下几个部分组成:1、传感器模块:用于将输入的电压信号转换为适合单片机处理的电信号。
2、单片机模块:作为系统的核心,负责对传感器采集到的数据进行处理和计算,并控制显示模块显示测量结果。
3、显示模块:用于实时显示测量的电压值。
三、硬件电路设计(一)传感器模块选用 ADC0809 作为模数转换芯片,它具有 8 个模拟输入通道,可以将 0 5V 的模拟电压转换为 8 位数字量输出。
(二)单片机模块选择 AT89C51 单片机作为控制核心,它具有 4K 字节的 Flash 程序存储器和 128 字节的随机存取数据存储器。
(三)显示模块采用液晶显示屏(LCD1602)作为显示器件,它能够清晰地显示数字和字符信息。
四、软件编程实现(一)编程语言选择使用 C 语言进行编程,C 语言具有语法简洁、可移植性强等优点。
(二)主程序流程主程序首先进行系统初始化,包括单片机端口初始化、LCD1602 初始化、ADC0809 初始化等。
然后启动 ADC0809 进行模数转换,读取转换结果并进行数据处理,计算出实际的电压值。
最后将电压值发送到 LCD1602 进行显示。
(三)模数转换子程序ADC0809 的转换过程通过控制其启动转换引脚(START)和读取转换结束引脚(EOC)来实现。
基于单片机数字电压表设计

基于单片机的数字电压表学生姓名系部:专业年级:指导教师:摘要本文介绍基于AT89S52单片机的一种电压测量电路,介绍了双积分电路的原理,AT89S52的特点,ICL7135的功能和应用,LCD1601的功能和应用。
该电路设计新颖、功能强大、可ICL7135高精度、双积分A/D转换电路,测量范围直流0-±2000伏,使用LCD液晶模块显示,可以与PC机进行串行通信。
正文着重给出了软硬件系统的各部分电扩展强关键词:电压测量,ICL7135,双积分A/D转换器,1601液晶模块目录第1章概述 (1)1.1 数字电压表的发展前景. (1)1.2 电路原理图 (2)第2章硬件电路设计 (3)2.1 输入电路设计 (3)2.1.1 衰减电路设计 (3)2.1.2 衰减电路: (3)2.2 转换电路 (4)2.2.1 转化器类型 (4)2.2.2 转换器主要性能: (5)2.2.3 ICL7135芯片简绍 (6)2.3 AT89S52介绍 (8)2.3.1 AT89S52芯片特点 (9)2.3.2 主要引脚功能描述 (9)2.4 显示电路 (12)2.4.1 液晶显示器的分类及原理 (12)2.4.2 LCD-1601介绍 (12)第3章系统软件设计 (14)3.1主程序设计 (14)3.2 中断程序设计 (15)第4章通讯模块设计 (16)4.1 通讯模块电路组成 (16)4.2 通讯模块程序设计 (16)结束语 (18)致谢 (19)附件一电路原理图 (20)附件二部分参考程序 (21)参考文献 (23)第1章概述1.1 数字电压表的发展前景.数字电压表作为数字技术的成功应用,发展相当快。
数字电压表(Digital VoIt Me-ter,DVM),以其功能齐全、精度高、灵敏度高、显示直观等突出优点深受用户欢迎。
特别是以A/D转换器为代表的集成电路为支柱,使DVM向着多功能化、小型化、智能化方向发展。
基于单片机的数字电压表设计

一 、 方 案论证 与 比较 (一 )数 字 电压表设 计 常用 的基本 方 法 方 案一 (如 图 1所 示 ) 采用 比较 器 、减 法器 、电子 开关 以及少 量 的 分 立元件 ,将电压输 出到 ADC0809再转换 为数字信 号后送单片机控制 ,然后通过显示器显示 。但 由 于 元 件 分 散 性 太 大 , 即使 采 用 了单 片 机 最 小 系 统 ,由 于 电子 开 关 IC4066的 内 阻 较 大 ,导致 在 其 上的压降也较 大 ,使小信 号衰减 严重 ,输入 到 ADC0809的电压值 与待测 电压相差较远 ,抗干扰 能力较弱 ,不能达到本题 目的基本要求 。
0 V~1.28V 1.28V ~2.56V 2.56V~3.84V 3.84V 一5.12V 5.12V~6.4V 6.4V~7.68V 7.68V~8.96V 8.96V~10.24V
0V 1.28V 2.56V 3.84V 5.12V 6.4V 7.68V 8.96V
成
ADC0809的输 入 电压 范 围 限定 在 1.28V 以 内 ,需 在前放置一个减法器 ,控制输入电压量 。当待测电 压处 于下 列各 档 次 时 ,对 应 的 DAC0832的输 出电
压如 表 1所示 :
表 1 DAC0832的 输 出 电压 表
待测输 入电压范 围(v) DAC0832输 出电压 (v) ห้องสมุดไป่ตู้
基于单片机的数字电压表的设计

目录第1章引言 (1)1.1设计要求 (1)1.2 设计思路 (2)1.3 设计方案 (2)第2章硬件电路设计 (1)2.1 A/D转换模块 (1)2.2 单片机系统 (5)2.3 复位电路和时钟电路 (7)2.4 LED显示系统设计 (8)2.5 总体电路设计 (10)第3章程序设计 (1)3.1 程序设计总方案 (1)3.2 系统子程序设计 (1)第4章仿真与调试 (1)4.1 软件调试 (1)4.2 显示结果及误差分析 (1)结论 (1)参考文献 (1)致谢 (1)附录:程序代码 (1)第1章引言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。
而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。
数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。
由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用。
传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。
采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC实时通信。
数字电压表是诸多数字化仪表的核心与基础[2]。
以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。
目前,由各种单片机和A/D转换器构成的数字电压表作全面深入的了解是很有必要的。
最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型。
数字电压表从1952年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC 化),另一方面,精度也从0.01%-0.005%。
单片机课程设计---基于单片机的数字电压表设计

单片机课程设计---基于单片机的数字电压表设计《单片机原理及应用》课程设计报告学院:源与动力工程学院__ 班级:_____建电1001______ 学号:_____101605121______ 姓名:______刘兹平________ 时间:2012-12-17 ~ 2012-12-21目录任务书 (1)第一章方案设计 (2)第二章硬件系统设计 (3)第三章软件设计 (7)第四章系统调试 (10)小结 (11)附录1:原理图 (13)附录2:源程序 (14)任务书1、题目:基于单片机的数字电压表设计2、设计要求:(1)利用单片机及ADC0809构成一个电压采集系统,实现8通道循环采样,循环显示。
(2)显示采用ZLG7290,显示精度到小数点后一位。
第1页共31页第一章方案设计1、总体设计方案本设计使用ADC0809对模拟信号进行转换,然后经过AT89C51转换后的结果来进行运算和处理,然后由数码管直接显示数字电压信号,其中分辨率为0.02v。
用电位器控制输入电压,经ADC0809模数转换,然后数据被单片机采集,并经过单片机利用相应的算法进行调整,最后利用串口将处理好的数据输出至数码管。
其中ADC0809通过IN0~IN7采集模拟电压信号送给单片机,单片机将采集来的信号通过一定的处理然后通过串口输出至共阳极的LED数码管显示采集到的电压值。
2、总体设计框图第2页共31页第二章硬件系统设计1、硬件系统设计思路8路数字电压表应用系统硬件电路由单片机、A/D转换器、数码管显示电路等组成。
ADC0809具有8路模拟量输入通道IN0---IN7,通过3位地址输入端C、B、A(引脚23--25)进行选择。
引脚22为地址锁存控制端ALE,当输入为高电平时,C、B、A引脚输入的地址锁存于ADC0809内部是锁存器中,经内部译码电路译码选中相应的模拟通道。
引脚6为启动转换控制端START,当输入一个2μs宽的高电平脉冲时,就启动ADC0809开始对输入通道的模拟量进行转换。
基于单片机数字电压表设计

基于单片机数字电压表设计单片机数字电压表是一种先进的电压测量技术,它可以检测和测量精确的电压值。
近年来,这种技术在电力系统、自动化技术、电子设备等各个领域中得到了广泛的应用。
这种技术不仅提高了测量数据的精确性和可靠性,而且可以满足多种功能要求,有效地提高了工程设计的效率。
单片机数字电压表的原理及组成单片机数字电压表是一种半导体装置,基本原理是用参考电路产生一个参考电压,并使用模数转换技术测试输入电压,然后将输入电压与参考电压比较,最后将比较结果显示在数字显示器上。
单片机数字电压表的结构由电源供应器、测试电路、模数转换技术、控制器和数字显示器组成。
电源供应器的输出电压可以用作参考电压,测试电路将输入电压与参考电压比较,模数转换技术将比较结果转换成数字格式的结果,控制器将数字结果发送给数字显示器,数字显示器将结果显示出来。
单片机数字电压表的优点由于单片机数字电压表具有以下优点,使其在电力系统、自动化技术、电子设备等各个领域中得到了广泛的应用。
首先,单片机数字电压表的测量可靠性比传统的模拟电压表高,能够测量更精确的电压值,从而提高测量准确性。
其次,单片机数字电压表具有超高的灵活性。
它可以通过修改程序在软件上实现功能扩展,从而满足不同的电压测量要求。
第三,单片机数字电压表的显示精度高,同时能够提供连续测量结果,以满足对电压变化的时实判断要求。
第四,单片机数字电压表的体积小,可以完全替代传统的模拟电压表,有利于节约空间和重量。
第五,单片机数字电压表的低功耗,无需额外的外部电源,从而提高工作效率。
单片机数字电压表的应用由于其高质量、精密度和稳定性,单片机数字电压表在电力系统和电子设备中有广泛应用。
电力系统中,单片机数字电压表可用于测量高压过程的开关操作,检测变压器的接线状况,监测电缆引线的断线情况,以及预防接地线等。
在电子设备中,单片机数字电压表可用于监控数字设备的电压变化、测量输入电压的精确度,以及进行自动调节和维护等。
基于单片机的数字电压表设计

基于单片机的数字电压表设计数字电压表在电子技术中使用非常广泛,可以用来测量电路中的直流电压、交流电压以及各种信号的幅度等等。
基于单片机的数字电压表实现了数字电压的读取和显示,具有精确、稳定、易操作等特点,下面将介绍基于单片机的数字电压表的设计原理及实现方法。
一、系统结构基于单片机的数字电压表主要是由程序控制模块、模数转换模块和数字显示模块组成。
程序控制模块主要用来完成开机、校准、测试、功能选择等功能;模数转换模块主要将电压信号转换成数字量,供数字显示模块使用;数字显示模块主要将转换后的数字量显示在LCD液晶屏上。
二、硬件设计1.电源电路电源电路主要用来为电路提供稳定的电压和电流,本电路采用稳压电源芯片LM7805实现,稳压芯片输入端连接外部DC12V/1A电源,输出端连接电路板上的整个电路。
2.输入电路输入电路主要用来将被测电源的电压传递给单片机,常规情况下采用分压电路实现。
在本电路中,电阻R1和电容C1为RC滤波电路,起到滤波作用,防止干扰信号的影响;电阻R2是分压电路中的电阻,它根据电压值的不同设置不同的值,以保证被测电压在单片机内部转换过程中不会对单片机产生影响。
3.单片机模块单片机模块是系统的核心部分,本电路中选用STM32F103C8T6单片机实现模数转换和数码管控制,使用C 语言编写程序,通过模拟输入端口读取电压并进行模数转换,将得到的数字使用查表法将其转换为数码管控制脉冲,控制数码管的亮灭实现数字显示。
4.数字显示模块数字显示模块主要由七段数码管、LCD液晶屏幕、导线和电容等器组成,七段数码管用于展示测量到的电压大小,LCD 液晶屏用于展示功能选项、单位等信息。
导线是电路板内部连接线路,电容等器用来平滑电压波动。
三、软件设计1.引脚定义在程序中首先定义STM32F103C8T6单片机内存地址、输入输出引脚和电平状态,其中A0口用来读取被测电压;B0-B7口用来控制七段数码管的亮灭;C0口用来输出PWM,控制风扇的旋转速度;D0口用来控制蜂鸣器的开启和关闭。
单片机课程设计报告数字电压表

单片机课程设课题名称:数字电压表课程原理:1、模数转换原理:试验中,我们选用ADC0809作为模数转换的芯片,其为逐次逼近式AD转换式芯片,其工作时需要一个稳定的时钟输入,根据查找资料,得到ADC0809的时钟频率在10KHZ~1200KHZ,我们选择典型值640KHZ。
课题要求测量电压范围是0到5V,又ADC0809的要求:V ref+<=Vcc,V ref->=GND,故我们取V ref+=+5V,V ref-=0V。
由于ADC0809有8个输入通道可供选择,我们选择IN0通道,直接使ADC0809的A、B、C接地便可以了,在当ADC0809启动时ALE引脚电平正跳变时变可以锁存A、B、C 上的地址信息。
ADC0809可以将从IN0得到的模拟数据转换为相应的二进制数,由于ADC0809输出为8位的二进制数,转换时将0到5V分为255等分,所以我们可以得到转换公式为x/255*5化简为:x/51,x为得到的模拟数据量,也就是直接得到的电压量。
在AD转换完成后,ADC0809将在EOC引脚上产生一个8倍于自身时钟周期的正脉冲,以此来作为转换结束的标志。
然后当OE引脚上产生高电平时,ADC0809将允许转换完的二进制数据输出。
2、数据处理原理:由ADC0809的转换原理可以知道我们从其得到数据还只是二进制数据,我们还需要进一步处理来的到x的十进制数,并且对其进行精度处理,也就是课题要求的的精确到小数点后两位,在这里我们用51单片机对数据进行处理。
我们处理数据的思路是:首先将得到的二进制数直接除以十进制数51,然后取整为x的整数部分,然后就是将得到的余数乘以10,然后再除以51,再取整为x的十分位,最后将得到的余数除以5得到x的百分位。
3、数据显示原理:试验中我们用到四位一体的七段数码管,所以我们只能考扫描显示来完成数码管对x的显示,我们用的是四位数码显示管,但是x只是三位的,故我们将将第四位显示为单位U,通过程序的延时,实现四位数码管的稳定显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机原理及系统课程设计
专业:电气工程及其自动化
班级:
姓名:
学号:
指导教师:
兰州交通大学自动化与电气工程学院
2010 年 3 月 7 日
基于单片机的数字电压表设计
摘要
显示电路
输入电路
图2.2系统组成框图
3.硬件设计
3.1系统硬件设计原理
通过变量设置选择八路通道中的第三路,将该路模拟电压送入ADC0808相应通道,单片机软件设置ADC0808开始A/D转换,转换结束ADC0808的EOC 端口产生高电平,同时将ADC0808的OE端口置为高电平,单片机将ADC0809转换后的数字量存到片内RAM。
系统调出数据处理子程序,将测量结果转化为0.00~5.00V,最后通过查表将每一位数据输出到LED显示电路,将相应电压显示出来,程序进入下一个循环。
单片机的P0.0~P0.7作为4位动态数码显示管的段显示控制。
P2.1~P2.3作为4位动态显示管的位显示控制。
3.2硬件设计原理图
在Proteus仿真环境下所搭建的系统硬件电路图如图3.2所示。
图3.2系统原理图
图4.2 程序流程图
(a)主程序流程图(b)AD转换流程图
5.系统调试及仿真结果
6.总结
两周的课程设计结束了,在这过程中,我学到了很多东西。
首先,我学会了单片机设计的基本过程有哪些,每一过程有哪些基本的步骤,怎样通过查资料去完成这每一步。
其次我巩固了上学期所学的一些单片机知识,从而加深了对ADC0809芯片的功能的了解。
在编程过程中,遇到了许多困难,通过与同学之间的交流和咨询,最后解决了这些困难。
所谓实践出真知,学到的东西只有运用到实践当中,才能真正体会到知识的力量。
最后,通过这次课程设计,让我明白了想法和实践还是有差距的,当你真正去做一件事的时候,你会发现你的想法可能不适用,随时都需要调整,另外扎实的理论知识也是完成设计任何设计必不可少的要素,一切想法离开了理论知识都是空想。
参考文献
[1]彭为,黄科,雷道仲.单片机典型系统设计实例精讲[M].电子工业出版社.2009:22-54.
[2] 谭浩强.C程序设计(第三版)[M].清华大学出版社.2009:32-46.
[3] 王思明,张金敏,张鑫等.单片机原理及应用系统设计(第一版)[M].科学出版社.2012:70-292.
附录A源程序代码
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
sbit p21=P2^1;
sbit p22=P2^2;
sbit p23=P2^3;
sbit EOC=P3^1;
sbit OE=P3^0;
sbit ST=P3^2;
sbit p34=P3^4;
sbit p35=P3^5;
sbit p36=P3^6;
uchar code tab[]={0x40,0x79,0x24,0x30,0x19,0x12};
uchar code led[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; uchar code led_[]={0xC0,0xf9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90}; void delay(uchar n)
{
uchar i,j;
for(i=0;i<n;i++)
for(j=0;j<125;j++);
}
void convert(uchar volt_data)
{
unsigned int temp;
temp=100*volt_data/51;
P0=led[temp/100]; //个位上的数字显示
p21=1; //选通个位
delay(3); //延时
p21=0; //不选通个位
P0=led_[temp%100/10]; // 十分位的数字显示
p22=1; //选通十分位
delay(3); //延时
p22=0; //不选通十分位
P0=led_[temp%10]; //百分位的数字显示
p23=1; //选通百分位
delay(3); //延时
p23=0; //不选通百分位
}
void main()
{
uchar volt_data;
p34=1;
p35=1;
p36=0; //选通ADC0808的IN3通道
while(1)
{
ST=0;
_nop_();
ST=1;
_nop_();
ST=0; //开始转换
if(EOC==0) //如果EOC为0,则继续转换
delay(100);
while(EOC==0); //当EOC为1时,转换完毕
OE=1; //数据允许输出标志
volt_data=P1; //讲P1口的数据送volt_data
OE=0;
convert(volt_data);
}
}。