|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机万用表仿真及源码 能测直流 交流电压 电流 电容
: E _5 @5 b- | u: X
, M3 L/ [2 m5 g/ a# {+ @3 E9 O6 m6 s7 g9 y9 Q, [+ A
这是一个51单片机做的仿真设计,一个能测直流电压 交流电压 电流 电容和电阻的功能十分强大的单片机万用表仿真分享给大家:0 G" g7 h6 h3 A+ l9 t5 Z; ?8 o
6 ~3 Q+ C2 y: ] p* |* C# U万用表继电器附操作图 万用表的仿真原理图:5 E. w# h( N9 f* s2 `/ R' k
. |( g5 K C$ a, @单片机万用表程序源码:& h! X* e7 E8 q( @" E" o
#include<reg52.h>
; a+ n3 O6 d2 ~! R6 D) p3 z# s#include"LCD.h") `2 i# @) R, [8 l
#include"Delay.h"' d( S& k& W8 A0 r* z
#include"AD.h"
6 a O* p. b# F9 b- J#include<measure_define.h>
4 o# v+ I4 r, x$ G0 Y#include<KEY_FUNCTION_DEFINE.H>3 `% K0 G `$ g
#include<Cap_define.h>8 `: X6 s0 W) c8 d- T a
void ININT_int1(void);
9 H3 B, j5 ]; t1 t- y/ x" y3 u0 a: \- T
, l7 e# X9 K* \7 O, n
extern uchar key_number;' O/ r3 e) P; h; ^1 s
extern uchar disp_value[5];
; V4 R3 v3 Q3 Z. Q; Vvoid main(void)
' a* O5 x5 }8 H: K* V5 M{
9 Q+ c" z6 ^/ n/ `$ f! Z/ K, } uchar num=0;0 `/ R; K2 F6 X/ M0 O/ a. A. B
s1=0;
o+ |1 y- O% w% F$ B# o9 O# p s2=0;
3 T# g2 ?, A+ C" j, o+ X5 q2 } s3=0;
. E3 v4 Z I. a9 K key_number=1; //初始化按键的值为0
" v$ t9 c& M; h9 \' n4 L7 B4 _
- D" M7 }8 a; P4 E LcdInit(); //LCD1602有初始化 3 S% D5 _. [- r- \9 J! a
* \8 Q! H6 @; E" K! |/ o
* o* S2 u1 K P" w" |% \ WriteCom(0x80+0x46); //1602第二行显示 value=00000v
R& ]8 W* i: k5 ]8 P8 o for(num=0;num<5;num++)
) N: v5 W; O+ |0 T; \! e/ y {
% r, D0 }7 ~$ m* X' c6 O' z WriteData(disp_value[num]);( k9 y6 I7 u% C' @( M. b
Delay(10); 6 v7 ?' S/ [3 X
}
$ u$ Q) _0 p# ~# V7 F( A8 z) F ININT_int1(); //外部中断1的初始化2 d- P9 j% `9 d# O7 S8 Z
Tmie0_init(); //定时器0的初始化) y5 f7 a% z9 f! @+ \
- x3 R0 H- }! z+ V0 f! E$ J/ i
while(1)3 p% F8 M y0 ^( O+ O
{
2 p5 L& K2 i8 u+ i+ Y8 v S# F& @* K if(key_number==1) //按键值为1* I- l6 H: A" Q2 m# }4 O; n
{# `! F! m! Z4 ]' N6 v9 }# f* x
DC_VOL_measure(); //直流电压的测量
; G% [1 c1 W5 Z8 F: E9 K }
+ I$ J; D( [" V
8 x5 G5 j8 y$ N
( r5 v* b7 Z: M5 i: t* T8 ?! g if(key_number==2) //按键值为2
) ]7 {# I( A' J$ b. Q# d" A {5 k) M+ G1 `/ ~3 C- h( Z
AC_VOL_measure(); //交流电压的测量
. A; N3 z* {2 Z8 S P }
# V( m4 w* R$ T0 z+ S* v6 X- l7 ]4 d. ~4 P7 }7 l" s
: m, K" W- T& u
if(key_number==3) //按键值为3# M0 j, x& S/ M2 ~/ p; d" }
{) G% l, T8 j& J3 k% h
Circuit_measure(); //电流的测量
/ |- ^1 O P- S$ m5 v } 5 T" R- g: G! m! U, B3 \9 F4 q0 _
( y) _7 F9 [% ~5 ^
if(key_number==4) //按键值为44 X) d' |" u( i! }# _5 z0 w0 f
{5 n2 f0 N" ]4 O
Res_measure(); //电阻的测量, [) s6 a$ l+ G6 }3 C4 T
} : v# {, U9 `& A$ C. k( Z1 x& |
$ `( M" v5 w$ O5 D9 j8 A; ?
if(key_number==5) //按键值为5
$ R. T; f& E9 E/ O2 F- u- J {$ F/ Z' V# Y; O' o( A, N1 A6 w
WriteCom(0x01); //清屏- |0 E1 I; X2 _3 i+ e+ y
Cap_disp_init(); //电容显示初始化3 V3 I6 s( [* R) Q B* W( R
Cap_measure(); //电容的测量- C0 t9 c% r3 q
} /**/# E( q8 V2 ~: ?2 d [8 S8 C
9 a B0 [* Y5 F7 k0 o, T/ b5 Z; O, L( g' M
6 T( E K+ D' h: C% A8 A) | j! w } ! | p1 w4 Q4 g
} # Z' Q e2 p! ]
* p3 t4 n! Z7 z! F4 V l
7 U/ t3 Z- u8 t6 f4 c
|
|