毕业设计(论文)-基于单片机的数字电压表设计.doc_第1页
毕业设计(论文)-基于单片机的数字电压表设计.doc_第2页
毕业设计(论文)-基于单片机的数字电压表设计.doc_第3页
毕业设计(论文)-基于单片机的数字电压表设计.doc_第4页
毕业设计(论文)-基于单片机的数字电压表设计.doc_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题 目 基于单片机的数字电压表设计 学生姓名 学号 所在学院 物理与电信工程学院 专业班级 电信1203班 指导教师 _ _完成地点 _ _ 2016年 06 月 13 日陕西理工学院本科毕业设计任务书院(系) 物理与电信工程学院 专业班级 电子信息科学与技术(电信1203) 学生姓名 一、毕业设计题目 基于单片机的数字电压表设计 二、毕业设计工作自 2016 年 12 月 20 日 起至 2016 年 6 月 13 日止三、毕业设计进行地点: 实验楼1006 四、毕业设计应完成内容及相关要求: 直流电压的数字化测量在教学、生产、科学实验和研究中是最为常见的测量,因此数字式电压表也是一种常见的数字化测量仪表,故有必要设计一种输入电阻及测量精度较高、价格便宜的数字式电压表。1)任务设计一数字电压表电路。要求:(1)可以测量-5V+5V范围内的直流电压值,输入电阻大于1M。(2)用LED数码管显示电压值,其中最左侧一位应能显示-号。(3)要求测量的最小分辨率为0.1V。2)设计与测试按任务要求,设计电路,计算参数,选择元器件。根据所设计的电路和所选择的元器件安装电路,设计合理的调试步骤并进行调试,最终达到设计要求。3)成果(1)设计报告一份。要求:内容完整,图表完备,条理清晰,分析有据,排版符合规范。(2)图纸(原理图)布局合理,清晰完整,图形大小合适,图形和符号要规范。(3)所用元器件清单(4)电路实体一套。指导教师签名 专业负责人签名 学院领导签名 批准日期 2016-01-11 陕西理工学院毕业设计基于单片机的数字电压表设计(陕理工物理与电信工程学院电子信息科学与技术专业1203班,陕西 汉中 723003)指导教师:摘要设计了以单片机为中心控制器件的数字电压表,由OP07运放、ADCO832转换器完成测量数据的处理与转换,用LED数码管实现测量数据的显示。由此设计出的数字电压表具有分辨率高、抗干扰能力强的特点,提高了电压表的灵活性、扩展性和可靠性,为电子电工测量带来了极大的便捷。关键词数字电压表;单片机;ADCO832;LED数码管Design of Digital Voltage Meter Based on Single ChipMicrocomputerZhang Jiao(Grade 12, Class 3, Electronic information science and technology,School of physics and Telecommunication Engineering, Shaanxi University of Technology, Hanzhong 723003, Shaanxi)Tutor: Song Wei-XingAbstract: Design the single-chip microcomputer as the center control device of digital voltage meter, by operational amplifier OP07, converter ADCO832 complete measurement data processing and conversion, with LED digital tube display of measured data. Thus designed digital voltage table has the advantages of high resolution, strong anti-interference ability, and improve the flexibility of digital voltage meter, scalability and reliability, for electrical and electronic measuring brought great convenience.Key words: Digital voltmeter;Single chip microcomputer;ADCO832;LED digital tube目 录1引言11.1选题背景与意义11.2现状与发展状况11.3本设计的主要工作22系统总体分析与设计22.1需求分析22.2系统的设计指标32.3系统总体设计32.3.1硬件电路部分概要设计32.3.1软件程序设计概要43系统硬件电路设计53.1 单片机53.1.1 单片机简介53.1.2 单片机选型63.2 A/D转换器73.2.1 A/D转换器工作原理73.2.2 A/D转换器选型73.3 OP07数据采集83.3.1 OP07的功能简介83.3.2 数据采集电路83.4 LED数码管83.4.1 LED数码管简介83.4.2 LED数码管的选型83.5 器件的选择84系统软件程序设计94.1开发环境选择94.2数据处理模块设计104.3数据处理模块实现105系统安装与测试135.1安装135.2测试方法与步骤135.3测试内容145.3.1系统状态145.3.2测量范围测试项145.3.3输入电阻测试项155.3.4测量精度测试项155.3.5数据显示测试项155.4测试结论166 结论与展望16致谢16参考文献18附录A191引言随着科学技术的不断进步,在科学研究以及国防研究等领域对于数据的精度要求越来越高,传统领域内所提供的数据测量方式已经无法满足对于数据高精度的要求。而随着数字化技术的不断发展,给测量数据的精度提高提供了很好的一种方式,就可以使得精度更高的数据产生出来,以供科学研究等领域的使用。1.1 选题背景与意义现阶段,数字化在生活中扮演的角色越来越重要,人们越来越离不开数字化所带来的巨大的便利性。在数字化的显示过程中,数字电压表是诸多数字化仪器的核心组成部分,以数字电压表为基础,可以制作成各种普通版本的数字仪表、专用版本的数字仪表以及各种日常生活中常见的数字化仪器等。比如,可以进行电子显示的温度计,数显定时器,重量计以及湿度计等仪器,在生活的诸多方面都有着极为广泛的应用。在传统的指针式电压表中,测量电压值的方式大多也是通过两个导电笔连接被测对象,最终所显示出来的数据就会呈现在屏幕当中。指针式电压表的屏幕显示多数是以刻度的形式进行显示,在人为读取数据的过程中需要对指针所指的位置进行数据估算,在数据估算的过程当中就会不可避免的产生读数误差。如果应用环境对于数据精度要求较小,那这种误差就不会对实际的生产生活造成很大的影响,但是在国防以及科学研究等领域,对于数据的读取有着相当高的精度要求,在这种情况下指针式电压表所能够读取到的结果就无法满足实际生产生活中的要求,就会在这些方面显示出自身数据测量的局限性。数字电压表之所以能够得到如此广泛的应用,正式因为它有着超越传统指针式电压表的诸多优点。比较明显的优点有:1)测量结果的显示更加直接,方便使用者可以直接读数,规避了在读数阶段所产生的误差,提高了测量结果的准确度;2)拥有更高的分辨率,在设计阶段,可以根据测量需要设计最高精度,提高数据读取时的精度;3)抗干扰能力强。传统的电压表在测量精度、准确度以及制作方式等都与数字电压表有着很大的差距,数字电压表所体现出来的优势会让传统电压表的应用市场急速减少。在数字电压表中应用上单片机可以更好的提高电压表的灵活性、扩展性以及可靠性,基于以上的原因,以基于单片机设计一款数字电压表是十分有意义的,将会为实际的生活带来很大的便利。1.2 现状与发展状况进入21世纪以来,数字仪表的应用也是越来越广泛,从日常生活中最基本的电压表、电流表到万用电表、相位电表等应用更广泛的电表,数字化仪表的发展已经到了一个快速增长的地步。随着计算机技术的发展越来越快,给世界的技术格局带来了很大的变化。跟随着这个大潮,电压表的发展也会向着数据处理以及自动控制等智能化技术转变1。在当前格局形势下,数字化已经与各种微处理器的结合有了令人振奋的进展,在数字化仪器中内置一个微处理器已经成为20世纪70年代以后发展的大的趋势,这种结合所体现出来的优越性对于传统的纯硬件的仪器来说是一个巨大的突破。结合之前的发展成果以及当前的现金理论,数字仪表的发展趋势主要包括:1)结合当前的最新理论,不断的开发并推出新一代产品随着科学技术的不断进步,在数字化领域内的理论也是在不断的更新和进步的,尤为突出的一个方面就是生产过程当中应用到的各种器件都是在不断的更新和发展2。在数字电压表设计方面,A/D转换器是一个关键的部分,近些年来,四斜率A/D转换技术等新的A/D转换技术相继出现,这就给数字仪表的发展带来了新的机遇,可以有效的提高数字仪表测量的精准度以及可靠性,同时也可以让数字仪表向低成本方向有更进一步的发展。2)简化测量操作,提高数字仪表的易用性在实际的生产生活中,较为复杂操作的仪器不仅会使得使用者在使用过程中产生极大的疑惑,同时也给使用者的培训工作带来了极大的不便,消费公司的使用成本在不知不觉的增加了。同时,随着集成电路技术的发展,给设计的高集成电路带来了可能,仅仅需要在电压表的外部设置一些简单的按键或者开关,就可以构建出一个完整的数字电压表3。因此,易用性在一个产品的设计过程中是一个相当关键因素,对于一个产品的成败有着至关重要的影响。3)结合最新工艺,对数字仪表的设计结构进行更新随着当前计算机理论技术的不断发展,各种软硬件的开发都向模块化开发靠拢,采用模块化的开发方式会给整个软硬件在设计开发过程中带来很多的优势,极大的提高了开发效率,同时在后续的调试过程中,模块化的开发方式也会对软硬件的安装调试以及测试有着极大的便利。4)采用多个仪表对测量结果进行显示虽然数字化的显示方式有诸多的优点,但是在观测连续变化量方面确实有着与生俱来的缺陷,而模拟化的显示方式则是在数据的连续化观测方面有着很大的优势,所以“数字/模拟条图”的双表显示模式已经成为主流的显示标准,可以将数字仪表以及模拟仪表的优点都集合起来。模拟条图的显示方式主要有三类:液晶(LCD)条图、等离子体(POP)光柱显示器以及LED光柱。1.3 本设计的主要工作针对设计过程中所有的要求,结合实现产品所需要的功能和其他指标,本文在实现过程当中主要完成数字电压表的硬件设计、数字电压表的软件设计以及电路的设计和调试工作。在上述的工作基础之上,提供一个完整的实物以及在实现过程当中的电路仿真图。1)数字电压表的硬件设计:本文中提出了电压表测量范围在-5V5V之间的范围要求,以及输入电阻需要大于1兆欧,用LED数码管显示电压值,要求测量的最小分辨率为0.1V。基于上述要求,本文需要在满足上述各项指标的基础之上尽可能的选取价格低廉、可操作性高的硬件。2)数字电压表的软件设计:数字电压表的核心控制模块由单片机完成,需要在单片机上进行编程,完成对各种数据的采集、处理以及输出。本文的工作就是要针对数字电压表的特点,给出软件系统的整体设计,同时需要给出程序处理的数据流图以及软件设计过程中各个模块的设计思想以及实现思路。3)电路的仿真:在完成硬件选型和软件设计的基础之上,需要对所设计的电路进行全面的仿真,查看仿真结果是否符合预期的结果,如果不符合就需要对设计的电路进行反复的调试,直至仿真结果符合预期的结果。4)实物的制作与测试:根据之前所做的工作,完成实物的焊接,制作出最终成品的数字电压表,完成实物的制作以后,开始对实物进行测试,选取一些电压已知的对象,对制作好的数字电压表进行测试。2系统总体分析与设计系统的总体分析设计是在系统设计之初给出的一个方向性的过程,是整个系统开发过程中必不可少的一个部分,是确定该系统是否可行的一个必要性的因素,合理的总体分析与设计会给整个系统的后续开发工作带来一个事半功倍的效果。2.1 需求分析在目前的主流开发体系中,模块化的开发方式不仅可以提高开发效率,也可以更好的让开发者对系统进行单元测试,进而在完成单元测试的基础之上对系统进行集成测试,具有相对独立、通用性和互换性的特点。所以在系统的需求分析阶段,对系统的实现按照模块化的思想进行划分,以便为后续的开发和测试提供模块化的基础。基于单片机的数字电压表在实现过程中其功能模块主要包括:(1)数据采集模块:主要能够完成数据的采集工作,主要将被测电压的值通过信号的方式传递给数字电压表的微处理器。(2)数据处理模块:对数据采集模块送过来的数据进行处理,计算得出被测对象的实际电压值,同时将测量结果传递给数据显示模块。(3)数据显示模块:数据显示模块是由LED显示屏构成的,主要是对传输过来的数据进行显示,显示的内容需要满足系统显示的各项指标。2.2 系统的设计指标日常的生产生活中,在不同领域中对于数字电压表的精度要求是不一样的,但是根据设计实施经验,精度的确定是在技术层面无关的,精度为0.0001和精度为0.1在理论和技术层面来说是相同的,只是在具体的数据处理和数据显示的部分有一些差别。从研究数字电压表实现的只是角度出发,本文中所设计的电压表精度并不是很高。为了减少传统电压表在读数过程中所产生的误差,本文需要基于单片机设计并实现一款数字电压表,该电压表要具备使用简单,工作可靠性高以及灵活性高的特点。该电压表设计过程中的各项指标包括:1)测量范围:该数字电压表需要能够测量-5V+5V范围内的直流电压值。2)输入电阻:输入电阻值大于1M。3)测量精度:测量的最小分辨率为0.1V。4) 数据显示:用LED数码管显示测量值,其中最左边一位可以显示负号。2.3 系统总体设计在系统实现的过程当中,将系统划分为两个主要部分,包括:硬件电路部分以及软件程序部分。在硬件电路部分,系统采用AT89S51作为核心控制系统,系统的各个组成部分主要包含了信号采集模块、A/D转换器信号转换模块、单片机数据处理模块以及数据显示模块组成。在软件程序部分,系统采用C语言进行编程实现,在编译和数据仿真阶段采用Keil软件进行实现。关于具体的硬件部分和软件部分的设计和实现都会在后续有详细的阐述。2.3.1硬件电路部分概要设计图0.1 硬件电路部分数据流图硬件电路部分的数据流设计如图2.1所示。根据在需求分析阶段得出的结果,将整个系统划分为了三个模块:数据采集模块,数据处理模块以及数据显示模块。所以在每一个数据流在系统中的路线就是:1)由数据采集模块当中的A/D转换器将得到的被测对象的连续的、模拟的电压值转换为不连续的,离散的数据,其中得到的模拟量就作为数据采集模块的数据输入,而离散的数字结果就作为数据采集模块的数据输出。2)数据处理模块式整个系统的数据处理中心,承担着整个系统工作的最核心关键部分,在数据处理模块中采取AT89S51单片机作为微处理器,主要是对输入的数据量进行计算,然后得出最终电压值,同时将结果输出。其中,A/D转换器输出的离散的数据结果就作为数据处理模块的数据输入项,经过微处理器处理之后得到的结果就是数据处理模块的数据输出项。3)数据显示模块作为整个系统的数据显示终端,是给系统使用者提供最直接测量结果的地方,数据显示模块由多个LED显示屏组成,是与用户直接沟通的部分。其中,数据处理模块输出的数据是数据显示模块的数据输入项,而在LED屏幕上面所显示的数字就是作为数据显示单元的输出项。2.3.1 软件程序设计概要单片机当中的程序以C语言为基础进行编写,程序的处理流程图如图2.2所示。图0.2 程序处理流程图在编写主程序之前,需要准备一些函数以供主程序调用,其中一个很重要的函数就是数码管的显示函数,本文中暂且将该函数成为LED1函数,表名该函数是控制第一个LED的显示的。在LED1函数当中,需要由主程序提供一个输入的参数,该输入参数就是需要显示在界面当中的数字,然后在LED1函数内部,就需要根据该输入参数确定哪一根数码管被点亮,是否点亮是由状态码0/1进行标记的。由于该数字电压表的显示精度为0.1,所以在数字显示部分需要有两个LED的显示函数。在程序中分别用LED1函数和LED2函数对两者进行区分。编写好LED控制函数以后,就需要在主程序当中获取A/D转换器获取到的离散的电压值,获取的过程也需要以函数的方式进行控制。获取到需要显示的电压值以后,程序需要对符号位、整数位以及小数位所要显示的数据进行分别的计算,并将计算结果存储在变量当中,然后通过调用在主程序之外写好的LED显示函数LED1和LED2函数将LED显示模块的数码管的状态进行设置。3系统硬件电路设计电路硬件的选择在系统的设计过程中是十分重要的,一个合理的器件选择不仅可以提高整个系统的稳定性和可靠性,也可以极大限度的降低系统的生产成本。为产品的广泛应用提供一个坚实的价格基础。3.1 单片机单片机是数字电路处理的核心部分,又称为微型控制器。其主要职能是通过对数据的计算,得出LED显示模块所需要显示的数据,并将得出的数据输入到数据显示模块。单片机具有体积小、功耗低、价格低廉以及易于推广等诸多优点,在数字化的电路设计、智能化的仪表设计以及智能家电领域有着非常突出的使用优势,同时在这些领域都得到了日益广泛的应用。3.1.1 单片机简介单片机整体主要由三个部分组成,分别包括了运算器、控制器以及寄存器。单片机所要完成的一系列工作主要是通过诸多指令组合在一起完成的,而指令的执行都是由这三个部分之间的相互协作完成的。1)运算器运算器也是由多个部分组成,其中主要的组件包括:算术逻辑单元、累加器以及寄存器等。其中算术逻辑单元的两个数据输入分别是来自累加器的一个八位数据和来自数据寄存器的一个八位数据。算术逻辑单元中可以进行的数学层面的大部分数学符号逻辑计算4。运算器的两个主要功能就是算术运算以及逻辑运算,算术运算包括了加、减、乘、除四种基本运算,逻辑运算包含了与运算、或运算以及与或运算等多种逻辑计算方式。以普通的两个数的加法对算术逻辑单元的工作流程进行说明,如果有两个数A和B需要做加法运行,在正式开始进行运算之前,累加器中存放操作数A,数据寄存器当中存放操作数B,算术逻辑单元从这两个部分分别读取数据A和B,做完数据加法得到最终的结果之后,将A+B的值重新写回到累加器当中,累加器中原有的数据A就将被覆盖。2)控制器顾名思义,控制器是控制单片机当中整个执行流程,协调单片机各个部件之间工作的部分,其组成部分主要包括了:程序计数器、操作控制器、指令译码器、指令寄存器以及时序发生器等。控制器在系统作用主要包括:(1)程序计数器是存放程序下一条将要执行地址的地方,控制器就可以通过程序计数器中的值从内存当中读取对应位置的一条指令,读取完之后,程序计数器当中的值就会立即更新。(2)通过译码器和寄存器对执行的指令进行译码和测试,根据译码结果生成相应的信号。(3)控制整个系统之间的数据的流动,确保数据的正确传输、运算和输出。3)主要寄存器在前面,已经对运算器和控制器进行了详细的描述,而运算器中和控制器当中就包含了大量的寄存器,这些寄存器就是单片机中主要的寄存器。其主要的功能如表3.1所示。表3.1 寄存器功能表寄存器名称寄存器功能累加器在运算开始前,保存一个操作数,运算结束后,保存运算结果数据寄存器(DR)通过数据总线与其他部分相连,用于存储器和I/O设备读取数据的暂存单元指令寄存器(IR)存放当前系统正在执行的指令指令译码器(ID)针对系统给定的指令,对操作码进行译码程序计数器(PC)存放下条指令所在的地址地址寄存器(AR)保存CPU所要访问的内存或者输入输出设备的地址3.1.2 单片机选型本系统采用的单片机型号是AT89S51,该型号单片机的主要特点是:性能强大、易于学习和价格低廉。1)性能强大AT89S51具有完整的输入输出、控制端口、以及内部程序存储空间。与我们通常意义上的微机原理类似,可以通过外接A/D,D/A转换电路及运放芯片实现对传感器传送信息的采集,且能够提供以点阵或LCD液晶及外接按键实现人机交互,能对内部众多I/O端口连接步进电机对外围设备进行精确操控,具有强大的工控能力5。2)易于学习AT89S51系列单片机编写程序的基本流程。其语法结构与我们常用的计算机C语言基本相同,不同之处在于增加了控制具体引脚工作的语句和命令,相对于计算机C语言,单片机C语言更简练和明确,可以控制每个引脚的输入输出状态。其主要语句集中在例如:“ifelse”、“while”、“for”等循环与判断语句上,相比计算机C语言更简单。有过计算机C语言学习经历经过一段时间的熟悉就能够熟练进行编程。使用AT89S51系列单片机编程,可以在没有实物单片机的情况下在普通电脑上进行程序编写甚至是调试工作。一般工作中使用Keil公司开发的51单片机编程软件进行编程,它采用目前流行的开发环境,集编辑,编译和仿真于一体。在该软件上用户可以编写汇编语言或C语言源程序,并利用该软件生成单片机能运行的程序。3)价格低廉AT89S51芯片价格便宜,适合对大批量的计量仪器进行规模化改造,其单片售价不超过5元,对于一些低成本开发的产品来说具有很大的吸引力。AT89S51的管脚分配图如图3.1所示。图3.1 AT89S51管脚分配图h在管脚分配图当中,GND的功能是接地,VCC管脚是为整个系统提供输入电压,RST为系统提供复位信号,其余的部分主要分为四个部分:P0口、P1口、P2口以及P3口。P0口的主要功能是当AT89S51的外部需要进行扩展存储器的时候,既可以当作数据总线也可以当作地址总线,其中D代表的是数据总线接口,而A所代表的是地址总线接口;除此之外,P0口还可以作为一个普通的I/O进行使用,此时应该在其外部接入一个上拉电阻,保证I/O设备的基本特性。P1口就是作为一个普通的I/O口进行使用的,在其内部已经存在一个上拉电阻,因此不需要像P0口一样接入一个外部的上拉电阻。在AT89S51接入外部存储器的时候,P2口可以作为地址总线使用,除此之外,也可以作为一个类似于P1口的I/O口进行使用。P3口主要用作一些特殊功能的接口,其各个管脚的功能如表3.2所示。表3.2 P3管脚功能说明管脚名称管脚功能RXDP3.0口,用作串行时的输入口TXDP3.1口,用作串行时的输出口INT0P3.2口,用作外部中断0INT1P3.3口,用作外部中断1T0P3.4口,用作计时器0的输入口T1P3.5口,用作计时器1的输入口/WRP3.6口,用作外部数据存储器的写选通,低电平有效/RDP3.7口,用作外部数据寄存器的读选通,低电平有效3.2 A/D转换器3.2.1 A/D转换器工作原理逐次逼近型ADC实际采用的方法上从高到底开始逐位设定,比较模拟量输出,再来确定原设定位的正确与否。逐次比较型ADC原理结构如图3.2所示。其主要由采集保持电路、电压比较器、逐次比较寄存器、数/模转换器ADC和锁存器等部分组成。其工作原理如下:首先,被测模拟电压Ui通过逐次比较寄存器,将传递进的脉冲CP信号转换成数字信号,该数字量再经过数/模转换器生成对应的模拟量Us。当获得模拟量Us的数值达到并接近被测电压所对应Ui后,就可以检测出电压比较器完成最后的反转6。此时,逐次比较积存器的计数值就是被测电压Ui所对应的数字量,从而完成模拟量的转换。以上的分析表明,逐次比较的模/数转换方法,归根到底是数/模转换,采用逐次与模拟量进行比较后得到最终的数字标定值。图3.2 A/D转换器工作原理图3.2.2 A/D转换器选型电压表的数字化是将连续模拟的电压量经A/D转化后变为不连续的离散的数字量并加以显示。设计选取的转换器是由美国国家半导体公司生产的ADC0832型号的转换芯片,这是一种8位分辨率、双通道A/D转换芯片。其特点是:体积小、系统兼容性高、性价比高,正是由于这些突出的特点,所以该型号的A/D转换器在开发过程中有着很高的普及率。ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求。其内部电源输入与参考电压的复用,使得芯片的模拟电压输入在05V之间7。芯片转换时间仅为32S,据有双数据输出可作为数据校验,以减少数据误差,转换速度快且稳定性能强。独立的芯片能使输入、多器件挂接和处理器控制变的更加方便。通过DI数据输入端,可以轻易的实现通道功能的选择。单片机对ADC0832的控制:本设计中ADC0832与单片机的接口为4条数据线。分别为CS、CLK、DO、DI。单片机和ADC0832的连接方式见总电路图。3.3 OP07数据采集3.3.1 OP07的功能简介OP07的功能介绍:OP07芯片是一种低噪声,非斩波稳零的双极性运算放大器集成电路。由于OP07具有非常低的输入失调电压,所以OP07在很多应用场合不需要额外的调零措施。OP07同时具有输入偏置电流低和开环增益高的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放大传感器的微弱信号等方面。3.3.2 数据采集电路图3.3 数据采集模块电路图系统的数据采集模块电路设计图如图3.3所示。一级放大电路作为一个缓冲器,更加可靠的保证数据的同步传输。在二级电路中主要对输入电压的信号进行比例放大,因为AD0832C的输入电压范围是05V,输入电压不能为负值,所以当输入电压为负值的时候必须要对输入电压进行抬高,根据输入电压表的测量范围是-5V+5V,所以测量电压的0V应该对应ADC输入的2.5V,因此,通过两级放大电路处理之后的电压应该满足下面的关系:0.5(-5V+5V)+2.5V=(0V5V)。因此,在放大电路中,通过电阻的设置将放大电路的放大倍数定为1,通过VCC的设置,给整体电压外加2.5V的偏置,使得放大电路的输出值满足ADC的输入的值的要求。3.4 LED 数码管图3.4 LED数码管引脚定义3.4.1 LED数码管简介在日常生活中,LED数码管并不陌生,它有着广泛的应用。数码管实际上是有七个发光管组成的8字形构成的,加上小数点就是8个。这些段分别由字母A、B、C、D、E、F、G、DP(小数点)来表示。当数码管特定的段加上电压后,这些特定的段就会发亮,以形成我们眼睛看到的字样了。这类数码管分为共阳极和共阴极两种,共阳极就是把所有LED的阳极连接到公共点,而每个LED的阴极分别为A、B、C、D、E、F、G和DP。共阴极则与共阳极相反。LED数码管引脚定义如图3.4所示。3.4.2 LED数码管的选型数码显示管是本设计的重要组成部分,显示模块作为整个系统的显示终端,将单片机的数据处理结果直观的显示,方便用户读取查看。综合满足设计性能指标、价格便宜、易于购买等因素,本设计选用的数码管为HDSP-30LA,是共阳极的七段显示数码管。3.5 器件的选择从总的方面来说,系统在设计过程中主要选择的硬件主要包含:微处理器(单片机)、A/D转换器以及放大电路。根据前期的市场调研,并结合自身在实际学习过程当中的经验,在器件的选择型号上面,如表3.3所示。表3.3 硬件选型对照表硬件名称选择型号单片机AT89S51A/D转换器ADC0832放大电路OP07LED数码管HDSP-30LA在微处理器(单片机)上,采用型号为AT89S51;在A/D转换器上,采用的型号为ADC0832;在放大电路上选用的是OP07;在LED数码管,采用的型号是HDSP-30LA。电路总图如附录A所示。4系统软件程序设计4.1 开发环境选择单片机是系统的数据处理中心,一个好的算法能够很大程度的提高物流效率,同理一个简单易用的程序将能够提高数据处理的效率。单片机编程采用的是C语言编程,Keil C51是美国Keil公司基于51系列单片机提出的一种C语言开发系统,其中为单片机编程提供了一个很强大类库reg518。在实际的系统开发过程当中,开发人员只需要将reg51.h文件引用到所在程序当中,就可以利用该文件中提供的函数,加快程序的开发效率,本文所研究系统在开发过程当中就利用了该头文件当中提供的诸多函数。系统在开发过程中采用Keil C51,该C语言开发系统是一套界面友好的软件开发系统,有着全套的UI界面,为使用者提供了诸多操作选择,大大简化了使用者的使用难度和开发难度;另外,该软件系统还可以输出C文件编译之后生成的汇编代码,可以进一步的让使用者理解程序在使用过程当中底层的执行流程。图4.1 Keil C51使用流程Keil C51在使用过程中,其大致使用流程如图4.1所示。在开始使用的时候,第一步就是需要在开发环境当中建立一个新的工程文件,然后根据界面提示选择与实际系统开发过程相对应的单片机型号,一些前置的工作完成以后,就是需要编写程序,当程序编写完毕以后,对书写的工程文件当中的程序进行保存,最终对相对应的程序进行编译,生成HEX文件,然后将HEX文件保留,以便下一步的使用。4.2 数据处理模块设计数据处理模块通过对输入数据的处理,得到相应的结果,同时将对应的结果控制显示在LED当中,完成最终的数据输出。数据处理模块的流程如图2.2所示,在数据处理流程的设计过程当中,需要对模块当中的各个子功能以封装函数的形式体现,以方便主程序main函数的调用。总共分为如下几个步骤:1)获取A/D转换器的输出值;2)计算符号位的显示状态;3)计算整数位要显示的数据;4)计算小数位要显示的数据。4.3 数据处理模块实现按照数据处理模块的设计流程,采用C语言编码的形式,对数据处理模块进行了详细的实现9。在A/D转换器整体的处理模块当中,数据的处理思路是:ADC0832输入范围0V5V,8位精度(对应数字0255),故测量0V时对应ADC输入2.5V(128),为满足5V的量程,数字0时应小于-5V的,测量输入255时应大于5V,方便程序计算,故分压使得0.04V对应5V/256,即0.04V测量输入=1ADC值(分辨率)。1)获取A/D转换器输出值的过程如下:u8 GetADAvg()u16 ret=0;u8 i=0;doret+=GetValue0832();while(+i);return ret8;在程序中,循环调用GetValue0832函数,获取输入值,在定义的ret值之上不断的进行叠加操作,直至跳出循环,循环的终止条件为当i的值为0时即可跳出循环,由于i为一个U8的数据类型,所以当i自增256次以后就会产生溢出,从而i的值变为0。在最后的返回值当中将ret值右移8位得到最终A/D转换器的输出值。这样通过求和256次,最终又通过移位的方式除以256的方式有利于得到一个更为稳定准确的电压值,测量出的电压值要比一次性测量一次性显示的准确性提高很多。GetValue0832的函数的设计思路如下:sbit Cs0832= P27;sbit Clk0832= P07;sbit Do0832= P06;sbit Di0832= P05;u8 GetValue0832() u8 i,Dat1=0; Clk0832=0; Di0832=1; Cs0832=0; Clk0832=1; Clk0832=0; Di0832=1; Clk0832=1; Clk0832=0; Di0832=1; /channel Clk0832=1; Clk0832=0; Di0832=1; for(i=0;i8;i+) Clk0832=1;Dat1=1; Clk0832=0; Dat1|=Do0832; Cs0832=1; Di0832=1; Clk0832=1; return Dat1;2)计算符号位的显示状态符号位显示状态的计算以及后续的LED需要显示数据大小的计算都是需要以获取到的A/D转换器的输出值为基础,本文中暂且将该值标记为value。根据数据的设计思路,需要对获取到的value值进行处理,首先需要利用公式(4.1)对value值进行转换。AD = (value - 128) / 4 (4.1)公式(4.1)计算出的结果值AD的正负状态就代表了最终数据显示的符号位的状态,所以程序中只需要对AD值的正负进行判断即可获得符号位的显示状态。程序中的相关设计实现如下:sbit Lsign=P36;Lsign=AD0?1:0;首先在程序起初对符号位显示的管脚进行了分配,声明为一个全局变量,将其分配为P3口的编号为6的管脚,在主程序中通过判断AD值的正负,将其赋值为0或1,代表着该符号位数码管是否亮起的状态10。3)计算整数位要显示的数据除去符号位之后,在数据位的显示过程中,将所有的数据都作为正数进行处理,因此需要按照之前电路设计的状态对数据进行转换,数据的转换公式为公式(4.2),其中AD即为通过公式(4.1)计算得到的结果。data =abs(AD+5) / 10 (4.2)通过公式(4.2)转换得到的数据本文中标记为data,data即为需要在LED1和LED2中显示的数据。在具体的显示过程中分为整数位显示和小数位显示,在整数位中需要显示的数据的计算公式为公式(4.3)。val_1 = data / 10 (4.3)然后通过调用LED1的显示函数将val_1数据显示到一号LED当中,LED1的显示函数设计为:const code ledmap=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;sbit L1a=P37;sbit L1e=P35;sbit L1f=P34;sbit L1b=P33;sbit L1g=P32;sbit L1c=P15;sbit L1d=P14;void LED1(u8 a)L1c=ledmapa&0x1?1:0;L1d=ledmapa&0x2?1:0;L1g=ledmapa&0x4?1:0;L1f=ledmapa&0x8?1:0;L1e=ledmapa&0x10?1:0;L1b=ledmapa&0x20?1:0;L1a=ledmapa&0x40?1:0;具体的实现过程中首先对LED1的不同的数码管的数据输入指定了不同的管脚,在程序实现的开始声明为全局的变量。在一号LED的显示函数LED1当中,将需要显示的数据按照一个u8的数据类型传入到函数当中,ledmap为定义好的一个led显示的常量数组,按照程序当中给出的不同数码管的显示方案就可以在一号LED当中显示出数据val_1。4)计算小数位需要显示的数据小数位需要显示的数据也同样需要通过计算进行获取,计算的公式为公式(4.4),data仍为通过同时(4.2)计算得到的数据。val_2 = data % 10 (4.4)计算得到小数位需要显示的数据val_2以后,通过调用LED2函数即可将val_2显示到二号数码管当中。函数LED2的具体实现过程为:sbit L2e=P30;sbit L2f=P17;sbit L2g=P16;sbit L2a=P13;sbit L2b=P12;sbit L2c=P11;sbit L2d=P10;void LED2(u8 a)L2c=ledmapa&0x1?1:0;L2d=ledmapa&0x2?1:0;L2g=ledmapa&0x4?1:0;L2f=ledmapa&0x8?1:0;L2e=ledmapa&0x10?1:0;L2b=ledmapa&0x20?1:0;L2a=ledmapa&0x40?1:0;实现的思路和原理与LED1方法中的思路和原理是相同的,唯一的区别就是在对不同数码管数据输入管脚的分配上11。LED2方法中仍然通过调用ledmap中声明好的数据,获取不同数码管的显示状态,进而将传入的参数val_2显示在二号LED当中。通过以上的四个步骤将代码的主要框架进行了描述,系统采用模块化的编码模式,对不同的功能函数已经进行了很好的封装,只需要主程序在函数体中进行相应的调用,传入准确的参数,按照数据处理流程进行执行,即可获得到最终的显示状态12。主程序体当中的程序设计如下:void main()s16 tmp;L1h=1;while(1)val=GetADAvg();AD=(val-128)*4;tmp=abs(AD+5)/10;Lsign=AD0?1:0;LED1(tmp/10);LED2(tmp%10);主函数当中首先将一号LED当中的小数点位永久点亮,其次在while循环当中按照设计好的数据处理流程以及相关的计算公式,对需要显示的数据进行获取和处理,最终调用系统已经封装好的LED1函数和LED2函数将计算好的数据显示在不同的LED当中即可。5系统安装与测试系统安装是将设计通过组装排版,成为一个实现设计要求的整体。系统测试在整个系统的设计与实现过程中属于验证阶段,需要对系统需求分析中设计到的功能指标和各项性能指标都需要进行测试,有着非常重要的作用。5.1 安装根据本设计的系统电路图,在板上规划好位置和排版,将各个功能模块合并组装。其过程如下:首先插入电子元件,注意极性! 随后剪去多余的引脚,留至电路板2-3mm,再用电烙铁焊接元件引脚,注意不要虚焊! 最后整体检查电路,再进行通电试验13。5.2 测试方法与步骤根据一般性的测试原则方法,在本系统的测试过程中采用黑盒测试的方法,只需要设计一个测试用例的输入和输出,确保输出的结果与预期的结果一致即认为该测试项通过。对于一些可以通过理论分析完成的指标测试项,需要给出相应的理论分析过程。在采取黑盒测试的基础之上,系统测试过程当中所采取的测试步骤如下:(1)确认系统状态,所有的硬件设备都已经按照设计准备就绪;(2)准备被测对象,本文中所设计的被测对象为一些直流电压;(3)上电测试,将测量出的数据进行记录,以便下一步的分析;(4)根据数据的分析结果,给出对应的测试结论。在完成测试步骤设计的基础之上,系统需要进行的测试项总共包括四个功能测试项,具体包括:(1)测量范围:-5V到5V;(2)输入电阻:输入的电阻值大于1M;(3)测量精度:电压的测量结果的最小精度为0.1;(4)数据显示:需要将数据准确的显示在LED当中。5.3 测试内容5.3.1 系统状态根据设计的PCB板,完成所有的设计和焊接工作以后,完成了基于单片机的数字电压表的实物设计,系统的最终状态即为通过焊接以后得到的实物。系统的状态如图5.1所示。图5.1 系统状态图根据检验,系统的最终状态由主体电路板以及板上的硬件设备外加两根测量触笔组成。两根测量触笔中红色接被测对象的正极,黑色接被测对象的负极,通过两根红色触笔可将电压信号传递至电路板当中。除过可以通过测量触笔接触被测对象以后,还在PCB板上设置了两个独特的插槽,以供被测电压对象可以直接插入到插槽当中,为系统的使用提供一个更加快捷的入口,方便用户进行使用。经过分析,系统的状态满足测试要求。5.3.2 测量范围测试项图5.2测量范围测试项结果图在验证测量范围的过程中,需要连接实际的被测电压进行测量,为此,特意购买了直流电池以供实验测量。在实际的测量过程当中,将被测对象直接接入到系统设计的插槽当中,根据LED中显示出的结果对数据的测量范围进行验证。实际的测量结果图如图5.2所示。插入的被测电压为一个直流电池,设计电压为9V,其输出电压大于所给出的实际测量输出范围,因此在实际的测量过程当中需要能够显示出该电压表的最大量程。如图5.2所示,LED显示模块当中输出的具体电压值为5.1V,排除系统设计过程当中的相关误差问题,可以说明已经实现的该数字电压表可

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论