|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
数字万用表设计$ s; I$ V" E3 }% ]0 |* k; w
* O- C6 z1 b% i# t. J
, m" L% a9 F& ]/ J
3 ] K8 Q6 ]) I3 M ?. {3 D7 k& s+ X. p9 j3 D+ Q
这是其中的测交流程序
: I8 ?3 P$ ?% D& x6 \#include<reg52.h>
$ l7 r% {7 _% S+ s#include"Delay.h"
6 _; e; l7 d+ t8 T, |#include<KEY_FUNCTION_DEFINE.H>
/ ?& X: _) o* t8 {9 q ]1 R {#include<measure_define.h>% x9 t' S+ m1 a8 ^( |
#include"AD.h"' C4 r2 e( s. z& `+ \! }0 L
#include"LCD.h"% B8 M6 ~! |" X5 G e! A' w
% r' R2 f: r3 n: ^) I2 _# u
extern uchar disp_value[5];: m( k. ?$ T6 s* g; N
extern uchar key_number;8 |* @5 m0 N6 I1 }! F4 q. }% o
extern uchar code DC_disp3[];: z( O/ ^" f e7 ^+ E* r: M
uchar code AC_disp[]="AC VOL Measure ";5 m' o8 C. Q% w
uchar code AC_disp2[]="value= ";3 j0 g3 O" R8 Y" a
void AC_VOL_measure(void) //交流电压测量函数 _% c; [7 B3 ]* c; [
{0 ]4 D0 V2 }, L( Q, G. ]
uchar ADTemp,num;
- \* U& C9 R( Y0 F- S) g4 s float ValueTemp;7 H' E8 Y% H( ~: B$ r: Y' ?
WriteCom(0x01); //清屏1 _+ Q! h9 Q) C
WriteCom(0x80); //显示
( J# P- @2 I& E5 s for(num=0;AC_disp[num]!='\0';num++)
9 E; W/ g- P Y) M9 D5 _ {7 E2 p( N0 d) {8 c7 R5 k
WriteData(AC_disp[num]);
- H, D2 @7 c# k8 d Delay(10); & x$ E& Q' ^! D3 l! v! c: n
}
6 y+ u/ n! Z9 E WriteCom(0x80+0x40); //显示1 N, E$ T: P) i0 Q" k
for(num=0;AC_disp2[num]!='\0';num++)
1 j# D4 O% G- ~1 f K/ q# U {
4 y6 ?5 I/ D% {% S WriteData(AC_disp2[num]);
: ~; d6 u, x9 z Delay(10); ( D4 ?; |) D4 b. T2 S+ W
}
- E/ @0 a& s9 i 4 s) Z, D, \" F! j L( c% }8 W
do{ # I3 C: f& l* ~' |
s1=0; //选择200v最高档5 v5 [/ M# J+ W
s2=0;
& a! g5 P T6 d$ N2 z s3=1;
" S; I" k2 P: `% } Delay(50);3 h' v1 }/ u8 A: ?, d& N6 z. ]
ADTemp=ADSample(AC_VOL_adder);
, h; `# g* l* ~ if(ADTemp>253) //当超过量程时,显示为1
! `- }3 D# S+ l2 y) ^6 t { WriteCom(0x80+0x46); //显示
2 W' j# S1 D4 I2 t+ D for(num=0;DC_disp3[num]!='\0';num++)8 `) | k8 L4 y% V8 a7 P3 T- y) c+ }
{
& K3 R( @5 w: g7 @; d WriteData(DC_disp3[num]);
; s! v/ e. C, K2 W Delay(10);
4 B+ K, s+ s T& L }
7 l* }4 {) p9 R9 E }
: M9 X0 K" J3 e6 d* L# ]0 G else
" h7 S" h: L8 q3 M2 ]4 w {% D$ P" K& f9 N
ValueTemp=ValueConver(ADTemp); //测量的电压值转换
, j# ?& {. [% a ValueTemp=ValueTemp*100; //电压值乘以档位
: h% t! J' J2 P1 L d4 P% b) [ FloatToChar(ValueTemp); //电压值转换为字符串, i9 k# ~) D# i
WriteCom(0x80+0x46); //第二行显示电压值 * |/ o9 z y4 d8 x
for(num=0;num<5;num++)3 v$ j T5 e i, B( m$ e) T
{
* m0 o/ N$ {( J# `) T) C8 b WriteData(disp_value[num]);
, G) j" U/ w! w" m7 W6 z3 c Delay(10);
& x* b; c( m- n9 O }" S2 Y. [% A9 p0 Z/ C
WriteData('V');7 Y1 \0 W: g: Q( X3 O. s8 S
WriteData(' '); 7 Y6 f' a: @/ t, z% l) {6 y
# I9 P8 f5 A/ ~( ~% e% y0 T
}$ x ~) B! ^( N8 x$ g
- B# y' n( [2 f. g( h% i8 o! ? } while((ADTemp>20)&&(key_number==2));, j, W9 [+ p# }, f+ V2 b& F
2 f; s- n% [: x+ R9 v+ B7 L( E do
5 _* z9 F+ D' y1 r {
1 O" s0 K( c1 e6 J" w `; Q& z s1=0; //选择20v档+ A& q$ _- F8 e
s2=1;
: u \4 M% m& t+ X p4 H1 P s3=0;
T- q" E( h" j. J Delay(50); , L, F/ w6 B f* F7 h
ADTemp=ADSample(AC_VOL_adder); //起动AD进行采样$ a# G; s$ |* d: ~
ValueTemp=ValueConver(ADTemp); //AD进行转换% N+ A; R) K, G$ P% h/ a5 D5 |
ValueTemp=ValueTemp*10; //电压乘以档位
8 E- \5 \' e2 m2 K FloatToChar(ValueTemp); //电压转换为字符串. x) {9 R G3 U6 x
WriteCom(0x80+0x46); //第二行显示所测电压值
2 H+ Y3 v B- M. d( c+ c8 C7 P6 a8 [ for(num=0;num<5;num++)* }9 z8 V8 ^1 ~0 t) }/ e
{- b& _+ H1 @, S
WriteData(disp_value[num]);
- _/ e$ w, V' P! `( r Delay(10);
4 b: P" E1 x* e i+ E9 M- j }
6 B: M3 ?8 N3 n- p: j WriteData('V');' O3 k) q% A, C7 J2 U' @& U3 H
WriteData(' ');
3 c8 O6 H: L8 s7 { r* P } while((ADTemp>24)&&(ADTemp<253)&&(key_number==2));
% a% o, V# o3 a( s# Ddo4 g6 B5 U$ @" |. z( q6 c0 `+ D
{- |5 c R& q0 ^1 t% G
s1=1; //选择2V档. n, F& f$ l* x- j) ?( ^% w
s2=0;, d% s c4 j6 v( q' _4 y3 q
s3=0;+ S8 c# y+ N) M- S% z0 S
Delay(50);
J( r1 {2 m* Z6 ^6 \, x ADTemp=ADSample(AC_VOL_adder); //起动AD进行采样; W w' F1 |7 M7 N! t
ValueTemp=ValueConver(ADTemp); //电压值转换为字符串# g9 |! W+ n) s) i
FloatToChar(ValueTemp);
2 D2 V5 Z5 g# V- g1 A: U0 Z WriteCom(0x80+0x46);
7 }$ K6 E5 L9 k/ F. _( g for(num=0;num<5;num++)
; o* |/ V" i, f: o/ t( u {+ c7 b) [3 G$ w V3 p
WriteData(disp_value[num]);5 {- }, F0 H- F! ~( u% J- J: Q
Delay(15);
& m4 I' i; H; \0 t }8 z" K, ]! k, b6 C7 J
WriteData('V'); 0 u1 I) h$ V" i$ N. Y
WriteData(' ');
j$ [2 `: i& j2 O } while((ADTemp<253)&&(key_number==2)); / s' A4 ~# E) [0 Y {
. v2 O j' a. ?, @+ i
}1 j5 [) i9 t- H( n8 [
. _! F* s: o* z% `; y
* l& S( M1 N$ P. E. ]- N. o# c7 @: v6 q: H% x
|
|