STC89C51单片机的数字电压表设计
- 格式:doc
- 大小:26.00 KB
- 文档页数:3
目录摘要 (2)一、总体方案设计 (3)二、系统硬件设计 (4)2.1 控制器—单片机 (4)2.2电源电路 (6)2.3 显示电路 (7)2.4 键盘电路 (8)2.5 晶振电路 (10)2.6 复位电路 (10)2.7 报警电路 (11)三、系统软件设计 (12)3.1 主流序程图 (12)3.1 显示电路流程图 (13)3.3 报警电路流程图 (14)四、结论 (14)五、参考文献 (15)附录 (16)摘要在现代检测技术中,常需用高精度数字电压表进行现场检测,将检测到的数据送入微计算机系统,完成计算、存储、控制和显示等功能。
本文中数字电压表的控制系统采用单片机实现数字电压表的硬件电路与软件设计。
该数字电压表电路简单,还可以方便地行2路数据采集,远程测量结果传送等功能。
数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的以指针加刻度盘进行读数的方法,避免了读数的视差和视觉疲劳。
采用单片机的数字电压表,它的精度高、抗干扰能力强。
可扩展性强、集成方便,还可与PC进行实时通信。
目前,有各种单片A/D转换器构成的数字电压表,以被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能测量领域,本文采用内置AD转换器对输入模拟信号进行转换,STC89C51RC对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号。
关键词:单片机;数字电压表;模拟信号;A/D转换一、总体方案设计本设计利用内置A/D转换的单片机STC89LE516AD、显示电路、按键电路、振荡电路以及报警电路等构成数字电压表。
其原理是晶振电路为单片机提供稳定的时钟周期。
采集电路将基准电压和被测电压分别输入到内置A/D转换器的基准电压端及被测电压输入端。
模数转换器将被测电压输入端采集的模拟信号转换为相应的数字信号,由于单片机的软件编程,使单片机系统能够按照规定的时序采集这些数字信号,这些数字信号通过一定的算法计算得出被测电压相应的电压值,每三次取平均值,被测出的平均电压值以一定的时序在显示电路上显示。
基于89c51单片机的数字电压表设计一、引言现代科技的进步使得电子技术在各个领域都得到广泛应用,其中电压测量作为电子测量技术的基本内容之一,在电力系统、工业自动化、仪表仪器、通信以及家用电器等浩繁领域中发挥着重要的作用。
而数字电压表则是电子测量技术的重要组成部分之一,其具有精度高、使用便利等特点,因而在实际应用中得到广泛的推广和应用。
二、设计原理本次设计的基于89c51单片机的数字电压表主要包含两个部分:模拟电路部分和数字电路部分。
1. 模拟电路部分模拟电路部分主要包括电源部分、电压信号放大部分和滤波部分。
在电源部分,使用线性稳压电源,保证系统的稳定性。
电压信号放大部分主要接受差分放大器放大输入信号,提高系统的灵敏度。
为了滤除输入信号中的高频噪声,滤波部分使用低通滤波器对信号进行滤波。
2. 数字电路部分数字电路部分主要由89c51单片机、ADC(模数转换器)、显示模块和按键模块组成。
89c51单片机作为主控制芯片,具有浩繁强大的功能,如高度集成、易编程、合理的存储空间等。
ADC模块的作用是将模拟电压信号转换为数字信号,以便单片机进行处理。
显示模块用于显示测量到的电压值,可以选择LED数码管、LCD液晶屏等方式进行显示。
按键模块则提供了对测量功能的开启和关闭,参数的调整等功能。
三、设计过程1. 模拟电路的设计模拟电路部分主要包括电源部分、电压信号放大部分和滤波部分。
电源部分接受线性稳压电源,通过变压器、整流电路和稳压电路得到所需的5V直流电源。
电压信号放大部分接受差分放大器,通过调整放大倍数,适应不同电压范围的测量。
滤波器部分接受低通滤波器,去除噪声干扰。
2. 数字电路的设计数字电路部分主要由89c51单片机、ADC、显示模块和按键模块组成。
起首进行单片机的编程,通过编程,设置ADC的工作方式、测量范围和采样频率等参数。
接着毗连ADC和单片机,通过串口通信的方式将转换后的数字信号传输给单片机。
再通过显示模块将测量到的电压值显示出来。
基于51单片机数字电压表的设计基于51单片机数字电压表的设计摘要:本文介绍了基于STC89C52单片机为核心的,以AD0809数模转换芯片作为采样,以四位八段数码管作为显示的具有测量功能的具有一定精度的数字电压表。
在实现基础功能的情况下,另外还可以扩展串行口通信,时钟,等其他一系列功能,使系统达到了良好的设计效果和要求。
本课题主要解决A/D转换,数据处理及显示控制等三个模块。
关键词:STC89C52;数字电压表;模数转换;数字信号Abstract:This paper introduces STC89C52 SCM as the core based on AD0809 analog-to-digital conversion chip, as sampled to four seven segment digital tube as display with certain with measuring function of digital voltmeter accuracy. The basic function in realizing circumstance, also can expand serial port communication, clock, and other series of function, make the system to achieve a good design effect and requirements.This subject mainly to solve AD, data processing and display control three modules.Key words: Digital voltmeter; Frequency-field; Digital signal本设计在分析研究和总结了单片机技术的发展历史及趋势的基础上,以使用可靠,经济,精度高等设计原则为目标,设计出基于单片机的数字测量电压表。
基于AT89C51单片机数字电压表的设计题目:基于AT89C51单片机数字电压表的设计目录一、整体设计思路框图及原理图 (4)二、模块分析 (5)1.AT89C51单片机 (5)2.A/D转换 (6)3. .................................................................................. 显示电路 (7)三、软件设计 (5)四、程序清单 (6)五、仿真实验调试 (12)六、总结与体会. (13)七、参考文献 (14)34一、 整体设计思路框图及原理图数字电压表的设计即将连续的模拟电压信号经过A/D 转换器转换成二进制数值,再经由单片机软件编程转换成十进制数值并通过显示屏显示。
按系统实现要求,决定控制系统采用AT89C51单片机,A/D 转换由于仿真软件里的ADC0809元件有问题,这里用ADC0808代替,它和ADC0809区别很小。
采用ADC0808。
数字电压表系统整体框图如下图1所示。
图1 整体框图系统通过软件设置单片机的内部定时器T1产生中断信号。
通过片选选择8路通道中的一路,将该路电压送入ADC0808的EOC 端口产生高电平,同时将ADC0808的OE 端口置为高电平,单片机将转换后结果存到片内RAM 。
系统调出转换显示程序,将转换为二进制的数据在转换成十进制数并输出到LCD 显示电路,将相应电压显示出来。
原理图见附录图7。
二、模块分析1.AT89C51单片机接口分配电路设计如右图2所示:P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在这里P0口作为输入与输出分别与ADC0808的输出端和LCD显示的输入端相连,且P0外部被阻值为1KΏ图2 单片机接口电路的电阻拉高。
P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
基于at89c51单片机的数字电压表的设计数字电压表是一种常见的电子测量仪器,它可以用来测量电路中的电压大小。
在本文中,我们将介绍一种基于at89c51单片机的数字电压表的设计。
一、设计原理数字电压表的设计原理是基于模数转换器(ADC)的工作原理。
ADC是一种将模拟信号转换为数字信号的电路。
在数字电压表中,ADC将输入的模拟电压信号转换为数字信号,然后通过单片机进行处理和显示。
二、硬件设计数字电压表的硬件设计包括电路图和PCB布局。
电路图包括电源电路、ADC电路、单片机电路和显示电路。
PCB布局是将电路图转换为实际的电路板。
1. 电源电路数字电压表的电源电路需要提供稳定的直流电源。
在本设计中,我们使用了7805稳压器来提供5V的直流电源。
2. ADC电路ADC电路是将输入的模拟电压信号转换为数字信号的关键。
在本设计中,我们使用了AD0804芯片作为ADC电路。
AD0804是一种8位的串行输出ADC,它可以将输入的模拟电压信号转换为8位的数字信号。
3. 单片机电路单片机电路是数字电压表的核心部分。
在本设计中,我们使用了at89c51单片机作为控制器。
单片机通过串行通信接收ADC输出的数字信号,并进行处理和显示。
4. 显示电路显示电路是将单片机处理后的数字信号转换为实际的电压值并显示出来的部分。
在本设计中,我们使用了4位7段LED数码管作为显示器。
三、软件设计数字电压表的软件设计包括单片机程序和PC端程序。
单片机程序是控制器的核心部分,它通过串行通信接收ADC输出的数字信号,并进行处理和显示。
PC端程序是用来控制数字电压表的参数和显示的。
1. 单片机程序单片机程序主要包括串行通信、ADC转换和数码管显示三个部分。
串行通信是单片机和ADC之间的通信方式,它通过SPI协议进行通信。
ADC转换是将输入的模拟电压信号转换为数字信号的部分。
数码管显示是将单片机处理后的数字信号转换为实际的电压值并显示出来的部分。
基于51单片机的数字电压表设计摘要:文章设计了一种以AT89S51为核心、以ADC0809为A/D转换器的数字电压表,可以精确测量0~5V内直流电压,测量精度可达0.02V。
可以满足科研、测试等各方面的需求。
关键词:AT89S51;ADC0809;数字电压表文章介绍了一种用于测试0~5 V直流电压的数字电压表,通过LED七段管显示当前测试电压。
测试结果准确可信且读取方便,有着传统电压表无可比拟的优点。
1硬件设计本设计中数字电压表主要由:A/D转换电路、单片机控制电路、数字显示电路组成。
总电路图如图1所示。
?譹?訛A/D转换电路选用最为常用的通用A/D芯片ADC0809,它由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。
单片机P3.0接A/D转换器ST端控制A/D转换的启动;单片机P3.1接A/D转换器OE端控制三条输出锁存器向单片机输出转换得到的数据,OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。
单片机P3.2接A/D转换器EOC端接收转换结束信号,当EOC 为高电平时,表明转换结束;否则,表明正在进行A/D转换。
单片机P3.3提供A/D转换器工作所需时钟脉冲;IN0作为电压信号接收通道,经A/D转换后电压数字信号接入单片机P0.0~P0.7。
取5V为基准电压,故待测电压经A/D转换后的数值D=V256/5.0,所以最终LED七段管显示电压V=5.0/256D。
?譺?訛数字显示电路使用一块四位LED七段管,a、b、c、d、e、f、g、dp口分别单片机P1.0~P1.7口分别接七段管a、b、c、d、e、f、g、dp口控制显示值,单片机P2.0~P2.3口分别接七段管S1~S4口控制七段管的点亮。
目录引言 (1)1硬件设计 (2)1.1单片机控制模块设计 (2)1.1.1时钟电路 (2)1.1.2复位电路 (2)1.1.3AT89C51芯片功能简介 (2)1.2逐次逼近式A/D转换模块设计 (5)1.3七段数码管简介 (6)1.4 A/D转换电路总体设计 (7)2软件设计 (8)3 PROTEUS软件仿真 (9)3.1 PROTEUS软件简介 (9)3.1.1Proteus ISIS的启动 (9)3.1.2Proteus ISIS的工作界面 (10)3.2KEIL简介 (10)3.3利用Proteus ISIS仿真与调试 (11)总结 (13)参考文献 (14)附录 (15)引言随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。
数字电压表是采用数字化测量技术设计的电压表。
数字电压表与模拟电压表相比,具有读数直观、准确、显示范围宽、分辨力高、输入阻抗大、集成度高、功耗小、抗干扰能力强,可扩展能力强等特点,因此在电压测量、电压校准中有着广泛的应用。
本文采用ADC0808对输入模拟信号进行转换,控制核心AT89C51单片机对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号,通过Proteus仿真软件实现接口电路设计,并进行实时仿真。
Proteus软件是一种电路分析和实物模拟仿真软件。
电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器(A/D)。
数字电压表的核心部件就是A/D 转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。
一般说来,A/D转换的方式可分为两类:积分式和逐次逼近式。
电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器(A/D)。
数字电压表的核心部件就是A/D 转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。
摘要随着电子技术的发展,电子测量技术对测量的精度和功能的要求也越来越高,而数字电压表作为实验室的基本测量设备,它可以很好的满足测量精度和功能的要求。
本设计利用AT89S51单片机技术结合A/D转换(采用ADC0809)构建了一个直流数字电压表。
经过对数字电压表基本原理的分析,本文设计了一个以51单片机为核心的数字电压表系统,给出了直流数字电压表的设计流程,设计了电压测量子系统和电流测量子系统,给出了硬件电路的框图、电气原理图和软件流程图。
系统设置了3个键的键盘,用于设定电压、电流切换的功能键、系统复位键以及清零键。
关键词:数字电压表;AT89S51单片机;A/D转换;ADC0809;AbstractAs electronic science and technology development, electronic measurement technology on the accuracy of measurement and functional requirements are increasingly high, and digital voltmeter measurement equipment as the basic laboratory, it can well meet the measuring precision and function requirements. A dc digital voltmeter is built by using AT89S51 with the A/D convertor (ADC0809)in the paper.This paper first introduces the main method and design voltmeter SCM system advantage; Then introduces the design process of dc digital voltmeter, and hardware system and the design of software system, and gives the hardware circuit design system diagram and software system design flow diagram.Keywords: Digital voltmeter; AT89S51MCS; A/D conversion; ADC0809.目录1 绪论 (1)1.1前言 (1)1.2数字电压表的介绍 (1)1.2.1数字电压表的发展概况 (1)1.2.2数字电压表在各领域中的应用 (2)1.2.3数字电压表的优点 (2)1.3单片机的介绍 (3)1.3.1单片机简介 (3)1.3.2单片机的发展概况 (3)1.3.3单片机的应用 (4)1.3.4单片机的特点 (6)1.4课题背景,国内外研究现状 (6)1.5本文主要研究内容 (8)2 数字电压表的工作原理 (9)2.1数字电压表的基本结构 (9)2.2数字电压表的工作原理 (9)2.2.1模数(A/D)转换与数字显示电路 (10)2.2.2多量程数字电压表分压原理 (10)2.2.3多量程数字电压表分流原理 (11)3 硬件系统各模块具体设计及实现 (14)3.1单片机的选择 (14)3.1.1AT89S51的引脚框图 (15)3.1.2AT89S51的内部结构图 (17)3.2A/D转换器的选择 (18)3.2.1ADC0809的引脚结构 (19)3.2.2ADC0809的内部逻辑结构 (21)3.3显示器的选择 (21)3.4键盘的选择 (23)3.5表笔探针设计 (23)4 系统总体方案研究 (25)4.1总体方案确定 (25)4.2系统框图及阐述 (25)4.3ADC0809与AT89S51的连接 (26)4.4键盘与单片机的连接 (27)4.5多量程数字电压表档位切换原理 (28)4.5.1多量程电压的测量 (28)4.5.2多量程电流的测量 (30)5 系统的软件设计 (31)5.1系统软件设计的总体思想 (31)5.2系统单片机的软件设计 (31)5.2.1键盘的处理 (31)5.2.2显示的处理 (31)5.2.3档位切换的处理 (32)6 系统软件流程图 (33)6.1主程序流程图 (33)6.2A/D转换流程图 (34)7 设计总结 (35)参考文献 (36)致谢 (37)附录 (38)1 绪论1.1前言数字电压表(Digital Voltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
基于51单片机制作的数字电压表基于51单片机数字电压表的设计基于51单片机数字电压表的设计摘要:本文介绍了基于STC89C52单片机为核心的,以AD0809数模转换芯片作为采样,以四位八段数码管作为显示的具有测量功能的具有一定精度的数字电压表。
在实现基础功能的情况下,另外还可以扩展串行口通信,时钟,等其他一系列功能,使系统达到了良好的设计效果和要求。
本课题主要解决A/D转换,数据处理及显示控制等三个模块。
关键词:STC89C52;数字电压表;模数转换;数字信号Abstract:This paper introduces STC89C52 SCM as the core based on AD0809 analog-to-digital conversion chip, as sampled to four seven segment digital tube as display with certain with measuring function of digital voltmeter accuracy. The basic function in realizing circumstance, also can expand serial port communication, clock, and other series of function, make the system to achieve a good design effect and requirements.This subject mainly to solve AD, data processing and display control three modules.Key words: Digital voltmeter; Frequency-field; Digital signal本设计在分析研究和总结了单片机技术的发展历史及趋势的基础上,以使用可靠,经济,精度高等设计原则为目标,设计出基于单片机的数字测量电压表。
基于STC89C51单片机的数字电压表设计数字表的设计和开发已有无数类型和款式,传统的数字电压表有自己的特点,它们适合在现场做手工测量,而要完成远程测量并对测量的数据做进一步处理,运用传统的数字电压表是无法完成的。
为此,本文设计了基于PC通信的数字电压表,该表既可以完成测量数据的传递,又可借助PC举行测量数据的处理。
所以,这种类型的数字电压表无论在功能和实际应用上,都具有传统数字电压表无法比拟的优点,这使得它的开发和应用都具有良好的前景。
2 系统构成本系统主要由硬件和软件两部分构成,硬件主要包括数据采集,最小数据采集系统,单片机与PC机的接口电路等。
软件主要有单片机数据采集程序,单片机与上位机通信程序,以及上位机数据处理程序。
3 数据采集电路原理该新型数字电压表测量的电压类型为直流,测量范围为0~5 V,下位机采纳的单片机为STC89C51,AD转化采纳的是最频繁的0809,可通过RS232串行口与PC机举行通信,以传送所测量的直流电压数据。
图1所示是该数字电压表的数据采集电路。
电路的设计已做到了最小化,即没实用任何附加规律器件做接口电路,便可实现单片机对ADC0809转换芯片的操作。
图1中的ADC0809是8位的模数转化芯片,片内有8路模拟选通开关以及相应的通道锁存译码电路,转化时光大约为100μs左右。
在电路应用中,首先要指定ADC0809的数据通道,当外部电压进入芯片后,STATR信号由高到低,在脉冲的下降沿ADC0809开头转换,同时管脚EOC电平变低,表示转化正在举行,转化完成之后,管脚EOC的电平变高,表示一次转化结束。
4 软件编程本系统的软件程序主要包括下位机数据采集程序、上位机可视化界面程序、单片机与PC机的串口通信等。
单片机可采纳C51编程,上位机操作可采纳VC++6.0举行可视化编程,这样,在串口调试的时候,就第1页共4页。
51单片机的数字电压表设计随着科技的快速发展,单片机在许多领域得到了广泛应用。
51单片机作为一种常见的单片机,具有功能强大、易于编程等优点,因此在数字电压表设计中具有独特优势。
本文将介绍如何利用51单片机设计数字电压表。
数字电压表的电源电路通常采用直流电源,可以通过变压器将交流电转换为直流电,再经过滤波和稳压电路,将电压稳定在单片机所需的电压范围内。
数字电压表的信号采集电路可以采用电阻分压的方式,将待测电压分压后送入单片机进行测量。
为了提高测量精度,可以采用差分放大器对信号进行放大和差分输出。
51单片机内置ADC模块,可以将模拟信号转换为数字信号。
在数字电压表中,可以使用ADC模块对放大后的模拟信号进行转换,得到数字信号后进行处理和显示。
数字电压表的显示电路可以采用液晶显示屏或LED数码管,将测量结果以数字形式显示出来。
液晶显示屏具有显示清晰、亮度高、视角广等优点,但价格较高;LED数码管价格便宜、亮度高、寿命长,但显示内容有限。
数字电压表的主程序主要完成电压的采集、A/D转换和显示等功能。
主程序首先进行系统初始化,包括设置ADC模块参数、初始化显示等;然后不断循环采集电压信号,将采集到的模拟信号转换为数字信号后进行处理和显示。
51单片机的ADC模块可以通过特殊功能寄存器进行配置和控制。
在数字电压表的软件设计中,需要编写ADC模块驱动程序,以控制ADC 模块完成模拟信号到数字信号的转换。
具体实现可以参考51单片机的ADC模块寄存器定义和操作指南。
数字电压表的显示程序需要根据显示硬件选择合适的显示库或驱动程序。
在编写显示程序时,需要将采集到的数字信号转换为合适的数值,并将其显示在显示屏上。
具体实现可以参考所选显示库或驱动程序的文档说明。
精度问题:数字电压表的精度直接影响到测量结果的质量。
为了提高测量精度,可以采用高精度的ADC模块和合适的信号处理技术。
同时,需要注意信号采集电路中电阻的精度和稳定性。
基于STC89C52单片机的简易数字电压表设计【毕业设计】存档编号华北水利水电大学North China University of Water Resources and Electric Power 毕业设计题目基于单片机的数字电压表设计学院信息工程学院专业通信工程姓名学号200912303指导教师完成时间2013年5月20日教务处制目录摘要 (I)Abstract (I)绪论 ...................................................................................................................... I I 一设计背景 .. (III)二设计意义 (IV)第一章数字电压表 (5)1.1 数字电压表的优点 (5)1.2 数字电压表发展趋势 (6)1.3 设计平台 (6)1.3.1 KEIL C51开发平台 (6)1.3.2 Proteus 7 Professional设计软件 (7)第二章总体设计方案 (8)2.1数字电压设计的两种方案 (8)2.1.1 由数字电路及芯片构建 (9)2.1.2 由单片机系统及A/D 转换芯片构建 (9)2.2 设计要求 (9)2.3 技术要求 (10)2.4 设计方案 (10)第三章硬件简介 (11)3.1 本设计单片机的选择 (11)3.1.1常用单片机的特点比较 (11)3.1.2 单片机的选择 (12)3.1.3 STC89C52单片机介绍 (13)3.2 本设计显示器件选择 (18)3.2.1 常用显示器件简介 (18)3.2.2 显示器件的选择 (19)3.2.3 1602字符型LCD简介 (19)3.3A/D芯片 (24)3.3.1常用的A/D芯片 (24)3.3.2 ADC0809芯片 (25)第四章接口电路 (28)4.1 显示电路 (28)4.2 ADC0809与单片机接口电路 (29)第五章硬件电路系统模块设计 (30)5.1 总电路模块 (30)5.2 硬件系统电路简介 (30)第六章系统软件设计 (31)6.1 主程序 (31)6.2 A/D转换子程序 (32)6.3 显示子程序 (32)第七章调试及性能分析 (33)7.1 调试与测试 (33)7.2 性能分析 (34)总结 (35)参考文献 (36)致谢 (38)附录 (39)附录I(外文翻译) (39)外文译文 (49)附录II(任务书) (57)附录III(开题报告) (59)附录IV(图表) (62)I Proteus仿真图 (62)II 硬件总电路图 (63)III 实物图 (64)附录V(程序清单) (66)摘要随着时代的进步,用指针式万用表测量小幅度直流电压已经显得有些不太方便。
51单片机数字电压表设计51单片机数字电压表设计题目要求:1. 设计要求以单片机为核心,设计一个数字电压表。
采用中断方式,对2路0~5V的模拟电压进行循环采集,采集的数据送LED显示,并存入内存。
超过界限时指示灯闪烁。
2. 实验原理本题目本质上是以单片机为控制器,ADC0809为ADC器件的AD 转换电路,设计要求的电压显示,是对ADC采集所得信号的进一步处理。
为得到可读的电压值,需根据ADC的原理,对采集所得的信号进行计算,并显示在LED上。
本项目中ADC0809的参考电压为+5V,根据定义,采集所得的二进制信号addata所指代的电压值为:而若将其显示到小数点后两位,不考虑小数点的存在(将其乘以100),其计算的数值为:。
将小数点显示在第二位数码管上,即为实际的电压。
本示例程序将1.25 V和2.5 V作为两路输入的报警值,反映在二进制数字上,分别为0x40和0x80。
当AD结果超过这一数值时,将会出现二极管闪烁和蜂鸣器发声。
运行截图:程序代码:#include#include //定义绝对地址访问#include#define uchar unsigned char#define uint unsigned intsbit RS=P1^7; //定义LCD1602端口线sbit RW=P1^6;sbit EN=P1^5;sbit ST=P3^7; //定义0808控制线sbit OE=P3^6;sbit EOC=P1^3;sbit CLK=P1^4;sbit buzzer = P1^1; //喇叭sbit alarm = P1^2; //leduchar data chnumber; //存放当前通道号uchar disbuffer[4]={0,'.',0,0}; //定义显示缓冲区uchar data ad_data[8]={0,0,0,0,0,0,0,0}; //0808的8个通道转换数据缓冲区uint temp;//检查忙函数void fbusy(){P0 = 0xff;RS = 0;RW = 1;EN = 1;EN = 0;while((P0 & 0x80)){EN = 0;EN = 1;}}//写命令函数void wc51r(uchar j){fbusy();EN = 0;RS = 0;RW = 0;EN = 1;P0 = j;EN = 0;}//写数据函数void wc51ddr(uchar j){fbusy(); //读状态;EN = 0;RS = 1;RW = 0;EN = 1;P0 = j;EN = 0;}void init(){wc51r(0x01); //清屏wc51r(0x38); //使用8位数据,显示两行,使用5*7的字型wc51r(0x0c); //显示器开,光标开,字符不闪烁wc51r(0x06); //字符不动,光标自动右移一格}/********0808转换子函数********/void test(){uchar m;for (m=0;m<8;m++){P3=m; //送通道地址ST=0;_nop_();_nop_();ST=1;_nop_();_nop_();ST=0;//锁存通道地址启动转换_nop_();_nop_();_nop_();_nop_();while (EOC==0); //等待转换结束OE=1;ad_data[m]=P2;OE=0; //读取当前通道转换数据}}//************延时函数************void delay(uint i) //延时函数{uint y,j;for (j=0;j<i;j++){< p="">for (y=0;y<0xff;y++){;}}}//定时器/计数器T0产生0808的时钟void T0X(void)interrupt 1 using 0{CLK=~CLK;}void main(void){uchar i;uint temp1;SP=0X50;TMOD=0x02;TH0=246;TL0=246;ET0=1;EA=1;TR0=1;delay(10);init(); //lcd显示器初始化wc51r(0x80); //写入显示缓冲区起始地址为第1行第1列wc51ddr('V'); //第1行第1Vwc51ddr('A'); //第1行第2 Awc51ddr('L'); //第1行第3列显示字母Lwc51ddr('U'); //第1行第4列显示字母Uwc51ddr('E'); //第1行第5列显示字母 Ewc51ddr('0'); //第1行第6列显示数字0wc51ddr(':'); //第1行第7列显示字母:wc51r(0xC0); //写入显示缓冲区起始地址为第2行第1列wc51ddr('V'); //第2行第1Vwc51ddr('A'); //第2行第2 Awc51ddr('L'); //第2行第3列显示字母Lwc51ddr('U'); //第2行第4列显示字母Uwc51ddr('E'); //第2行第5列显示字母 Ewc51ddr('1'); //第2行第6列显示数字 1wc51ddr(':'); //第2行第7列显示字母:alarm = 0; //关闭led和报警buzzer = 0;while(1)</i;j++){<>。
基于AT89C51单片机的数字电压表的设计摘要:本文中数字电压表的控制系统采用AT89C51单片机,A/D转换器采用ADC0808为主要硬件,LED动态显示模块、电源模块,实现数字电压表的硬件电路与软件设计。
该系统能完成电压量的采集、A/D转换、手动量程切换、实时显示采集到电压量。
关键字:单片机;数字电压表;AT89C51;ADC08081引言数字电压表(Digital V oltmeter)简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,采用单片机的数字电压表,由精度高、抗干扰能力强,可扩展性强、集成方便,还可与PC进行实时通信。
目前,由各种单片A/D 转换器构成的数字电压表,已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
与此同时,由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
本章重点介绍单片A/D 转换器以及由它们构成的基于单片机的数字电压表的工作原理。
本报告介绍了基于AT89C51单片机为核心的、以ADC0808数模转换芯片采样、以液晶屏显示的具有电压测量功能的具有一定精度的数字电压表。
1 数字电压表1.1 电压表的发展概况电压测量是电子测量的一个重要内容。
随着电子技术的发展,对电压测量提出了一系列的要求,主要可概括为:第一应有足够宽的电压测量范围;第二应有足够高的测量准确度;第三应有足够高的输入阻抗;第四应具有高的抗干扰能力。
电压测量仪器总的可分为两大类:即模拟式和数字式的。
模拟式电压表是指针式的。
用磁电式电流表作为指示器,并在电流表表盘上以电压(或db)刻度。
数字式电压表首先将模拟量通过模/数(A/D)变换器变成数字量,然后用电子计数器计数,并以十进制数字显示被测电压值。
模拟式电压表由于电路简单、价廉,特别是在测量高频电压时,其测量准确度不亚于数字电压表,因此,在电压测量中仍将占有重要地位。
积分式直流数字电压表摘要本双积分电压表系统以89C51单片机为核心、以分立元件制作的双积分型A/D转换器为主要部件的4位半积分式数字直流电压表,并对所设计的电压表进行了测试,结果测量误差≤±0.03%,精度达到4位半。
实现了自动量程转换功能,自动调零功能,有很好的实际应用价值。
关键词:单片机,双积分A/D转换器,自动调零,自动转换量程目录1 方案论证与比较 (1)1.1信号调理 (1)1.2处理器的选择与比较 (1)1.3积分器的选择与比较 (1)2 系统设计 (2)2.1总体设计 (2)2.2单元电路设计 (3)2.2.1 信号调理调理电路 (3)2.2.2 双积分电路设计 (4)2.2.3 基准源电路设计 (4)3 软件设计 (5)4系统测试 (5)5 结论 (6)参考文献: (6)附录: (7)附1:元器件明细表: (8)附2:仪器设备清单 (8)附3:电路图图纸 (9)附4:程序清单方案论证与比较1.1.1信号调理比较与选择方案一、信号经过缓冲器提高输入阻抗后经过低通滤波器后,然后由模拟开关选择信号放大与不放大,当信号大于200mv时不放大,小于200mv时经过仪表放大器进行放大。
方案二、信号经过电压分阻条统一衰减后经过缓冲器提高其负载能力,信号进行低通滤波器其截止频率在10HZ左后滤除高频噪声及干扰,然后经过低噪声,高精度运放放大。
方案论证:方案一对不同信号进行放大其电路复杂,当测量多个量程时放大电路的增益不一样,需多个放大电路成本很高,且用仪表放大器价格过于昂贵。
方案二通过统一衰减后在进行放大其电路简单调试方便。
所以采用方案二。
1.2 处理器的比较与选择STC单片机所特有的在线下载功能和其他公司的单片机不同,不是利用SPI进行在线编程,而是利用IAP功能,在系统运行时编程,因此,可以通过串口来对单片机进行编程。
其电路极为简单,只要所使用的单片机系统具有232串口通信功能即可。
基于89c51单片机的数字电压表设计0 引言数字电压表是诸多数字化仪表的核心与基础,电压表的数字化是将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,这有别于传统的以指针加刻度盘进行读数的方法,避免了读数的视差和视觉疲劳。
目前数字万用表的内部核心部件是A/D 转换器,转换器的精度很大程度上影响着数字万用表的准确度,本文AID 转换器采用ADC0809 对输入模拟信号进行转换,控制核心AT89c51N 对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号。
1 数字电压表硬件电路设计硬件电路设计主要包括:89C51 单片机系统,~D 转换电路,显示电路。
测量最大电压为5V,显示最大值为5.00V.图l 是数字电压表硬件电路原理图。
1.1 89C51 单片机系统和显示电路由于单片机体积小、重量轻、价格便宜,所以本系统采用89C51 单片机,其原理图如图1 所示。
89C51 内部有4KB 的EEPROM,128 字节的RAM,所以一般都要根据系统所需存储容量的大小来扩展,ROM 和RAM.本电路/EA 接高电平,没有扩展片外ROM 和RAM.89C51 的P1、P3.0~P3.3 端口作为四位LED 数码管显示控制。
P3.5 端口用作单路显示/循环显示转换按钮,P3.6 端口用作单路显示时选择通道。
P0 端口作0809 的A/D 转换数据读入用,P2 端口用作0809 的A/D 转换控制。
1.2 A/D 转换电路图1数字电压表电路原理图A/D转换由集成电路0809完成。
0809具有8路模拟信号输入端口,地址线(23~25脚)可决定对哪一路模拟信号进行A/D转换。
22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。
6脚为测试控制,当输入一个21xs宽高电平脉冲时,就开始A/D转换。
7脚为A/D转换结束标志,当A/D 转换结束时,7脚输出高电平。
9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从该端口输出。
基于STC89C51单片机的数字电压表设计
0 引言
数字电压表的设计和开发已有很多类型和款式,传统的数字电压表有自己的特点,它们适合在现场做手工测量,而要完成远程测量并对测量的数据做进一步处理,运用传统的数字电压表是无法完成的。
为此,本文设计了基于PC通信的数字电压表,该表既可以完成测量数据的传递,又可借助PC进行测量数据的处理。
所以,这种类型的数字电压表无论在功能和实际应用上,都具有传统数字电压表无法比拟的优点,这使得它的开发和应用都具有良好的前景。
1 系统构成
本系统主要由硬件和软件两部分构成,硬件主要包括数据采集电路,单片机最小数据采集系统,单片机与PC机的接口电路等。
软件主要有单片机数据采集程序,单片机与上位机通信程序,以及上位机数据处理程序。
2 数据采集电路原理
该新型数字电压表测量的电压类型为直流,测量范围为0~5 V,下位机采用的单片机为STC89C51,AD转化采用的是最常见的ADC0809,可通过RS232串行口与PC机进行通信,以传送所测量的直流电压数据。
图1所示是该数字电压表的数据采集电路。
电路的设计已做到了最小化,即没有用任何附加逻辑器件做接口电路,便可实现单片机对ADC0809转换芯片的操作。
图1中的ADC0809是8位的模数转化芯片,片内有8路模拟选通开关以及相应的通道锁存译码电路,转化时间大约为100μs左右。
在电路应用中,首先要指定ADC0809的数据通道,当外部电压进入芯片后,STATR信号由高到低,在脉冲的下降沿ADC0809开始转换,同时管脚EOC电平变低,表示转化正在进行,转化完成之后,管脚EOC的电平变高,表示一次转化结束。
3 软件编程
本系统的软件程序主要包括下位机数据采集程序、上位机可视化界面程序、单片机与PC 机的串口通信等。
单片机可采用C51编程,上位机操作可采用VC++6.0进行可视化编程,这样,在串口调试的时候,就可以借助“串口调试助手”工具,并有效利用这个工具提高,整个系统效率
3.1 单片机编程
单片机在这个系统中所起的作用是控制ADC0809进行数据转化,并将转化的数据通过串口发送到上位机上。
因为单片机做数据处理的能力不是很强,所以,将所采集的数据转化量送到PC机上,再利用PC机强大的数据处理能力来进行处理,最后得出想要的结果。
因为ADC0809的CLOCK需要外接时钟信号(一般接500 kHz),这个时钟信号频率可以用标准的振荡电路产生,也可以用单片机自带的TO或T1口产生。
为了设计的最小化,本设计采用的是自带的TO口来提供时钟信号。
其程序如下:
3.2 上位机编程
上位机采用VC++6.0实现可视化界面及与下位机的通信功能。
VC++是基于Windows
操作系统的编程语言工具,可采用API函数来直接实现与下位机的通信,但是这种方法要涉及到很多低层设置,所以,本文采用的是Microsoft推出的ActiveX技术来实现串口通信,即应用程序直接使用ActiveX控件提供的接口来访问ActiveX控件。
Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的可在简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。
具体来说,它提供了两种处理通信问题的方法:一是事件驱动(Event2driven)方法,二是查询方法。
本设计采用的是查询方法,这种方法适合于较小的应用程序。
在这种情况下,每当应用程序执行完某一串行口操作后,将不断检查MSComm控件的CommEvent属性,以便检查执行结果或者检查某一事件是否发生。
如果应用程序较小而且是自成一体,这种方法可能更可取。
故对本设计更为可取。
MSComm控件有许多重要的属性,其中首要的几个如表1所列。
在对上位机编程时,应首先创建一个基于对话框的应用程序,然后插入MSComm 控件,可在对话框资源上放一个编辑框(IDC_EDIT_RECEIVE)显示电压值,再放两个按钮控件[开始测量IDC_TEST)和停止测量(ID_STOP)。
然后再做对话框模板,鼠标点击右键,选择Classwizard,增加成员变量,将IDC_MSCOMMl关联成员变量m_mscomm设定为CMSComm控件类型,但IDC_EDIT_RECEIVE关联成员变量m_receive不是控件类型,是数值类型(float)。
之后分别对两个按钮和MSComm控件添加消息响应函数,这可在Classwizard下自动添加。
添加代码时,要首先设置MSComm控件的属性,这可以在OnInitDialog函数中添加。
本文采用的是COMl口,波特率为9600,无奇偶校验位,8位数据位,l位停止位,用二进制方式收发数据。
在开始测量按钮的OnTest()函数下添加SetTimer(1,500,NULL);开启定时器每500 ms触发一次定时器事件,并在停止测量按钮OnStop ()函数下添加KillTimer(1);按钮的作用是停止定时器事件。
接着是添加WM_TIMER消息。
可在OnTimer(UINT nIDEvent)上添加CByteArray bytoutArr;bytoutArr.Add(0xfd);m_mscomm.SetOutput(COleVariant(bytoutArr));(采用二进制方式发送数据0xfd,500ms发送一次,下位机只有在接收到0xfd后才会将转化的数据传回来,这也相当于一个简单的通信协议。
数据的接收处理(也是本文的重点)可通过在MSComm控件的消息响应函数中采用查询方式检查接收事件是否发生来完成。
具体代码如下:
void CCTestVotDlg::OnOnCommMscomml ()
{VARIANT variant_inp;
COleSafeArray safearray_inp;
LONGlen,k;
BYTE rxdata[1024];//设置字节数组
CString strtemp;
if(m_mscomm.GetCommEvent 0==2)//事件值为2 表示接收到数据
{variant_inp=m_mscomm.GetInput 0;//读缓冲区
safearray_inp=variant_inp;
len=safearray_inp.GetOneDimSize ();//得到有效的数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转化成BYTE型数组
m_receive=rxdata[0];//将接收到的值赋予
float变量m_receive=m_receive/255;//接收到的数据为(0,255)之间的整数值
m_receive=m_receive*5;//这三步就得到0到5V的电压值
m_receive=setprecision(m_receive,3)//这个函数的作用是保留小数点后三位
}
UpdateData(FALSE);//更新编辑框,将数值显示在编辑框中
}
4 结束语
上述实施方案可在实践中很好地实现整个样机的功能,实际使用证明,该仪器的各项指标都能达到预期效果。
本文对使用MSComm串行通信的方法做了着重的分析,同时分析了ActiveX技术的强大功能、充分的灵活性和易用性,具有一定的实践意义。