整理万用表的课程设计.docx
《整理万用表的课程设计.docx》由会员分享,可在线阅读,更多相关《整理万用表的课程设计.docx(27页珍藏版)》请在冰点文库上搜索。
整理万用表的课程设计
数字万用表的设计
院(系)_____________
专业______________
班级______________
姓名______________
学号______________
2012年6月21日
1、设计任务..........................................................................................1
1.1设计目的.......................................................................................1
1.2设计指标及要求..............................................................................1
2、设计思路与总体框图...................................................................1
3、系统硬件电路的设计…….........………….....…………..…………….2
3.1多用表主电路 …….......…………….....……………………..............2
3.2电阻测量输入电路………………….....……………………....///..........3
3.3电压测量输入电路……........……………………………………....….4
3.4电流输入测量电路........................................................................5
4、系统的软件设计..............……………..............……………………...6
5、系统的设计仿真............……………..............……………….……...14
6、总结与体会…...........…………...............………………………….…..16
7、参考文献....................……….....…………….……………………..17
1、设计任务
1.1设计目的
采用8位8路A/D转换器ADC0809和AT89S52单片机,设计一台数字多用表,能进行电压、电流和电阻的测量,测量结果通过LED数码管显示,通过按键进行测量功能转换。
1.2设计指标及要求
电压测量范围0~5V,测量误差约为
0.02V,电流测量范围1~100mA,测量误差约为
0.5mA,电阻测量范围0~1000Ω,测量误差约为
2Ω。
2、设计思路与总体框图
1.方案选择
用单片机AT89S52与ADC0808设计一个数字万用表,配合分流电阻、分压电阻、基准电阻可以测量直流电压值,直流电流、直流电阻,四位数码显示。
实现各级量程的直流电压测量,其量程范围为0—5(V)。
实现不同量程的直流电流测量,其量程范围为0—100(mA)。
实现不同量程的电阻测量,其量程范围为0—1000(Ω)。
ADC0808是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。
它是逐次逼近式A/D转换器,可以和单片机直接接口。
首先,利用P0口数据地址复用,将地址通过P0口输入到单片机中。
然后,充分利用单片机强大的运算转化功能将其转成适当的二进制信号控制数显以确保正确的显示被测量的读数。
2.总体框图
图一:
总体框图
3、系统硬件电路的设计
3.1数字多用表的主电路
数字多表仪表主电路如图1所示。
89S52单片机通过线选方式扩展了A/D转换器ADC0809和4位LED数码管,单片机的P2.7引脚作为ADC0809的片选信号,因此A/D转换器的端口地址为7FFFH.片选信号和
信号一起经或非门产生ADC0809的启动信号START和地址锁存信号ALE。
片选信号和
信号一起经或非门产生输出允许信号OE,OE=1时选通三态门使输出锁存器中的转换结果送入数据总路线。
ADC0809的EOC信号经反相后接到89S52的
引脚,用于产生A/D转换完成中断请求信号。
ADC0809芯片的3位模拟量输入通道地址输入端A、B、C分别接到89S52的P0.0、P0.1和P0.2,故只要向端口地址0C000H分别写入00H~07H,即可启动模拟量输入通道0~7进行A/D转换。
ADC0809参考正电压为5V,参考负电压为0V,时钟输入为2MHz。
图1数字多用表的主电路图
单片机的P1.0~P1.2引脚通过一个转换开关接地,通过判断P1.0~P1..2引脚电平的高低,决定是否进行电阻测量、电压测量或电流测量。
3.2数字多用表电阻输入电路
图-2
图-2所示为数字多用表的电阻测量输入电路。
运算放大器的反馈电阻Rx作为待测电阻,通过1K电阻R19接到-5V电源上,假定运算放大器理想,那么放大器的输出电压Rv=5×Rx/R19,将Rv送给ADC0809,转换后得到数字量为Dv=Rv×255/5。
单片机读取A/D转换数据,再经过逆向运算可得Rx=Dv×R19/255,注意此时得到的Rx是二进制数,需要转化成十进制数后才能送给数码管显示,程序中采取用4字节无符号除法,连续进行4次除以10的除法,依次取得4位数值,并且电阻测量范围只保证在0~ 1KΩ范围内误差不超过2Ω,如果要测量其他电阻,则需该改R19的值。
为满足图-2电路需要的-5V电源,利用LM324做一个反向电路,将+5V的电源转换成了-5V,如图-3:
图-3
3.3数字多用表的电压测量输入电路
图-4
图-4所示为数字多用表的电压测量输入电路,待测电压经过低通滤波器滤除高频干扰,再经过同向放大器送给ADC0809,电压测量输入范围0~5V,ADC0809的分辨率为8位,测量误差为5/255=0.02V。
3.4数字万用表的电流测量输入电路
图-5
图-5是数字万用表电流测量输入电路。
电流测量范围为1-100mA,因为ADC0809是电压转化器,必须将电压才能进行测量,这可以通过串接电阻RL来实现,注意RL必须很小(如0.1Ω),否则营销电流数值,由于待测电流和RL都很小,RL两端的电压也很小,必须将其放大到ADC0809能够分辨的范围之内。
4、系统的软件设计
数字多用表的软件设计如下程序所示,完成堆栈指针初始化之后,通过单片机P1.0—P1.2引脚进行测量功能判断,根据不同引脚电平分别进行电阻、电压或电流测量。
每种测量过程都基本相同,先读取ADC0809的A/D转换数据,然后进行相应的数据处理,最后将处理后的数据送往LED数码管进行显示。
数字多用仪表的软件程序:
org0000h;单片机复位地址
ajmpmain;转移到主程序处
org0100h;main被定位在0x0100处
main:
movsp,#80h;初始化堆栈指针
jnbP1.0,cr
jnbP1.1,cv
jnbP1.2,ca
cr:
movR7,#00h
lcalladc
LCALLRDAT
lcallDISPLAY
sjmpmain
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
MOVR3,A
MOVA,R2
ADDCA,B
MOVR2,A
ORLA,R3
JZMULD21
SETBOV
RET
MULD21:
CLROV
RET
;四字节无符号数除法
;R0存放被除数,除数,商数的地址。
;从R0开始的连续四个字节为结果的余数,入口时可以为任意,但在出口时发生变化。
;其后的连续4个字节在入口时是被除数,出口时是商数。
;再其后的连续四个字节在入口时是除数,出口时保持不变。
;用到累加器A,B,PSW,R0~R7。
;如果除数为零,则置OV=1标志,否则清零。
;在出口时总是清除C。
DIVD4:
MOVA,R0
MOVB,A
ADDA,#08h
MOVR1,A
MOVA,#00h
ORLA,@R1
INCR1
ORLA,@R1
INCR1
ORLA,@R1
INCR1
ORLA,@R1
JZDIVD45
MOVR1,B
MOVR2,#04h
DIVD41:
MOV@R1,#00h
INCR1
DJNZR2,DIVD41
MOVR3,#20h
DIVD42:
MOVR2,#08h
MOVA,B
MOVR0,A
ADDA,#07h
MOVR1,A
CLRC
DIVD43:
MOVA,@R1
RLCA
MOV@R1,A
DECR1
DJNZR2,DIVD43
MOVA,R0
ADDA,#03h
MOVR1,A
MOVA,R0
ADDA,#0Bh
MOVR0,A
MOVA,@R1
SUBBA,@R0
MOVR4,A
DECR1
DECR0
MOVA,@R1
SUBBA,@R0
MOVR5,A
DECR1
DECR0
MOVA,@R1
SUBBA,@R0
MOVR6,A
DECR1
DECR0
MOVA,@R1
SUBBA,@R0
MOVR7,A
JCDIVD44
MOVA,B
MOVR0,A
ADDA,#03h
MOVR1,A
MOVA,R4
MOV@R1,A
DECR1
MOVA,R5
MOV@R1,A
DECR1
MOVA,R6
MOV@R1,A
DECR1
MOVA,R7
MOV@R1,A
MOVA,R0
ADDA,#07h
MOVR1,A
INC@R1
DIVD44:
DJNZR3,DIVD42
MOVR0,B
CLROV
CLRC
RET
DIVD45:
SETBOV
CLRC
RET
end
5、系统的设计仿真
电压测量仿真
电流测量仿真
第五章 环境影响评价与安全预评价电阻测量仿真
对于安全预评价的内容,要注意安全预评价的目的、时间,安全预评价报告的内容等知识点。
6.1总结与体会
(三)安全预评价程序数字多用表的课程设计,从确定方案、查找资料、仿真电路图,到最后电路设计实践,耗时2个星期。
数字多用表的设计方案采取AT89S52单片机结合A/D转换器,从而实现对电阻、电流和电压的测量的方案,从而实现电阻、电流和电压的数字化测量。
(二)环境影响经济损益分析的步骤本次课程设计,虽然方案基本出来了,但是在硬件制作方面出现了几个问题,这也暴露出我们知识方面的一欠缺。
不足主要体现在以下几个方面:
7.作出评价结论
(1)ADC0809的第10脚的时钟信号,我们是通过单片机编程实现的但是由于频率过低,只有500KHz,造成LED数码管显示不稳定而出现闪烁现象。
最终验收时是通过从外部信号发生器输入2MHz时钟信号解决的。
(4)预防或者减轻不良环境影响的对策和措施的合理性和有效性;
(2)万用板焊接时,由于布线不太合理,使得背面线很零乱。
并给后面的线路检查带来了不少麻烦。
(3)对Proteus仿真软件使用不熟练,使画仿真图时遇到不少问题。
定量安全评价方法有:
危险度评价法,道化学火灾、爆炸指数评价法,泄漏、火灾、爆炸、中毒评价模型等。
(4)51单片机基础知识不扎实,电路分析遇到比较多的问题历经两个星期的课程设计后我深得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在