版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大连东软信息学院高职毕业设计(论文)论文题目论文题目:多路数字电压表设计与仿真 系 所: 电子工程系 专 业: 嵌入式系统工程 学生姓名: 学生学号: 指导教师: 导师职称: 讲师 完成日期: 2014 年 4 月 25 日 大连东软信息学院Dalian 大连东软信息学院毕业设计(论文) 摘要 IV多路数字电压表设计与仿真摘 要随着电子科学技术的发展,电子测量成为广大电子工作者必须掌握的手段,对测量的精度和功能的要求也越来越高,而电压的测量甚为突出,最为普遍。本设计是采用AT89C52单片机作为主控制器的多路数字电压表,该电路采用ADC0809作为A/D转换元件,可进行05V的8路电压信号的采
2、集,电压可以精确到小数点后两位有效数字。能够通过两个按键开关选择输入通道,并在LCD1602液晶显示屏上依次显示每路通道电压值,显示屏上第一行显示通道数,第二行显示电压值。本设计电路结构简单,采用的元器件较少,成本低,经济实用,相比于老式指针电压表更直观准确,无视觉误差,大大的提高了测量的精确度。关键词:单片机,电压表,A/D转换大连东软信息学院毕业设计(论文) AbstractDesign and Implementation of Multi-Channel Digital Voltmeter Based on MCUAbstractWith the development of scie
3、nce and technology, electronics, electronic measuring workers must master to become the majority of electronic means of measurement accuracy and functionality requirements are also increasing, and voltage measurements are very prominent, the most common. This design is using AT89C52 as the main cont
4、roller of multi-channel digital voltmeter, the circuit ADC0809 as A / D conversion device can be collected 8 0 5V voltage signal, the voltage can be accurate to two decimal places valid numbers. Can be selected by two key switch input channels, and each channel in turn displays the voltage on the LC
5、D1602 LCD screen, the first line shows the number of channels, and the second line shows the voltage value. Design a simple circuit structure, fewer components using low cost, economical and practical, compared to the old-fashioned pointer voltmeter is more intuitive and accurate, no visual error, w
6、hich greatly improves the accuracy of the measurement.Key words: MCU, Voltmeter,A / D converter 大连东软信息学院毕业设计(论文) 目录目 录 TOC o 1-3 u 摘 要 PAGEREF _Toc341622768 h IAbstract PAGEREF _Toc341622769 h II第1章项目概述 PAGEREF _Toc341622770 h 11.1项目背景11.2项目简介11.3应用范围1第2章项目实施方案22.1概述22.1.1设计方案22.1.2主要芯片介绍22.2开发环境72.
7、3硬件设计72.3.1硬件系统框图72.3.2硬件设计原理82.4软件设计102.4.1主流程图102.4.2 A/D转换子程序流程图112.4.3显示子程序流程图11第3章项目实施过程123.1硬件实现过程123.1.1Altium Designer环境简介123.1.2Altium Designer设计原理图123.2软件实现过程143.2.1Keil开发环境介绍143.2.2源程序代码173.3调试过程223.3.1调试223.3.2性能分析22第4章项目成果234.1硬件成果物234.1.1Proteus简介234.1.2Proteus仿真234.1.3显示结果说明244.2软件成果物
8、24第5章结 论27参考文献28致 谢29附 录30大连东软信息学院毕业设计(论文)- 第1章项目概述1.1项目背景数字电压表出现在50年代初,60年代末发展起来的电压测量仪表,简称DVM,它采用的是数字化测量技术,把连续的模拟量,也就是连续的电压值转变为不连续的数字量,加以数字处理然后再通过显示器显示。这种电子测量的仪表之所以出现,一方面是由于电子计算机的应用逐渐推广到系统的自动控制实验领域,提出了将各种被观察量或被控制量转换成数码的要求,即为了实时控制及数据处理的需要;另一方面,也是电子计算机的发展带动了脉冲数字电路技术与进步,为数字化仪表的出现提供了条件。所以,数字化测量仪表的产生与发展
9、是与电子计算机的发展密切相关的。现如今,数字电压表已经绝大部分取代了传统的模拟指针式电压表。因为传统的模拟指针式电压表功能单一,精度低,读数的时候也非常不方便,很容易出错。但采用单片机的数字电压表由于测量精度高,速度快,读书时也非常方便,抗干扰能力强,扩展性强的优点已经被广为应用。1.2项目简介在现代测量中,数字电压表的用途越来越广泛,在教学、测量、以及工程等方面有着不可或缺的作用。其优质特点更深受用户喜爱。数字电压(Digital Voltmeter)简称DVM,它采用数字显示,直观准确,无视觉误差,并具有极性自动显示功能。测量精度和分辨率都很高。电路的集成度高,便于组装和维修,使用更为可靠
10、和耐久。所以研究制作一种多路数字电压表是非常有意义的。本设计从各个角度分析了由单片机组成的数字电压表的设计过程及各部分电路的组成及其原理,并且分析了程序如何驱动单片机进而使系统运行起来的原理及方法。1.3应用范围数字电压表用途广泛,在工业,民用测量上都能用到。其主要还是在工业上用的比较多。例如在电子实验室中测试电器件时;在维修电路板时就经常用到它们。 第2章项目实施方案2.1概述2.1.1 设计方案本数字电压表采用AT89C52单片机作为处理器,它是一个电压较低,性能较高的8位CMOS单片机,芯片内含8k bytes的反复可擦写的Flash只读程序存储器和256 bytes的随机存取数据存储器
11、(RAM),此器件是高密度、非易失性的使用ATMEL公司的存储技术生产,兼容标准MCS-51指令系统,片内装有通用的8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。A/D转换器使用ADC0809。单片机在实际应用中处理的大都是连续变化的模拟量,模拟量经传感器转变成为电信号后,可以输入到数字系统中进行处理和控制,但需要模数转换将其变成数字信号才行,因此,模拟量转变成数字量是一个输出的接口电路,即AD转换器实际是完成信号转换的桥梁。现在全球有多种不同类型的AD转换器,例如并行式比较型、逐次逼近比较型、积分比较型等。此设计使用逐次逼近型AD转换器,这种类AD转换器
12、的优点是转换精度高,转换速度快,价格适中,是目前使用最多,应用最广泛的AD转换器。逐次逼近型AD转换器一般由DA转换器、比较器、时钟发生器、寄存器以及控制逻辑电路组成。显示屏采用LCD1602液晶字符型显示屏,目前常用的有16*1,16*2,20*2和40*2行等的显示屏,它是一种专门用于显示字母、数字、符号等点阵式LCD。LCD1602分为带背光和不带背光两种,带背光的比不带背光的厚,基控制器大部分为HD44780,LCD1602采用标准的14脚(无背光)或16脚(带背光)接口,是否带背光在应用中并无差别。本设计中还使用了两个独立按键来选择显示对应通道的电压,其中KEY1每按一下通道数就减1
13、并在LCD1602上显示对应通道的电压,KEY2每按一下通道数就加1并在LCD1602上显示对应通道的电压,这样就十分方便查看不同通道的数据。2.1.2 主要芯片介绍1. ADC0809结构功能ADC0809型 AD转换器是一种CMOS单片逐次逼近式转换器。该芯片由地址锁存与译码器、8路模拟开关、8位开关树型DA转换器、比较器、三态输出锁存器、逐次逼近寄存器等电路组成。所以,ADC0809有三态输出能力,还能处理8路模拟量输入。该器件既可以单独工作,也可与各种微处理器相连。其输入和输出与TTL兼容。ADC0809芯片有28引脚双列直插式封装。ADC0809共有28个引脚,ADC0809引脚图如
14、图2.1所示,各引脚的功能如下:图2.1 ADC0809引脚图IN0IN7:8路模拟量输入;D0D7:8位数字量输出;ADDA、ADDB、ADDC:用于选择8路模拟量输入的方式,3个地址输入线;ALE:地址锁存使能信号,高电平有效输入;START:A / D转换启动信号,输入高电平;EOC:A / D转换结束信号输出,当A / D转换的结束将输出一个高电平信号(在转换过程中一直是低电平); OE:数据输出允许信号,输入高电平有效。当AD转换结束时,会输入一个高电平即可打开输出三态门,输出的是数字量;CLK:输入的时钟脉冲。所需的时钟频率不高于640kHz;;REF(+)、REF(-):基准电压
15、;Vcc:电源,单一+5V;GND:地。2. LCD1602液晶显示LCD1602液晶显示模块图如图2.2所示,它是通过编程操作屏幕和光标的命令来实现,读取和写入操作。内部LCD模块控制器,共11控制命令,其中1为高电平,0为低电平。图2.2 LCD1602液晶显示模块图指令1:清显示,指令码为01H,00H光标返回到地址位置。指令2:重置光标,光标返回到地址00H。指令3:显示模式和光标设置I / D:光标移动,左低,右高的方向发展。 S:是否所有在屏幕上的文字向左或向右。低电平表示一个无效的,所说的高电平表示有效。指令4:显示切换控制。 B:控制光标闪烁,闪烁的是高电平,低电平不闪烁。 C
16、:控制光标的开和关,高电平表示光标,低电平没有光标。 D:控制开启和关闭的整体显示效果,打开显示器显示用高电平,关闭显示器显示用低电平。指令5:显示位移或S / C光标:将文本光标移动用低电平,移动显示的文字用高电平。指令6:功能设置命令DL:8总线为低电平时,4总线为高电平时。F: 57点阵字符显示为低电平,5x10点阵字符显示为高电平。N:单行显示为低电平,双行显示为高电平。指令7:字符发生器RAM地址设置。指令8:DDRAM地址设置。指令9:光标地址和读忙信号BF:为忙标志位,此时为低电平表示不忙,此时为高电平则表示忙,这时模块不能接收数据或者命令。指令10:写数据。3. 单片机AT89
17、C52AT89C52为8位通用微处理器,采用工业标PDIP封装的AT89C52引脚图准的C51内核,在内部功能及管脚排布上与通用的8XC52一样,它的主要功能是汇聚IC内部寄存器,收敛调整的初始化,接收器将信号解码红外红外遥控,数据RAM和外部接口功能,收敛测试模式控制和与CPU主板等进行通信。主要管脚有:振荡器输入输出端口XTAL1(19 脚)和XTAL2(18 脚),外部连接12MHz晶振。复位输入端RST/ VPD RST/Vpd(9 脚),电阻器和电容器的外部连接构成复位电路。电源端口VCC(40 脚)和VSS(20 脚),各自用+5V电源连接正负极。可编程通用I/O脚P0P3,它的主
18、要功能由软件定义,在本设计中,N1功能控制端口为P0端口(3239 脚),相应功能管脚分别与N1相连接,IR输入端定义在13脚, I2C总线控制端口定义在10脚和11脚,它们与SDAS(18脚)和SCLS(19脚)端口相连接,握手信号功能端口被定义在12脚、27脚及28脚,连接主板CPU 的对应功能端。AT89C52引脚图如图2.3所示。图2.3 AT89C52引脚图P0口:P0口是一组双向I/O口其拥有8位漏极开路,即数据/地址总线两用口。当P0口作为输出口用时,每位都可以吸收电流驱动8个TTL逻辑门电路,P0端口写“1”,可作为高阻抗输入端。当访问外部数据存储器或程序存储器,这组口线分时转
19、换地址(低8位)和数据总线复用,访问期间激活内部上拉电阻。当Flash编程,P0口接收指令字节,而在程序验证,输出指令字节,校验时,需要接外部上拉电阻。P1口:P1是一个上拉电阻在内部的8位双向I/ O口,P1的输出缓冲级可驱动(吸收或输出电流)4 TTL逻辑门电路。端口写“1”,通过该端口内部上拉电阻拉高,这时你可以输入。当作为输入来使用,由于内部上拉电阻的存在,一个引脚将被拉低时输出信号的外部电流(IIL)。与AT89C51不同之处是,P1.0和P1.1也被用作定时器/计数器的外部计数输入(P1.0/T2)和输入(P1.1/T2EX),在Flash编程和校验时,P1接收低8位地址。P2口:
20、P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,当有一个引脚被外部信号拉低的情况下会输出一个电流(IIL)。在16位地址的外部数据存储器或外部程序存储器被访问时,P2口输出高8位地址数据。在8位地址的外部数据存储器被访问时,P2口送出P2锁存器的内容。编程或校验Flash时,接收一些控制信号和高位地址的也是P2口。P3口:P3口是一组8位双向I/O口,其内部带有上拉电阻。当“1”被写入P3口时,P3口的上拉电阻被拉高其可作为输
21、入端口。P3口有4个TTL逻辑门电路可以被输出缓冲级驱动。另外,P3口被外部拉低时将用上拉电阻输出电流。P3口不仅可以作为一般的I/O口使用,P3口也接收程序验证和一些Flash闪存编程控制信号。它的第二功能应用更为重要。RST:RST的意思是复位输入。在振荡器工作的时候,会有两个机器周期以上的高电平出现在RST引脚上,复位设备。ALE/PROG:当访问数据存储器或外部程序存储器时,ALE(地址锁存允许)输出的脉冲信号用于锁存地址的低8位字节。一般情况下在正常运行时,ALE仍然以时钟的振荡频率的输出脉冲信号的1/6是一定的,所以它可用于外部输出时钟或定时目的。需要了解的是:访问外部数据存储器,
22、每当一个ALE脉冲被跳过。在编程过程中闪存的编程脉冲输入(PROG)也使用该引脚。当想要禁止ALE操作时,我们可以对D0位置位,它在特殊功能寄存器(SFR)区里的8EH单元。置位完成后,ALE的激活将只能使用MOVX和MOVC指令。另外,当单片机执行外部程序时,ALE应设置禁止位是无效的,因为该引脚微弱拉高。PSEN:PSEN(程序存储允许)外部程序存储器读选通脉冲信号输出是由它完成的,在单片机从外部程序存储器取数据(或指令)时,一个机器周期需要包含两次PSEN有效,也就是说要输出两个脉冲信号。逆向推理,跳过两次PSEN信号的情况就是访问外部数据存储器。EA/VPP:EA/VPP(外部访问允许
23、)。如果我们想要CPU访问外部程序存储器(地址为0000HFFFFH),那么就需要把EA端始终接低电平(GND)。特别要知道的是:如果我们编程了加密位LB1,EA端状态会在复位时内部锁存。例如把EA端接高电平(Vcc),则内部程序存储器中的指令会被CPU执行。当编程Flash存储器时,其编程允许电源Vpp需要+12V,前提当然是使用12V编程电压Vpp的器件。XTAL1:内部时钟发生器的输出端,振荡器反相放大器的输入端。XTAL2:外部时钟发生器的输入端,振荡器反相放大器的输出端。2.2开发环境硬件环境:英特尔Corei7 2620M 四核笔记本处理器 内存4G。软件环境:window7操作系
24、统, Keil C开发系统,Altium Designer电路图绘制软件,Proteus仿真软件。2.3硬件设计2.3.1硬件系统框图本设计主要完成模拟电压值的采集,由ADC0809将模拟信号转换成数字信号,经过单片机处理后在液晶屏上显示。系统主要由时钟复位电路,单片机,转换器,显示器等组成。硬件系统框图如图2.4所示。LCD1602液晶显LCD1602液晶显示器单片机A/D转换器模拟电压输入图2.4 硬件系统框图2.3.2硬件设计原理(1)LCD1602显示电路原理图设计LCD1602的引脚连接为:VSS接电源地,VDD接电源+5V;VEE为液晶显示对比度调整端,接电源正极时对比度较弱,接电
25、源地时对比度较高,对比度过高会产生“鬼影”,在这里通过一个10千欧电阻来调节对比度,可以取得理想的效果;D0D7是单片机接收数据端口,接单片机P0口;RS,E,R/W为LCD1602的三根控制线,控制着液晶的读/写状态其中,RS为高电平时选择数据寄存器,RS为低电平时选择指令寄存器,将RS接单片机P3.0口;R/W为读/写控制端,在这里将R/W接单片机P3.2口;E为使能端接单片机P3.1口,当E端由高电平跳变成低电平时,液晶显示模块执行指令。LCD1602原理图如图2.5所示。图2.5 LCD1602原理图(2)ADC0809模数转换原理图设计ADC0809的精度是8位,转换时间为100us
26、,含锁存控制的8路开关,输出有三态缓冲控制,单5V电源供电。IN0IN7是ADC0809的8位数据输入端;EOC接收ADC0809转换结束信号EOC;ADD A,ADD B,ADD C为ADC0809提供地址锁存控制信号。ALE是高电平时把三个地址信号送入地址锁存器,并经译码器得到地址输出,以选择相应的模拟输入通道;OE为ADC0809提供输出允许控制信号。START是一个正脉冲后A/D开始转换。CLOCK是为ADC0809提供时钟信号。OUT1OUT7是ADC0809的8位数据输出端,输出8位电压值,经单片机处理后显示在液晶显示器上。VREF(+)和VREF(-)是参考电压输入端口。ADC0
27、809模数转换器原理图如图2.6所示。图2.6 ADC0809模数转换器原理图(3)复位电路原理图设计AT89C52的复位引脚(Reset)是第9脚,当此引脚连接高电平超过2个机器周期,即可产生复位动作。以12MHZ的时钟脉冲为例,每个时钟脉冲为1/12us,2个机器周期为2us。因此,我们可在第9脚上连接一个可以让该引脚产生一个2us以上的高电平脉冲,即可产生复位动作。电源接上瞬间,电容器C上没有电荷,相当于短路,所以第9脚直接接到VCC。在此使用10K欧姆电阻器,10uf电容器,其时间常数远大于2us,所以第9脚上的电压可以保持在2us以上,足可以使系统复位。在电容器两端还增加了一个按钮开
28、关,用于手动复位。复位电路原理图如图2.7所示。图2.7 复位电路原理图 (4)时钟电路原理图设计AT89C52内部已具备震荡电路,只要在18,19两个引脚连接简单的石英震荡晶体即可。至于AT89C52的时钟频率,目前MCS-52系列的芯片的工作频率已经大幅度提升,一般的工作频率在024MHz,甚至还有40 MHz的版本。在单片机的管脚连接时连接XTAL1和XTAL2管脚。一般的时钟电路都由两个电容和晶振组成。时钟电路原理图如图2.8所示。图2.8 时钟电路原理图 2.4软件设计2.4.1主流程图主流程图如图2.9所示。首先是程序初始化,通过按键选择通道,调用A/D转换子函数,调用显示子函数,
29、送电压值,让电压值显示在LCD1602上。开始开始初始化初始化调用A/D转换子程序调用A/D转换子程序调用按键选择子程序调用按键选择子程序调用显示子函数调用显示子函数图2.9主流程图2.4.2A/D转换子程序流程图A/D转换子程序用于对ADC0809八路输入模拟电压进行A/D转换,并将转换的数值存入8个相应的存储单元中,A/D转换子程序每隔一定时间调用一次,即隔100us对输入电压采样一次。A/D转换子程序流程图如图2.10所示。开始开始初始化初始化启动A/D转换启动A/D转换数据输出数据输出延时延时结束结束图2.10 A/D转换子程序流程图2.4.3显示子程序流程图主要完成LCD1602液晶
30、初始化,LCD显示提示信息,显示当前通道和电压值。显示子程序流程图如图2.11所示。开始开始初始化初始化送数据送数据显示显示图2.11 显示子程序流程图第3章项目实施过程3.1硬件实现过程3.1.1 Altium Designer环境简介Altium Designer是原Protel软件开发商Altium公司推出的一体化电子产品开发系统,主要运行在Windows XP操作系统。根据原理图设计软件,PCB绘图编辑器,电路仿真,拓扑逻辑自动布线信号完整性分析和设计输出等技术的完美融合,为设计人员提供了新的设计解决方案,让使用者可以轻松地设计,熟练使用本软件将会使电路设计的质量和效率大大提高。Alt
31、ium Designer除了全面继承包括Protel 99SE、Protel DXP在内的先前一系列版本的功能和优点外,还增加了许多改进和很多高端功能。该平台拓宽了板级设计的传统界面,全面集成了FPGA设计功能和SOPC设计实现功能,从而允许工程设计人员将系统设计中的FPGA与PCB设计及嵌入式设计集成在一起。由于Altium Designer在继承先前Protel软件功能的基础上,综合了FPGA设计和嵌入式系统软件设计功能,Altium Designer对计算机的系统需求比以前更高些。3.1.2 Altium Designer设计原理图Altium(前身为Protel国际有限公司)由Nick
32、 Martin于1985年始创于塔斯马尼亚州霍巴特,致力于开发基于PC的软件,为印刷电路板提供辅助设计。最初的DOS环境下的PCB设计工具在澳大利亚得到了电子业界的广泛接受,1986年中期,Altium通过经销商将设计软件包出口到美国和欧洲。随着PCB设计软件包的成功,Altium公司开始扩大其产品范围,包括原理图输入、PCB自动布线和自动PCB器件布局软件。Altium Designer是基于一个软件集成平台,在一个应用软件中整合了全部电子产品开发所需的环境工具。Altium Designer包含的工具囊括了所有设计任务:电路仿真、HDL设计输入和原理图设计、PCB设计、信号完整性分析、基于
33、FPGA的嵌入式系统设计和开发。另外Altium Designer的工作环境可以加以定制,满足用户的各种不同需求。这是AltiumDesigner的主界面,点击文件按钮,Altium Designer主界面如图3.1所示,弹出拓展窗口,点击添加新的工程文件如图3.2所示。图3.1 AltiumDesigner主界面图图3.2 如何添加工程文件图主板电路图里包括了本设计的所有元器件(ADC0809,AT89C52,LCD1602,按键开关,排阻,时钟电路和复位电路)以及元器件之间的连接和网络标号,主板原理图如图3.3所示显示的是一个主板的工程文件,里面包含了PCB文件,原理图文件和这些元器件自己
34、的封装库,在点击工程图标后,可以运行此流程图,查看原理图是否有连接错误。图3.3 主板原理图3.2软件实现过程3.2.1 Keil开发环境介绍软件开发主要靠Keil开发环境,单片机开发中除必要的硬件外,同样离不开软件,我们写的汇编语言源程序要变为CPU可以执行的机器码有两种方法,一是机器汇编,另一种是手工汇编,现在已经几乎不使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,早期使用A51软件对MCS-51单机机汇编,从过去使用汇编语言到现在使用高级语言开发,单片机的开发技术一直在革新,用于开发单片机的软件也在一直变化,目前MCS-51系列单片机最流行的开发软件是Keil软件,这从
35、近年来各仿真厂商纷纷宣布全面支持Kei1即可看出。首先创建一个新的工程,然后单击Project菜单栏,在下拉菜单栏里选择New Project选项。如何创建新的工程图如图3.4所示。图3.4 创建新的工程其次选择一个路径作为保存路径,输入工程文件名字,例如文件要保存到C52目录里,把工程命名为C52,然后鼠标点击保存按钮。选择保存路径图如图3.5所示。图3.5 选择保存路径图这时候会弹出一个对话框,要求你要求您选择MCU类型,你可以根据你单片机需要的功能选择单片机,找到想要的型号,点击确定。选择单片机图如图3.6所示。图3.6 选择单片机图到现在为止还没有开始写程序,下面我们开始编写第一个程序
36、,单击“File”菜单,单击下拉菜单中New 选项,则光标闪烁在编辑窗口,这个时候你可以键入用户的应用程序,但建议先保存空白文档,单击菜单的“File”,选择“Save As” 选项,选项单击,在 “文件名 ”栏右侧的编辑框中,键入要使用的文件名,同时,必须键入正确的扩展名。注意,如果用C语言编写程序,则扩展名为(.C)。然后,单机“保存”按键。键入文件名称图如图3.7所示。图3.7 键入文件名称图回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group1”上单击右键,然后单机“Add File to Group Source Group1”。添加文件到Sour
37、ce Group1图如图3.8所示。图3.8 添加文件到Source Group1图3.2.2 源程序代码(1)此部分程序,主要完成对LCD1602液晶的初始化,定时器,中断器和I/O初始化,各管脚定义,程序代价如下所示。#include#include#define uchar unsigned char#define uint unsigned int/*定义LCD1602接口信息*/sbit lcdrs=P30;/数据命令选择位sbit lcden=P31;/使能位sbit lcdrw=P32;/*定义ADC0808接口信息*/sbit ADA=P20;sbit ADB=P21;sbit
38、 ADC=P22;sbit EOC=P23;sbit CLK=P24;sbit START=P25;sbit OE=P26;/*键盘管脚定义*/sbit key1=P33;sbit key2=P37;/*定义数据*/uchar tab1=48,46,48,48,48,46,48,48,48,46,48,48,48,46,48,48;/存放AD采集数据uchar tab2=48,46,48,48,48,46,48,48,48,46,48,48,48,46,48,48;uchar tab3=TONGLU:;uchar tab4=DIANYA:;uchar tab5=12345678;uchar n
39、um,m=0,getdata=0;uint temp=0;/*延时函数*/void delay(uchar t)uchar x,y;for(x=t;x0;x-)for(y=110;y0;y-);void delayl(uchar ltime)uchar i;for(i=ltime;i0;i-)delay(255);/*写命令函数*/void write_com(uchar com)lcdrs=0;P0=com;delay(10);lcden=1;delay(10);lcden=0;/*写数据函数*/void write_data(uchar date)lcdrs=1;P0=date;delay
40、(10);lcden=1;delay(10);lcden=0;void disp(uchar h,l,uchar *p)write_com(0 x80+h*0 x40+l);while(*p!=0)write_data(*p); p+; /*初始化函数*/void LcdInit()lcdrw=0;delay(5);lcden=0;/使能位置低电平 write_com(0 x38);write_com(0 x0c);write_com(0 x06);write_com(0 x01);write_com(0 x80);delayl(20);void TimeInit() TMOD=0 x10;/
41、定时器1工作于方式1,16位不重装初值 TH1=(65536-200)/256; /定时200us(5KHz) TL1=(65536-200)%256; EA=1; ET1=1; TR1=1;(2)ADC0809模数转换器子程序用于将输入的八路模拟电压进行A/D转换,并且把转换的数值存入8个相应的存储单元中,A/D转换子程序每隔一定时间调用一次。ADC0809模数转换器子程序如下所示。void AdTr(bit ADDA,ADDB,ADDC,uchar channel) START=0;OE=0;START=1;START=0;/A/D转换启动信号,正脉冲启动选中的模拟信号开始转换ADA=AD
42、DA;ADB=ADDB;ADC=ADDC;delay(5);while(EOC=0);/启动转换后EOC变为L,转换结束后变为HOE=1;getdata=P1;temp=getdata*1.0/255*500;OE=0;if(channel=4)channel=channel-4;tab24*channel=temp/100+0 x30; tab24*channel+2=(temp%100)/10+0 x30; tab24*channel+3=(temp%100)%10+0 x30;(3)键盘选择通道子程序实现了通过开关按钮选择8路电压通道的目的,每按一次加号按钮通道数加一,每按一次减号按钮通
43、道数减一。键盘选择通道子程序如下所示。void keyscan()/* 按键2进行减1*/ uint k; if(key1=0) m-; if(m5) write_com(0 x80+0 x07); write_data(tab5m-1); write_com(0 x80+0 x47); for(k=0;k=5&m9) write_com(0 x80+0 x07); write_data(tab5m-1); write_com(0 x80+0 x47); for(k=0;k4;k+) write_data(tab24*(m-5)+k); if(m=1)m=1; while(key1=0); /
44、等待按键释放 if(key2=0) m+; if(m5) write_com(0 x80+0 x07); write_data(tab5m-1); write_com(0 x80+0 x47); for(k=0;k=5&m9) write_com(0 x80+0 x07); write_data(tab5m-1); write_com(0 x80+0 x47); for(k=0;k4;k+) write_data(tab24*(m-5)+k); if(m=9)m=0; while(key2=0); /等待按键释放 void main() LcdInit();TimeInit();while(1
45、) AdTr(0,0,0,0); delay(5); AdTr(0,0,1,1); delay(5); AdTr(0,1,0,2); delay(5); AdTr(0,1,1,3); delay(5); AdTr(1,0,0,4); delay(5); AdTr(1,0,1,5); delay(5); AdTr(1,1,0,6); delay(5); AdTr(1,1,1,7); delay(5);disp(0,0,tab3);disp(1,0,tab4);keyscan(); void t1(void) interrupt 3 using 0 TH1=(65536-200)/256; TL1
46、=(65536-200)%256; CLK=CL3.3调试过程3.3.1调试 采用Keil C的C编译器进行C源程序编译及调试,同时进行硬件电路板的设计制作,然后进行软硬件联调,最后进行端口电压的对比测试。测试结果显示测试误差在0.02v以内,这说明8位A/D转换器所能达到的理论误差精度是可信的,完全可以满足一般的应用场合需求。3.3.2 性能分析由于单片机为8位处理器,当输入电压为5.00v时,ADC0809输出数据值为255(FFH),因此单片机最大数值分辨率为0.0196v,这就决定了该电压表的最大分辨率只能达到0.0196v,测试时电压数值的变化一般以0.02的电压幅度变化。如果要获得
47、更高的精度要求,应采用12位或13位的A/D转化器。简易电压表测得的值基本上均比标准的值偏大0.010.02v,这可以通过校正ADC0809的基准电压来解决。因为该电压表设计时直接用5v的供电电源作为基准电压,所以电压有可能有偏差。另外,可以用软件编程来校正测试值。ADC0809的直流输入阻抗为1欧姆,能满足一般的电压测试需求。大连东软信息学院毕业设计(论文)第4章项目成果4.1硬件成果物4.1.1 Proteus简介Proteus软件是一款EDA工具软件,它由英国Labcenter Electronics公司出版。它不仅具有其它EDA仿真工具的功能,而且也仿真微控制器和外围设备。它是最好的微
48、控制器和外围设备的仿真工具。虽然在国内的推广才刚刚起步,但已经吸引了许多单片机爱好者,学校教师等。Proteus是世界领先的仿真工具,从原理图设计,调试单片机及其外围电路协同仿真,一键切换到PCB设计,实现了从虚拟到现实的完美设计。到目前为止是唯一能做到将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。4.1.2 Proteus仿真本设计使用Proteus画出电路图,将编译生成的hex文件加入到单片机中,启动仿真软件进行仿真。此电路以AT89C52单片机为核心,以逐次比较型A/D转换器ADC0809、液晶显示器LCD1602为主体,构造了一款简易的数字电压表,其最终目的是实现由
49、模数转换器将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。多路数字电压表的电压值仿真图如图4.1所示。图4.1 多路数字电压表的电压值仿真图4.1.3 显示结果说明1. 当选择通道1,输入电压值为0V时,显示结果,测量误差为0V。显示结果图1如图4.2所示。图4.2 显示结果图12.当选择通道2,输入电压值为1.60V时,显示结果,测量误差为+0.1V。显示结果图2如图4.3所示。图4.3 显示结果图23. 当选择通道3,输入电压值为2.54V时,显示结果,测量误差为+0.1V。显示结果图3如图4.4所示。图4.4显示结果图34.2软件成果物利用Keil
50、 C,我们进行了对软件代码的编写,主程序结果图如图4.5所示。 ADC0809模数转换程序图如图4.6所示。键盘选择通道程序图如图4.7所示。图4.5主程序结果图图4.6 ADC0809模数转换程序图图4.7键盘选择通道程序图第5章结 论经过本次为期数月的毕业课题设计,使我真正有机会对大学期间所学的专业知识进行了系统的分析总结,从课题的分析设计到最后的硬件电路设计和软件编程设计的实现,都是在老师的指导下,逐渐完成的。本课题设计了一个数字多用表,这种数字多用表以单片机AT89C52作为数据处理主控芯片,并以模数转换芯片ADC0809、液晶显示模块作为外围电路,构成了整个的硬件电路。待测的模拟量首
51、先经过A/D转换模块,转换成为单片机能够识别和处理的数字信号;然后,单片机对此数字信号进行数据处理;最后,测量结果通过显示模块显示出来。可以用来测量电压、电流、电阻,而且还可以进行功能的扩展。本设计中采用液晶LCD1602显示模数转换器采集到的数据,其D0D7与单片机的P0端口连接,使能端E、RS、RW分别与单片机P3.1、P3.0、P3.2连接,此电路原理简单,电路连接方便。本设计中使用了两个独立按键来选择显示对应通道的电压,其中KEY1每按一下通道数就减1并在LCD1602上显示对应通道的电压,KEY2每按一下通道数就加1并在LCD1602上显示对应通道的电压,这样就十分方便查看不同通道的数据。此次设计的多通道数据采集系统设置了8路模拟电压输入通道。仿真中为了便于调节输入的模拟电压,在输入模拟信号时采用电阻分压,最终的采样输入电压便可根据测试需要调节。根据方案设计结果,进行了
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 西安车辆管理制度图片大全(3篇)
- 餐厅十一活动策划方案(3篇)
- 飞机安全出口课件
- 2026广西钦州市灵山县金鑫供销集团有限公司招聘3人备考考试题库及答案解析
- 2026河北雄安新区应急管理协会招聘1人笔试备考试题及答案解析
- 儿童股骨骨折的牵引治疗与护理
- 2026湛江农商银行校园招聘15人备考考试题库及答案解析
- 2026年普洱市广播电视局招聘公益性岗位工作人员(2人)备考考试试题及答案解析
- 2026年1月广东广州市天河第一小学招聘编外聘用制专任教师1人笔试备考题库及答案解析
- 2026重庆西南大学附属中学招聘备考考试题库及答案解析
- 超声科工作总结与计划
- 旅居养老策划方案
- T-CRHA 089-2024 成人床旁心电监测护理规程
- DBJ52T 088-2018 贵州省建筑桩基设计与施工技术规程
- 专题15 物质的鉴别、分离、除杂、提纯与共存问题 2024年中考化学真题分类汇编
- 小区房屋维修基金申请范文
- 武汉市江岸区2022-2023学年七年级上学期期末地理试题【带答案】
- 中职高二家长会课件
- 复方蒲公英注射液在痤疮中的应用研究
- 淮安市2023-2024学年七年级上学期期末历史试卷(含答案解析)
- 家长要求学校换老师的申请书
评论
0/150
提交评论