数字电压表课程设计.docx
- 文档编号:17433936
- 上传时间:2023-07-25
- 格式:DOCX
- 页数:19
- 大小:270.29KB
数字电压表课程设计.docx
《数字电压表课程设计.docx》由会员分享,可在线阅读,更多相关《数字电压表课程设计.docx(19页珍藏版)》请在冰点文库上搜索。
数字电压表课程设计
单片机原理及应用技术课程设计
题目:
基于单片机的数字电压表设计
学生姓名:
学号:
班级:
指导教师:
学期:
2011——2012第2学期
目 录
引言1
1.设计任务与要求2
1.1 设计任务2
1.2 设计要求2
2.方法选择方案设计2
2.1 方法选择2
2.2方案设计3
3.硬件设计4
3.1 模块设计电路4
3.1.1时钟电路4
3.1.2系统复位电路4
3.2 Protues仿真电路5
3.2.2 电路工作原理5
3.3逐次逼近式A/D转换模块设计6
3.3.1 ADC0808简介6
3.3.2 A/D转换电路设计7
4 系统软件设计8
4.1 系统主程序设计8
4.2系统源程序编写9
5.系统仿真与调试13
5.1系统仿真14
5.2性能分析14
6.结论14
基于单片机的数字电压表设计
摘要:
本设计以AT89C51单片机为核心,以逐次比较型A/D转换器ADC0808、液晶显示器LCD为主体,构造了一款简易的数字电压表,能够测量1路0~5V直流电压,最小分辨率0.02V。
其中,A/D转换主要由芯片ADC0808来完成,它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
该电路具有精度高、测量准确、读数直观、使用方便等优点。
关键词:
数字电压表;单片机;A/D转换;AT89C51;ADC0808
引言
数字电压表的基本工作原理是利用A/D转换电路将待测的模拟信号转换成数字信号,通过相应换算后将测试结果以数字形式显示出来的一种电压表。
较之于一般的模拟电压表,数字电压表具有精度高、测量准确、读数直观、使用方便等优点。
电压表的数字化测量,关键在于如何把随时连续变化的模拟量转化成数字量,完成这种转换的电路叫模数转换器(A/D)。
数字电压表的核心部件就是A/D转换器,由于各种不同的A/D转换原理构成了各种不同类型的DVM。
一般说来,A/D转换的方式可分为两类:
积分式和逐次逼近式。
积分式A/D转换器是先用积分器将输入的模拟电压转换成时间或频率,再将其数字化。
根据转化的中间量不同,它又分为U-T(电压-时间)式和U-F(电压-频率)式两种。
逐次逼近式A/D转换器分为比较式和斜坡电压式,根据不同的工作原理,比较式又分为逐次比较式及零平衡式等。
斜坡电压式又分为线性斜坡式和阶梯斜坡式两种。
在高精度数字电压表中,常采用由积分式和比较式相结合起来的复合式A/D转换器。
本设计以AT89C51单片机为核心,以逐次比较型A/D转换器ADC0808、液晶显示器LCD为主体,构造了一款简易的数字电压表,能够测量1路0~5V直流电压,最小分辨率0.02V。
1.设计任务与要求
1.1 设计任务
利用单片机AT89C51和ADC0809设计一个数字电压表,能够测量0—5V之间的直流电压值,四位数码显示。
1.2 设计要求
测量最小分辨率为0.019V,测最误差约为0.02V。
2.方法选择方案设计
2.1 方法选择
实现数字电压表的方案较多,目前广泛采用的是基于74系列逻辑器件方案,本设计将介绍基于单片机实现的方案。
74系列逻辑器件方案采用双积分电路+液晶显示器+逻辑电路+定时采样电路+数据处理实现,被测电压信号由信号输入端加到测量系统,进行预处理后送到后级电路。
单片机系统方案此方案采用输入处理电路+ADC0808+AT89C51+液晶显示实现,被测信号由ADC0808模拟输入端输入,单片机采集转换数据,将转换数据送出显示。
系统除能确保实现要求的功能外,还可以方便地进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。
我们做好了现在的电路图,经过仿真,我们达到了预期的结果。
2.2方案设计
①经过以上方法设计,决定采用如图1-1所示方案逻辑图。
图2-1方案逻辑图
图2-2设计方案原理框图
②设计模块说明:
本设计方案主要有四大模块:
1、LED显示模块
2、时钟、复位电路
3、ADC0808数模转换模块
4、AT89C51单片机控制模块
3.硬件设计
3.1 模块设计电路
单片机控制模块设计
单片机控制模块的作用是为控制各单元电路的运行并完成数据的换算或处理,主要由单片机、时钟电路、复位电路组成。
3.1.1时钟电路
单片机工作的时间基准是由时钟电路提供的,在单片机的XTAL1和XYAL2两个管脚接一只晶振及两只电容就构成了单片机的时钟电路,电路中电容器
和
对振荡频率有微调作用,通常取(30±10)pF石英晶体选择6MHz或12MHz都可以。
时钟电路如图4-1所示。
图3-1系统时钟电路
3.1.2系统复位电路
单片机的RST管脚为主机提供了一个外部复位信号输入口。
复位信号是高电平有效,高电平有效的持续时间为2个机器周期以上。
单片机的复位方式可由手动复位方式完成。
3.2 Protues仿真电路
3.2.1 电路仿真图
图3-2Protues仿真电路原理图
3.2.2 电路工作原理
图4-2所示。
A/D转换由集成电路0808完成,0808具有8路模拟输入端口,地址线(23~25脚)可决定对哪一路模拟输入作A/D转换。
22脚为地址锁存控制,当输入为高电平时,对地址信号进行锁存。
6脚为测试控制,当输入一个2μS宽高电平脉冲时,就开始A/D转换。
7脚为A/D转换结束标志,当A/D转换结束时,7脚输出高电平。
9脚为A/D转换数据输出允许控制,当OE脚为高电平时,A/D转换数据从端口输出10脚为0808的时钟输入端,利用单片机30脚的六分频晶振频率再通过14024二分频得到1MHz时钟。
单片机的P1、P3.0~P3.3端口作为四位LED数码管显示控制。
P3.5端口用作单路显示/循环显示转换按钮,P3.6端口用作单路显示时选择通道。
P0端口作A/D转换数据读入用,P2端口用作0808的A/D转换控制。
3.3逐次逼近式A/D转换模块设计
3.3.1 ADC0808简介
1.ADC0808引脚功能
图3-3ADC0808引脚图
IN0~IN7:
8路模拟量输入。
A、B、C:
3位地址输入,2个地址输入端的不同组合选择八路模拟量输入。
ALE:
地址锁存启动信号,在ALE的上升沿,将A、B、C上的通道地址锁存到内部的地址锁存器。
D0~D7:
八位数据输出线,A/D转换结果由这8根线传送给单片机。
OE:
允许输出信号。
当OE=1时,即为高电平,允许输出锁存器输出数据。
START:
启动信号输入端,START为正脉冲,其上升沿清除ADC0808的内部的各寄存器,其下降沿启动A/D开始转换。
EOC:
转换完成信号,当EOC上升为高电平时,表明内部A/D转换已完成。
2.ADC0808内部结构图
图4-4ADC0808内部结构
逐次逼近型A/D转换器ADC0808由八路模拟开关、地址锁存与译码器、比较器、D/A转换器、寄存器、控制电路和三态输出锁存器等组成。
3.3.2 A/D转换电路设计
图ADC0808与单片机的连接
4 系统软件设计
4.1 系统主程序设计
①初始化程序
系统上电时,初始化程序将70H~77H内存单元清0,P2口置0。
②主程序
在刚上电时,系统默认为循环显示8个通道的电压值状态。
当进行一次测量后,将显示每一通道的A/D转换值,每个通道的数据显示时间为1s左右。
主程序在调用显示子程序和测试子程序之间循环,主程序流程图见图5-1
图4-1主程序流程图
③显示子程序
显示子程序采用动态扫描法实现四位数码管的数值显示。
测量所得的A/D转换数据放在70H~77H内存单元中,测量数据在显示时需转换成为十进制BCD码放在78H~7BH内存单元中,其中7BH存放通道标志数。
寄存器R3用作8路循环控制,R0用作显示数据地址指针。
④模/数转换测量子程序
模/数转换测量子程序用来控制对0808八路模拟输入电压的A/D转换,并将对应的数值移入70H~77H内存单元。
4.2系统源程序编写
LED_0EQU30H
LED_1EQU31H
LED_2EQU32H;存放段码
ADCEQU35H
CLOCKBITP2.4;定义ADC0808时钟位
STBITP2.5
EOCBITP2.6
OEBITP2.7
ORG00H
SJMPSTART
ORG0BH
LJMPINT_T0
START:
MOVLED_0,#00H
MOVLED_1,#00H
MOVLED_2,#00H
MOVDPTR,#TABLE;段码表首地址
MOVTMOD,#02H
MOVTH0,#245
MOVTL0,#00H
MOVIE,#82H
SETBTR0
WAIT:
CLRST
SETBST
CLRST;启动AD转换
JNBEOC,$;等待转换结束
SETBOE
MOVADC,P1;读取AD转换结果
CLROE
MOVA,ADC
MOVB,#100;AD转换结果转换成BCD码
DIVAB
MOVLED_2,A
MOVA,B
MOVB,#10
DIVAB
MOVLED_1,A
MOVLED_0,B
LCALLDISP
SJMPWAIT
INT_T0:
CPLCLOCK;提供ADC0808时钟信号
RETI
DISP:
movdptr,#table
MOVA,LED_0;数码显示子程序
MOVCA,@A+DPTR
CLRP2.3
MOVP0,A
LCALLDELAY
SETBP2.3
movdptr,#table
MOVA,LED_1
MOVCA,@A+DPTR
CLRP2.2
MOVP0,A
LCALLDELAY
SETBP2.2
movdptr,#table
MOVA,LED_2
MOVCA,@A+DPTR
setbacc.7
CLRP2.1
MOVP0,A
LCALLDELAY
SETBP2.1
RET
DELAY:
MOVR6,#10;延时5毫秒
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
ntov:
movdptr,#tab
mova,adc
movca,@a+dptr
movb,#2
divab
movr1,b
movb,#10
divab
movled_2,a
movled_1,b
cjner1,#01,kk1
movled_0,#05
back:
ret
kk1:
movled_0,#00
ajmpback
RET
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FHMOVB,#10
DIVAB
MOVLED_1,A
MOVLED_0,B
LCALLDISP
SJMPWAIT
INT_T0:
CPLCLOCK;提供ADC0808时钟信号
RETI
DISP:
movdptr,#table
MOVA,LED_0;数码显示子程序
MOVCA,@A+DPTR
CLRP2.3
MOVP0,A
LCALLDELAY
SETBP2.3
movdptr,#table
MOVA,LED_1
MOVCA,@A+DPTR
CLRP2.2
MOVP0,A
LCALLDELAY
SETBP2.2
movdptr,#table
MOVA,LED_2
MOVCA,@A+DPTR
setbacc.7
CLRP2.1
MOVP0,A
LCALLDELAY
SETBP2.1
RET
DELAY:
MOVR6,#10;延时5毫秒
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
ntov:
movdptr,#tab
mova,adc
movca,@a+dptr
movb,#2
divab
movr1,b
movb,#10
divab
movled_2,a
movled_1,b
cjner1,#01,kk1
movled_0,#05
back:
ret
kk1:
movled_0,#00
ajmpback
RET
TABLE:
DB3FH,06H,5BH,4FH,66H
DB6DH,7DH,07H,7FH,6FH
MOVB,#10
DIVAB
MOVLED_1,A
MOVLED_0,B
LCALLDISP
SJMPWAIT
INT_T0:
CPLCLOCK;提供ADC0808时钟信号
RETI
DISP:
movdptr,#table
MOVA,LED_0;数码显示子程序
MOVCA,@A+DPTR
CLRP2.3
MOVP0,A
LCALLDELAY
SETBP2.3
movdptr,#table
MOVA,LED_1
MOVCA,@A+DPTR
CLRP2.2
MOVP0,A
LCALLDELAY
SETBP2.2
movdptr,#table
MOVA,LED_2
MOVCA,@A+DPTR
setbacc.7
CLRP2.1
MOVP0,A
LCALLDELAY
SETBP2.1
RET
DELAY:
MOVR6,#10;延时5毫秒
D1:
MOVR7,#250
DJNZR7,$
DJNZR6,D1
ntov:
movdptr,#tab
mova,adc
movca,@a+dptr
movb,#2
divab
movr1,b
5.系统仿真与调试
简易数字电压表与“标准”数字电压表测得的绝对误差应在0.02V以内。
在进行电路的局部调试之后,我又进行了系统整机调试。
首先为ADC0808接上+12V的电压,为其它芯片接上+5V的工作电压。
另外还要输入待测的模拟电压,该电压从200mV以下的电压开始输起,依次增大,直到达到待测电压的上限5V为止,记录测量数据并分析系统性能。
5.1系统仿真
调好程序后将目标程序导入Proteus进行软硬件调试,基于单片机实现的数字电压表测试值见表5-2所示。
表6-1 测试值与真实值
电压表测得值/V
0.00
0.332
0.39
0.507
0.996
1.250
1.503
2.000
2.480
绝对误差/V
0.00
+0.02
+0.01
+0.02
+0.01
+0.01
+0.03
+0.00
+0.01
电压表测得值/V
4.980
5.07
9.96
12.50
15.03
19.92
29.88
39.84
49.80
绝对误差/V
+0.00
+0.02
+0.01
+0.01
+0.02
+0.02
+0.02
+0.03
+0.02
从表中可以看出,电压表测得值误差均在0.02V以内,这与采用8位A/D转换器所能达到的理论误差精度相比较接近,因此在一般的应用场合都可以满足要求。
5.2性能分析
(1)由于单片机为8位处理器,当输入电压为5.00V时,输出数据值为255(FFH),因此单片机最大的数值分辨率为0.0196V(5/255)。
这就决定了该电压表的最大分辨率(精度)只能达到0.0196V。
测试时电压数值的变化一般以0.02的电压幅度变化,如要获得更高的精度要求,应采用12位、13位的A/D转换器。
(2)简易电压表测得的值基本上均比标准值偏大0.01~0.02V。
这可以通过校正0809的基准电压来解决,因为该电压表设计时直接用7805的供电电源作为基准电压,电压可能有偏差。
另外可以用软件编程来校正测量值。
6.结论
仿真测试表明,系统性能良好,测量读数稳定易读、更新速度合理,直流电压测量范围为0~5V,最小分辨率为0.02V,满足任务书指标要求。
但是,该系统也存在一定程度的不足,例如:
1、输入电压易发生干扰不稳定,且驱动能力可能存在不足,需在被测信号的输入端加上一部分驱动电路,比如将量程转换电路改成带放大能力的自动量程转换电路,将幅值较小的信号经适当放大后再测量,可显著提高精度;
2、输出量可用平均值算法来改善,使测量准确度更高。
3、若能将测量的电压值实时保存,使用时将更方便。
4、ADC0808可实现对8个通道的输入信号轮流转换,本设计仅仅使用了其中一个通道,造成了较大的资源浪费。
若能对电路稍加改进,实现对多路信号的轮流测量并自动保存相应结果,其应用价值将会更大。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字 电压表 课程设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)