|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机万用表仿真及源码 能测直流 交流电压 电流 电容- N; r# J& m# \& [
@* r/ l9 k2 }5 X' T
3 ]2 \: V6 t6 d0 E2 r这是一个51单片机做的仿真设计,一个能测直流电压 交流电压 电流 电容和电阻的功能十分强大的单片机万用表仿真分享给大家:
5 k+ I/ e. @+ Q/ n1 }
1 m+ O r5 _' s2 z万用表继电器附操作图 万用表的仿真原理图:) Q3 o' v( K4 Z! ?6 @& @
W0 V! D2 y3 C8 j单片机万用表程序源码:
K+ e3 ?4 m q#include<reg52.h>7 I3 p7 f, R5 f0 z: c
#include"LCD.h": k. r: H6 {6 u. q
#include"Delay.h"+ p; n; I) L `& e3 \
#include"AD.h"; Q/ i* v. ^9 J1 |- F8 {
#include<measure_define.h>
# Q7 }: A# w, m1 N. L `#include<KEY_FUNCTION_DEFINE.H>
' t2 J# d4 v) P( F& I# C: \#include<Cap_define.h>
& {5 p. g; b8 u% M7 |3 Dvoid ININT_int1(void);
, i$ S. n0 `4 d1 C. r7 `
4 x( l1 ^4 D- M6 t& G* O" k& l: l+ l3 d; @( A+ }& f* H, R
extern uchar key_number;
7 ^" x+ v1 D _: T: R( Q, o9 Vextern uchar disp_value[5];
0 w$ p1 k( y" u; f U% Qvoid main(void)+ b, }4 T0 [$ v, {9 x
{ 2 X7 `( ^' V1 ~
uchar num=0;: H& p9 K7 T7 [ ]# I' K. n+ _
s1=0; ( ^& R5 d$ i+ e* p7 F
s2=0;8 j! [. I3 W: `% D7 F) F
s3=0;* m3 r" h0 F6 B l8 _; G' u
key_number=1; //初始化按键的值为0, \. v/ b( v: j' [0 ]
8 z; q0 g9 O5 A. N' c M
LcdInit(); //LCD1602有初始化 2 `% n. {, u8 `
$ a) _4 D5 z k5 b4 z
* ^" R/ s" [' S* i- L4 v( ]2 g WriteCom(0x80+0x46); //1602第二行显示 value=00000v
' G7 N$ W& w5 W- [* C6 o for(num=0;num<5;num++) 7 T5 I# Q3 {3 k4 h, X
{
- [* c& S. k5 D* F WriteData(disp_value[num]);% y' ^) K5 t' O% @; M g' y
Delay(10);
: v# I( k) I) X3 ~8 ^6 F, } } * U; K* w! P5 z, a8 K; C( ]
ININT_int1(); //外部中断1的初始化
7 @4 N: r% Y) N' } Tmie0_init(); //定时器0的初始化
- w0 \9 {: q/ |- n* p& W* p 5 F6 T1 y3 O& F/ u3 y/ o, F) D/ g! x, }3 n
while(1)
# n! g( l% p; b {6 j/ Z$ O5 e" J; p# f' G% a
if(key_number==1) //按键值为1; ~3 Q" w/ F0 L; D+ g3 m- q7 L
{& J( s' }# t9 f1 |. u7 ~
DC_VOL_measure(); //直流电压的测量
3 r5 Y; D6 F! J/ V0 {5 P0 {! n/ a }
; l* W& |7 ~8 z2 h& X/ r1 P) k, v+ J# s/ Q' p
. O% I5 l/ U5 h0 E
if(key_number==2) //按键值为2+ t$ _/ P3 {! B; _1 K$ h
{4 f1 B, R6 U8 }" b. ~
AC_VOL_measure(); //交流电压的测量5 D% D2 S: ~# ~$ P( o8 `2 U3 [
}( x2 n4 Z; K4 |2 ^
@& j- I+ |$ u7 v! J4 I+ N5 ]1 \7 v0 S# }
if(key_number==3) //按键值为3
0 I& X5 N6 I$ s" e; A {3 F) [. A. j4 \) R% e% V- H
Circuit_measure(); //电流的测量( c- `2 n* b# x* f
}
7 c1 ~! o8 ?+ e4 r
+ M9 n' p1 r* o) A5 D$ O3 K/ ]! y if(key_number==4) //按键值为4
/ v% T( n- [- G# _ {
; K% R9 q$ x0 A; X# \* Z6 l9 v2 N1 _ Res_measure(); //电阻的测量& l: [5 p* |7 r& Z n% T
}
1 F+ B$ f# Q9 Z# y X8 D ( x, b; ~& r# X" C" v
if(key_number==5) //按键值为5
: B+ U: |# \" _7 m, S$ T {
- x. L* P. d7 s" H( K) ]1 }4 n k: y WriteCom(0x01); //清屏
+ T6 \. O7 m, S6 { b( \& V Cap_disp_init(); //电容显示初始化* J8 s/ }/ s M
Cap_measure(); //电容的测量
: t v" ]" E7 g3 J. T) v: ~- k2 D! S } /**/
0 }3 J; M* W0 B5 v/ c6 ?
1 Q; n) G* U# Y' r
" i/ o6 @' j# E2 k/ k
. i3 F, a9 h) m' N: ?9 j3 ^ J }
. a' J) z7 F8 ]0 Y} ; }3 C4 z( n$ Q; m
" x! ]9 x4 R8 G
; V0 l% H1 z& u2 J/ k# X7 Y, E: ?
|
|