万用表的课程设计.docx

上传人:b****7 文档编号:9472298 上传时间:2023-02-04 格式:DOCX 页数:26 大小:308.35KB
下载 相关 举报
万用表的课程设计.docx_第1页
第1页 / 共26页
万用表的课程设计.docx_第2页
第2页 / 共26页
万用表的课程设计.docx_第3页
第3页 / 共26页
万用表的课程设计.docx_第4页
第4页 / 共26页
万用表的课程设计.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

万用表的课程设计.docx

《万用表的课程设计.docx》由会员分享,可在线阅读,更多相关《万用表的课程设计.docx(26页珍藏版)》请在冰豆网上搜索。

万用表的课程设计.docx

万用表的课程设计

数字万用表的设计

课程名称

课题名称

专业

年班级

学号

姓名

同组人

指导教师

2011年5月20日

1、设计任务..........................................................................................1

1.1设计目的.......................................................................................1

1.2设计指标及要求..............................................................................1

2、设计思路与总体框图...................................................................1

3、系统硬件电路的设计…….........………….....…………..…………….2

3.1多用表主电路…….......…………….....……………………..........2

3.2电阻测量输入电路………………….....……………………..........2

3.3电压测量输入电路……........……………………………………….3

3.4电流输入测量电路........................................................................3

4、系统的软件设计..............……………..............……………………...4

5、系统的设计仿真............……………..............……………………...10

6、总结与体会…...........…………...............……………………………..20

6.1总结….....…………...............……………………………………….20

6.2体会….......………...............…………………………………..........21

7、参考文献....................……….....…………….…………………….22

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转换器,从而实现对电阻、电流和电压的测量的方案,从而实现电阻、电流和电压的数字化测量.

本次课程设计,虽然方案基本出来了,但是在硬件制作方面出现了几个问题,这也暴露出我们知识方面的一欠缺.不足主要体现在以下几个方面:

(1)ADC0809的第10脚的时钟信号,我们是通过单片机编程实现的但是由于频率过低,只有500KHz,造成LED数码管显示不稳定而出现闪烁现象.最终验收时是通过从外部信号发生器输入2MHz时钟信号解决的.

(2)万用板焊接时,由于布线不太合理,使得背面线很零乱.并给后面的线路检查带来了不少麻烦.

(3)对Proteus仿真软件使用不熟练,使画仿真图时遇到不少问题.

(4)51单片机基础知识不扎实,电路分析遇到比较多的问题历经两个星期的课程设计后我深得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识.

虽然最终的结果让人失望,但在此期间我们也曾一度热情高涨.从开始时满富盛激情到最后汗水背后的复杂心情,点点滴滴无不令我回味.

7、参考文献

《单片机原理及应用》张毅刚主编高等教育出版社

《单片机原理实用教程》徐爱钧编著电子工业出版社

《电子技术基础》康华光主编高等教育出版社

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1