当前位置:文档之家› (整理)万用表的课程设计.

(整理)万用表的课程设计.

数字万用表的设计院(系)_____________专业______________班级______________姓名______________学号______________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.片选信号和WR 信号一起经或非门产生ADC0809的启动信号START 和地址锁存信号ALE 。

片选信号和RD 信号一起经或非门产生输出允许信号OE ,OE=1时选通三态门使输出锁存器中的转换结果送入数据总路线。

ADC0809的EOC 信号经反相后接到89S52的1INT 引脚,用于产生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 。

分档电压(量程转换) 分档电流(量程转换) 分档电阻(量程转换)待测电压待测电流 待测电阻模数转换 (ADC8080)AT89S52单片机 (实现译码驱动) 74LS374锁存器数码管显示图1 数字多用表的主电路图单片机的P1.0 ~P1.2引脚通过一个转换开关接地,通过判断P1.0 ~P1..2引脚电平的高低,决定是否进行电阻测量、电压测量或电流测量。

3.2数字多用表电阻输入电路待测电阻709R1910001098411U6:CLM324-5V图-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:+5V1098411U7:CLM324 R61MR71M+5V图-33.3数字多用表的电压测量输入电路321411U6:ALM324567411U6:BLM324R1340kR1410kR1540k R1640kR1710kC50.1uFC60.1uFC70.1uC80.1uF低通滤波器同相放大电路VVCVR1240k+5V图-4图-4所示为数字多用表的电压测量输入电路,待测电压经过低通滤波器滤除高频干扰,再经过同向放大器送给ADC0809,电压测量输入范围0~5V,ADC0809的分辨率为8位,测量误差为5/255=0.02V 。

3.4数字万用表的电流测量输入电路VCVDAVR2030321411U7:ALM324567411U7:BLM324R25100kR26100k R27100kR28100kR292.2M+5V121314411U6:DLM324R24100kR30100kR321.5M待测电流反相缓冲电路差分放大电路CAR50.1R210图-5图-5是数字万用表电流测量输入电路。

电流测量范围为1-100mA ,因为ADC0809是电压转化器,必须将电压才能进行测量,这可以通过串接电阻RL 来实现,注意RL 必须很小(如0.1Ω),否则营销电流数值,由于待测电流和RL 都很小,RL 两端的电压也很小,必须将其放大到ADC0809能够分辨的范围之内。

4、系统的软件设计数字多用表的软件设计如下程序所示,完成堆栈指针初始化之后,通过单片机P1.0—P1.2引脚进行测量功能判断,根据不同引脚电平分别进行电阻、电压或电流测量。

每种测量过程都基本相同,先读取ADC0809的A/D转换数据,然后进行相应的数据处理,最后将处理后的数据送往LED数码管进行显示。

数字多用仪表的软件程序:org 0000h ;单片机复位地址ajmp main ;转移到主程序处org 0100h ;main被定位在0x0100处main: mov sp,#80h ;初始化堆栈指针jnb P1.0,crjnb P1.1,cvjnb P1.2,cacr: mov R7,#00hlcall adcLCALL RDATlcall DISPLAYsjmp mainCV: MOV R7,#01HLCALL ADCLCALL VDATLCALL DISPLAYSJMP MAINCA: MOV R7,#02HLCALL ADCLCALL ADATLCALL DISPLAYSJMP MAINADC: MOV A,R7 ;0808 A/D转换子程序MOV DPTR,#7FFFHMOVX @DPTR,AJB P3.3,$MOVX A,@DPTR ;输入转换结果RETvdat:mov R2,#00hmov R3,Amov R7,#0F4hcall MULD2 ;乘以500 clr Cmov A,r5add A,#60h ;加96修正mov r5,Amov A,r4addc A,#00hmov r4,Amov A,r3addc A,#00hmov r3,Amov A,r2addc A,#00hmov r2,Amov r0,#30hmov r1,#34hmov A,R2mov @r1,Ainc r1mov A,R3mov @r1,Ainc r1mov A,R4mov @r1,Ainc r1mov A,R5mov @r1,Ainc r1mov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#0FFhcall DIVD4 ;除以255 mov r1,#38hmov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#0Ahcall DIVD4mov 43h,33hcall DIVD4mov 42h,33hcall DIVD4mov 41h,33hmov r0,#40hmov @r0,#00hinc r0mov A,41hmov DPTR,#SEGMENT7movc A,@A+DPTRmov @r0,Ainc r0mov A,42hmov DPTR,#SEGMENT7movc A,@A+DPTRmov @r0,Ainc r0mov A,43hmov DPTR,#SEGMENT7movc A,@A+DPTRmov @r0,AretADAT:mov B,Amov A,#0B6hclr C ;以下根据范围设置数值以防溢出subb A,Bjc LARGERAmov A,Bsubb A,#16hjc LESSAajmp MIDDLEALARGERA: mov A,#0B6hajmp CALCULATEALESSA: mov A,#16hajmp CALCULATEAMIDDLEA: mov A,BCALCULATEA: mov r2,#0C3hmov r3,#50hmov r6,#00hmov r7,Acall MULD2 ;乘以50000clr Cmov A,r5subb A,#70h ;以下减去102000mov r5,Amov 37h,Amov A,r4subb A,#8Ehmov r4,Amov 36h,Amov A,r3subb A,#01hmov r3,Amov 35h,Amov A,r2subb A,#00hmov r2,Amov 34h,Amov r0,#30hmov r1,#38hmov @r1,#00hinc r1mov @r1,#01hinc r1mov @r1,#5Ehinc r1mov @r1,#0A0hcall DIVD4 ;除以89760mov r1,#38hmov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#0Ahmov DPTR,#SEGMENT7call DIVD4mov A,33hmovc A,@A+DPTRmov 43h,Acall DIVD4mov A,33hmovc A,@A+DPTRmov 42h,Acall DIVD4mov A,33hmovc A,@A+DPTRcjne A,#3Fh,NOTEQUmov A,#00hNOTEQU: mov 41h,Amov 40h,#00hRETrdat:mov R2,#00hmov R3,Amov R6,#03hmov R7,#0E8hcall MULD2 ;乘以1000mov r0,#30hmov r1,#34hmov A,R2mov @r1,Ainc r1mov A,R3mov @r1,Ainc r1mov A,R4mov @r1,Ainc r1mov A,R5mov @r1,Ainc r1mov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#0FFhcall DIVD4 ;除以255mov r1,#38hmov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#00hinc r1mov @r1,#0Ahmov DPTR,#SEGMENT7call DIVD4 ;连续进行4次除以10的操作mov A,33h ;取得10进制值movc A,@A+DPTRmov 43h,Acall DIVD4mov A,33hmovc A,@A+DPTRmov 42h,Acall DIVD4mov A,33hmovc A,@A+DPTRmov 41h,Acall DIVD4mov A,33hmovc A,@A+DPTRcjne A,#3Fh,NONZEROmov A,#00hNONZERO: mov 40h,AretDELAY_5ms: mov R5,#01h ;设置R5初始计数值DELAY_5ms1: mov R6,#16h ;设置R6初始计数值DELAY_5ms2: mov R7,#70h ;设置R7初始计数值DELAY_5ms3: djnz R7,DELAY_5ms3 ;延时时间为Time=( ( (R7*2)+2+1 )*R6+2+1 )*R5+1djnz R6,DELAY_5ms2 ;djnz R5,DELAY_5ms1 ;retSEGMENT7: DB 3Fh ;7段数码管字符0的abcdefg的值,a在最低位,最高位始终保留为0DB 06hDB 5BhDB 4FhDB 66hDB 6DhDB 7DhDB 07hDB 7FhDB 6FhDISPLAY: mov DPTR,#0fEffh ;写第一位数码管mov r1,#40hmov A,@r1movx @DPTR,Asetb Cmov P1.4,Cclr Cmov P1.4,Ccall DELAY_5mssetb Cmov P1.4,Cinc r1mov A,@r1 ;写第二位数码管movx @DPTR,Asetb Cmov P1.5,Cclr Cmov P1.5,Ccall DELAY_5mssetb Cmov P1.5,Cinc r1mov A,@r1 ;写第三位数码管movx @DPTR,Asetb Cmov P1.6,Cclr Cmov P1.6,Ccall DELAY_5mssetb Cmov P1.6,Cinc r1mov A,@r1 ;写第四位数码管movx @DPTR,Asetb Cmov P1.7,Cclr Cmov P1.7,Ccall DELAY_5mssetb Cmov P1.7,Cret;双字节二进制无符号数乘法;被乘数在R2(高位)、R3(低位)中,乘数在R6(高位)、R7(低位)中。

相关主题