|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
数字万用表设计
! u# i. B* u( m/ s0 r
9 U1 v' P, t' J5 Q: [+ B) r3 Y& Q" S$ F0 f5 P m4 G
+ _: n6 v3 I) j& S) U, _4 g2 ^* Q8 j2 O' }
这是其中的测交流程序
- h/ a) o* v2 ^5 F* m# W* w- p#include<reg52.h>8 ]- \7 B, H9 b% ~
#include"Delay.h"
& l6 K3 b0 {! E. C#include<KEY_FUNCTION_DEFINE.H>( X# Y& X' k" [6 \2 Y8 `
#include<measure_define.h>+ t9 B* Z& P0 B7 K- h3 z
#include"AD.h"
5 s. I# V- ]8 {: w9 @7 L#include"LCD.h"4 g. N: j% {! T
' i6 W) r( i2 G) y, k1 K, j9 q
extern uchar disp_value[5];) f+ S" F0 p+ K4 ]; B4 w: R9 N6 v
extern uchar key_number;2 X% C" H' Q' p' ^8 J5 o/ A
extern uchar code DC_disp3[];
Y) ]* V4 e9 @, @- H( S2 R) Muchar code AC_disp[]="AC VOL Measure ";
8 c) ~3 Y$ I' _5 j% buchar code AC_disp2[]="value= ";% v. g3 f2 m# g
void AC_VOL_measure(void) //交流电压测量函数! |' P8 W1 G3 ^! W7 B1 e+ c" \
{
8 }. \+ h/ _! i$ s! k" L uchar ADTemp,num;
8 s. k6 y! Q! R% [% a float ValueTemp;
( `# [: A3 ?3 I. S9 j' M0 @4 Y% A WriteCom(0x01); //清屏
( `* F5 r9 Y5 ]% f WriteCom(0x80); //显示
# A2 Z3 |( b; N, w* f for(num=0;AC_disp[num]!='\0';num++)
4 `8 u1 S2 g7 p {
; z- _# Y7 w0 s' }6 L$ R5 E V5 I) _ WriteData(AC_disp[num]); 0 @( t5 g: P0 ?" N8 g) I0 m" l
Delay(10); / M1 ~7 _. ^- `8 ?/ {0 M* q
}+ L" w" n1 n2 c5 o
WriteCom(0x80+0x40); //显示
( F/ a: M8 w, E. P for(num=0;AC_disp2[num]!='\0';num++)9 k0 d b8 l A9 l+ [
{6 }) ^4 m" P0 V, F: l: T
WriteData(AC_disp2[num]);
! J' d5 j. ]3 `! h0 z% e7 L' u9 r Delay(10); % W$ x9 l+ B3 \5 j8 |
} # A+ ?9 d( e5 P1 ~: C* |
; }7 C( B: ~2 [! g/ Q0 b do{ 3 i1 Z7 j! K6 l' b) C* o S. ]8 f
s1=0; //选择200v最高档
2 I0 B9 o2 O9 r s2=0;4 D4 Y! ^8 @5 j' m6 ]
s3=1;3 V$ t* r5 |4 g( _1 V$ V
Delay(50);
3 i# ?2 X8 B/ g$ u: w G4 U$ I ADTemp=ADSample(AC_VOL_adder);
' v1 _/ \7 A; p6 z" U! ]3 B+ M if(ADTemp>253) //当超过量程时,显示为1
8 Q7 I7 i, w0 ^3 B# e% I& W { WriteCom(0x80+0x46); //显示
0 O/ Q9 u, J5 c, v for(num=0;DC_disp3[num]!='\0';num++)" D6 I4 T9 \0 G/ p
{9 p6 [) J) i) V$ S
WriteData(DC_disp3[num]);! X: p% o3 I! J
Delay(10);3 y6 G5 U, s+ t: i7 i
}
. E$ l# l$ n) d' o }
" z. S5 p4 h* h' R- X" n2 p1 Z+ | else u0 m1 }' }; `' }8 |8 Y1 G. B6 w
{
. l6 r; @! t, U2 ]1 | ValueTemp=ValueConver(ADTemp); //测量的电压值转换
( D. e/ q& l( g& C+ w ValueTemp=ValueTemp*100; //电压值乘以档位 5 c- u8 u; c7 E ?. ~
FloatToChar(ValueTemp); //电压值转换为字符串( }7 n, h- H& T& r* o% T1 ~
WriteCom(0x80+0x46); //第二行显示电压值
6 M+ X. E/ [! z! @ for(num=0;num<5;num++)
- j1 I0 ]* P& e3 z N$ t {; @6 D1 h+ {$ P# Q3 P/ G6 U+ {2 h
WriteData(disp_value[num]); ; b' d5 g, H, V# T4 M
Delay(10);
) t2 P! z' I+ ]1 J' n }
H3 X" A2 @' ] WriteData('V');3 M) T: w( ? ~5 R1 v# g& l/ e
WriteData(' ');
2 x; W2 J3 `/ o+ z ! a0 A9 N& D# k4 d- j0 y
}
* n: D( T7 W& J9 {
9 g) x+ j4 v0 Z% p% b$ a: O1 ^: C K } while((ADTemp>20)&&(key_number==2));
7 [# t( d& s# I( A; g! x* C% G5 D, U. Q3 Y, s N# n6 j; o: J5 p
do8 m5 q3 r T* x- A% }
{
' P; s( b( G6 a* N8 k( W8 U s1=0; //选择20v档8 N E N/ v; J W. j/ [( s. ?
s2=1;6 i C M) K. z; c' P; e7 r' S
s3=0;( P5 K) p; D2 s* X! J1 j, d
Delay(50); 0 v+ k1 M8 \2 I- ]# ?& Z
ADTemp=ADSample(AC_VOL_adder); //起动AD进行采样
/ c; v; ]4 v4 {0 u- |2 I# H6 Y ValueTemp=ValueConver(ADTemp); //AD进行转换. h8 ?2 C& Q% Z l
ValueTemp=ValueTemp*10; //电压乘以档位 1 U5 g+ R' F" ^0 [" J
FloatToChar(ValueTemp); //电压转换为字符串& r5 {/ X' q4 m8 s; o+ i
WriteCom(0x80+0x46); //第二行显示所测电压值$ L1 z9 m* H( r0 N* R) ^+ F
for(num=0;num<5;num++)
+ [: G& T9 n& X+ `3 Z; I# N! i {
( R( `4 c' B3 |: U WriteData(disp_value[num]);) v8 E: {; w4 T& t
Delay(10);
t; U4 L6 e6 g( [ }6 n% F& x6 u+ |0 Z9 k
WriteData('V');; E- O3 S2 m. X6 `7 m
WriteData(' '); 0 U0 F) b" I% V; B) P
} while((ADTemp>24)&&(ADTemp<253)&&(key_number==2));
9 f* g. ^6 C: Z/ B% h6 Hdo3 l/ t/ E1 [) ~8 G' L1 m
{
7 F' s, E, A+ O+ X4 L s1=1; //选择2V档& `0 b% y& _! Q) `4 m. F# r
s2=0;
3 G6 L1 b6 d% b% s) U s3=0;" i! v* d/ Q; t' ]* A" h( x, Y3 x! y
Delay(50);
/ \4 B! m5 D0 i5 d; @( G" A+ Z ADTemp=ADSample(AC_VOL_adder); //起动AD进行采样: m' H3 x6 s6 Q2 a; N/ Q7 K& g7 ~0 b6 n
ValueTemp=ValueConver(ADTemp); //电压值转换为字符串
" M& R) Q; W) J( i+ L& ~ FloatToChar(ValueTemp);
' _$ e, Z ~- V' E WriteCom(0x80+0x46);' S2 s/ T* K& V( ]/ d! m* }
for(num=0;num<5;num++)
+ L. P$ v2 y/ b: A9 v2 l1 Z% f {7 u, b: ]: V; c; k( m) Z6 u8 r7 U
WriteData(disp_value[num]);$ C( W) k: r! Y" K: O/ x: B9 x3 E
Delay(15);
3 b" X5 r: E% M' G }. g9 a4 V5 t/ C4 Z3 ~7 s
WriteData('V'); : T) B8 Z$ Z) O
WriteData(' ');3 R: h- q- `8 Q3 ?+ B/ _
} while((ADTemp<253)&&(key_number==2));
" V \% {( S! h/ u" ?& Q
; M5 E S4 t5 }. a}
% j2 \8 j% H* x* d) w$ t( Z
* |: X( r n6 t( c2 N; ?: u/ L/ r R2 ~# Z! u5 W8 _6 r( Z
# R2 B* ^6 E. V0 J2 v% l |
|