找回密码
 注册
关于网站域名变更的通知
查看: 452|回复: 2
打印 上一主题 下一主题

数字万用表设计

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-3 10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
数字万用表设计$ s; I$ V" E3 }% ]0 |* k; w
* O- C6 z1 b% i# t. J
, m" L% a9 F& ]/ J

3 ]  K8 Q6 ]) I
3 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

该用户从未签到

3#
发表于 2019-2-28 18:04 | 只看该作者
看看楼主的代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-18 06:22 , Processed in 0.156250 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表