单片机课设数字万用表.docx
- 文档编号:2059972
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:37
- 大小:653.92KB
单片机课设数字万用表.docx
《单片机课设数字万用表.docx》由会员分享,可在线阅读,更多相关《单片机课设数字万用表.docx(37页珍藏版)》请在冰点文库上搜索。
单片机课设数字万用表
分院
信息科学与工程学院
专业
自动化
学生姓名
蔡艳洁
学号
1003010502
设计题目
基于单片机的数字万用表的设计(硬)
内容及要求:
1.以单片机为控制核心实现对电阻、电流、电压的测量;
2.设计相应检测电路和切换电路;
3.采用4位数码管显示;
4.设计3个按键用于选择测量对象。
进度及安排:
1.确定课设的题目并熟悉其中所所涉及的内容(1天);
2.图书馆查资料确定设计的方案和学习使用软件keil3和proteus(2天);
3.把确定的方案通过一系列的程序设计来实现设计的初衷,完成报告(2天)。
指导教师(签字):
年月日
分院院长(签字):
年月日
课程设计任务书
摘要
本课题介绍了一种基于单片机的简易数字电压表的设计。
该设计主要由三个模块组成A/D转换模块数据处理模块及显示模块。
A/D转换主要由芯片ADC0804来完成它负责把采集到的模拟量转换为相应的数字量在传送到数据处理模块。
数据处理则由芯片89S52来完成其负责把ADC0804传送来的数字量经过一定的数据处理产生相应的显示码送到显示模块进行显示此外,它还控制着ADC0804芯片工作。
该系统的数字电压表电路简单所用的元件较少成本低且测量精度和可靠性较高。
此数字电压表可以测量0-5V的1路模拟直流输入电压值并通过一个四位一体的7段数码管显示出来。
关键字单片机;数字电压表;A/D转换;80S52;ADC0804
目录
基于单片机的数字万用表的设计(硬)1
1.实现方法1
2.模数(A/D)转换与数字显示电路原理2
3.主要元器件介绍3
3.1.ADC8083
3.1.1.ADC0809的内部逻辑结构3
3.1.2.引脚功能(外部特性)3
3.1.3.ADC0809应用说明:
4
3.2.8051芯片描述5
3.2.1.结构框图5
3.2.2.8051性能5
3.2.3.管脚定义6
4.硬件设计10
4.1.数字多用表的电阻测量输入电路10
4.2.电压测量输入电路10
4.3.电流输入测量电路11
5.系统仿真12
5.1.电阻仿真12
5.2.电压仿真12
5.3.电流仿真13
6.系统原理图13
7.软件设计14
7.1.流程图14
7.2.程序代码15
8.总结与体会25
8.1.总结25
8.2.体会25
9.参考文献25
基于单片机的数字万用表的设计(硬)
1.实现方法
本设计可以分为直流电压测量电路;交流/直流转换电路;电流/电压转换电路;电阻/电压转换电路;功能控制和数据显示电路这五个的主要电路模块。
在设计直流电压测量电路时,利用反相比例运算电路,加上自己设计的四选一模拟开关,组成了一个直流电压测量电路。
但该电路在实践中存在问题,不能实现预期的结果。
做了适当的修改,改为由电阻、模拟开关和运放组成放大倍数可调的比例电路。
由于无论是指针式万用表还是普通的真有效值或平均值响应的数字万用表,其交流电压档的频率特性都较差,一般只能测量几十赫兹到几千赫兹的低频电压。
我发现对于指针式万用表造成频率特性较差的原因主要是万用表的分压电阻采用精密电阻器,其本身的分布电容较大,在对高频电压信号进行测量时,由于分布电容的容抗大为减少使得测量值明显低于实际电压值,而对于数字万用表除上述原因以外,另一主要原因是受平均值响应,转换器本身频率特性的限制。
但此缺陷可通过采用宽频带运算放大器加以改善。
因此,消除分压电阻器分布电容的影响就可以提高万用表工作频率的上限,大大改善其频率特性。
数字万用表(DMM)亦称数字多用表,是目前在电子检测及维修工作中最常用、最得力的一种工具类数字仪表。
它采用的数字化测量技术,通过对连续的模拟量(直流输入电压)的采样将其转换成不连续、离散的数字量,并以十进制数字形式显示出来。
由于内部采用了运放电路,内阻可以做得很大,往往在1M欧或更大(即可以得到更高的灵敏度)。
这使得对被测电路的影响可以更小,测量精度较高。
传统的指针式万用表功能单一、精度低,已经不能满足数字化时代的需求,而采用单片A/D转换器构成的数字万用表,具有读数方便、精度高,测试功能强、集成度高、微功耗、抗干扰能力强等特点,另外带有单片机的智能型数字万用表更是具有自动校准,自动测量,自动数据处理和实时通讯等多种功能。
目前,数字万用表已被广泛用于电子及电工测量、工业自动化仪表、自动测试系统等智能化测量领域,示出强大的生命力。
与此同时,由DMM扩展而成的各种通用及专用数字仪器仪表,也把电量及非电量测量技术提高到崭新水平。
图1系统整体框图
2.模数(A/D)转换与数字显示电路原理
常见的物理量都是幅值(大小)连续变化的所谓模拟量(模拟信号)。
指针式仪表可以直接对模拟电压、电流进行显示。
而对数字式仪表,需要把模拟电信号(通常是电压信号)转换成数字信号,再进行显示和处理(如存储、传输、打印、运算等)。
数字信号与模拟信号不同,其幅值(大小)是不连续的。
这种情况被称为是“量化的”。
若最小量化单位(量化台阶)为
,则数字信号的大小一定是
的整数倍,该整数可以用二进制数码表示。
但为了能直观地读出信号大小的数值,需经过数码变换(译码)后由数码管或液晶屏显示出来。
例如,设
=0.1
,我们把被测电压
与
比较,看
是
的多少倍,并把结果四舍五入取为整数
(二进制)。
一般情况下,
≥1000即可满足测量精度要求(量化误差≤1/1000=0.1%)。
最常见的数字表头的最大示数为1999,被称为三位半(
)数字表。
对上述情况,我们把小数点定在最末位之前,显示出来的就是以mV为单位的被测电压
的大小。
如:
是
(0.1
)的1234倍,即
=1234,显示结果为123.4(
)。
这样的数字表头,再加上电压极性判别显示电路,就可以测量显示-199.9~199.9
的电压,显示精度为0.1
。
由上可见,数字测量仪表的核心是模数(A/D)转换、译码显示电路。
A/D转换一般又可分为量化、编码两个步骤。
3.主要元器件介绍
3.1.ADC808
ADC0808是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
3.1.1.ADC0809的内部逻辑结构
图2内部结构
ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。
多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。
三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数
3.1.2.引脚功能(外部特性)
ADC0808芯片有28条引脚,采用双列直插式封装,各引脚功能如下:
1~5和26~28(IN0~IN7):
8路模拟量输入端。
8、14、15和17~21:
8位数字量输出端。
22(ALE):
地址锁存允许信号,输入,高电平有效。
6(START):
A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。
7(EOC):
A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
9(OE):
数据输出允许信号,输入,高电平有效。
当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
10(CLK):
时钟脉冲输入端。
要求时钟频率不高于640KHZ。
12(VREF(+))和16(VREF(-)):
参考电压输入端
11(Vcc):
主电源输入端。
13(GND):
地。
23~25(ADDA、ADDB、ADDC):
3位地址输入线,用于选通8路模拟输入中的一路
表4地址输入线的选择通道
图3AD0808
3.1.3.ADC0809应用说明:
(1).ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。
(2).初始化时,使ST和OE信号全为低电平。
(3).送要转换的哪一通道的地址到A,B,C端口上。
(4).在ST端给出一个至少有100ns宽的正脉冲信号。
(5).是否转换完毕,我们根据EOC信号来判断。
(6).当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。
3.2.8051芯片描述
3.2.1.结构框图
图5结构框图
3.2.2.8051性能
芯片内部模块主要包含了ALU模块、中央控制器模块、定时/计数器模块、串行通信模块等。
它具有以下一些基本特点:
(1)、采用了全局同步设计:
(2)、具有清晰的逻辑层次结构;
(3)、可以方便地对其进行功能扩展;
(4)、与工业标准昀8051指令兼容;
(5)、采用了复用的I/O通用接口;
(6)、包含1K字节RAM、8K的片内SRAM来用当程序ROM。
(7)、外接spi-flash,用来存储程序,也可由8051直接对其进行读写,擦除等指令
与标准8051单片机相比,本芯片最大的改进就是流水的不同,通用8051分为6级流水周期,每级流水周期占用两个时钟周期,本芯片,只含有两级流水周期,在第一个周期中,进行读取指令和功能译码,第二个周期进行指令操作和相关存储器的数据写入。
我们通过设计一个寄存器来完成这个操作,这个寄存器用来把信号延时一个时钟周期。
因为我们在第一个时钟周期译码完成指令操作译码,这样,就把不用的信号进行延时一个周期,以此来减少流水周期。
这是本芯片与标准8051作品最大的不同,但由于设计中32位的取指长度和flash的读取速度的限制,对外部时钟进行过分频,总体效果比标准8051执行速度快2-3倍。
对于8051-般操作和功能,在第三部分以详细介绍,在这里不再累述。
性能参数.18umCMOS工艺
PinLQFP封装
主频:
50MHz
工作电压:
2.6-3.5V
工作环境:
0-70摄氏度
3.2.3.管脚定义
图6管脚定义
4.硬件设计
4.1.数字多用表的电阻测量输入电路
所示为数字多用表的电阻测量输入电路。
运算放大器的反馈电阻Rx作为待测量电阻,通过1000Ω电阻R19接到电源-5V。
假定运算放大器理想,那么放大器的输出电压,将RV送给ADC0809,转换后得到数字量为。
单片机读取A/D转换数据,再经过逆向运算可得,注意此时得到的Rx为二进制数,需要转化为十进制数后才能送给数码管显示。
程序中采用4字节专利号除法,连续进行4次除以10的除法,依1000Ω范围内不超过2Ω,如果测量其他范围的电阻,需要修改R19的数值,或者采用其他电路。
待测电阻
图7电阻测量电路
4.2.电压测量输入电路
数字多用表的电压测量输入电路。
待测电压经过低通滤波器滤除高频干扰,再通过同相放大器送给ADC0809,电压测量范围为0~5V,ADC0809的分辨率为8位,测量误差为5/255≈0.02V.
图8电压测量输入电路
4.3.电流输入测量电路
数字多用表的电流输入电路。
电流测量范围为1~100mA,因为ADC0809是电压转换器件,必须交电流转换为电压才能进行测量,这可以通过串接电阻RL来实现,注意RL必须很小(例如00.1Ω),否则影响电流数值。
由于待测电流和RL都很小,RL两端的电压也很小,必须将其放大到ADC0809能够分辨的范围之内。
图9电流输入测量电路
假设待测电流大小为I,RL两端节点电压分别为VA和VB,VA经过反向缓冲电路之后VC=-VA。
VA和VB经过差分放大电路得:
再经过同相放大电路得:
将AV送给ADC0809转换后得到数字量为:
单片机读取A/D转换数据,再经过逆向运算可得
有两个问题值得注意,首先,由于电流的单位是mA,不能直接计算I的值应先变换为再进行计算;其次,这么算出来的电流值误差比较大,原因是LM324不是精密理想运算放大器,当输入信号很小时误差比较大。
因此需要对计算数值进行修正,方法是先计算DAV×50000,然后将结果减去102000这个数值是通过反复测试并经过曲线拟合得到的。
5.系统仿真
5.1.电阻仿真
5.2.
电压仿真
5.3.电流仿真
6.系统原理图
图10系统原理图
7.软件设计
7.1.流程图
图11流程图
7.2.程序代码
org0000h;单片机复位地址
ajmpmain;转移到主程序处
org0100h;main被定位在0x0100处
main:
movsp,#80h;初始化堆栈指针
jnbP1.0,cr
jnbP1.1,cv
jnbP1.2,ca
cr:
movR7,#00h
lcalladc
LCALLRDAT
lcallDISPLAYsjmpmain
CV:
MOVR7,#01H
LCALLADC
LCALLVDAT
LCALLDISPLAY
SJMPMAIN
CA:
MOVR7,#02H
LCALLADC
LCALLADAT
LCALLDISPLAY
SJMPMAIN
ADC:
MOVA,R7;0808A/D转换子程序
MOVDPTR,#7FFFH
MOVX@DPTR,A
JBP3.3,$
MOVXA,@DPTR;输入转换结果
RET
vdat:
movR2,#00h
movR3,A
movR6,#01h
movR7,#0F4h
callMULD2;乘以500
clrC
movA,r5
addA,#60h;加96修正
movr5,A
movA,r4
addcA,#00h
movr4,A
movA,r3
addcA,#00h
movr3,A
movA,r2
addcA,#00h
movr2,A
movr0,#30h
movr1,#34h
movA,R2
mov@r1,A
incr1
movA,R3
mov@r1,A
incr1
movA,R4
mov@r1,A
incr1
movA,R5
mov@r1,A
incr1
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#0FFh
callDIVD4;除以255
movr1,#38h
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#0Ah
callDIVD4
mov43h,33h
callDIVD4
mov42h,33h
callDIVD4
mov41h,33h
movr0,#40h
mov@r0,#00h
incr0
movA,41h
movDPTR,#SEGMENT7
movcA,@A+DPTR
orlA,#80h
mov@r0,A
incr0
movA,42h
movDPTR,#SEGMENT7
movcA,@A+DPTR
mov@r0,A
incr0
movA,43h
movDPTR,#SEGMENT7
movcA,@A+DPTR
mov@r0,A
ret
ADAT:
movB,A
movA,#0B6h
clrC;以下根据范围设置数值以防溢出
subbA,B
jcLARGERA
movA,B
subbA,#16h
jcLESSA
ajmpMIDDLEA
LARGERA:
movA,#0B6h
ajmpCALCULATEA
LESSA:
movA,#16h
ajmpCALCULATEA
MIDDLEA:
movA,B
CALCULATEA:
movr2,#0C3h
movr3,#50h
movr6,#00h
movr7,A
callMULD2;乘以50000
clrC
movA,r5
subbA,#70h;以下减去102000
movr5,A
mov37h,A
movA,r4
subbA,#8Eh
movr4,A
mov36h,A
movA,r3
subbA,#01h
movr3,A
mov35h,A
movA,r2
subbA,#00h
movr2,A
mov34h,A
movr0,#30h
movr1,#38h
mov@r1,#00h
incr1
mov@r1,#01h
incr1
mov@r1,#5Eh
incr1
mov@r1,#0A0h
callDIVD4;除以89760
movr1,#38h
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#0Ah
movDPTR,#SEGMENT7
callDIVD4
movA,33h
movcA,@A+DPTR
mov43h,A
callDIVD4
movA,33h
movcA,@A+DPTR
mov42h,A
callDIVD4
movA,33h
movcA,@A+DPTR
cjneA,#3Fh,NOTEQU
movA,#00h
NOTEQU:
mov41h,A
mov40h,#00h
RET
rdat:
movR2,#00h
movR3,A
movR6,#03h
movR7,#0E8h
callMULD2;乘以1000
movr0,#30h
movr1,#34h
movA,R2
mov@r1,A
incr1
movA,R3
mov@r1,A
incr1
movA,R4
mov@r1,A
incr1
movA,R5
mov@r1,A
incr1
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#0FFh
callDIVD4;除以255
movr1,#38h
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#00h
incr1
mov@r1,#0Ah
movDPTR,#SEGMENT7
callDIVD4;连续进行4次除以10的操作
movA,33h;取得10进制值
movcA,@A+DPTR
mov43h,A
callDIVD4
movA,33h
movcA,@A+DPTR
mov42h,A
callDIVD4
movA,33h
movcA,@A+DPTR
mov41h,A
callDIVD4
movA,33h
movcA,@A+DPTR
cjneA,#3Fh,NONZERO
movA,#00h
NONZERO:
mov40h,A
ret
DELAY_5ms:
movR5,#01h;设置R5初始计数值
DELAY_5ms1:
movR6,#16h;设置R6初始计数值
DELAY_5ms2:
movR7,#70h;设置R7初始计数值
DELAY_5ms3:
djnzR7,DELAY_5ms3;延时时间为Time=(((R7*2)+2+1)*R6+2+1)*R5+1
djnzR6,DELAY_5ms2;
djnzR5,DELAY_5ms1;
ret
SEGMENT7:
DB3Fh;7段数码管字符0的abcdefg的值,a在最低位,最高位始终保留为0
DB06h
DB5Bh
DB4Fh
DB66h
DB6Dh
DB7Dh
DB07h
DB7Fh
DB6Fh
DISPLAY:
movDPTR,#0fEffh;写第一位数码管
movr1,#40h
movA,@r1
movx@DPTR,A
setbC
movP1.4,C
clrC
movP1.4,C
callDELAY_5ms
setbC
movP1.4,C
incr1
movA,@r1;写第二位数码管
movx@DPTR,A
setbC
movP1.5,C
clrC
movP1.5,C
callDELAY_5ms
setbC
movP1.5,C
incr1
movA,@r1;写第三位数码管
movx@DPTR,A
setbC
movP1.6,C
clrC
movP1.6,C
callDELAY_5ms
setbC
movP1.6,C
incr1
movA,@r1;写第四位数码管
movx@DPTR,A
setbC
movP1.7,C
clrC
movP1.7,C
callDELAY_5ms
setbC
movP1.7,C
ret
;双字节二进制无符号数乘法
;被乘数在R2(高位)、R3(低位)中,乘数在R6(高位)、R7(低位)中。
;乘积在R2(高位)、R3、R4、R5(低位)中。
;用到累加器A,B,PSW,R2~R7。
;永远不会产生进位。
;在出口时总是清除C。
;若结果超出2个字节范围则OV=1。
MULD2:
MOVA,R3
MOVB,R7
MULAB
MOVR4,B
MOVR5,A
MOVA,R3
MOVB,R6
MULAB
ADDA,R4
MOVR4,A
CLRA
ADDCA,B
MOVR3,A
MOVA,R2
MOVB,R7
MULAB
ADDA,R4
MOVR4,A
MOVA,R3
ADDCA,B
MOVR3,A
CLRA
RLCA
XCHA,R2
MOVB,R6
MULAB
ADDA,R3
M
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 数字 万用表