基于51单片机的数字电压表设计说明
基于51单片机的直流数字电压表设计
基于51单片机的直流数字电压表设计概述:直流数字电压表是一种用于测量直流电压的仪器,它通过将电压信号转换为数字形式,并显示在数码管上,实现对电压的准确测量。
本文将介绍基于51单片机的直流数字电压表的设计原理和实现方法。
一、设计原理:1.1 电压信号采集:直流数字电压表的第一步是采集待测电压信号。
常用的采集方法是使用一个分压电路将待测电压降低到合适的范围,再通过运算放大器将其放大到合适的电平。
51单片机的模拟输入引脚可以接受0-5V的模拟电压信号,因此可以直接将放大后的信号接入单片机进行采集。
1.2 模数转换:采集到的模拟电压信号需要经过模数转换(A/D转换)才能被单片机读取和处理。
51单片机内部集成了一个10位的A/D转换器,可以将输入的模拟电压转换为相应的数字量。
通过设置不同的参考电压和采样精度,可以实现对不同电压范围的准确测量。
1.3 数码管显示:经过模数转换后,得到的数字量需要通过数码管进行显示。
51单片机的IO口可以通过控制段选和位选的方式,将数字量转换为相应的数码管显示。
可以根据需要选择常用的七段数码管或者液晶显示屏进行显示。
二、设计实现:2.1 硬件设计:硬件设计包括电路原理图设计和PCB布局设计两个部分。
电路原理图设计主要包括电压采集电路、运算放大器、A/D转换器和数码管驱动电路等部分。
PCB布局设计需要考虑信号的走线和电源的分布,以保证电压信号的准确采集和显示。
在设计过程中,需要注意地线和信号线的分离,以减少干扰。
2.2 软件设计:软件设计主要包括单片机的程序编写和调试。
首先需要编写采集模拟电压信号和进行A/D转换的程序,将转换后的数字量存储在单片机的内部存储器中。
然后编写数码管驱动程序,将存储的数字量转换为相应的数码管显示。
最后,通过按键或者旋转编码器等方式,可以实现对量程和精度的选择。
三、设计优化:3.1 精度优化:为了提高直流数字电压表的测量精度,可以采用更高精度的A/D转换器,增加参考电压的精度,或者通过校准电路对测量误差进行校正。
基于51单片机的数字电压表设计
目录摘要 (I)1 绪论 (1)1.1数字电压表介绍 (1)1.2仿真软件介绍 (1)1.3 本次设计要求 (2)2 单片机和AD相关知识 (3)2.1 51单片机相关知识 (3)2.2 AD转换器相关知识 (4)3 数字电压表系统设计 (5)3.1系统设计框图 (5)3.2 单片机电路 (5)3.3 ADC采样电路 (6)3.4显示电路 (6)3.5供电电路和参考电压 (7)3.6 数字电压表系统电路原理图 (7)4 软件设计 (8)4.1 系统总流程图 (8)4.2 程序代码 (8)5 数字电压表电路仿真 (15)5.1 仿真总图 (15)5.2 仿真结果显示 (15)6 系统优缺点分析 (16)7 心得体会 (17)参考文献 (18)1 绪论1.1数字电压表介绍数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。
而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。
因此AD转换是此次设计的核心元件。
输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。
本次自己的设计作品从各个角度分析了AD转换器组成的数字电压表的设计过程及各部分电路的组成及原理,并且分析了数模转换进而使系统运行起来的原理及方法。
通过自己的实践提高了动手能力,也只有亲历亲为才能收获掌握到液晶学过的知识。
其实也为建立节约成本的意识有些帮助。
本次设计同时也牵涉到了几个问题:精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。
1.2仿真软件介绍Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。
它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件的特点是:(1)现了单片机仿真和SPICE电路仿真相结合。
基于51单片机的数字电压表仿真设计(有参考文献)
基于51单片机的数字电压表仿真设计一、引言随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,因为电压的测量最为普遍。
数字电压表是采用数字化测量技术设计的电压表。
数字电压表与模拟电压表相比,具有读数直观、准确、显示范围宽、分辨力高、输入阻抗大、集成度高、功耗小、抗干扰能力强,可扩展能力强等特点,因此在电压测量、电压校准中有着广泛的应用。
而单片机也越来越广泛的应用与家用电器领域、办公自动化领域、商业营销领域、工业自动化领域、智能仪表与集成智能传感器传统的控制电路、汽车电子与航空航天电子系统。
单片机是现代计算机技术、电子技术的新兴领域。
本文采用ADC0808对输入模拟信号进行转换,控制核心C51单片机对转换的结果进行运算和处理,最后驱动输出装置显示数字电压信号,通过Proteus仿真软件实现接口电路设计,并进行实时仿真。
Proteus软件是一种电路分析和实物模拟仿真软件。
它运行于Windows 操作系统上,可以进行仿真、分析(SPICE)各种模拟器件和集成电路,是集单片机和SPICE分析于一身的仿真软件,功能强大,具有系统资源丰富、硬件投入少、形象直观等优点,近年来受到广大用户的青睐。
二、数字电压表概述1、数字电压表的发展与应用电压表指固定安装在电力、电信、电子设备面板上使用的仪表,用来测量交、直流电路中的电压。
传统的指针式电压表功能单一、精度低,不能满足数字化时代的需求,并且传统的电压表在测量电压时需要手动切换量程,不仅不方便,而且要求不能超过该量程。
目前,由各种单片A/D转换器构成的数字电压表,已被广泛用于电子及电工测量领域,并且由DVM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
2、本次设计数字电压表的组成部分本设计是由单片机AT89C51作为整个系统控制的核心,整个系统由衰减输入电路、量程自动转换电路、交直流转换电路、模数转换及控制电路以及接口电路五大部分构成。
基于51单片机的数字电压表课程设计.
信息与电气工程学院电子应用系统CDIO一级项目设计说明书(2011/2012学年第二学期)题目:___ _数字电压表__________专业班级:电子信息0902班学生姓名:张文盛学号:090070213指导教师:贾少锐、李晓东、马永强李丽宏、贾东立、刘会军设计周数:设计成绩:2012年6月28日1、CDIO设计目的本次CDIO设计题目是:利用所学的51单片机,C语言,数字电路等知识,设计一个符合要求的数字电压表。
主控芯片可以是AT89C51,而采集电压的模拟量转换成数字量的芯片可以是ADC0804,也可以是PCF8591。
而显示模块可以是数码管,也可以是液晶LCD1602,从而展示给我们所得的电压值。
2、CDIO设计正文2.1 数字电压表系统设计框图本次数字电压表系统设计框图如图1所示:图1 数字电压表设计框图数字电压表主要由模/数转换电路、单片机控制电路、显示电路等三部分组成。
其中PCF8591等器件组成的转换电路,将输入的模拟量信号进行取样、转换、然后将转换的数字信号送进单片机。
单片机控制电路主要实现对数据进行程序处理;显示电路主要用于将单片机的信号数据转换后显示测量结果。
模拟信号产生模块:输入电源电路(变压器、整流电路、滤波电路、稳压电路组成)和分压电路(9万欧姆和1万欧姆的电阻分压)。
模数转换模块组成部分:PCF8591芯片程序处理的单片机控制模块:AT89C51芯片电压结果显示部分:LCD1602液晶2.2 各模块介绍2.2.1 AT89C51芯片介绍AT89S52 具有以下标准功能:8k 字节Flash,256 字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个 6 向量 2 级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52 可降至0Hz 静态逻辑操作,支持2 种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
基于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口控制七段管的点亮。
基于51单片机的数字电压表的设计
摘要随着电子技术的发展,电子测量技术对测量的精度和功能的要求也越来越高,而数字电压表作为实验室的基本测量设备,它可以很好的满足测量精度和功能的要求。
本设计利用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单片机-PCF8591数字电压表课程设计
课程名称:微机原理课程设计题目:数字电压表ﻬ摘要单片微型计算机简称单片机,是典型的嵌入式微控制器,常用英文字母的缩写MCU表示单片机,单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。
单片机由运算器,控制器,存储器,输入输出设备构成,相当于一个微型的计算机(最小系统),和计算机相比,单片机缺少了外围设备等。
概括的讲:一块芯片就成了一台计算机。
它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
同时,学习使用单片机是了解计算机原理与结构的最佳选择。
它最早是被用在工业控制领域。
其中我们用于学习用的最多的是STC89C52单片机,STC89C52是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
STC89C52使用经典的MCS-51内核,但也做了很多改进使得芯片具有传统51单片机不具备的功能。
STC89C52具有8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB EE PROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构,全双工串行口。
本设计就是以单片机STC89C52为核心,附以外围电路,实现数字电压表的功能,并运用软件Proteus进行仿真来得到实验结果。
关键词:STC89C52单片机、仿真、中断、数字电压表、数码管显示ﻬ目录一、任务要求ﻩ错误!未定义书签。
1.1 设计任务ﻩ错误!未定义书签。
1.2设计要求ﻩ错误!未定义书签。
1.3发挥部分 ...................................................................................... 错误!未定义书签。
1.4 创新部分 ........................................................................................... 错误!未定义书签。
基于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本设计在分析研究和总结了单片机技术的发展历史及趋势的基础上,以使用可靠,经济,精度高等设计原则为目标,设计出基于单片机的数字测量电压表。
基于51单片机的数字电压表设计
内容摘要:进入二十一世纪以来,在现代化检测技术运用过程中,往往需要通过具有高精细度以及科学化的数字电压表完成相应的现场检测工作。
通过将世纪检测得到的数据通过传输功能送入计算机计算中心,从而完成相应的存储、计算以及控制、实时显示等各项功能。
而在本文中,笔者所的数值电压表为51式单片机(AT89c51),而A/D转换装置采用的是TLC2543型号硬件,从而实现整个数值电压表软件以及硬件电路的设计。
在本系统中,具有电路简单,元件使用数量少、设计成本低等优点,并且整个调节过程完全自动化。
除此以外,本数字电压表可以进行八路的转化量(A/D)测量以及测量结果远程传送等多项功能。
本设计数值电压表能够对0V~5V电压的8路电压值进行准确的测量,同时在外部数码管上进行单路或者轮流模式的显示。
关键词:模拟信号数字电压表单片机 A/D转换The design of digital voltage meter based on 51 single chipmicrocomputerAbstract:the twenty-first century, in the process of applying modern detection techniques , often need to complete the appropriate field testing work by having a high finesse and scientific digital voltmeter . Century detected by the data transfer function obtained by computing center into the computer , thus completing the appropriate storage , computing and control , real-time display and other functions . In this article, the author numerical voltmeter 51 type microcontroller (AT89c51), while the A / D converter TLC2543 model is used in hardware , enabling the entire value voltmeter software and hardware design . In this system , with a simple circuit using a small number of components , design and low cost , and the whole adjustment process is fully automated. In addition, the eight digital voltmeter can be converted amount (A / D) measurement and remote transmission of measurement results and many other features . The design values voltmeter capable of 0V ~ 5V voltage 8 accurately measure voltage , single or simultaneous display mode turns on an external digital control .Keywords: Analog signal Digital voltmeter SCM A/D converter;目录前言 (1)1 概述 (1)1.1 选题背景 (1)1.2 研究意义 (1)2 设计方案分析 (2)2.1 A/D转化装置 (2)2.2 电源 (2)3 硬件部分设计分析 (3)3.1 单片机 (3)3.1.1 对单片机芯片进行选择 (3)3.2 外围电路与AT89C51接口设计分析 (6)3.2.1 TLC2543 (7)3.2.2 TLC2543的特点 (7)3.2.3 TLC2453接口时序 (7)3.2.4 TLC2543 A/D芯片与89C51单片机的接口 (7)4 软件部分设计分析 (10)4.1 程序初始化 (11)4.2 A/D转换装置子程序 (12)4.3 显示子程序 (12)5 结论 (13)参考文献: (14)附录: (15)基于51单片机的数字电压表设计前言随着时代的进步,科技不断发展,电压表也在更新换代,由以前的表面指针电压表更替为以数码管或者液晶显示面板显示的电压表。
基于51单片机的数字电压表设计
Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。 它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件 和集成电路,该软件的特点是:
(1)实现了单片机仿真和SPICE电路仿真相结合。具有模拟电路仿 真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动 态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种 虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
武汉理工大学单片机原理与应用课程设计说明书pagepage18目录摘要itoco12hzu1绪论111数字电压表介绍112仿真软件介绍113本次设计要求22单片机和ad相关知识32151单片机相关知识322ad转换器相关知识43数字电压表系统设计531系统设计框图532单片机电路533adc采样电路634显示电路635供电电路和参考电压736数字电压表系统电路原理图74软件设计841系统总流程图842程序代码85数字电压表电路仿真1551仿真总图1552仿真结果显示156系统优缺点分析167心得体会17参考文献181绪论11数字电压表介绍数字电压表简称dvm数字电压表基本原理是将输入的模拟电压信号转化为数字信号再进行输出显示
开始 结束 初始化 AD采样量化 液晶显示
图9 系统流程图
4.2 程序代码
/********电压表********/ #include<reg52.h> #include<intrins.h>//库函数头文件,代码中引用了_nop_()函数 /*ADC初始定义*/ sbit start=P3^0; //转换开始控制 sbit oe=P3^2; //输出允许控制 sbit eoc=P3^1; //转换结束信号
基于.51单片机的数字电压表设计说明书
扬州市职业大学毕业设计(论文)设计(论文)题目:基于51单片机的数字电压表设计系别:电子系1专业:通信技术1班级:07通信3班1姓名:1学号:0706020305 1指导教师:李金奎完成时间:10年5月基于51单片机的数字电压表设计摘要:数字电压表简称DVM,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。
数字电压表自从一九五二年问世以来,随着电子技术的飞跃发展,特别是目前,作为测量仪表、模拟指示仪表的数字化以及自动测量的系统,而得到了很大的发展。
数字电压表是从电位差计的自动化这种想法研制出来的,因此即便是最初的数字电压表,其精度也要比模拟式仪表高,而其成本比电位差计也高。
以后,DVM的发展就着眼在高精度和低成本两个方面。
单片机可单独地完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。
本电路主要采用AT89S51芯片和ADC0809芯片来完成一个简易的数字电压表,能够对输入的0~5 V的模拟直流电压进行测量,并通过一个4位一体的7段LED数码管进行显示。
该电压表的测量电路主要由三个模块组成:A/D转换模块、数据处理模块及显示控制模块。
A/D转换主要由芯片ADC0809来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。
数据处理则由芯片AT89S51来完成,其负责把ADC0809传送来的数字量经一定的数据处理,产生相应的显示码送到显示模块进行显示;另外它还控制着ADC0809芯片的工作。
关键词:单片机数字电压表AT89S51 A/D转换ADC0809目录第1章产品要求及方案选择 (4)1.1设计的目的 (4)1.2产品的要求 (4)1.3各模块方案选择及论证 (4)第2章主要原件介绍 (6)2.1模数转换芯片ADC0809 (6)2.2控制芯片AT89S51 (7)2.3锁存芯片SN74LS373 (9)2.4 SEG-MPXE数码管 (10)第3章电压表原理系统硬件电路设计与实现 (11)3.1电压表的原理 (11)3.2 电源部分 (11)3.3 A/D转换电路 (11)3.4 单片机最小系统电路部分 (13)3.4.1时钟电路部分 (13)3.4.2复位电路部分 (14)3.5 显示电路部分 (14)3.7量程标定电路 (15)第4章系统软件设计 (17)4.1 主程序设计 (17)4.2 各子程序设计 (17)4.3源程序代码 (20)第5章调试 (24)参考文献 (24)附录 (25)附录A 原理图 (25)附录B 总结与感谢 (27)附录C 元件清单 (29)第1章产品要求及方案选择1.1 设计的目的通过制作简易数字电压表,加深对所学专业知识的认识,提高分析、解决工程实际问题的能力,提高对单片机的应用能力,提高收集文献、资料的能力,从而达到综合运用所学的专业知识进行电子产品设计、制作与调试的能力。
基于51单片机的简易数字电压表的方案设计书
班级:智能电网111学生:喻卫湖南铁道职业技术学院电气工程系目录1控制要求2设计目的意义3 系统原理框图4 89C52单片机5 ADC0809 的工作原理6 系统原理图和PCB图7程序流程图8 C语言程序9数字电压表工作原理10设计体会1控制要求利用STC89C52单片机和ADC0809设计一个数字电压表,能够测量0-5V之间的直流电压值,四位数码管显示,使用的元器件数目较少。
外界电压模拟量输入到A/D转换部分的输入端,通过ADC0809转换变为数字信号,输送给单片机。
然后由单片机给数码管数字信号,控制其发光,从而显示数字。
2设计目的意义1.通过亲身的设计应用电路,将所用的理论知识应用到实践中,增强实践动手能力,进而促进理论知识的强化。
2.通过数字电压表的设计系统掌握51单片机的应用。
掌握A/D转换的原理及软件编程及硬件设计的方法,掌握根据课题的要求,提出选择设计方案,查找所需元器,设计并搭建硬件电路,编程写入STC89C52单片机并进行调试等。
3 系统原理框图4 89C52引脚资料STC89C52P1 P0P3 P2AD0809D0~D7IN0~IN7VREF+VREF-CLKOEST、ALE四位数码管位选段选控制线数据待测电压系统原理框图89C51引脚图总线型DIP40引脚封装电源引脚(2个)VCC:接+5V电源。
GND:接地端。
外接晶体引脚(2个)XTAL1:外接晶振输入端(采用外部振荡器时,此引脚接地)。
XTAL2:外接晶振输入端(采用外部振荡器时,此引脚作为外部振荡信号输入端)。
并行输入/输出引脚(32个)P0.0~P0.7:通用I/O引脚。
P1.0~P1.7:通用I/O引脚。
P2.0~P2.7:通用I/O引脚或数据低8位地址总线复用引脚。
P3.0~P3.7:通用I/O引脚或第二功能引脚(RXD、TXD、INT0、INT1、T0、T1、WR 、RD)。
控制引脚(4个)RST/VPD:复位信号输入引脚/备用电源输入引脚。
基于AT89C51单片机的数字电压表设计说明
(1)根据设计题目,选择AT89C51单片机为核心控制器件。
(2)A/D转换采用ADC0808实现,连接单片机的P1口和P3口的四位引脚。
(3)电压显示采用4位一体的LED数码管。
(4)LED数码管的段码输入由端口P0产生;位码输入用端口P2产生。
2.3 设计方案
本设计选择AT89C51单片机作为核心控制器件。A/D转换采用ADC0808来实现。输入采用0~5V的直流电压源,电压显示采用4位一体的LED数码管,LED数码管的段码输人由端口P0输出,位码输人由端口 P2输出。
3.1.3 AT89C51的复位电路和时钟电路5
3.2 A/D转换电路பைடு நூலகம்计6
3.2.1 ADC0808的主要特性7
3.2.2 ADC0808各引脚功能7
3.3 显示电路的设计8
3.4 总体电路设计10
第4章 数字电压表的软件设计11
4.1 设计流程图11
4.2 各子程序简介12
第5章 软件调试13
5.1 软件调试13
图3-1 AT89C51引脚图
AT89C51芯片的各引脚功能为:
P0口:这组引脚共有8条,P0.0为最低位。这8个引脚有两种不同的功能,分别适用于不同的情况,第一种情况是89C51不带外存储器,P0口可以为通用I/O口使用,P0.0-P0.7用于传送CPU的输入/输出数据,这时输出数据可以得到锁存,不需要外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的可靠性;第二种情况是89C51带片外存储器,P0.0-P0.7在CPU访问片外存储器时先传送片外存储器的低8位地址,然后传送CPU对片外存储器的读/写数据。P0口为开漏输出,在作为通用I/O使用时,需要在外部用电阻上拉。
基于51单片机的数字电压表
课程设计题目数字电压表学生姓名张玉龙学号20081341056学院信息与控制学院专业测控技术与仪器指导教师葛化敏二O一一年六月三十日基于51单片机的数字电压表一、设计内容:先在proteus 上进行软件仿真设计,在仿真实现的基础上,要求完成部分硬件模块的制作和系统联调,实验内容为设计一个数字电压表,实现从模拟信号输入到数字信号输出的基本功能。
二、设计要求:采用51系列单片机和ADC 设计一个数字电压表电路,通过调节滑动变阻器改变电压,在LCD 液晶屏上显示其相应的电压值,要求电压精确到小数点后第四位,显示格式为,LCD 第一行前一段为“20081341056”(班级同学张玉龙的学号),后一段则为“V :”(电压单位);第二行的前一段为“Class 2”(班级2班),后一段则显示电压值,单位为“V ”。
三、设计原理:通过在Keil 软件对单片机AT89C52进行编程,硬件电路中单片机与ADC0804及LCD 显示屏连接。
P0与ADC0804相连接,P1与LCD 连接。
通过start()子程序启动ADC0804,通过init ()子程序初始化LCD 。
模拟信号通过ADC0804的VIN+引脚输入到ADC0804中转换为数字信号,P0获得此数字量后,经过处理得到每位的数据后,通过P1口写数据到LCD上图为基本的原理图 四、实验电路图及仿真结果:51系列 单片机电压输入五、程序代码:#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit lcdrs=P3^0;sbit lcden=P3^1;sbit wrad=P3^6;sbit rdad=P3^7;uint temp,a1,a2,a3,a4,a5,num;uchar code table[]="0123456789.";//显示数字uchar code table1[]="20081341056 V:"; uchar code table2[]="Class 2";void delay(uint z){uint x,y;for(x=z;x>0;x--)for(y=100;y>0;y--);}void start()//启动AD{wrad=1;wrad=0;wrad=1;}void write_command(uchar com)//写命令{lcdrs=0;P1=com;delay(2);lcden=1;delay(2);lcden=0;}void write_data(uchar date)//写数据{lcdrs=1;P1=date;delay(5);lcden=1;delay(5);lcden=0;}void init()//lcd初始化{lcden=0;write_command(0x38);//设置16x2显示write_command(0x0c);//设置光标write_command(0x06);//写字符指针加1,光标加1write_command(0x01);//清屏}void main(){init();//LCD初始化write_command(0x80);//LCD写地址for(num=0;num<15;num++){write_data(table1[num]);delay(5);}while(1){start();//启动ADdelay(50);rdad=0; //rd低脉冲读数据delay(50);temp=P0;a1=(temp*50000/255)/10000;//区分位数,最高位 255*50000/255/10000=5.0000V a2=(temp*50000/255)%10000/1000;a3=(temp*50000/255)%1000/100;a4=(temp*50000/255)%100/10;a5=(temp*50000/255)%10;write_command(0x80+0x40);for(num=0;num<7;num++){write_data(table2[num]);delay(5);}write_command(0x80+0x49);//LCD写地址write_data(table[a1]);delay(1);write_data(table[10]);delay(1);write_data(table[a2]);delay(1);write_data(table[a3]);delay(1);write_data(table[a4]);delay(1);write_data(table[a5]);delay(1);write_data('V');delay(1);}}六、心得体会:课程设计中不得不遇到一些问题,但只要自己有恒心有毅力,终究会克服一切困难;在设计中我们要学会运用keil软件及protues软件对我们设计的电路不断地进行仿真、调试和修正,遇到程序问题时我们应该学会一段一段地去排查,最终解决所有问题;另外,还应熟练掌握每个芯片及器件如51单片机及ADC0804和LM016L每个引脚的作用和接法及各种状态的判断。
51单片机数字电压表设计
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++){<>。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1数字电压表介绍数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示。
而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编码等几部分组成。
因此AD转换是此次设计的核心元件。
输入的模拟量经过AD转换器转换,再由驱动器驱动显示器输出,便得到测量的数字电压。
本次自己的设计作品从各个角度分析了AD转换器组成的数字电压表的设计过程及各部分电路的组成及原理,并且分析了数模转换进而使系统运行起来的原理及方法。
通过自己的实践提高了动手能力,也只有亲历亲为才能收获掌握到液晶学过的知识。
其实也为建立节约成本的意识有些帮助。
本次设计同时也牵涉到了几个问题:精度、位数、速度、还有功耗等不足之处,这些都是要慎重考虑的,这些也是在本次设计中的收获。
1.3 本次设计要求本次设计的作品要求制作数字电压表的量程为0到10v,由于用到的模数转换芯片是ADC0809,设计系统给的供电电压为+5v,所以能够测量的电压围为-0.25v到5.25v之间,但是一般测量的直流电压围都在这之上,所以采用电阻分压网络,设计的电压测量围是0到25v之间,满足设计要求的最大量程5v的要求。
同时设计的精度为小数点后三位,满足要求的两位小数的精度,在不考虑AD芯片的量化误差的前提下,此次设计的精度能够满足一般测量的要求。
2单片机和AD相关知识2.1 51单片机相关知识51单片机是对目前所有兼容intel 8031指令系统的单片机的统称。
该系列单片机的始祖是intel的8031单片机,后来随着技术的发展,成为目前广泛应用的8为单片机之一。
单片机是在一块芯片集成了CPU、RAM、ROM、定时器/计数器和多功能I/O口等计算机所需要的基本功能部件的大规模集成电路,又称为MCU。
51系列单片机包含以下几个部件:一个8位CPU;一个片振荡器及时钟电路;4KB的ROM程序存储器;一个128B的RAM数据存储器;寻址64KB外部数据存储器和64KB外部程序存储空间的控制电路;32条可编程的I/O口线;两个16位定时/计数器;一个可编程全双工串行口;5个中断源、两个优先级嵌套中断结构。
51系列单片机如下图:图1 51单片机引脚图2.2 AD转换器相关知识ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式AD转换器。
其部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
(1)主要特性:1)8路输入通道,8位A/D转换器,即分辨率为8位。
2)具有转换起停控制端。
3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)4)单个+5V电源供电5)模拟输入电压围0~+5V,不需零点和满刻度校准。
6)工作温度围为-40~+85摄氏度7)低功耗,约15mW。
(2)部结构ADC0809是CMOS单片型逐次逼近式A/D转换器,部结构如图13.22所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。
图2 ADC0909引脚3 数字电压表系统设计3.1系统设计框图此次设计的是数字电压表,要求的电压围是0~5v,而设计扩展的量程为0~25v。
系统设计主要包括四个部分:分别是电源模块、AD模数转换部分、51单片机最小系统部分、1602液晶显示部分。
首先由单片机初始化ADC0809模数转换芯片和1602液晶显示,当外接被测电压后,ADC0809将模拟电压信号转换为数字信号输入到单片机的I/O口,通过单片机处理后将电压的大小显示在1602液晶上面。
如下是本次设计作品的框图:图3 系统框图3.2 单片机电路单片机最小系统如下图所示,各个引脚都已经标出,而且四个I/O口都已经用排阵引出,方便外接I/O扩展用。
图4 单片机最小系统3.3 ADC采样电路由于ADC0809是带地址锁存的模数转换器件,ADDA、ADDB、ADDC为模拟通道选择,编码为000~111分别选中IN0~IN7。
ALE为地址锁存信号,其上升沿锁存ADDA、ADDB、ADDC的信号,译码后控制模拟开关,接通八路模拟输入中相应的一路。
CLK为输入时钟,为AD转换器提供转换的时钟信号,典型工作频率为640KHz。
START为AD转换启动信号,正脉冲启动ADDA~ADDC选中的一路模拟信号开始转换。
OE为输出允许信号,高电平时候打开三态输出缓存器,是转换后的数字量从D0~D7输出。
EOC为转换结束信号,启动转换后EOC变为低电平,转换完成后EOC编程高电平。
图5 ADC模数转换3.4显示电路以下是1602液晶引脚的接线图,中间没有接线的为数据控制端口。
1602字符型通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样:图6 1602引脚图3.5供电电路和参考电压由于此次系统的芯片工作电压为+5v,所以用常用的三端稳压器LM317和LM337构成的电源系统供电,其中ADC0809要提供一个准确的参考电源才能正常的工作,而LM317正好能够达到要求。
图7 系统供电部分3.6 数字电压表系统电路原理图如下是此次数字电压表系统的总原理图,其中的连线用网络标号表示出来,省去了连线的麻烦,而且是总图的可读性增强。
图8 数字电压表总原理图4 软件设计4.1 系统总流程图此次设计的数字电压表系统比较简单,就设置了一个量程为0~25v,所以没有用到按键控制,也没有其他的功能,因此程序比较简单,在输入模拟信号时采用电阻分压,最终的采样输入电压只有实际输入电压的十分之一,所以在编写程序中要编写一段数据调整程序,如下为系统总流程图:图9 系统流程图4.2 程序代码/********电压表********/#include<reg52.h>#include<intrins.h>//库函数头文件,代码中引用了_nop_()函数/*ADC初始定义*/sbit start=P3^0; //转换开始控制sbit oe=P3^2; //输出允许控制sbit eoc=P3^1; //转换结束信号sbit clock=P3^3; //转换时钟sbit P0_2=P0^2; //蜂鸣器sbit P0_5=P0^5;sbit P0_6=P0^6;sbit P0_7=P0^7;/*1602液晶初始定义*/sbit RS=P0^0; //读控制sbit RW=P0^3; //写控制sbit E=P0^1; //使能端unsigned char da0,da1,da2,da3,da4;unsigned int temp;unsigned int d1,d2,d3;unsigned char dat; //数字电压量unsigned char lcdd[]="0123456789";void lcd_w_cmd(unsigned char ); //写命令函数void lcd_w_dat(unsigned char dat); //写数据函数void display(unsigned char dat); //显示函数unsigned char lcd_r_start(); //读状态函数void int1(); //LCD初始化函数void delay(unsigned char t); //可控延时函数void delay1(); //软件实现延时函数,5个机器周期/*显示函数部分*/void display(unsigned char dat){temp=5*dat; //量程扩大五倍da0=temp/51/10; //十位da1=temp/51%10; //个位d1=temp%51;d1=d1*10;da2=d1/51; //十分位d2=d1%51;d2=d2*10;da3=d2/51; //百分位d3=d2%51;d3=d3*10;da4=d3/51; //千分位lcd_w_cmd(0x0c); //设置光标不显示、不闪烁delay(20);lcd_w_cmd(0xc0); //第二行起始显示地址0x80 delay(20);delay(2);lcd_w_dat('V'); //显示字符串‘volatage is’lcd_w_dat('o');lcd_w_dat('l');lcd_w_dat('a');lcd_w_dat('t');lcd_w_dat('a');lcd_w_dat('g');lcd_w_dat('e');lcd_w_dat(' ');//显示电压的大小lcd_w_dat(lcdd[da0]); //十位lcd_w_dat(lcdd[da1]); //个位lcd_w_dat('.'); //小数点lcd_w_dat(lcdd[da2]); //十分位lcd_w_dat(lcdd[da3]); //百分位lcd_w_dat(lcdd[da4]); //千分位lcd_w_dat('V'); //单位}/*主函数*/void main(){P0_2=1; //关蜂鸣器P0_5=P0_6=P0_7=0; //选择000第一通道int1(); //LCD初始化while(1){start=0;start=1; //获得上升沿复位start=0; //获得下降沿启动转换,同时ALE开锁存do{clock=~clock; //时钟信号}while(eoc==0); //等待转换结束,eoc=1结束oe=1; //三态锁存缓冲器打开dat=P1; //数字电压信号输出oe=0; //三态锁存缓冲器关闭display(dat);}}/*延时函数*/void delay(unsigned char t){unsigned char j,i;for(i=0;i<t;i++)for(j=0;j<20;j++);}/*延时函数1*/void delay1(){_nop_();_nop_();_nop_();}/*LCD初始化函数*/void int1(){lcd_w_cmd(0x3c); // 设置工作方式lcd_w_cmd(0x0c); // 设置光标lcd_w_cmd(0x01); // 清屏lcd_w_cmd(0x06); // 设置输入方式lcd_w_cmd(0x80); // 设置初始显示位置}/*LCD读状态函数*///返回值:返回状态字,最高位D7=0,LCD控制器空闲;D7=1,LCD控制器忙unsigned char lcd_r_start(){unsigned char s;RW=1; //RW=1,RS=0,读LCD状态delay1();RS=0;delay1();E=1; //E端时序delay1();s=P2; //从LCD的数据口读状态delay1();E=0;delay1();RW=0;delay1();return(s); //返回读取的LCD状态字}/*LCD写命令函数*/void lcd_w_cmd(unsigned char ){unsigned char i;do{ // 查LCD忙操作i=lcd_r_start(); // 调用读状态字函数i=i&0x80; // 与操作屏蔽掉低7位delay(2);}while(i!=0); // LCD忙,继续查询,否则退出循环RW=0;delay1();RS=0; // RW=0,RS=0,写LCD命令字delay1();E=1; //E端时序delay1();P2=; //将com中的命令字写入LCD数据口delay1();E=0;delay1();RW=1;delay(255);;}/*LCD写数据函数*/void lcd_w_dat(unsigned char dat){unsigned char i;do{ // 查忙操作i=lcd_r_start(); // 调用读状态字函数i=i&0x80; // 与操作屏蔽掉低7位delay(2);}while(i!=0); // LCD忙,继续查询,否则退出循环RW=0;delay1();RS=1; // RW=1,RS=0,写LCD数据delay1();E=1; // E端时序delay1();P2=dat; // 将dat中的显示数据写入LCD数据口delay1();E=0;delay1();RW=1;delay(255);}5 数字电压表电路仿真5.1 仿真总图为了验证此次设计原理图的正确性,在制作实物之前用专业软件做了仿真,在Proteus 软件中设置AT89C51单片机的晶振频率为12 MHz。