|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码
4 x) [/ L% j( m
' y! R3 u) B; b6 A- o/ C$ f) R N2 `/ }+ \& U4 L# P, R
这是我刚做的一个20~200A大电流检测电路,通过ADC0809转换成数字信号,通过LED显示结果,包括原理图,仿真文件,源代码。4 G1 z4 Z! o- o. @/ T
将R1的电压采样到ADC0809,转换为数字信号,输入单片机
( W% A. r9 D4 Z! c1 ^+ b& b3 P- s$ ?! h/ p6 ~6 |6 Y" ?7 N
AD画的原理图(附件中可以可以下载):$ M% G. e1 Y6 g' Z. |: }( t
. J6 n0 B5 A$ s9 u5 S, F, m
3 Y$ Y8 H, g* e& Q$ ^
% }" C% w8 \$ {; `' A+ b! n4 ]$ P
: Y' @) K# S$ i单片机源程序:$ |& x; s# e2 g$ m9 v
//------------------------------51单片机头文件* o2 X7 s( s9 {% ]
#include<reg51.h>
8 d4 \ Q+ {+ [& X5 U: i6 o: X% O0 N& R7 I X% Z
//各数字的数码管段码(共阴)
# j- p# g/ \7 d: gunsigned char code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示数组{0,1,2,3,4,5,6,7,8,9}
9 J" C& p9 }, V$ i( z& d
: V0 b3 ]4 z7 }( {' hsbit CLK=P3^3; //时钟信号
1 z. N4 ~! U9 }' asbit ST=P3^6; //启动信号,由低电平到高电平时间段复位 ,高电平到低电平时间段开始转换' y- k5 }6 |% X! B
sbit EOC=P3^5; //转换结束信号,当转换结束时会自动变成高电平' M% K( f( o! i+ G' G5 S0 y0 t! K; P
sbit OE=P3^4; //输出使能 ,当OE为高电平时开启输出端,OE为低电平时禁止输出
, y2 ?; S+ Q( u5 n3 m% T# ^* o8 g* Gsbit W1=P2^4; //定义W1表示P2.4位,第一位数码管控制端, 为0时亮,为1时灭
8 A0 a* I: R9 O9 msbit W2=P2^3; //定义W2表示P2.3位,第二位数码管控制端, 为0时亮,为1时灭! m1 i' b& A v0 d$ k
sbit W3=P2^2; //定义W3表示P2.2位,第三位数码管控制端, 为0时亮,为1时灭
% j# }8 I0 D- k, vsbit key=P3^7; //定义按键控制key为P3.7
* j4 g6 C* _' F0 v) w F//----------------------------1ms延时函数
; z: X) C/ ?0 a4 {/ Tvoid Delayms(unsigned char ms)
/ s3 W* H6 b. |2 t/ Y) i) Y6 l{
, p6 ^% C. V. S, f5 T lunsigned char i;
7 F' _2 R/ F0 V* C# [- Bwhile(ms--)$ h S c9 f4 }! A
for(i=0;i<120;i++);
& k4 j- y0 y. a- e; V}
0 B9 Z* S7 j( }& r4 A9 S//---------------------------显示转换结果(动态扫描模式)" t9 r6 Q8 X$ d( t: B
void Display(unsigned int d)
; {1 b. ^/ b9 L) v5 \8 v{
, g* ~7 l* E' A( ^% x1 p$ v5 `- b/ I9 r! m d=d*1.0/256*5*40; //将数字量转换成模拟量的公式为5V*(d/256),采样电压值为电流值*100欧姆,所以要获得实际电流值,即为采样电压值*40倍 (n1:n2=4000:1)* H: W1 p- |, S1 a5 X
( M L3 L- N1 ^' }; e5 O W1=0; //第一个数码管亮
1 Z/ j. V& M7 I! P% ] P0=DSY_CODE[d%10]; //显示第一个数码管的值 为P1的值除以10取余
( f2 X4 @5 v( A( C2 E Delayms(6); //延时5ms
1 X9 a. \1 o6 X+ u W1=1; //第一个数码管灭# U. n3 u6 y2 @& C, I i2 R! i! ^) ?
1 c+ q3 v* K5 i% ~3 O7 d
W2=0;
& s# f6 u C+ ~4 \2 O P0=DSY_CODE[d%100/10]; //显示第二个数码管的值 为P1的值除以100取余 再除以10取整
" z7 O8 i5 }) K# a4 F5 y Delayms(6);( A) S8 g1 p% U0 X
W2=1;
X3 O6 L& F% B: {0 c% u9 \1 @8 A/ a. Q
W3=0; 7 h+ ] O& I( {4 ?* s3 \ m3 C
P0=DSY_CODE[d/100]; //显示第三个数码管的值 为P1的值除以100取整. D. n0 `+ F0 E7 h# h
Delayms(6);
: g0 r) g2 j7 `; i W3=1;
9 { V) M Q- r( p6 U% s* M- b }8 Q$ {' p9 o' y2 m: t6 K/ q
//-------------------------------------------------主程序
7 f. ]. {7 ?! W. }, J" Hvoid main()
& I* e* e3 a: j( t: }{
, ?" X4 B0 D1 ~5 i" s TMOD=0x02; //16位定时器0工作模式设置为2
6 ]" D" x7 `, j* k( w: h TH0=0x14; //设置定时器高8位初值为0x14
! J9 h( _ I- q I+ c/ w TL0=0x00; //设置定时器低8位初值为0x00
# X5 m" [; v% @) c f7 x1 F8 X TR0=1; //开启定时器0开关, m L% F5 g7 e* d/ ]8 P
ET0=1; //开启定时器0中断开关+ O/ G; Z# l$ q3 d
EA=1; //开启中断总开关2 d! T/ o2 y/ O5 t
8 J9 E5 F! e: q- k- F. w' P% U/ r/ ]
//---------------启动 A/D 转换
1 U5 Q8 G5 K0 G4 g
; A' O0 z. v# D//---------开始按键-----9 f& g& N [' D0 Q S" \, ~+ v: O
A: while(key==1); //等待按键按下0 I0 u3 K" e, _7 \# o- D
Delayms(1); //延时1ms- w$ J8 C2 @1 n5 l6 \: U
if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能)
" Z1 }9 }6 O7 K ` while(key==0); //当按键松开时,循环转换和显示3 O9 z" v& e9 C r, P
2 s T; W \+ z3 J8 G' o0 X8 t) o0 B while(1)
8 L/ J9 k2 }1 g: n {
+ ]. J# ~! E" X" z/ A7 Y* \5 C ST=0;
K8 H: V6 b6 A: T$ ] ST=1;# v- s; R' z% h; t v+ a* w
ST=0; ( c' L2 t; M4 A2 W7 v! H
/ ?, K- t: @/ b5 {: B
while(EOC==0); //等待转换完成
" ~; O( E3 v* ]- G OE=1; //开启输出端8 l2 H$ [5 G, ]0 I' g" @ C
5 t4 C) m& o3 t8 j! b# f" y5 x6 m# z Display(P1); //将输出到单片机P1端口上的数字信号在LED显示出来) W6 _; \! f4 U! _7 b
OE=0; //关闭输出端: x! B* v2 h' K$ o
3 a9 U" K% G' w1 i! Y6 \( i# A//------停止按键---------
' U2 R* H+ U. {+ J1 X$ Q) m if(key==0)& e3 z9 r. T) x l r! x/ I
{
0 d! \' K; r& R& O5 b Delayms(1);, k- V" }% N, ]8 |0 g
if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能)
3 H# X g; I4 J$ p: e* l( ?* r while(key==0); //当按键松开时
. P. q$ _/ K6 Y& |0 E2 {2 q- z$ [) z6 t# V) e
& U5 {5 C4 G( f6 m9 O" h, a. H
…………限于本文篇幅 余下代码请下载附件…………
4 ?4 z" O+ E" z; s* D
6 Q* f( o, w0 A A9 H: \
7 T s3 a0 d( G) c全部资料打包下载:+ i, U, d: X: G% E: h
& S+ r5 b. I5 K3 m$ |3 \
+ B! u8 j" o6 m8 i! ?# y4 W
9 p x f6 S; a: n- I$ B |
|