《数字电压表设计_毕业设计论文.doc》由会员分享,可在线阅读,更多相关《数字电压表设计_毕业设计论文.doc(44页珍藏版)》请在三一文库上搜索。
1、摘摘 要要 随着电子科学技术的发展,电子测量成为广大电子工作者 必须掌握的手段,对测量的精度和功能的要求也越来越高,而 电压的测量甚为突出。传统的指针式电压表功能单一、精度低, 不能满足数字化时代的需求,而采用单片机的数字电压表,由 于精度高、抗干扰能力强,可扩展性强、集成方便,还可与 PC 进行实时通信数字电压表是采用数字化测量技术。 该设计主要由四个模块组成:A/D 转换模块,数据处理模 块、显示模块及独立键盘模块。A/D 转换主要由芯片 ADC0809 来完成,它负责把采集到的模拟量转换为相应的数字量在传送 到数据处理模块。数据处理则由芯片 AT89C52 来完成,它控制 着 ADC08
2、09 芯片工作,还负责把 ADC0809 传送来的数字量经过 一定的数据处理,产生相应的显示码送到显示模块进行显示。 本设计通过 A/D 转换模块,数据处理模块及显示模块,实 现了对模拟电压的转换,并通过软件实现了在数码管上显示。 虽然有一点误差,但基本实现了技术指标中的要求。 关键词关键词:数字电压表;模数转换;AT89S52;ADC0809 2 ABSTRACTABSTRACT With the development of electronic technology, electronic measurement electronics workers must become the m
3、aster of the method, the measurement accuracy and functional requirements are increasingly high, while the voltage measurement is very prominent. function pointer voltmeter traditional single, low accuracy, can not meet the demand of digital era, and the use of singlechip digital voltage meter, beca
4、use of high accuracy, strong anti-interference ability, expansibility, convenient integration with pc, can communicate in real time digital voltage meter is used in digital measurement technology. The design consists of three main modules: a/d conversion module, data processing module and display mo
5、dule. a/d conversion is mainly completed by the adc0809, it is responsible to collect the analog conversion to digital quantity corresponding to the transmitted to the data processing module. data processing is mainly completed by the at89c52 chip, it 3 controls the adc0809 chip, is also responsible
6、 for the digital adc0809 transmission after data processing, the generated code to display the display module to display the corresponding. This design through the a/d conversion, data processing module and display module, realizes the conversion of the analog voltage, and realized by software in th
7、e digital tube display. although there is a little bit error, but the basic realization of the technical index requirements. KeyKey wordswords: digital voltage;a/d conversion;at89s52;adc0809 4 目目 录录 1 总体设计.6 1.1 设计目的 .6 1.2 功能要求 .6 1.3 系统设计 .6 1.4 设计思路 .6 1.5 设计方案 .6 1.6 总体设计框图 .7 2 硬件电路设计.8 2.1 核心元
8、器件介绍 .8 2.2 其它部分电路介绍 11 2.3 电路原理图、CAD 电路原理图、PCB 图、元件布局图 .12 2.4 元件清单 12 3 软件设计13 3.1 ADC0809 模块 .13 3.2 单片机模块 13 3.3 按键模块 13 3.4 显示模块 13 3.5 程序流程图 13 3.6 程序清单 16 5 3.7 程序说明 16 4 调试仿真及结论17 4.1 仿真结果 17 4.2 设计体会 18 4.3 教学建议 18 结束语.19 致 谢.20 参考文献.21 附 录.21 附录 A 原理图 22 附录 B PCB .22 附录 C CAD 图 25 附录 D 元器件
9、布局图 26 附录 E 元件清单 27 附录 F 程序清单 28 6 1 1 总体设计总体设计 1.1 设计目的 利用 52 单片机及 ADC0809 核心元件制作数字电压表,精确 到小数点后两位,且更好加强与巩固单片机技术及其应用。 1.2 功能要求 设计一个能够测量直流电压的数字电压表。测量电压范围 05V,测量精度小数点后两位。该电压表上电或按键复位后 能自动显示系统提示符 “P.”,进入测量准备状态,按测量 开始键则开始测量,并将测量值显示在显示器上,按测量结 束键则自动返回 “P.”状态。 1.3 系统设计 该系统主要分为两部分:硬件电路及软件程序。硬件电路 包括:单片机,模拟信号采
10、集电路,A/D 转换电路,数码管显 示电路,按键电路,下载电路,电源电路及 555 定时电路。软 件的程序可选择 C 语言或汇编,这里采用汇编语言。 1.4 设计思路 1根据技术指标要求,这里采用 AT89S52 单片机为核心控制器 件。 2A/D 转换采用 ADC0809,与单片机 P0 口引脚相接。 显示电压采用 4 位一体的 LED 共阳数码管。 LED 数码的段码输入,由并行端口 P0 控制:位码用并行端 口 P2 低四位控制。 7 利用 NE555 定时器产生时钟信号提供给 ADC0809。 1.5 设计方案 采用单片机来计数字电压表。硬件电路设计由 7 个部分组 成:A/D 转换电
11、路,AT89S52 单片机系统,LED 数码显示系统、 独立键盘电路,时钟电路、复位电路,采集电压电路,下载电 路及电源电路。 硬件电路设计框图如图 1 所示。其中,A/D 转换器是将采 集的模拟量转换成数字量,它是数字电压表的一个核心部件。 本设计 A/D 采用逐次逼近式 A/D 转换器。它的转换速度更 快,而且精度更高,比如 ADC0808、ADC0809 等。它们具有 8 路 模拟选通开关及相应通道地址锁存与译码电路,它们与单片机 系统连接,将转换的数字量送单片机进行分析并在数码管显示。 这样电路设计简单,精确度高,方便焊接、调试。这里采用这 种方案。 显示部分可以采用各类数码管或用 L
12、CD 显示器显示。在此 简化采用 4 位八段共阳数码管对 A/D 转换变换后的结果加以显 示。 1.6 总体设计框图 8 AT89S52 单 片 机 电电源源电电路路 振荡电路 复位电路 下载电路 被测电压AD转换 显示器 键盘 NE555定 时 图 1 硬件电路设计框图 通过片选选择 8 路通道中的一路,将该路采集的电压送入 ADC0809,转换完后 EOC 端口产生高电平,同时将 A OE 端口置 为高电平,A/D 将转换后结果送回单片机。应用软件将转换为 二进制的数据转换成十进制数,再按十进制数调出段控码,并 输出到 LED 显示电路,将相应电压显示出来。 9 2 硬件电路设计 2.1
13、核心元器件介绍 AT89S52AT89S52 a. 描述:AT89S52是一个低电压,高性能CMOS8位单片机带有8K 字节的可反复擦写的程序存储器(PENROM)和256字节的存取数 据存储器(RAM),这种器件采用ATMEL公司的高密度、不容易 丢失存储技术生产。片内含有8位中央处理器和闪烁存储单元, 有较强的功能的AT89S52单片机能够被应用到控制领域中。由于 将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的 AT89S52是一种高效微控制器。 b.主要特性: 8K 字节可编程闪烁存储器 。 32 个双向 I/O 口;1288 位内部 RAM 。 2 个 16 位可编程定时
14、/计数器中断。 可编程串行通道 。 5 个中断源。 10 2 个读写中断口线 。 片内振荡器和时钟电路 。 c c单片机 AT89C52 引脚描述 VCCVCC:电源电压 GNDGND:地 P0P0 口口:这组引脚共有 8 条,P0.0 为最低位。这 8 个引脚有两种 不同的功能,分别适用于不同的情况,第一种情况是 89S52 不 带外存储器,P0 口可以为通用 I/O 口使用,P0.0-P0.7 用于传 送 CPU 的输入/输出数据,这时输出数据可以得到锁存,不需要 外接专用锁存器,输入数据可以得到缓冲,增加了数据输入的 可靠性;第二种情况是 89S52 带片外存储器,P0.0-P0.7 在
15、 CPU 访问片外存储器时先传送片外存储器的低 8 位地址,然后传送 CPU 对片外存储器的读/写数据。P0 口为开漏输出,在作为通用 I/O 使用时,需要在外部用电阻上拉。 P1P1 口口:这 8 个引脚和 P0 口的 8 个引脚类似,P1.7 为最高位, P1.0 为最低位,当 P1 口作为通用 I/O 口使用时,P1.0-P1.7 的 功能和 P0 口的第一功能相同,也用于传送用户的输入和输出数 据。 P2P2 口口:这组引脚的第一功能与上述两组引脚的第一功能相同即 它可以作为通用 I/O 口使用,它的第一功能和 P0 口引脚的第二 功能相配合,用于输出片外存储器的高 8 位地址,共同选
16、中片 外存储器单元,但并不是像 P0 口那样传送存储器的读/写数据。 11 P3P3 口口:这组引脚的第一功能和其余三个端口的第一功能相同, 第二功能为控制功能,每个引脚并不完全相同,如下表 1 所示: 表 1 P3 口各 位的第二功能 RSTRST:复位线。 当输入的复位 信号延续 2 个机器周期以上高电平即为有效。 ALE/ALE/:地址锁存允许线 ALE 用于控制把 P0 口输出的低八PROG 位地址送入锁存器锁存起来。在不访问片外存储器时,89C51 自动在 ALE 线上输出频率为 1/6 震荡器频率的脉冲序列。该脉 P3 口各位第二功能 P3.0 RXT(串行口输入) P3.1 TX
17、D(串行口输出) P3.2 (外部中断 0 输入)0INT P3.3 (外部中断 1 输入)1INT P3.4 T0(定时器/计数器 0 的外 部输入) P3.5 T1(定时器/计数器 1 的外 部输入) P3.6 (片外数据存储器写允WR 许) P3.7 (片外数据存储器读允RD 许) 12 冲序列可以作为外部时钟源或定时脉冲使用。 PSENPSEN:片外 ROM 的选通线,在读外部 ROM 时低电平有效,作为 片外 ROM 芯片的读选通信号。 /EA/EA:片外存储器访问选择线。若/EA=1,则允许使用片内 ROM, 若/EA=0,则只使用片外 ROM。 XTAL1XTAL1、XTAL2X
18、TAL2:当使用片内时钟时,这两个引脚用于外接石英 晶体振荡器和微调电容。 ADC0809ADC0809 芯片芯片 a.a. 主要特性主要特性 1)8 路输入通道,8 位数据输出端。 2)具有转换起停控制端。 3)转换时间为 100s。 4)单个5V 电源供电 5)模拟输入电压范围 05V,不需零点和满刻度校准。 6)工作温度范围为-4085 摄氏度 。 b.b. 外部特性(引脚功能)外部特性(引脚功能) IN0IN0IN7IN7:8 路模拟量输入端。 13 DB0-DB7DB0-DB7:8 位数字量输出端。 ADDAADDA、ADDBADDB、ADDCADDC:3 位地址输入线,用于选通 8
19、 路模拟输入 中的一路 表 2 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 ALEALE:地址锁存允许信号输入,高电平有效。 STARTSTART: AD 转换启动脉冲输入端,输入一个正脉冲(至少 100ns 宽)使其启动(脉冲上升沿使 0809 复位,下降沿启动 A/D 转换)。 EOCEOC: AD 转换结束信号,输出,当 AD 转换结束时,此端 输出一个高电平(转换期间一直为低电平)。 OEOE:数据输出允许
20、信号,输入,高电平有效。当 AD 转换结束 时,此端输入一个高电平,才能打开输出三态门,输出数字量。 14 CLKCLK:时钟脉冲输入端。要求时钟频率不高于 640KHZ。 REFREF(+ +) 、REFREF(- -):):基准电压。 VccVcc:电源,5V。 GNDGND:接地。 2.2 其它部分电路介绍 (1).四位八段共阳极数码管 在本设计中,选择 4 位一体的数码型 LED 显示器。前一位 显示电压的整数位,即个位,后两位显示电压的小数位。 四位 LED 数码显示管中,a,b,c,e,f,g 为 4 位 LED 各 段的公共输出端,1、2、3、4 分别是每一位的位数选端,dp 是
21、 小数点引出端,4 位一体 LED 数码显示管的内部结构是由 4 个 单独的 LED 组成,每个 LED 的段输出引脚在内部都并联后,引 出到器件的外部。 本设计 LED 采用软件编程来实现,因为简化硬件线路设计。 软件显示使用四位共阳数码管段控码,显示程序通常为查表法。 由于本设计采用的是共阳极 LED,其对应的字符和字段码如下 表 2 所示: 表 3 共阳极字段码表 显示字符共阴极字段码 15 0C0H 1F9H 2A4H 3B0H 499H 592H 682H 7F8H 880H 990H A88H B83H CC6H DA1H E86H F8EH 灭 FFH (2). 键盘部分 键盘有
22、独立式键盘和行列式键盘,本设计使用。键盘是单片 机不可缺少的人机交互设备,手按下键闭合,手放开键释放, 单片机通过与键盘接口技术,以实现通过键盘扫描发现闭合键 16 并产生键码,然后执行相应的键功能程序。 (3).下载电路 通过在电路中插入下载口以实现把总功能程序下载进单片机 完成设计要求。 (4).电源电路 为单片机、DAC0809 及其他各芯片和部分电路提供工作电压, 以实现该数字电压表正常工作。 (5).NE555 定时电路 通过外接硬件 NE555 定时器产生 500KHz 时钟信号给 ADC0809,使之正常转换 2.3 电路原理图、CAD 电路原理图、PCB 图、元件布局图 电路原
23、理图、PCB 图、CAD 电路原理图、元件布局图分别见 附录 A,附录 B、附录 C 与附录 D 2.4 元件清单 元件清单见附录 E 17 3 3 软件设计软件设计 3.1 ADC0809 模块 软件是单片机系统最重要的组成部分,本设计中 A/D 转换中, 用软件定义 ADC0809 的采集信号输入端、开启 A/D 转换。 3.2 单片机模块 软件定义单片机控制对外寻址,以达到单片机控制 A/D 输入 端,读取 A/D 转换后的数字量,并把读取的数字量转换成十进制, 用查表法查找相应段控码,并选中位控、配合延时程序在数码 管上显示出来。 3.3 按键模块 以软件调用键扫描程序,定义键功能程序
24、来实现不同按键 功能。本设计两个按键,一个按键开启测量电压功能,另一个 按键复位并显示”P.” 。 18 3.4 显示模块 以表格方式把段控码建立表格, ,供单片机查询并输出到数 码管显示,在上电后数码管显示“P.” 。 3.5 程序流程图 19 (1).主程序 NO YES 开始 数码显示 P. 判断是否 有键按下 是否按键 0 是否按键 1 返回子程序 键 0 功能 程序 键 1 功能程 序复位 20 图 2 主程序流程图 (2).键功能程序 21 系统初始化 启动 A/D 转 换 采集 A/D 转换 值 数据转换 Y 调用显示 三位是否显示 完?完?完? 读电压值 Y N END 图 3
25、 键功能程序 转换结束? Y N 开始 22 3.6 程序清单 程序清单见附录 F 3.7 程序说明 先调用显示程序上电显示“P.”再调用键扫程序,查看是 否有键按下,当没有键按下,显示“P.”;当有键按下时,执 行相应键功能程序。 开启功能:开始转换,转换程序先定义 ADC0809 控制线, ADC0809 是 8 位 A/D 转换,对 05V 的模拟量转换成 00HFFH 的数字量,即 0255。要转换成对应十进制的 BCD 码才能显示。 将转换来的数据除上 51,即为个位数,将其余数除以 5 即为第 一位小数,这个余数即为第二位小数。 复位功能:当复位键按下时,即执行复位功能程序显示“P
26、.”。 23 4 4 调试仿真及结论调试仿真及结论 4.1 仿真结果 电路在 proteus 中的仿真图如下: 图 4 仿真结果 仿真结果: 当采集电压范围由 05V 变化时,设计的数字电压表可以 测量,并在数码管显示相应值。测量的前两位精确,百分位不 作精确。精度与要求的一致。 误差分析: 24 由于二进制化十进制时的误差和基准电压漂移的原因导致 误差。 4.2 设计体会 通过本次设计,我对单片机这门课有了进一步的了解,硬件 连接方面还是在软件方面都有不少的提高。通过这次设计,对 它的工作原理有了更深的理解。 在这次课程设计中,我遇到了硬件及软件的多方面问题,如 数码管不显示数,或数码管一个
27、数有某些部分不亮,经过硬件、 软件一层一层的拍出,查出问题,一步一步接近设计技术指标, 最终基本实现了数字电压表的功能。 25 在调试过程中遇到很多问题,硬件上的理论知识学得不够扎 实,对电路的额外功能的设计业不太熟练使用。 4.3 教学建议 这学期刚学单片机是对单片机一片茫然,好多不懂得地方, 从单片机内部结构也是不清其功能,程序更是一头雾水,完全 不会编。 在王老师严格要求下,虽然我们有时会很累,但更多的是在 学习当中的乐趣,我们本学期学了很多,过的很充实。 王老师严谨治学,经验丰富,使我们受益匪浅。 (1) 王老师多跟我们交流单片机型号及应用,让我们开阔视 野 (2) 王老师多给学生动手
28、,更多加强与学生之间的交流。 26 结束语结束语 通过这次设计,我学到了许多课外的东西,加深了对单片 机等知识的了解,提高了应用思考和设计能力。实物制作到电 路板,程序编写,调试,遇到很多很多困难,但是始终没有放 弃。在这过程中,我对电路设计,单片机的使用等都有了新的 认识。掌握了从系统的需要、方案的设计、功能模块的划分、 原理图的设计和电路图的仿真的设计流程,积累了不少经验。 在分析设计课题,查阅资料,了解设计原理并进行仿真的 过程中尽管遇到了些许问题,但在老师的指导下,最终独立地 完成了任务,不仅锻炼了分析解决问题的能力,更重要的是加 强了我对单片机学习的兴趣。在设计的过程中老师给予一定的
29、 启发和指导,我们独立认真完成本次课程设计,在此表示衷心 的感谢。 27 致致 谢谢 首先,我们要感谢我们的指导老师王韧对我们的指导和关 怀。他渊博的知识、严谨的治学态度和敏锐的分析能力,使我 们受益匪浅。 本次设计得以顺利完成,也与学院其他老师的帮助分不开 28 的,在我们没有头绪的时候,学院老师给我们建议,也给我们 提供实验室场地,他们给了我宝贵的经验使我们的设计能更快 速的完成。 最后,我们要感谢我们的家人朋友和同学,有他们在背 后对其的支持,使我更有底气面对困难和挑战。 谢谢大家! 29 参考文献参考文献 1 李广第,朱月秀,冷祖祁.单片机基础M.北京:北京航空 航天大学出版社,200
30、7.6 LiGuang first, ZhuYueXiu, LengZuQi. Single chip microcomputer based M. Beijing: Beijing university of aeronautics 2 个按键接 P1 口,P1.0 和 P1.1 * * 键功能程序; KEY_c1 K0 键功能程序 KEY_c1 K1 键功能程序 * * 子程序; DELAY 1 毫秒延时程序 DK 数码管显示子程序 KEY 键扫描子程序 KEYCHULI P1 口数据处理子程序 * * ORG 0000H START: LJMP MAIN MAIN: MOV SP,#2F
31、H CLR EA 39 MOV DPTR, #DK MOV A,#11 MOVC A,A+DPTR MOV P2,#08H MOV P0,A CLR P3.0 LCALL DELAY LOOP3:LCALL KEY_cl LJMP LOOP3 KEY_cl: LCALL KEY JB 20H.0 , KEY_0 JB 20H.1 , KEY_1 RET *键扫子程序 * KEY:LCALL KEYCHULI JZ EXIT 40 LCALL DELAY LCALL KEYCHULI JZ EXIT MOV B , 20H KEYSF:LCALL KEYCHULI JZ KEY1 LJMP KE
32、YSF KEY1: MOV 20H , B EXIT: RET KEYCHULI:PUSH PSW CLR RS1 41 SETB RS0 MOV P1 , #0FFH MOV A , P1 CPL A MOV 20H , A CLR RS1 CLRRS0 POPPSW RET *键功能程序 * KEY_0: MOVDPTR, #0FEF8H 42 LOOP0: MOVXDPTR, A /启动 AD 转换 LOOP: JBP3.3, LOOP MOVX A, DPTR/读一个通道 数据 MOV B, #51 /个位转换 DIV AB MOV R0, A MOV A, B MOV B, #5 /
33、小数转换 DIV AB MOV R1, A MOV R2, B MOV DPTR, #DK MOV A, R0 MOVC A, A+DPTR MOV P2, #04H/个位数 MOV P0, A CLR P3.0 LCALL DELAY MOV A, R1 MOVC A, A+DPTR MOV P2, #02H/小数点后第一位 43 MOV P0, A SETB P3.0 LCALL DELAY MOV A, R2 MOVC A, A+DPTR MOV P2, #01H/小数点后第二位 MOV P0, A SETB P3.0 LCALL DELAY LCALL KEY_c1 LJMP KEY_
34、0 KEY_1: MOV DPTR,#DK MOV A, #11 MOVC A, A+DPTR MOV P2, #08H MOV P0, A CLR P3.0 LCALL DELAY LCALL KEY_cl 44 LJMP KEY_1 DELAY: MOV R7, #01H ;延时 1ms DL1: MOV R6, #8EH DL0: MOV R5, #02H DJNZ R5, $ DJNZ R6, DL0 DJNZ R7, DL1 RET DK: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H, 0FFH, 0CH END