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

上传人:1888****888 文档编号:38385786 上传时间:2021-11-06 格式:DOC 页数:31 大小:433.95KB
返回 下载 相关 举报
基于单片机的数字电压表设计_第1页
第1页 / 共31页
基于单片机的数字电压表设计_第2页
第2页 / 共31页
基于单片机的数字电压表设计_第3页
第3页 / 共31页
点击查看更多>>
资源描述
南 京 理 工 大 学 本科生毕业设计(论文)学院(系): 专 业: 电气工程及其自动化学 生: XX 指导教师: XX 完成日期 2012 年 5 月南京理工大学本科生毕业设计(论文)基于单片机的数字电压表设计基于单片机的数字电压表设计 Design of Digital Voltmeter Based On Single-chip Microcontroller总 计: 30 页表 格: 4 个插 图: 16 幅南南 京京 理理 工工 大大 学学 本本 科科 毕毕 业业 设设 计(论文)计(论文)基于单片机的数字电压表设计基于单片机的数字电压表设计 Design of Digital Voltmeter Based On Single-chip Microcontroller学 院(系): 中国矿业大学 专 业: 信息工程 学 生 姓 名: 钟易桃 汪志攀 左唯一 学 号: 指 导 教 师(职称): 评 阅 教 师: 完 成 日 期: 2014.11.10 基于单片机的数字电压表设计基于单片机的数字电压表的设计 摘 要 本文介绍了一种基于单片机的数字电压表的设计。该设计主要由三个模块组成:A/D 转换模块,数据处理模块及显示模块。A/D 转换主要由芯片 ADC0808 来完成,它负责把采集到的模拟量转换为相应的数字量再传送到数据处理模块。数据处理则由芯片 ATC89C51 来完成,其负责把 ADC0808 传送来的数字量经过一定的数据处理,产生相应的显示码送到显示模块进行显示;此外,它还控制着 ADC0808 芯片工作。该系统的数字电压表电路简单,所用的元件较少,成本低,且测量精度和可靠性较高。此数字电压表经过 proteus 软件仿真和调试,可以测量 0-5V 的 1 路模拟直流输入电压值,并通过一个四位一体的 7 段数码管显示出来。 关键词 数字电压表;A/D 转换;AT89C51;ADC0808;proteusDesign of Digital Voltmeter Based On Single-chip MicrocontrollerElectrical Engineering and Automation Speciality Sun KunAbstract: This paper introduces a kind of digital voltmeter based on single chip design. This design mainly contains three modules: A/D conversion module, data processing module and display module. A/D transformation mainly contains the chip ADC0808 to complete, it is responsible for the collection of the analog conversion to the corresponding digital quantity to transmitting for data processing module. Data processing iscompleted by the chip ATC89C51 , which is responsible for the ADC0808 transmit to the digital quantity after certain data processing, has the corresponding display code to display module display; In addition, it still controls the ADC0808 chips work. The system of the digital voltmeter circuit is simple, the components of the less, low cost, and the measured precision and high reliability. The digital voltmeter through the proteus software simulation and test, can measure 0-5 V 1 road simulation input dc voltage value, and through a four one of the seven section digital tube for display.Key words : Digital Voltmeter; A/Dconverter ; AT89C51; ADC0808;Proteus基于单片机的数字电压表设计I目 录1 引言 .11.1 数字电压表的发展现状 .11.2 本课题研究的主要内容 .12 设计总体方案 .12.1 设计要求 .12.2 设计思路 .22.3 设计方案 .23 硬件电路设计 .23.1 A/D 转换模块 .23.1.1 逐次逼近型 A/D 转换器原理.33.1.2 ADC0808 主要特性 .33.1.3 ADC0808 的外部引脚特征 .33.1.4 ADC0808 的内部结构及工作流程 .53.2 单片机系统 .63.2.1 AT89C51 性能 .63.2.2 AT89C51 各引脚功能 .63.3 复位电路和时钟电路 .83.3.1 复位电路设计.83.3.2 时钟电路设计.93.4 LED 显示系统设计 .93.4.1 LED 基本结构 .93.4.2 LED 显示器的选择 .103.4.3 LED 译码方式 .113.4.4 LED 显示器与单片机接口设计 .113.5 总体电路设计 .124 程序设计 .134.1 程序设计总方案 .134.2 系统子程序设计 .144.2.1 初始化程序.144.2.2 A/D 转换子程序 .144.2.3 显示子程序.144.3 仿真 .154.3.1 软件调试 .15基于单片机的数字电压表设计II4.3.2 显示结果及误差分析 .15结束语 .18参考文献 .19附录 .20致谢 .23基于单片机的数字电压表设计01 引言1.1 数字电压表的发展现状在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表简称 DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读数准确方便、精度高、误差小、测量速度快等特而得到广泛应用1。 传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与 PC 实时通信。数字电压表是诸多数字化仪表的核心与基础2。以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。目前,由各种单片机和 A/D 转换器构成的数字电压表作全面深入的了解是很有必要的。最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型4。数字电压表从 1952 年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC 化) ,另一方面,精度也从 0.01%-0.005%。目前,数字电压表的内部核心部件是 A/D 转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面3。1.2 本课题研究的主要内容本文是以数字直流电压表的设计为研究内容,本系统主要包括三大模块:转换模块、数据处理模块及显示模块。其中,A/D 转换采用 ADC0808 对输入的模拟信号进行转换,控制核心 STC89C51 再对转换的结果进行运算处理,最后驱动输出装置 LED 显示数字电压信号11。2 设计总体方案基于单片机的数字电压表设计12.1 设计要求 以 MCS-51 系列单片机为核心器件,组成一个简单的直流数字电压表。采用 1 路模拟量输入,能够测量 0-5V 之间的直流电压值。电压显示用 4 位一体的 LED 数码管显示,至少能够显示两位小数。 尽量使用较少的元器件。 2.2 设计思路根据设计要求,选择 ATC89C51 单片机为核心控制器件。A/D 转换采用 ADC0808 实现,与单片机的接口为 P1 口和 P2 口的高四位引脚。电压显示采用 4 位一体的 LED 数码管。LED 数码的段码输入,由并行端口 P0 产生:位码输入,用并行端口 P2 低四位产生。2.3 设计方案硬件电路设计由 6 个部分组成; A/D 转换电路,AT89C51 单片机系统,LED 显示系统、时钟电路、复位电路以及测量电压输入电路。硬件电路设计框图如图 1 所示。 时钟电路 复位电路A/D 转换电路测量电压输入显示系统AT89C51 P1 P2 P2 P0 图 1 数字电压表系统硬件设计框图3 硬件电路设计3.1 A/D 转换模块现实世界的物理量都是模拟量,能把模拟量转化成数字量的器件称为模/数转换器(A/D 转换器) ,A/D 转换器是单片机数据采集系统的关键接口电路,按照各种 A/D 芯基于单片机的数字电压表设计2片的转化原理可分为逐次逼近型,双重积分型等等。双积分式 A/D 转换器具有抗干扰能力强、转换精度高、价格便宜等优点。与双积分相比,逐次逼近式 A/D 转换的转换速度更快,而且精度更高,比如 ADC0809、ADC0808 等,它们通常具有 8 路模拟选通开关及地址译码、锁存电路等,它们可以与单片机系统连接,将数字量送到单片机进行分析和显示。一个 n 位的逐次逼近型 A/D 转换器只需要比较 n 次,转换时间只取决于位数和时钟周期,逐次逼近型 A/D 转换器转换速度快,因而在实际中广泛使用1。3.1.1 逐次逼近型 A/D 转换器原理逐次逼近型 A/D 转换器是由一个比较器、A/D 转换器、存储器及控制电路组成。它利用内部的寄存器从高位到低位一次开始逐位试探比较。转换过程如下:开始时,寄存器各位清零,转换时,先将最高位置 1,把数据送入 A/D 转换器转换,转换结果与输入的模拟量比较,如果转换的模拟量比输入的模拟量小,则 1 保留,如果转换的模拟量比输入的模拟量大,则 1 不保留,然后从第二位依次重复上述过程直至最低位,最后寄存器中的内容就是输入模拟量对应的二进制数字量5。其原理框图如图 2 所示:顺序脉冲发生器主次逼近寄存器ADC输入数字量输入电压电压比较器图 2 逐次逼近式 A/D 转换器原理图3.1.2 ADC0808 主要特性ADC0808 是 CMOS 单片型逐次逼近式 A/D 转换器,带有使能控制端,与微机直接接口,片内带有锁存功能的 8 路模拟多路开关,可以对 8 路 0-5V 输入模拟电压信号分时进行转换,由于 ADC0808 设计时考虑到若干种模/数变换技术的长处,所以该芯片非常适应于过程控制,微控制器输入通道的接口电路,智能仪器和机床控制等领域5。ADC0808 主要特性:8 路 8 位 A/D 转换器,即分辨率 8 位;具有锁存控制的 8 路模拟开关;易与各种微控制器接口;可锁存三态输出,输出与 TTL 兼容;转换时间:128s;转换精度:0.2%;单个+5V 电源供电;模拟输入电压范围 0- +5V,无需外部零点和满度调整;低功耗,约15mW6。3.1.3 ADC0808 的外部引脚特征 ADC0808 芯片有 28 条引脚,采用双列直插式封装,其引脚图如图 3 所示。基于单片机的数字电压表设计3图 3 ADC0808 引脚图下面说明各个引脚功能:IN0-IN7(8 条):8 路模拟量输入线,用于输入和控制被转换的模拟电压。地址输入控制(4 条):ALE:地址锁存允许输入线,高电平有效,当 ALE 为高电平时,为地址输入线,用于选择 IN0-IN7 上那一条模拟电压送给比较器进行 A/D 转换。ADDA,ADDB,ADDC:3 位地址输入线,用于选择 8 路模拟输入中的一路,其对应关系如表 1 所示: 表 1 ADC0808 通道选择表地址码 C B A 对应的输入通道0 0 0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 IN0 IN1 IN2 IN3 IN4 IN5 IN6 IN7 START:START 为“启动脉冲”输入法,该线上正脉冲由 CPU 送来,宽度应大于100ns,上升沿清零 SAR,下降沿启动 ADC 工作。EOC: EOC 为转换结束输出线,该线上高电平表示 A/D 转换已结束,数字量已锁入三态输出锁存器。基于单片机的数字电压表设计4D1-D8:数字量输出端,D1 为高位。OE:OE 为输出允许端,高电平能使 D1-D8 引脚上输出转换后的数字量。REF+、REF-:参考电压输入量,给电阻阶梯网络供给标准电压。Vcc、GND: Vcc 为主电源输入端,GND 为接地端,一般 REF+与 Vcc 连接在一起,REF-与 GND 连接在一起。 CLK:时钟输入端。3.1.4 ADC0808 的内部结构及工作流程ADC0808 由 8 路模拟通道选择开关,地址锁存与译码器,比较器,8 位开关树型A/D 转换器,逐次逼近型寄存器,定时和控制电路和三态输出锁存器等组成,其内部结构如图 4 所示。图 4 ADC0808 的内部结构其中:(1)8 路模拟通道选择开关实现从 8 路输入模拟量中选择一路送给后面的比较器进行比较。(2)地址锁存与译码器用于当 ALE 信号有效时,锁存从 ADDA、ADDB、ADDC 3 根地址线上送来的 3 位地址,译码后产生通道选择信号,从 8 路模拟通道中选择当前模拟通道。(3)比较器,8 位开关树型 A/D 转换器,逐次逼近型寄存器,定时和控制电路组成 8 位 A/D 转换器,当 START 信号有效时,就开始对当前通道的模拟信号进行转换,转换完成后,把转换得到的数字量送到 8 位三态锁存器,同时通过引脚送出转换结束信号。(4)三态输出锁存器保存当前模拟通道转换得到的数字量,当 OE 信号有效时,基于单片机的数字电压表设计5把转换的结果送出。ADC0808 的工作流程为:(1)输入 3 位地址,并使 ALE=1,将地址存入地址锁存器中,经地址译码器从 8 路模拟通道中选通 1 路模拟量送给比较器。(2)送 START 一高脉冲,START 的上升沿使逐次寄存器复位,下降沿启动 A/D 转换,并使 EOC 信号为低电平。(3)当转换结束时,转换的结果送入到输出三态锁存器中,并使 EOC 信号回到高电平,通知 CPU 已转换结束。(4)当 CPU 执行一读数据指令时,使 OE 为高电平,则从输出端 D0-D7 读出数据。3.2 单片机系统3.2.1 AT89C51 性能AT89C51 是美国 ATMEL 公司生产的低电压,高性能 CMOS8 位单片机,片内含有 4KB的可反复擦写的只读程序存储器和 128 字节的随机存储器。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容,由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 AT89C51 是一种高效微控制器,它为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89C51 功能性能:与 MCS-51 成品指令系统完全兼容;4KB 可编程闪速存储器;寿命:1000 次写/擦循环;数据保留时间:10 年;全静态工作:0-24MHz;三级程序存储器锁定;128*8B 内部 RAM;32 个可编程 I/O 口线;2 个 16 位定时/计数器;5 个中断源;可编程串行 UART 通道;片内震荡器和掉电模式6。 3.2.2 AT89C51 各引脚功能AT89C51 提供以下标准功能:4KB 的 Flash 闪速存储器,128B 内部 RAM,32 个 I/O口线,两个 16 位定时/计数器,一个 5 向量两级中断结构,一个全双工串行通信口,片内震荡器及时钟电路,同时,AT89C51 可降至 0Hz 静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继续工作,掉电方式保存 RAM 中的内容,但震荡器停止工作并禁止其他所有工作直到下一个硬件复位。AT89C51 采用 PDIP 封装形式,引脚配置如图 5 所示7。基于单片机的数字电压表设计6图 5 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 使用时,需要在外部用电阻上拉。P1 口:这 8 个引脚和 P0 口的 8 个引脚类似,P1.7 为最高位,P1.0 为最低位,当P1 口作为通用 I/O 口使用时,P1.0-P1.7 的功能和 P0 口的第一功能相同,也用于传送用户的输入和输出数据。P2 口:这组引脚的第一功能与上述两组引脚的第一功能相同即它可以作为通用I/O 口使用,它的第一功能和 P0 口引脚的第二功能相配合,用于输出片外存储器的高8 位地址,共同选中片外存储器单元,但并不是像 P0 口那样传送存储器的读/写数据。P3 口:这组引脚的第一功能和其余三个端口的第一功能相同,第二功能为控制功能,每个引脚并不完全相同,如下表 2 所示:基于单片机的数字电压表设计7表 2 P3 口各位的第二功能P3 口各位第二功能P3.0 RXT(串行口输入)P3.1 TXD(串行口输出)P3.2/INT0(外部中断 0 输入)P3.3/INT1(外部中断 1 输入)P3.4T0(定时器/计数器 0 的外部输入)P3.5T1(定时器/计数器 1 的外部输入)P3.6/WR(片外数据存储器写允许)P3.7/RD(片外数据存储器读允许)Vcc 为+5V 电源线,Vss 接地。ALE:地址锁存允许线,配合 P0 口的第二功能使用,在访问外部存储器时,89C51的 CPU 在 P0.0-P0.7 引脚线去传送随后而来的片外存储器读/写数据。在不访问片外存储器时,89C51 自动在 ALE 线上输出频率为 1/6 震荡器频率的脉冲序列。该脉冲序列可以作为外部时钟源或定时脉冲使用。/EA:片外存储器访问选择线,可以控制 89C51 使用片内 ROM 或使用片外 ROM,若/EA=1,则允许使用片内 ROM, 若/EA=0,则只使用片外 ROM。/PSEN:片外 ROM 的选通线,在访问片外 ROM 时,89C51 自动在/PSEN 线上产生一个负脉冲,作为片外 ROM 芯片的读选通信号。RST:复位线,可以使 89C51 处于复位(即初始化)工作状态。通常 89C51 复位有自动上电复位和人工按键复位两种。XTAL1 和 XTAL2:片内震荡电路输入线,这两个端子用来外接石英晶体和微调电容,即用来连接 89C51 片内 OSC(震荡器)的定时反馈回路。3.3 复位电路和时钟电路3.3.1 复位电路设计单片机在启动运行时都需要复位,使 CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作。MCS-51 单片机有一个复位引脚 RST,采用施密特触发输入。当震荡器起振后,只要该引脚上出现 2 个机器周期以上的高电平即可确保时器件复位1。复位完成后,如果 RST 端继续保持高电平,MCS-51 就一直处于复位状态,只要 RST 恢复低电平后,单片机才能进入其他工作状态。单片机的复位方式有上电自基于单片机的数字电压表设计8动复位和手动复位两种,图 6 是 51 系列单片机统常用的上电复位和手动复位组合电路,只要 Vcc 上升时间不超过 1ms,它们都能很好的工作1。图 6 复位电路3.3.2 时钟电路设计单片机中 CPU 每执行一条指令,都必须在统一的时钟脉冲的控制下严格按时间节拍进行,而这个时钟脉冲是单片机控制中的时序电路发出的。CPU 执行一条指令的各个微操作所对应时间顺序称为单片机的时序。MCS-51 单片机芯片内部有一个高增益反相放大器,用于构成震荡器,XTAL1 为该放大器的输入端,XTAL2 为该放大器输出端,但形成时钟电路还需附加其他电路1。本设计系统采用内部时钟方式,利用单片机内部的高增益反相放大器,外部电路简单,只需要一个晶振和 2 个电容即可,如图 7 所示。图 7 时钟电路电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数,电路中,电容器 C1 和 C2 对震荡频率有微调作用,通常的取值范围是 3010pF,在这个系统中选择了 33pF;石英晶振选择范围最高可选 24MHz,它决定了单片机电路产生的时钟信号震荡频率,在本系统中选择的是 12MHz,因而时钟信号的震荡频率为12MHz。3.4 LED 显示系统设计3.4.1 LED 基本结构LED 是发光二极管显示器的缩写。LED 由于结构简单、价格便宜、与单片机接口方基于单片机的数字电压表设计9便等优点而得到广泛应用。LED 显示器是由若干个发光二极管组成显示字段的显示器件6。在单片机中使用最多的是七段数码显示器。LED 七段数码显示器由 8 个发光二极管组成显示字段,其中 7 个长条形的发光二极管排列成“日”字形,另一个圆点形的发光二极管在显示器的右下角作为显示小数点用,其通过不同的组合可用来显示各种数字。LED 引脚排列如下图 8 所示:图 8 LED 引脚排列3.4.2 LED 显示器的选择在应用系统中,设计要求不同,使用的 LED 显示器的位数也不同,因此就生产了位数,尺寸,型号不同的 LED 显示器供选择,在本设计中,选择 4 位一体的数码型 LED显示器,简称“4-LED” 。本系统中前一位显示电压的整数位,即个位,后两位显示电压的小数位。4-LED 显示器引脚如图 9 所示,是一个共阴极接法的 4 位 LED 数码显示管,其中a,b,c,e,f,g 为 4 位 LED 各段的公共输出端,1、2、3、4 分别是每一位的位数选端,dp 是小数点引出端,4 位一体 LED 数码显示管的内部结构是由 4 个单独的 LED 组成,每个 LED 的段输出引脚在内部都并联后,引出到器件的外部。图 9 4 位 LED 引脚基于单片机的数字电压表设计10对于这种结构的 LED 显示器,它的体积和结构都符合设计要求,由于 4 位 LED 阴极的各段已经在内部连接在一起,所以必须使用动态扫描方式(将所有数码管的段选线并联在一起,用一个 I/O 接口控制)显示。3.4.3 LED 译码方式译码方式是指由显示字符转换得到对应的字段码的方式,对于 LED 数码管显示器,通常的译码方式有硬件译码和软件译码方式两种。硬件译码是指利用专门的硬件电路来实现显示字符码的转换。软件译码就是编写软件译码程序,通过译码程序来得到要显示的字符的字段码,译码程序通常为查表程序3。本设计系统中为了简化硬件线路设计,LED 译码采用软件编程来实现。由于本设计采用的是共阴极 LED,其对应的字符和字段码如下表 3.3 所示。表 3.3 共阴极字段码表显示字符共阴极字段码03FH106H25BH34FH466H56DH67DH707H87FH96FH3.4.4 LED 显示器与单片机接口设计由于单片机的并行口不能直接驱动 LED 显示器,所以,在一般情况下,必须采用专用的驱动电路芯片,使之产生足够大的电流,显示器才能正常工作7。如果驱动电路能力差,即负载能力不够时,显示器亮度就低,而且驱动电路长期在超负荷下运行容易损坏,因此,LED 显示器的驱动电路设计是一个非常重要的问题。为了简化数字式直流电压表的电路设计,在 LED 驱动电路的设计上,可以利用单片机 P0 口上外接的上拉电阻来实现,即将 LED 的 A-G 段显示引脚和 DP 小数点显示引脚并联到 P0 口与上拉电阻之间,这样,就可以加大 P0 口作为输出口的驱动能力,使得 LED 能按照正常的亮度显示出数字,如图 10 所示。基于单片机的数字电压表设计11图 10 LED 与单片机接口间的设计3.5 总体电路设计经过以上的设计过程,可设计出基于单片机的数字直流电压表硬件电路原理图如图 11 所示。图 11 基于单片机的数字电压表 proteus 仿真基于单片机的数字电压表设计12此电路的工作原理是:+5V 模拟电压信号通过变阻器 VR1 分压后由 ADC08008 的IN7 通道进入(由于使用的 IN0 通道,所以 ADDA,ADDB,ADDC 均接低电平) ,经过模/数转换后,产生相应的数字量经过其输出通道 D0-D7 传送给 AT89C51 芯片的 P1 口,AT89C51 负责把接收到的数字量经过数据处理,产生正确的 7 段数码管的显示段码传送给四位 LED,同时它还通过其四位 I/O 口 P2.0、P2.1、P2.2、P2.3 产生位选信号控制数码管的亮灭。此外,AT89C51 还控制 ADC0808 的工作。其中,单片机 AT89C51 通过定时器中断从 P2.4 输出方波,接到 ADC0808 的 CLOCK,P2.6 发正脉冲启动 A/D 转换,P2.5 检测 A/D 转换是否完成,转换完成后,P2.7 置高从 P1 口读取转换结果送给 LED显示出来3。数字直流电压表的硬件电路已经设计完成,就可以选取相应的芯片和元器件,利用 Proteus 软件绘制出硬件的原理,并仔细地检查修改,直至形成完善的硬件原理图。但要真正实现电路对电压的测量和显示的功能,还需要有相应的软件配合,才能达到设计要求。4 程序设计4.1 程序设计总方案根据模块的划分原则,将该程序划分初始化模块,A/D 转换子程序和显示子程序,这三个程序模块构成了整个系统软件的主程序,如图 12 所示。开始调用A/D转换子程序调用显示子程序结束初始化基于单片机的数字电压表设计13图 12 数字式直流电压表主程序框图4.2 系统子程序设计4.2.1 初始化程序所谓初始化,是对将要用到的 MCS-51 系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等9。4.2.2 A/D 转换子程序A/D 转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图 13 所示。启动转换A/D 转换结束?输出转换结果数值转换显示结束图 13 A/D 转换流程图4.2.3 显示子程序显示子程序采用动态扫描实现四位数码管的数值显示,在采用动态扫描显示方式时,要使得 LED 显示的比较均匀,又有足够的亮度,需要设置适当的扫描频率,当扫描频率在 70HZ 左右时,能够产生比较好的显示效果,一般可以采用间隔 10ms 对 LED开始基于单片机的数字电压表设计14进行动态扫描一次,每一位 LED 的显示时间为 1ms10。在本设计中,为了简化硬件设计,主要采用软件定时的方式,即用定时器 0 溢出中断功能实现 11s 定时,通过软件延时程序来实现 5ms 的延时。4.3 仿真4.3.1 软件调试软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。Proteus 软件可以对基于微控制器的设计连同所有的周围电子器件一起仿真,用户甚至可以实时采用诸如 LED/LCD、键盘、RS232 终端等动态外设模型来对设计进行交互仿真。Proteus 支持的微处理芯片包括 8051 系列、AVR 系列、PIC 系列、HC11 系列及 Z80 等等。Proteus可以完成单片机系统原理图电路绘制、PCB 设计,更为显著点的特点是可以与 u Visions3 IDE 工具软件结合进行编程仿真调试8。本系统的调试主要以软件为主,其中,系统电路图的绘制和仿真我采用的是Proteus 软件,而程序方面,采用的是汇编语言,用 Keil 软件将程序写入单片机。4.3.2 显示结果及误差分析显示结果 1.当 IN0 输入电压值为 0.40V 时,显示结果如图 15 所示。测量误差为 0.00V。基于单片机的数字电压表设计15图 15 输入电压为 0.40V 时,LED 的显示结果为 400mv2. 当 IN0 口输入电压值为 3.00V 时,显示结果如图 16。测量误差为 0.06V。基于单片机的数字电压表设计16图 16 输入电压为 3.00V 时,LED 的显示结果为 3060mv误差分析通过以上仿真测量结果可得到数字电压表与“标准”数字电压表对比测试表,如下表 4 所示表 4 简易数字电压表与“标准”数字电压表对比测试表基于单片机的数字电压表设计17标准电压值/V电压表测量值/V绝对误差0.000.000.000.500.520.021.001.020.021.501.540.042.002.400.042.502.540.043.003.060.063.503.560.064.004.080.085.005.100.10由于单片机 AT89C51 为 8 位处理器,当输入电压为 5.00V 时,ADC0808 输出数据值为 255(FFH) ,因此单片机最高的数值分辨率为 0.0196V(5/255)。这就决定了电压表的最高分辨率只能到 0.0196V,从上表可看到,测试电压一般以 0.01V 的幅度变化。从上表可以看出,简易数字电压表测得的值基本上比标准电压值偏大 0-0.01V,这可以通过校正 ADC0808 的基准电压来解决。因为该电压表设计时直接用 5V 的供电电源作为电压,所以电压可能有偏差。当要测量大于 5V 的电压时,可在输入口使用分压电阻,而程序中只要将计算程序的除数进行调整就可以了。基于单片机的数字电压表设计18结束语经过一段时间的努力,毕业论文基于单片机的数字电压表基本完成。但设计中的不足之处仍然存在。在电路中用 Proteus 软件实现了仿真,在这过程中,使我对电路设计和单片机的使用等都有了新的认识。通过这次设计学会了 Proteus 和 Keil 软件的使用方法,掌握了从系统的需要、方案的设计、功能模块的划分、原理图的设计和电路图的仿真的设计流程,积累了不少经验。基于单片机的数字电压表使用性强、结构简单、成本低、外接元件少。在实际应用工作应能好,测量电压准确,精度高。系统功能、指标达到了课题的预期要求、系统在硬件设计上充分考虑了可扩展性,经过一定的改造,可以增加功能。本文设计主要实现了数字电压表测量一路电压的功能,详细说明了从原理图的设计、电路图的仿真再到软件的调试。通过本次设计,我对单片机这门课有了进一步的了解。无论是在硬件连接方面还是在软件编程方面。本次设计采用了 STC89C51 单片机芯片,与以往的单片机相比增加了许多新的功能,使其功能更为完善,应用领域也更为广泛。设计中还用到了模/数转换芯片 ADC0808,以前在学单片机课程时只是对其理论知识有了初步的理解。通过这次设计,对它的工作原理有了更深的理解。在调试过程中遇到很多问题,最后和老师同学一步一个脚印解决了一个又一个问题。总之这次电路的设计和仿真,基本上达到了设计的功能要求。在以后的实践中,我将继续努力学习电路设计方面的理论知识,并理论联系实际,争取在电路设计方面能有所提升。基于单片机的数字电压表设计19参考文献1 胡健.单片机原理及接口技术.北京:机械工业出版社,2004 年 10 月2 王毓银.数字电路逻辑设计.高等教育出版社,2005 年 12 月3 于殿泓.单片机原理与程序设计实验教程.西安电子科技大学出版社,2007 年 5 月4 谢维成、杨加国.单片机原理与应用及 C51 程序设计实例.电子工业出版社,2006 年 3 月5 李广弟.单片机基础.北京航空航天大学出版社,2007 年 5 月6 姜志海,黄玉清等著.单片机原理及应用M .北京:电子工业出版社.2005 年 7 月 7 魏立峰.单片机原理及应用技术.北京大学出版社,2005 年 8 月8 周润景.Protues 在 MCS-51&ARM7 系统中的应用百例.北京:电子工业出版社,2006 年9 边春远.MCS-51 单片机应用开发实用子程序M .北京:人民邮电出版社.2005 年 9 月10 PMartinotLagarde and IDozov,SPIE Proc,Bejing,2003.4:101-19011 Dozov eta1 Recent improvement of thebistable nematic displays switched byanchoring breaking.SID Symposium DigestTech Papers,Shanghai,2001.10:109-130基于单片机的数字电压表设计20附录程序代码LED_0EQU 30H;个位LED_1EQU 31H;十位LED_2EQU 32H;百位LED_3EQU 33H;存放千位段码ADCEQU 35HCLOCKBIT P1.4;定义 0809 时钟位STBIT P1.5EOCBIT P1.6OEBIT P1.7ORG 00HSJMPSTARTORG 0BHLJMPINT_T0ORG 30HSTART:MOV LED_0,#00HMOV LED_1,#00HMOV LED_2,#00HMOV DPTR,#TABLE ;段码表首地址MOV TMOD,#02HMOV TH0,#245MOV TL0,#00HMOV IE,#82HSETBTR0WAIT:CLR STSETBSTCLR ST;启动 AD 转换JNB EOC,$;等待转换结果SETBOEMOV ADC,P2;读取 AD 转换结果CLR OEMOV A,ADC;AD 转换结果转换成 BCD 码MOV R7,A基于单片机的数字电压表设计21MOV LED_3,#00HMOV LED_2,#00HMOV A,#00HLOOP1:ADD A,#20H;一位二进制码对应 20mV 电压值DAAJNC LOOP2MOV R4,AINC LED_2MOV A,LED_2CJNEA,#0AH,LOOP4MOV LED_2,#00HINC LED_3LOOP4:MOV A,R4LOOP2:DJNZR7,LOOP1ACALLBTOD1LCALLDISPSJMPWAITORG 200HBTOD1:MOV R6,AANL A,#0F0HMOV R5,#4LOOP3:RRADJNZR5,LOOP3MOV LED_1,AMOV A,R6ANL A,#0FHMOV LED_0,ARETINT_T0:CPL CLOCK;提供 0809 时钟信号RETIDISP:MOV A,LED_0;显示子程序MOVCA,A+DPTRCLR P1.3MOV P0,ALCALLDELAYSETBP1.3基于单片机的数字电压表设计22MOV A,LED_1MOVCA,A+DPTRCLR P1.2MOV P0,ALCALLDELAYSETBP1.2MOV A,LED_2MOVCA,A+DPTRCLR P1.1MOV P0,ALCALLDELAYSETBP1.1MOV A,LED_3MOVCA,A+DPTRCLR P1.0MOV P0,ALCALLDELAYSETBP1.0RETDELAY:MOV R6,#10;延时 5msD1:MOV R7,#250DJNZR7,$DJNZR6,D1RETTABLE:DB3FH,06H,5BH,4FH,66H ;共阴数码管 7 段值DB6DH,7DH,07H,7FH,6FHEND基于单片机的数字电压表设计23致谢经过一段时间的不懈努力,本次毕业设计即将接近尾声,这次设计电路,由于知识及经验的匮乏,难免遇到很多困难,如果没有导师的督促指导以及同学们的支持,很难顺利的完成此次毕业设计。从开始选题到论文的顺利完成,都离不开老师、同学、朋友给以的帮助,在这里请接受我的谢意!首先,在本次毕业设计过程中,从选题、构思、资料收集到最后定稿的各个环节给予细心指引与教导,使我对课程的多方面的知识有了深刻的认识,使我得以最终完成毕业设计,在此表示衷心感谢。其次,感谢一起做毕业设计的同学们,感谢你们给我的帮助和鼓励,感谢你们在我遇到困难时所给的帮助,正是有了你们的帮助和鼓励,此次毕业设计才得以顺利的完成。最后,对大学四年以来曾经关心支持过我的老师、同学,特别是我的亲爱的室友们送上最真诚的谢意。对于给我们提供了良好学习环境大学,更是充满了感激,由于母校的培养,才使我成长为一个合格的大学生。
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸下载 > CAD图纸下载


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!