当前位置:首页 >> 信息与通信 >>

数字电压表设计


目 录 一、 整体设计思路框图及原理图……………………………1 ……………………………1 …………………………… 二、 模块分析…………………………………………………2 …………………………………………………2 ………………………………………………… 1. AT89C51 单片机…………………………………………3 2. A/D 转换………………………………………………….4 3.

显示电路………………………………………………..4 软件设计……………………………………… …………………5 三、 软件设计 ……… 5 四、 程序清单……………………………………………....6 程序清单……………………………………………....6 …………………………………………….... 仿真实验调试…………………………………………… ……………………………………………12 五、 仿真实验调试……………………………………………12 ……………………………………………. 六、 总结与体会 . …………………………………………….13 ……………………………………………….. ..14 七、 参考文献 ………………………………………………..14

整体设计思路框图及原理图 一、 整体设计思路框图及原理图
数字电压表的设计即将连续的模拟电压信号经过 A/D 转换器转换成二进制
1

数值,再经由单片机软件编程转换成十进制数值并通过显示屏显示。 按系统实现要求,决定控制系统采用 AT89C51 单片机,A/D 转换由于仿真 软件里的 ADC0809 元件有问题, 这里用 ADC0808 代替, 它和 ADC0809 区别很小。 采用 ADC0808。数字电压表系统整体框图如下图 1 所示。

模 拟 电 压

ADC0808 转换

AT89C51 单 片 机

数 据 显 示

图1

整体框图

系统通过软件设置单片机的内部定时器 T1 产生中断信号。 通过片选选择 8 路通道中的一路,将该路电压送入 ADC0808 的 EOC 端口产生高电平,同时将 ADC0808 的 OE 端口置为高电平,单片机将转换后结果存到片内 RAM。系统 调出转换显示程序, 将转换为二进制的数据在转换成十进制数并输出到 LCD 显 示电路,将相应电压显示出来。 原理图见附录图 7。

二、 模块分析
2

1.

AT89C51 单片机

接口分配电路设计如右图 2 所示: P0 口:P0 口为一个 8 位漏级 开 路 双 向 I/O 口 , 每 脚 可 吸 收 8TTL 门电流。当 P1 口的管脚第 一次写 1 时, 被定义为高阻输入。 P0 能 够 用 于 外 部 程 序 数 据 存 储 器,它可以被定义为数据/ 地址 的第八位。 在这里 P0 口作为输入 与输出分别与 ADC0808 的输出 端和 LCD 显示的输入端相连, 且 P0 外部被阻值为 1K? 的电阻拉 高。 P2 口:P2 口为一个内部上拉电阻的 8 位双向 I/O 口,P2 口缓冲器可 接收,输出 4 个 TTL 门电流,当 P2 口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出 电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或 16 位地 址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“1” 时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。这里只用到了 P2.0~P2.3 四个端口,其 中 P2.1~P2.3 都是作为输出端口控制显示电路的寄存器选择、读写信号和 使能端口。 P3 口:P3 口管脚是 8 个带内部上拉电阻的双向 I/O 口,可接收输出 4 个 TTL 门电流。当 P3 口写入“1”后,它们被内部上拉为高电平,并用作输 入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由 于上拉的缘故。 P3 口也可作为 AT89C51 的一些特殊功能口, 在这里用到了 P3.3 /INT1 (外部中断 1) P3.6 /WR(外部数据存储器写选通) 、 、P3.7 /RD(外部数
3

图2

单片机接口电路

据存储器读选通) 。 2. A/D 转换 接口分配电路设计如图 3 所示: IN0~IN7 为 8 路模拟量输 入端,这里只接一路电压信号,其输 入信号是由直流电源及可调电阻提 供。 OUT1~OUT8 为 8 位二进制 数字量输出端,其另一端连接到 AT89C51 单片机进行数值转换。 ADDA、ADDB、ADDC 为 3 位片选地址输入线,用于选通 8 路 模拟输入中的一路。 ALE 为地址锁存允许信号, 由单片机 P3.6 口写信号与 P2.0 口相 或取反输入,高电平有效。 START 为 A/D 转换启动脉冲输入端,由单片机 P3.6 口写信号 与 P2.0 口相或取反输入一个正脉冲使其启动(脉冲上升沿使 0808 复位, 下降沿启动 A/D 转换) 。 EOC 为 A/D 转换结束信号,当 A/D 转换结束时,此端输出一 个高电平取反给 P3.3 口(转换期间一直为低电平) 。 OE 为数据输出允许信号,高电平有效。当 A/D 转换结束时, 此端由单片机 P3.7 读信号与 P2.0 口相或后取反输入一个高电平,才能打 开输出三态门,输出数字量。 图3 A/D 转换电路

3. 显示电路

4

接口分配设计如图 4 所示: RS 为寄存器选择,高电平时选择 数据寄存器、低电平时选择指令寄存 器。由单片机 P2.1 口控制 R/W 为读写信号线, 高电平时进行 读操作,低电平时进行写操作。当 RS 和 R/W 共同为低电平时可以写入指令 或者显示地址, RS 为低电平 R/W 为 当 高电平时可以读忙信号,当 RS 为高电 平 R/W 为低电平时可以写入数据。由 单片机 P2.2 口控制 E 端为使能端,当 E 端由高电平跳变成低电平时,液晶模块执行命令。由 单片机 P2.3 口控制 D0~D7 为 8 位双向数据线。由单片机 P0 口输入,经过阻值为 1K? 的上 拉电阻连接。 图4 显示电路

软件设计 三、 软件设计
主程序的内容包括: 起始地址、 中断服务程序的起始地址、有关内 存单元及相关部件的初始化和一些 子程序的调用等。根据设计要求, 设计出如图 5 所示的主程序流程 图。

图5 A/D 转换子程序设计: A/D 转

程序流程图

5

换程序的功能是采集数据, 在整个系统设计中占有很高的地位。 当系统置好后, 单片机扫描转换结束管脚 P3.7 的输入电平状态,当输入为高电平则转换完成, 将转换的数值显示输出。若输入为低电平,则继续扫描。程序流程图如图 6 所 示。

图6 四、 程序清单
COM EQU 50H ; 指令寄存器 DAT EQU 51H ; 数据寄存器 RS EQU P2.1 ; LCD 寄存器选择信号 RW EQU P2.2 ; LCD 读/写选择信号

A/D 转换子程序流程图

6

E EQU P2.3 ; LCD 使能信号

ORG 0000H LJMP MAIN ORG 000BH LJMP BT0 ;T0 中断入口 ;主程序入口

ORG 0030H MAIN: MOV SP,#60H LCALL INT MOV 30H,#30H MOV 31H,#30H MOV 32H,#0A5H MOV 33H,#30H MOV 34H,#30H MOV R7,#30H LCALL N1 MOV TMOD,#00H MOV TH0,#00h MOV TL0,#00h SETB TR0 MOV 24h, #03h MOV IE,#82H

;主程序,初始化

;显示 Voltage = 00.00 ;定时器 T0 设为方式 0 ;装入定时常数

;启动 T0 ;装入 T0 中断次数 ;开中断 ;显示缓冲区首地址

LP: MOV R7,#30H LCALL DISPLY SJMP LP

;循环显示

DISPLY: MOV COM,#0CAH LCALL PR1 MOV MOV R1,#05H R0,#30H ;设置数据起始地址(第而行第 10 位)

l: MOV DAT,@r0 LCALL PR2 INC R0 DJNZ RET R1,l

7

;1. 逐字依次输入方式演示程序段 N1:MOV COM,#01H LCALL PR1 MOV COM,#06H LCALL PR1 MOV COM,#081H LCALL PR1 MOV DPTR,#TAB1 MOV R2,#0EH MOV R3,#00H WRIN1: MOV A,R3 MOVC A,@A+DPTR MOV DAT,A LCALL PR2 INC R3 DJNZ R2,WRIN1 MOV COM,#0C1H LCALL PR1 MOV DPTR,#TAB2 MOV R2,#9 MOV R3,#00H WRIN2: MOV A,R3 MOVC A,@A+DPTR MOV DAT,A LCALL PR2 INC R3 DJNZ R2,WRIN2 RET TAB1: DB "VOLTAGE= " ;设置数据起始地址(第二行地二位) ;设置数据起始地址(第一行地二位) ;设置输入方式 ;清屏

; LCD 间接控制方式下的初始化子程序 INT: LCALL DELAY ; 调延时子程序 MOV COM,#38H ; 设置工作方式(2 行,8 位数据) LCALL PR1 MOV COM,#01H ; 清屏 8

LCALL PR1 MOV COM,#06H ; 设置输入方式 LCALL PR1 MOV COM,#0CH ; 设置显示方式 LCALL PR1 RET DELAY:MOV R6,#0FH ; 延时子程序 MOV R7,#00H DELAY1: NOP NOP DJNZ R7,DELAY1 DJNZ R6,DELAY1 RET

;LCD 间接控制方式的驱动子程序如下 ;1 读 BF 和 AC 值 PR0: PUSH ACC MOV P0,#0FFH ; P0 置位, 准备读 CLR RS ; RS=0 SETB RW; R/W=1 SETB E ; E=1 LCALL DELAY MOV COM,P0 ; 读 BF 和 AC6-4 值 CLR E ; E=0 POP ACC RET ;2 写指令代码子程序 PR1: PUSH ACC CLR RS SETB RW ; RS=0 ; R/W=1

PR11:MOV P0,#0FFH; P0 置位, 准备读 SETB E ; E=1 LCALL DELAY NOP MOV A,P0 9

CLR E JB ACC.7,PR11;BF=1? CLR RW; R/W=0 MOV P0,COM SETB E ; E=1 CLR E ; E=0; E=0 POP ACC RET ;3 写显示数据子程序 PR2:PUSH ACC CLR RS ; RS=0 SETB RW; R/W=1 PR21:MOV P0,#0FFH SETB E ; E=1 LCALL DELAY MOV A,P0 ; 读 BF 和 AC6-4 值 CLR E ; E=0 JB ACC.7,PR21 SETB RS CLR RW MOV P0,DAT; 写入数据 SETB E CLR E POP ACC RET ;4 读显示数据子程序 PR3:PUSH ACC CLR RS ; RS=0 SETB RW; R/W=1 PR31:MOV P0,#0FFH ; P0 置位, 准备读 SETB E ; E=1 LCALL DELAY MOV A,P0 ; 读 BF 和 AC6-4 值 CLR E ; E=0 JB ACC.7,PR31 SETB RS SETB RW; R/W=1 10

MOV P0,#0FFH ; 读数据 SETB E ; E=1 MOV DAT,P0 CLR E ; E=0 POP ACC RET ; 定时器 T0 中断服务程序,读取 ADC0809 第 0 通道的 A/D 转换结果并化为显示值 BT0: PUSH PUSH MOV CLR MOV MOV MOV MOV MOVX MOV DJNZ MOVX MOV DIV ADD ACC PSW PSW,#08H TR0 TH0,#00h TL0,#00h DPTR,#0F6FFH ;0809 端口地址 A,#0 ;0 通道 ;等待 A/D 转换完 ;停止 T0 ;重装定时常数 ;保护现场

@DPTR,A ;启动 0809 R7,#0FFH R7,$ A,@DPTR ;读 0809 转换结果 B,#03H AB A,40H ;将除以 3 后的余数累加放入 41H 中 ;将转换的值除以 3 再累加,存入 40H 中

MOV 40H,A MOV A,B ADD A,41H ;3 次中断未到则返回

MOV 41H,A DEC 24h

MOV A,24H JNZ RNT1 ;重装中断次数 ;将累加的余数再除 3 后相加

MOV 24h,#03h MOV A,41H DIV ADD AB A,40H

MOV 40H,#0 MOV 41H,#0 RTN: MOV MUL AB B,#0fh

;清零累加数 ;A/D 转换结果化为显示值 ;(AD*5)/256

11

MOV @R0,A MOV A,B MOV B,@R0 MOV R0,A ADD A,#246 MOV A,R0 MOV 30H,#00H JNC LOOP ADD A,#06H MOV 30H,#01H LOOP: MOV 31H,A MOV A,B MOV B,#0AH MUL AB MOV 33H,B MOV B,#0AH MUL AB MOV 34H,B LJMP RTN1 RTN1: SETB TR0 ORL 30H,#30H ORL 31H,#30H MOV 32H,#0A5H ORL 33H,#30H ORL 34H,#30H POP PSW POP ACC RETI END ;小数点 ;AD*5 的低字节为/256 的结果,为小数部分 ;二进制小数换为 10 进制数 ;AD*5 的高字节为整数部分

五、 仿真实验调试
1.打开 WAVE 6000 软件,菜单栏选择“文件”中的“新建文件” ,在弹出 的窗口中编写程序,然后保存后缀为“***.asm”的程序。 2.菜单栏选择“项目”中的“编译” ,如果程序无误即编译成功,否则修改 程序直至编译成功。 3.打开 Proteus 软件,新建文件 File→New Design,同样在弹出的原理图编
12

辑窗口中绘制原理图,然后保存。 4.加载程序,选择 Source→Add/Remove Source Files,在弹出的对话框中点 击 “New” 选择在 WAVE 6000 软件中编写保存的程序如 “***.asm” 点击 , “OK” 即加载成功。 5.在 Proteus 软件中的左下方点击图标 调试的结果。 仿真调试开始,即可看到仿真

六、 总结与体会
13

这虽然是一个数字电压表的设计但是实际上就是一个数据采集的程序设 计, 只不过这里数据采集的是模拟电压罢了。 虽然这个单片机的课题比较简单, 但是从中我还是学到了许多新东西。 在之前的学习过程中没有用到 Proteus 这个 软件,所以刚刚开始的时候一边在百度里看 Proteus 入门教程一边实践操作 Proteus 这个软件,不过幸好以前学过 Protell 99 绘图软件,举一反三的在短时 间内把 Proteus 磕磕碰碰学会了。想想我们在大学里速学软件还是比较有心得: 在一两天内只学这个软件,或许还算不上熟练但是入门还是可以了。 在 Proteus 软件部分的设计中也让我感受良多。 以前做的单片机的设计都只 是写写程序,下载到单片机上运行,都只是编程方面的工作,很少涉及选择单 片机试验台上已有芯片以外的芯片,更不用说芯片的一些管脚作用。就像 A/D 转换器在 Proteus 中仿真软件 ADC0809 有问题所以用 ADC0808 代替。而且 ADC0808 是单极性,输 入 电 压 范 围 为 0 ~ + 5V , 而 我 们 课 题 要 求 的 是 0~+15V,所以 我利用 参考电压 可以达 到 15V 这 一点 把 0~+15V 转化 成 0~5V,进行模数转换。 在局部电路图中遇到很多问题,通过查阅大量资料以及老师和同学的帮助 讲解才逐渐懂得如何应用。 如在 Proteus 软件中仿真选用了最常用的直流电压电 源和可调电阻组成 0~+15V 的模拟电压,而在试验台上可以直接连接可调电压 源。这种方法是平时很少注意到的基础性知识运用,在这次的课程设计中让我 又有了新的收获。 总的来说结果还是完成了设计任务,虽然整个过程有点不在状态,但还是 温故而知新,对单片机有了一种新的认识。

七、 参考文献
1. 王迎旭.单片机原理与应用.机械工业出版社. 2. 周向红.51 系列单片机应用与实践教程.北京航空航天大学出版社 3. 何立民.单片机应用系统设计. 北京航空航天大学出版社 4. 蔡朝洋.单片机控制实习与专题制作.北京航空航天大学出版社 5. 楼然苗.51 系列单片机设计实例[M].北京航空航天大学出版社.
14

6. 陈明荧.8051 单片机课程设计实训教材[M].清华大学出版社.

15


相关文章:
数字电压表设计
单片机系统课程设计 单片机系统 课程设计 成绩评定表设计课题 : 学院名称 : 指导教师 : 设计地点 : 设计时间 :指导教师意见: 数字电压表设计 电气工程学院 臧海河...
毕业论文:数字电压表设计
毕业论文:数字电压表设计_工学_高等教育_教育专区。目录 摘要: ... 1 Abstract: ...目录 摘要: ... 1 Abstract...
数字电压表设计-毕业设计
数字电压表设计学生:XXX 指导教师:XXX 内容摘要:在集总参数电路中,考虑到操作的安全性、方便性、准确性等因素,测量的主要参量是电压,电子电路的许多特性,如频率...
简易数字电压表设计报告
简易数字电压表设计报告_电子/电路_工程科技_专业资料。简易数字电压表设计报告目录摘要---2 1.数字电压表的简介---3 1.1 数字电压表的发展---...
数字电压表设计
数模电课程设计课题: 数字电压表设计与制作 专业: 班级: 学生姓名: 学号(考号): 指导教师: 日期: 电子信息工程 N11 电信-1F 汤济安 、 王翔 24112200014、...
数字电压表设计
15 1 单片机系统课程设计 1 概述 1.1 研究背景通过制作简易的数字电压, 可以加深对我们所学专业的认识。传统的指针式电 压表用起来很直观易懂,但是数字电压表...
直流数字电压表设计
直流数字电压表设计_电子/电路_工程科技_专业资料。许昌学院软件职业技术学院《电子测量技术技术》 《电子测量技术》直流数字电压表设计 院专 系业 软件职业技术学院...
数字电压表的设计与实现
数字电压表设计与实现_工学_高等教育_教育专区。毕业设计国家示范性高等职业院校 柳州职业技术学院 毕业设计(论文)题目: 数字电压表设计与实现 姓学专年 名号...
数字电压表设计
3)至少 4 张 PCB 图打印在一张热转印纸上 图 2.1-1 2.2 三位半数字电压表设计思想 数字电压表的位数是指完整显示位,即能够显示 0-9 十个数字的位...
数字电压表的设计
数字电压表设计_信息与通信_工程科技_专业资料。太原工业学院毕业设计(论文) 1 前言在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量 最...
更多相关标签:
数字电压表 | 数字电压表课程设计 | 数字电压表设计报告 | 高精度数字电压表 | 电压表数显 | 数显交流电压表 | 数字电压表电路图 | 数字电压表的设计 |