|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机万用表仿真及源码 能测直流 交流电压 电流 电容2 o2 ]. [& a) p" D! e
( T) n" @2 p' ~ p, K
. K* t' y! ^! M6 d, c
这是一个51单片机做的仿真设计,一个能测直流电压 交流电压 电流 电容和电阻的功能十分强大的单片机万用表仿真分享给大家:
; y4 R3 w1 K# X& y% N% B! [7 P) {5 U) ~
万用表继电器附操作图 万用表的仿真原理图:
9 X9 ?# {3 }: f# u( v! J
' l5 @7 N& n) P% B2 S单片机万用表程序源码:
: r. c# E6 y# ^! C- T( }#include<reg52.h>9 a2 }) g- n I0 F7 i f; e& A" [
#include"LCD.h"# x$ J: j5 c; D! c0 a
#include"Delay.h"4 Y* W9 }* A. C- Q' s2 g2 p
#include"AD.h"
5 G I" s# @4 M6 P1 R#include<measure_define.h>
|: X/ d) |/ L l |' w- K0 E#include<KEY_FUNCTION_DEFINE.H>: J z, G. }" g3 g. F1 L
#include<Cap_define.h>
8 f/ A( s: C+ t6 S) n# nvoid ININT_int1(void);- T1 I- q6 e0 b4 r. P* m9 D
0 w9 g' e4 |6 L) W' ?- m0 \" q
* `- U; P5 M& g$ V% Nextern uchar key_number;
H& L9 ~0 J# _; j, c; |( Vextern uchar disp_value[5];
b/ C; E7 W$ T+ |void main(void)
9 t9 ?7 A( |4 t* }{ % q. W( }9 W! G3 Y: H
uchar num=0;) P1 q* X7 ~) [# I
s1=0; - {/ E4 {( @( B# C* g
s2=0;. _" W$ M0 A7 c0 c( X) Q. ?
s3=0;
1 ?0 W( ?. y, B3 b" k key_number=1; //初始化按键的值为0
! X3 @% W+ j/ R2 C' @1 X
; S5 i3 b; L( U4 i2 T' a" c0 H LcdInit(); //LCD1602有初始化 * s# d7 @6 v% B
: b1 Q. b8 f+ p. c- R7 w; p1 ^6 M
) k. C3 b$ x1 t* v2 R8 j WriteCom(0x80+0x46); //1602第二行显示 value=00000v# w) Z% K" o% n- d
for(num=0;num<5;num++) . G- _, x. }' E( Q3 V# U0 e- Z- \, X, U
{
U: I5 X( M1 z( S WriteData(disp_value[num]);
" K" s" p# T9 p Delay(10);
& l% ?; E7 r& L8 A } 1 `! {( g& W7 A5 u5 v
ININT_int1(); //外部中断1的初始化2 Z; P7 _; H% q r/ G5 R
Tmie0_init(); //定时器0的初始化9 i6 O# B; D" m
- N4 U+ o9 o, F3 ^, O
while(1)( [) n0 B x3 a& q7 A% y3 v# k
{3 @# [: ~9 y' \" C% `0 L( o% {
if(key_number==1) //按键值为10 t$ K- g" l/ o% H1 l
{
9 K6 \( U% V+ L, w0 p1 B) y, u9 ^. j DC_VOL_measure(); //直流电压的测量
9 } P* X2 }2 m) `2 |: ^ }: t3 d* ^$ Y7 g! k1 Z- t6 v6 K
1 q/ n. j5 G" t# }) W" Z* q: J$ `- ^2 Z
if(key_number==2) //按键值为2
# v; r7 b3 A0 t8 E {8 v+ p$ a$ X/ V2 }: ?
AC_VOL_measure(); //交流电压的测量* Y Q9 ~0 q$ x+ {
}
9 u" B7 T7 M, K: [7 s% ?( P5 O( C# R; K' X* I1 g
5 L) Z; s% k5 i$ t
if(key_number==3) //按键值为3
* W/ n0 m a4 e {
( H1 u) H! W$ | Circuit_measure(); //电流的测量. D9 s9 ^$ `: V( {
}
% U) B1 a2 M S5 t/ N! ~6 k R ! x: g2 J; ?/ N
if(key_number==4) //按键值为4
) }) l6 ^& r9 o ^: l2 T {: h* @ e3 `% d* m+ z# w2 {4 O3 N
Res_measure(); //电阻的测量
6 I# ]) x( a( D9 P }
: R+ L/ L" F$ ?2 T0 h9 u
C% R& A L9 @, l ]0 h2 g" g if(key_number==5) //按键值为5
f) T9 f3 a" L+ q9 E! F$ I {& O% p0 u. u% y
WriteCom(0x01); //清屏# G# @. w( u4 Q5 k6 ~
Cap_disp_init(); //电容显示初始化' U% h! Q/ b; X8 o4 q+ i7 G
Cap_measure(); //电容的测量1 v+ y$ K9 i) l2 L
} /**/
% q: X4 L/ j, E' r3 l & _+ Q& b- ], ^9 z7 H" j6 k
5 s2 h8 M w5 S7 ?* L) n: \$ v
} 0 e: E; V6 I) {/ B4 ?4 q% p
}
1 ]* G/ P, Y" I) Q' x- s9 Q
4 S/ r; Y! ~! W1 _! t' W9 c0 E3 i6 @7 N3 u
|
|