资源描述
数字显示电压表基于单片机的设计
———————————————————————————————— 作者:
———————————————————————————————— 日期:
2
个人收集整理 勿做商业用途
新疆轻工职业技术学院
毕业设计(论文)任务书
数字显示电压表基于单片机的设计
姓 名: 张 熠
学 号: 2008110979
专 业: 电气自动化二班
系 部: 机电工程系
指 导 教 师: 王 伟
起 止 日 期:2010年11月1日至2011年03月20日
摘 要
本文介绍了基于89c51单片机的一种8路输入电压测量电路,该电路采用ADC0809作为A/D转换元件,测量范围0至5伏,小数点后显示一位。要求能够依次显示每路通道电压,而且能够通过拨码开关选择输入通道。使用3位LED模块显示,前面一位显示通道号,后面两位显示测量电压值。
本系统主要包括四大模块:数据采集模块、控制模块、显示模块、A/D转换模块。绘制电路原理图与工作流程图,并进行调试,最终设计完成了该系统的硬件电路。在软件编程上,采用了汇编语言进行编程,开发环境使用WAVE集成开发环境.开发了显示模块程序、通道切换程序、A/D转换程序。
关键词:ADC0809;A/D转换;LED显示
目 录
1 方法论证 4
1。1 系统的设计任务 4
1。2 设计方案 4
1.3 软硬件开发环境 4
2 数字电压表硬件设计 5
2.1 单片机主电路设计 5
2。1.1 复位电路 5
2。1。2 晶振电路 5
2.2 测量、转换电路设计 6
2。3 按键电路设计 7
2.4 显示电路设计 8
2.4.1 LED数码管构成 9
2。4.2 显示方式 11
3 软件设计 12
3。1 主程序设计 13
3.1。1 工作流程 13
3。1.2 存储空间定义安排 14
3。2 模块程序设计 14
3。2.1 A/D转换测量程序 15
3.2。2 显示程序 15
4 系统调试与分析 16
4.1 调试内容及问题解决 16
4。2 系统进一步改进方案 17
附录1:硬件原理图 20
附录2:程序清单 21
参考文献 22
结论 23
致谢 24
绪 论
实习期间我在新疆天业集团天辰化工40万吨2期化工厂实习工作,期间我在供电车间工作,是指把被测电压的数值通过数字技术,变换成数字量,然后用数码管以十进制数字显示被测量电压值,数字式电压表具有高精度、量程宽、显示位数多、分辨率高、易于实现测量自动化等优点,在电压测量中也占据了越来越重要的地位,所以我以数字显示电压表为中心来做论文.
伴随着工厂建设规模的扩大,各种用电设备的增多,用电量越来越大,工厂的供电设备经常超负荷运转,用电环境变得越来越恶劣,对电源的“考验”越来越严重。人们对数字显示电压表以其高准确度、高可靠性、高分辨力、高性价比等优良特性倍受任命的青睐。没欠,数字电压表作为数字化仪表的基础与核心,已被广泛应用于电子和电工测量、工业自动化仪表、自动测试系统等领域,显示出强大的生命力。在实习的这短时间里,在老师和工人师傅的帮助和指导下,使我对于一些平常理论的东西,有了感性的认识,感觉受益匪浅.这对我以后的学习和工作有很大的帮助,最重要的是使我对于工业生产中的数字显示电压表有了更深的了解。
第一章 方法论证
1。1 系统的设计任务
设计单片机主电路、数据采集接口电路、LED显示电路、拨码控制电路,能够实现对8路电压值进行测量,能够显示当前测量通道号及电压值,电压精度小数点后1位,可以通过键盘选择循环显示8路的检测电压值和指定通道的检测电压值.
1。2 设计方案
将数据采集接口电路输入电压传入ADC0809数模转换元件,经转换后通过D0至D7与单片机P0口连接,把转换完的模拟信号以数字信号的信号的形式传给单片机,信号经过单片机处理从LED数码显示管显示.拨码开关连P3口,实现通道选择。P2口接数码管位选,P1接数码管,实现数据的动态显示,如下图所示。
89c51
P0
P1
P2
ALE
P3
数码管
位选
拨码开关
ADC0809
D0~D7
IN0
:
IN7
CLOCK
VREF+
VREF-
图1。1系统总体方案结构图
1.3 软硬件开发环境
硬件选择:选择89c51作为单片机芯片,选用8段共阴极LED数码管实现电压显示,选用独立式按键作为程序的跳转与选择,利用ADC0809作为数模转换芯片,利用P0至P4的各个串口来进行不同设备间的连接,计算机进行汇编,H51/L仿真器,单片机多功能实验箱.
软件开发环境: 用Protel99SE软件画电路图 、WAVE软件进行程序编写.
第二章 数字电压表硬件设计
2.1 单片机主电路设计
在本次课题设计中我们选择了8951芯片,其具有功能强、体积小、成本低、功耗小等特点,它可单独地完成现代工业控制所要求的智能化控制功能,能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务.
2.1。1 复位电路
复位电路如图2。1所示,单片机系统常常有上电复位和操作复位两种。上电复位是指单片机上点瞬间,要在RST引脚上出现宽度大于10ms的正脉冲,才能使单片机进入复位状态.操作复位是指用户按下“复位"按钮使单片机进入复位状态。
图2.1 复位电路
2。1.2 晶振电路
晶振电路用于产生单片机工作所需的时钟信号,使用晶体震荡器时,c2,c3取值20~40PF,使用陶瓷震荡器时c2,c3取值30~50PF。在设计电路板时,晶振和电容应尽量靠近芯片,以减小分布电容,保证震荡器的稳定性。18引脚接XTAL1,19引脚接XTAL2,20引脚接地。
图2.2 晶振电路
2.2 测量、转换电路设计
使用ADC0809作为数模转换元件,其引脚图如2。3所示
图2.3 ADC0809引脚图
ADC0809是带有8:1多路模拟开关的8位A/D转换芯片,所以它可有8个模拟量的输入端,由芯片的A,B,C三个引脚来选择模拟通道中的一个.A,B,C三端分别与89C51的P0。0~P0.2相接.地址锁存信号(ALE)和启动转换信号(START),由P2.6和/WR或非得到.输出允许,由P2.6和/RD或非得到.时钟信号,可有89C51的ALE输出得到,不过当采用12M晶振时,应该先进行二分频,以满足ADC0809的时钟信号必须小于640K的要求。与单片机的连接如图2。4所示
图2.4数据转换系统电路图
2。3 按键电路设计
按键选择上有两种方法可供选择,独立式按键与矩阵式按键,再此使用了独立式按键。按键模块如图2.5所示,其与P3口连接,实现通道选择。
对按键的工作过程可分为两步:第一步是CPU首先检测键盘上是否有键按下;第二步是在识别是哪一个键按下.检测键盘上有无键按下可采取查询各自方式、定时扫描构造方式和中断耕作方式。在此选择了查询工作方式.
按键模块如图2。5所示,其与P3口连接,实现通道选择。
图2.5按键模块
2.4 显示电路设计
2。4.1 LED数码管构成
LED数码管显示器是由发光二极管显示字段的显示器件,也称为数码管。其外形结构如图所示.它由8个发光二极管构成,通过不同的组合可用来显示0—9、A—F及小数点“.”等字符。
数码管有共阴极和共阳极两种结构规格,如图2。5所示。图中电阻为外接。共阴极数码管的发光二极管阴极共地,当某发光二极管的阳极为高电平时,二极管点亮;共阳极数码管的发光二极管是阳极,并接高电平,对于需点亮的发光二极管将其阴极接低电平即可。
对照图2。5中的字段:7段发光二极管,在加上1个小数点位,共计8段,因此提供给LED显示器的字形码正好一字节。
图2.6(a) 共阴极 图2。6(b) 共阳极
图2。6(C)字段显示
2。4.2 显示方式
(1) 静态显示方式
直接利用并行口输出。LED显示工作于静态显示方式时,各位的共阴极连接在一起接地;每位的段选线分别于一个8位的锁存输出相连.一般称之为静态显示,是由于显示器中的各位相互独立。而且各位的显示字符一经确定,相应锁存器的输出将维持不变,直到显示另一个字符为止。
利用通信号串行输出。在实际应用中,多位LED显示时,为了简化电路,在系统不需要通信功能时,经常采用串行通信口工作方式0,外接移位寄存器74LS164、CD4094来实现静态显示。
(2) 动态显示方式
对多位LED显示器的动态显示,通常都时采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于间隔时间较短,且人眼具有视觉残留效应,看起来与全部显示器持续点亮一样。
为了实现LED显示器的动态扫描,除了要给显示器提供的输入之外,还要对显示器加位选择控制,这就是通常所说的段控和位控.因此多位LED显示器接口电路需要有两个输出口,其中一个用于输出8位控信号;另一个用于输出段控信号,其连接图如下.
2.7 LED显示电路
表2。1七段LED段选码表
显示字符
共阴极段
显示字符
共阴极段
0
3FH
C
39H
1
06H
D
5EH
2
5BH
E
79H
3
4FH
F
71H
4
66H
P
73H
5
6DH
U
3EH
6
7DH
Γ
31H
7
07H
y
6EH
8
7FH
8。
FFH
9
6FH
“灭”
00H
A
77H
/
/
B
7CH
/
/
第三章 软件设计
3。1 主程序设计
3。1。1 工作流程
首先拨动拨码开关k1,如果是低电平,程序转向选择通道程序,拨动k2的次数即是选择的通道号,拨动k3表示确认。转向数据读取程序,再到显示程序,显示出通道号和电压值。如果k1是高电平,则转向循环显示程序,即先显示第0路最后显示第7路电压值和相应通道号。工作流程图如下:
N
Y
记录k2拨动次数
启动A/D转换
K1高电平?
数据处理显示
结束
开始
选择通道号
选择第0路
图3.1主程序流程
3。1。2 存储空间定义安排
60H用于存放A/D转换结果,30H、31H、32H分别存储显示用的三位数据如下表:
表3.1存储空间定义表
60H
用于存放A/D转换结果
30H
电压值整数部分
31H
电压值小数部分
32H
循环显示的通道号
34H
选择的通道号
3。2 模块程序设计
3。2.1 A/D转换测量程序
A/D转换的常用方法有:①计数式A/D转换,②逐次逼近型A/D转换,③双积分式A/D转换,④ V/F变换型A/D转换.在这些转换方式中,记数式A/D转换线路比较简单,但转换速度较慢,所以现在很少应用。双积分式A/D转换精度高,多用于数据采集及精度要求比较高的场合,如5G14433(31/2位),AD7555(41/2位或51/2位)等,但速度更慢。逐次逼近型A/D转换既照顾了转换速度,有具有一定的精度,这里选用的是逐次逼近型的A/D转换芯片ADC0809。采用中断控制的方式实现,不浪费时间,效率较高。其流程图如下:
开始
启动转换
读取数据
0809地址加1
小于FFFF?
结束
中断请求
中断服务
Y
N
图3.2 A/D转换测量程序
3.2。2 显示程序
对多位LED显示器的动态显示,通常都是采用动态扫描的方法进行显示,即逐个循环点亮各位显示器。这样虽然在任一时刻只有一位显示器被点亮,但是由于间隔时间较短,且人眼具有视觉残留效应,看起来与全部显示器持续点亮一样。
为了实现LED显示器的动态扫描,除了要给显示器提供的输入之外,还要对显示器加位选择控制,这就是通常所说的段控和位控。因此多位LED显示器接口电路需要有两个输出口,其中一个用于输出8位为控信号;另一个用于输出段控信号.
读取判断单元
显示通道号
显示电压整数部分
显示电压小数部分
返回
开始程序
32H
30H
31H
图3。3显示子程序
第四章 系统调试与分析
4。1 调试内容及问题解决
程序可分为数据采集系统、数据转换系统、显示系统和按键控制系统,这四部分先独立测试,然后整体调试。
显示系统的调试:要显示的数据存放在30H、31H、32H单元中,先在30H、31H、32H分单元中存放0~10的数,运行显示程序,察看显示的结果是否与存放值一样。在测试的过程中发现小数点没有显示,通过指令ORL 30H,#80H,把小数点显示出来。
按键控制系统调试:拨动k2在34H单元内容看是否和拨动次数相同.
整体测试:把个部分用线连接,P3接拨码开关,P2接数码管,P3接位选.仿真器、仿真头连好,进入WAVE软件,设置仿真器.编译程序,看是否存在错误。
4。2 系统进一步改进方案
进一步提高测量精度,把精确到小数点后一位改为精确到小数点后两位.具体程序如下:
MOVX A,@DPTR ;读取转换后的数据.
MOV B,#51 ;255÷51=5.00V运算
DIV AB
MOV 33H,A ; ;个位数放入33H
MOV A,B ; ;余数大于19H,F0为1,乘法溢出,结果加5
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP2
ADD A,#5
LOOP2: MOV 34H,A ; ;小数后第一位放入34H
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP3
ADD A,#5H
LOOP3: MOV 35H,A ; ;小数后第二位放入35H
附录1:硬件原理图
附录2:程序清单
ORG OOOOH
LJMP MAIN
ORG 0013H
LJMP OVER
MAIN:JNB P3.0 XZ ;高电循环显示,低电平选择通道
MOV RO,#60H
MOV R1,#08H ;8个通道
CLR 34H
XZ1 : MOV R2,#34H ;选择通道IN0
SETB EA
SETB IT1
SETB EX1
MOV DPTR,@#08FFFH ;第0路地址
MOV A,R2
MOVX @DPTR,A ;启动A/D转换
SJMP $
XZ: JB P3.4,XZ
W1 : JNB P3.4 W1 ;拨码开关一个来回计数一次
CLR A
INC A
JNB P3.5
MOV 34H,A ;计数次数存入34H
LJMP XZ1 ;跳到通道选择程序
OVER: CLR EX1
MOV DPTR,#08FFFH
SUB DPTR,34H
MOVX A,@DPTR
MOV @R0,A
INC R2
MOV 33H,#100 ;延时两秒
LJMP XIANSHI
JX: MOV A, R2
DJNZ R1 ,WAIT
WAIT: SETB EX1
MOVX @DPTR,A
ED: RETI
;;;;;;;;把00000000到11111111的数转换成十进制数;;;;;;
XIANSHI:MOV 33H,#0
MOV A,6OH
MOV B,#51
DIV AB
MOV 30H,A ;把整数放入30H
MOV A,B
MOV B,#51
MUL A,#10
MOV B,#51
DIV AB
MOV 31H,A ;把小数放入31H
MOV R6,#30H
;;;;;;;;;;;;动态显示程序;;;;;;;;;
MOV DPTR #TAB
MOV R7,#01H
CLR A
MOV P3,A
L:MOV A,@R6
ANL A,#0FH
MOVC A,@A+DPTR
MOV P1,A
MOV A,R7
MOV P3,A
LCALL D20MS
INC R6
CJNE R6,#32H,L0
MOV R6,#30H
L0:RL A
MOV R7,A ;两秒后进行下一路
SJMP L
DEC 33H
JNB 33H,JX
TAB: DB 3FH,06H,5BH,4FH,66H ;0,1,2,3,4
DB 6DH,7DH,07H,7FH,6FH ;5,6,7,8,9
D20MS:MOV R4,#100 ;20毫秒延时程序
L1:MOV R5,#10
L2:DJNZ R5,L2
DJNZ R4,L1
RET
参考文献
[1] 徐爱钧.智能化测量控制仪表原理与设计(第二版)。北京:北京航空航天大学出版社,2004
[2] 吴金戌.8051单片机实践与应用。北京:清华大学出版社,2002
[3] 张国勋。缩短ICL7135A/D采样程序时间的一种方法,1993
[4] 高峰.单片微型计算机与接口技术。北京:科学出版社,2003
结束语
本文基于A89c51单片机的一种8路输入电压测量电路,该电路采用ADC0809作为A/D转换元件,测量范围0至5伏,小数点后显示一位。要求能够依次显示每路通道电压,而且能够通过拨码开关选择输入通道。在软件编程上,采用了汇编语言进行编程,开发环境使用WAVE集成开发环境。开发了显示模块程序、通道切换程序、A/D转换程序使用3位LED模块显示,前面一位显示通道号,后面两位显示测量电压值,开发环境友好,易用,方便,大大加快本系统设计开发.拨码开关的使用,使操作更为简洁,易懂。实时显示电路的设计,使电压信息更迅速,直观地发布。
致此本人设计基本完成了预期的目标,系统在硬件自动测试,键盘操作,实时显示方面做的比较好。但是由于水平条件有限,设计成果并不是很完美,还存在问题,我准备在今后的工作过程中进一步完善此设计。
第 26页 共 27 页
致 谢
在本论文的完成过程中,我得到了新疆轻工职业技术学院机电工程系王伟老师的热心帮助和悉心指导.设计过程中,王老师一并帮我分析遇到的种种困难。一直支持,鼓励我,使设计得以顺利的完成。在开发的同时,和同学们之间的相互探讨也使我获益匪浅.在此,对他们表示由衷的感谢!
电子信息技术日新月异地飞速发展,人们总是处在不断学习阶段,因为学习水平有限,所以本设计肯定存在许多不尽如人意的地方,欢迎广大老师和同学批评指正。
最后,要感谢三年来机电系所有老师,他们精心的栽培为我以后的学习工作打下了坚实的基础。
1
展开阅读全文