|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机万用表仿真及源码 能测直流 交流电压 电流 电容
G2 \. _, s; G0 c, m7 q. c8 U6 |5 m1 `# o1 ?6 U% H' A
S. c* s% Y/ g7 w7 h) r这是一个51单片机做的仿真设计,一个能测直流电压 交流电压 电流 电容和电阻的功能十分强大的单片机万用表仿真分享给大家:3 `" R. ~ v o+ v0 U* i
; @8 o& I: b- Y5 Q; I) f' Z/ k
万用表继电器附操作图 万用表的仿真原理图:, }+ R& B* |' Q; r; Q
5 O' ?) F* \' P! |
单片机万用表程序源码:% E" `3 t# R7 U& K9 z/ ^* \* b3 P
#include<reg52.h>: }/ T" v% k! ^( T7 \- _
#include"LCD.h"
; p0 Z6 d. m/ u% f#include"Delay.h"
& L" c7 f8 p8 V+ C' ^#include"AD.h" P7 k0 m. U( _$ a4 q
#include<measure_define.h>
7 q* ^. u3 y/ U9 W" @, I#include<KEY_FUNCTION_DEFINE.H>
" g+ S! r) \1 Q& z, ?#include<Cap_define.h>6 S+ n% B* C# _+ N; ?2 F! K: n
void ININT_int1(void);! D; F1 F8 O/ g+ ]6 V
4 X3 `2 y; Z2 P3 ^/ a
8 i5 Z% D" R. \# o9 X% s
extern uchar key_number;4 V$ i' `& A/ q- |4 s9 V A
extern uchar disp_value[5];
" e5 Q4 D {: L" @: Kvoid main(void)
8 r5 v" ~. M9 Q* T- m* J{
# R1 P0 l- I$ {4 L, W% m1 Q. A uchar num=0;+ ^6 ^0 G4 D4 B; M4 ]8 p5 F
s1=0; $ C9 O* ~5 u$ p: o$ P0 u
s2=0;5 _. i. Z" \8 e F* V& J# z
s3=0;4 J/ i+ Y' _/ }, F. f* M! `5 [
key_number=1; //初始化按键的值为0; l" A" @0 ?' `2 o1 Z
1 A6 [! n; h. X$ e% {0 g
LcdInit(); //LCD1602有初始化 0 H, k) a: J% o C/ T( I% y7 o
& t5 m8 Y0 r5 @+ A9 `( z; {( f; V3 b8 P( \9 ]% O& O) F* {
WriteCom(0x80+0x46); //1602第二行显示 value=00000v
' F9 ?4 v0 l6 ~0 Y' ^ for(num=0;num<5;num++) : \) p- {7 @9 [& v9 P( E8 i
{7 A# T$ b5 `) `. T& }: o% Z- |" r
WriteData(disp_value[num]);6 V7 i6 ?# E0 q' E8 ^) S% \) S6 k
Delay(10);
4 Z7 Z2 Q `9 T- A# E l } ; T) Q4 V- F! s( w' X
ININT_int1(); //外部中断1的初始化3 L0 L( Z5 x+ [ x* k. ?
Tmie0_init(); //定时器0的初始化, x& o& @5 q' t8 ]: z0 n9 C
0 ]1 |- V, d3 Z
while(1)' z7 [" P& ?% o+ O% a
{0 E9 I, A, s* X& ?4 K
if(key_number==1) //按键值为1+ [9 h! o2 C" Q# y1 ]
{
! J, V! u h8 Z, K, e4 W& O! {6 C/ i DC_VOL_measure(); //直流电压的测量! ?' l; {. p9 ~ Y- _3 g8 ~1 [, G e' b
}9 w9 A' a' T9 f8 ^
. U) ?5 ]6 }$ Q5 B- p+ w% \4 t2 W. E8 S i- x9 A6 f5 l$ O
if(key_number==2) //按键值为2
4 h+ v5 X2 p. h" W+ G2 r {$ b2 c* i+ s1 Q. P) v! G; ]& s: u
AC_VOL_measure(); //交流电压的测量 x: Z: S. Z E' ^7 F
}
1 |. x2 l6 | _! U/ s+ W5 H& P( ]3 ^ \( e1 t
' ]6 P9 w* }! o5 y7 N
if(key_number==3) //按键值为3
1 ^6 G" Y; L2 k5 w$ `0 u {$ A! Z5 {4 D* p0 t1 M
Circuit_measure(); //电流的测量
; Z: D2 V+ N" e } " I+ W3 l1 u. c' e, f
! O6 h* A- ]! G+ h* Y- |% ^# C5 d1 P
if(key_number==4) //按键值为4
3 {8 |( _: `, s5 _0 o: A {
& K7 U6 E# A0 T- U Res_measure(); //电阻的测量- D0 {/ C7 S; m6 `7 f
} : m: {# {( D- G e
/ `- N# D' u% ?2 o; M1 S! O
if(key_number==5) //按键值为56 Q& t# V" T) u) D- I0 Q' i" @
{
+ t6 \ N5 u' A; Y' `5 z WriteCom(0x01); //清屏
# I. y) t4 Q# |4 P0 |2 J Cap_disp_init(); //电容显示初始化
7 y( b1 c* y( u Cap_measure(); //电容的测量; `7 G0 q M- l" Y8 ?9 j/ o+ s' ^
} /**/6 A. p' Z# }$ n7 }
+ R, W- h2 h* t6 P5 }
7 _- a' Y- ^. @( s( |
: Z& ]- p& o$ ]" z. k( P D
}
% u: O, F, E; i! s/ Y}
7 ?& M" ]% j$ A' n, z1 Z) x9 ]
5 t; |. e9 e" G) @4 |* I+ f
, \' G; e7 w, z" k- k, Y |
|