|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码
0 Y @ S% ^* {, r* S, N( N4 G4 s$ a" C5 p p, W+ S" y+ @; ^4 n
, r3 i# n' ^) o% _这是我刚做的一个20~200A大电流检测电路,通过ADC0809转换成数字信号,通过LED显示结果,包括原理图,仿真文件,源代码。
) D: r' ~' C. z7 l6 q将R1的电压采样到ADC0809,转换为数字信号,输入单片机
' ]5 X2 `. }7 ~
; v% T+ E l: O" gAD画的原理图(附件中可以可以下载):. r9 b5 T+ S) c
5 {8 b& h2 o( d4 z9 C8 F C G) p7 Q. s* D
3 A' S* O$ I6 s! |) V# ]& H9 Q
3 J- g" H3 J# G1 {0 ~6 W3 u
单片机源程序:( v3 Y. D' O7 E h) p1 F
//------------------------------51单片机头文件
7 A2 Z! W" y) T0 w( U9 c, I$ F& J; u3 b#include<reg51.h>5 o# U& \5 q. V
: `( B: @5 ?3 k# t& O9 c$ ^//各数字的数码管段码(共阴)
' j: e4 l* o A) ]& }% ounsigned char code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示数组{0,1,2,3,4,5,6,7,8,9}( V& E& v3 q" J7 {4 j
, N ^5 S7 h o- gsbit CLK=P3^3; //时钟信号
8 L, r9 l8 b7 O% C2 Csbit ST=P3^6; //启动信号,由低电平到高电平时间段复位 ,高电平到低电平时间段开始转换0 V1 f, _; ?4 Z0 u
sbit EOC=P3^5; //转换结束信号,当转换结束时会自动变成高电平* h0 T" |* d0 |: Z$ P
sbit OE=P3^4; //输出使能 ,当OE为高电平时开启输出端,OE为低电平时禁止输出
- b' g+ y; \$ r" C8 ~2 P# dsbit W1=P2^4; //定义W1表示P2.4位,第一位数码管控制端, 为0时亮,为1时灭$ w* j+ P: i# U, b) {
sbit W2=P2^3; //定义W2表示P2.3位,第二位数码管控制端, 为0时亮,为1时灭
2 p% T, Q$ C4 j+ x+ s& _: O6 g9 \sbit W3=P2^2; //定义W3表示P2.2位,第三位数码管控制端, 为0时亮,为1时灭
: r8 @ J# W9 Q6 ysbit key=P3^7; //定义按键控制key为P3.7
3 j, e- l' e: ]0 _//----------------------------1ms延时函数
, R1 J% a" `" _, r gvoid Delayms(unsigned char ms): x' u8 i# D# P" k' O
{
- y8 E0 J4 x/ a L4 Runsigned char i;
/ ]$ d4 ^* f* B6 M) Q3 d: m2 rwhile(ms--)# h$ K# T8 e6 X$ C/ X8 |# @: M# G
for(i=0;i<120;i++);
6 P3 c( X% I/ R) [9 q+ n% h( J}
; P: T. x+ W, K( }* W//---------------------------显示转换结果(动态扫描模式)4 d" k# U" z5 C- I8 V# L, D& d
void Display(unsigned int d): l/ ?. w7 F7 c
{' C! ?6 b: B+ j1 A* @5 Y
d=d*1.0/256*5*40; //将数字量转换成模拟量的公式为5V*(d/256),采样电压值为电流值*100欧姆,所以要获得实际电流值,即为采样电压值*40倍 (n1:n2=4000:1)/ Z4 B2 _3 ] t3 z$ | F. X6 _; T
o! F0 t$ c5 ~
W1=0; //第一个数码管亮
$ z% ?- a$ J8 F; P# Z @# n P0=DSY_CODE[d%10]; //显示第一个数码管的值 为P1的值除以10取余! f+ W7 ]! Z, S" o6 D" ~
Delayms(6); //延时5ms
# _, f# v w; l- `) b W1=1; //第一个数码管灭
- Q$ g: }6 |! J7 v( e2 e' D( P8 V: f$ J; j& d; Y+ T0 S6 u6 z
W2=0;, Z1 d. x! k$ I
P0=DSY_CODE[d%100/10]; //显示第二个数码管的值 为P1的值除以100取余 再除以10取整5 b$ _3 C0 e* `& Q( W& d" V3 v" E
Delayms(6);
" t8 W: F; q0 r: Y4 U- D2 L; {' } W2=1;
/ w% }' K+ Y1 L6 X, b C7 E/ l. f! v. L- j j9 @
W3=0;
7 `* ?; q! K: V- A/ \& E7 C7 a0 F P0=DSY_CODE[d/100]; //显示第三个数码管的值 为P1的值除以100取整4 U( k* h# g8 D4 Z! \: C4 ^: h
Delayms(6);
* `8 x; R# Y. N5 V1 \3 o7 R W3=1;
# E; E8 G" ?2 D) P }
5 f9 Z$ i# R) S( f: h# |! H//-------------------------------------------------主程序3 z& `1 o |# X, a8 x: w) J
void main()
% |1 Y; k" r& p' j0 d6 Z{ 6 c7 B' ~0 q" e/ z) k2 Z( L
TMOD=0x02; //16位定时器0工作模式设置为29 K7 O% K2 v! _3 L* J+ n/ ^- G C Q
TH0=0x14; //设置定时器高8位初值为0x14% Q7 r" [ K4 t) p4 [6 l
TL0=0x00; //设置定时器低8位初值为0x009 d0 c0 J% z2 w, A# C
TR0=1; //开启定时器0开关' ]0 `% P* |1 N, D
ET0=1; //开启定时器0中断开关6 K7 c u4 G( y/ I) j
EA=1; //开启中断总开关& F0 ~7 q/ y1 x7 Q' z# M2 \
( b! `8 O! L9 G$ e2 i//---------------启动 A/D 转换
6 m& Q( V$ R7 {5 w j$ c$ p: }: _, o2 r6 Y
//---------开始按键-----$ ]8 \# V4 _5 x- K$ X a
A: while(key==1); //等待按键按下, b8 y% l# Y5 s8 L
Delayms(1); //延时1ms+ f7 U& }3 R( x- Z; B
if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能)
) x0 a! a! i: |$ P/ C+ H4 Q while(key==0); //当按键松开时,循环转换和显示
9 d2 F% i; Z% i7 h( T0 E* n" c! c; Z. e- _
while(1)
) p D- r) w" p3 y1 E9 a$ s {
5 l- h4 R+ J, g6 d, @5 N t ST=0;$ i3 s1 n/ x* t9 R; g6 h" |/ r: k j
ST=1;- B! L7 W7 y6 u! U9 U$ F& p& m
ST=0;
0 P3 X" z2 |$ m' [
/ ~ b$ ~; T. ?! E6 Y+ O4 M while(EOC==0); //等待转换完成- ~( a8 E) ~5 g2 j) |8 C4 j# j, I
OE=1; //开启输出端
% x" b) _% w& D' F. n J
. g8 b. X" A( T& W& H9 x1 H Display(P1); //将输出到单片机P1端口上的数字信号在LED显示出来, A$ p$ M1 r" \. _
OE=0; //关闭输出端
* X. `( E1 q: t: Q2 F C" f! ?* ~8 N
//------停止按键---------" q# C: O. m1 \7 {
if(key==0)4 }! X$ v8 Y& D6 ^+ {# Q+ B4 [1 \% L
{
2 J; c0 O* y: g Delayms(1);" n# C4 T w( m( l+ m8 R
if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能) , W. G1 \9 A( R; ?9 [
while(key==0); //当按键松开时" z6 p# w0 s/ ^ A S, {: G4 p
# G- v( I5 I% |2 [; T9 y
, E [! Y7 t9 ]' B…………限于本文篇幅 余下代码请下载附件…………" O: T( G1 V* h
* P) d' [5 T$ @+ H. K
f6 p" Y: H" q9 Z" z全部资料打包下载:2 H+ [6 U4 x$ r' X
9 S7 W2 }1 r( c+ d4 q' ~/ a
; }$ b4 `7 m$ ]1 h8 q1 H3 J# v3 ~3 ~ i# L8 q
|
|