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

数字万用表设计

[复制链接]

该用户从未签到

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

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

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-6-20 12:48 , Processed in 0.109375 second(s), 26 queries , Gzip On.

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

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

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