STC89C51单片机的数字电压表设计

合集下载

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

基于AT89C51单片机的数字电压表设计.
P1口:这8个引脚和P0口的8个引脚类似,P1.7为最高位,P1.0为最低位,当P1口作为通用I/O口使用时,P1.0-P1.7的功能和P0口的第一功能相同,也用于传送用户的输入和输出数据。
P2口:这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用I/O口使用,它的第一功能和P0口引脚的第二功能相配合,用于输出片外存储器的高8位地址,共同选中片外存储器单元,但不像P0口那样传送存储器的读/写数据。
单片机AT89C51的时钟电路如图3-2所示,主要由电容C1- C3、电阻R1、晶振X1等组成。AT 89C51的18脚(XTAL2)和19脚(XTAL1)接时钟电路,其中19脚是AT89C51内部振荡器倒相放大器的输入端,用于接外部晶振和微调电容的一端;18脚是AT89C51内部振荡器倒相放大器输出端,用于接外部晶振和微调电容的另一端。
EOC: EOC为转换结束输出线,该线上高电平表示A/D转换已结束,数字量已锁入三态输出锁存器。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
REF+、REF-:参考电压输入量,给电阻阶梯网络供给标准电压。
Vcc、GND: Vcc为主电源输入端,GND为接地端,一般REF+与Vcc连接在一起,REF-与GND连接在一起.
AT89C51功能性能:与MCS-51成品指令系统完全兼容;4KB可编程闪速存储器;寿命:1000次写/擦循环;数据保留时间:10年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B内部RAM;32个可编程I/O口线;2个16位定时/计数器;5个中断源;可编程串行UART通道;片内震荡器和掉电模式。
2.2
(1)根据设计题目,选择AT89C51单片机为核心控制器件。

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

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

目录摘要 (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单片机的数字电压表设计

基于89c51单片机的数字电压表设计一、引言现代科技的进步使得电子技术在各个领域都得到广泛应用,其中电压测量作为电子测量技术的基本内容之一,在电力系统、工业自动化、仪表仪器、通信以及家用电器等浩繁领域中发挥着重要的作用。

而数字电压表则是电子测量技术的重要组成部分之一,其具有精度高、使用便利等特点,因而在实际应用中得到广泛的推广和应用。

二、设计原理本次设计的基于89c51单片机的数字电压表主要包含两个部分:模拟电路部分和数字电路部分。

1. 模拟电路部分模拟电路部分主要包括电源部分、电压信号放大部分和滤波部分。

在电源部分,使用线性稳压电源,保证系统的稳定性。

电压信号放大部分主要接受差分放大器放大输入信号,提高系统的灵敏度。

为了滤除输入信号中的高频噪声,滤波部分使用低通滤波器对信号进行滤波。

2. 数字电路部分数字电路部分主要由89c51单片机、ADC(模数转换器)、显示模块和按键模块组成。

89c51单片机作为主控制芯片,具有浩繁强大的功能,如高度集成、易编程、合理的存储空间等。

ADC模块的作用是将模拟电压信号转换为数字信号,以便单片机进行处理。

显示模块用于显示测量到的电压值,可以选择LED数码管、LCD液晶屏等方式进行显示。

按键模块则提供了对测量功能的开启和关闭,参数的调整等功能。

三、设计过程1. 模拟电路的设计模拟电路部分主要包括电源部分、电压信号放大部分和滤波部分。

电源部分接受线性稳压电源,通过变压器、整流电路和稳压电路得到所需的5V直流电源。

电压信号放大部分接受差分放大器,通过调整放大倍数,适应不同电压范围的测量。

滤波器部分接受低通滤波器,去除噪声干扰。

2. 数字电路的设计数字电路部分主要由89c51单片机、ADC、显示模块和按键模块组成。

起首进行单片机的编程,通过编程,设置ADC的工作方式、测量范围和采样频率等参数。

接着毗连ADC和单片机,通过串口通信的方式将转换后的数字信号传输给单片机。

再通过显示模块将测量到的电压值显示出来。

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

基于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本设计在分析研究和总结了单片机技术的发展历史及趋势的基础上,以使用可靠,经济,精度高等设计原则为目标,设计出基于单片机的数字测量电压表。

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

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

基于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单片机的数字电压表的设计

基于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单片机的数字电压表设计

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

基于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口控制七段管的点亮。

89c51单片机数字电压表课程设计

89c51单片机数字电压表课程设计

目录引言 (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。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于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技术的强大功能、充分的灵活性和易用性,具有一定的实践意义。

相关文档
最新文档