|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码
+ z, o6 i. z3 ]1 c2 Q/ w, Q9 D! l$ D6 _: J8 f! ?
: C6 i& q& _: e- a) Y这是我刚做的一个20~200A大电流检测电路,通过ADC0809转换成数字信号,通过LED显示结果,包括原理图,仿真文件,源代码。
# w ~6 q5 o. R# ?, k将R1的电压采样到ADC0809,转换为数字信号,输入单片机
/ X% c# J/ W" ]4 ]$ g) \" [# Y! i5 a1 z
AD画的原理图(附件中可以可以下载):/ A h$ u# p2 e" H
1 ~0 A7 w: O2 v5 |& ~$ n
' W e' `! O. I. F6 V: b" e5 M2 M
! n+ z2 ^! k7 U- r2 C
: `) ^3 E: D; r" S4 T! b% a0 c) Y
单片机源程序:: V+ E& j+ w, {5 z
//------------------------------51单片机头文件/ z6 M9 w* A; `( \1 `8 P: }% K% g
#include<reg51.h>
- D- `0 H# @8 o7 j
4 m; C! P9 [3 L: ^+ R, s, ^//各数字的数码管段码(共阴)( g1 K8 n+ G0 b& d5 X1 C% W
unsigned 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. t: K, L" s6 v& _( s
/ t' ~- k. D! V( Ksbit CLK=P3^3; //时钟信号
2 T, G5 V0 v. o6 csbit ST=P3^6; //启动信号,由低电平到高电平时间段复位 ,高电平到低电平时间段开始转换0 ^9 y9 e3 U4 [1 I8 h$ R& J9 ^' R* c
sbit EOC=P3^5; //转换结束信号,当转换结束时会自动变成高电平! p1 J) `5 q. y! Q, o# C
sbit OE=P3^4; //输出使能 ,当OE为高电平时开启输出端,OE为低电平时禁止输出
* q3 J/ ]/ j% h: Fsbit W1=P2^4; //定义W1表示P2.4位,第一位数码管控制端, 为0时亮,为1时灭
7 p( O5 n- U9 s; G$ Nsbit W2=P2^3; //定义W2表示P2.3位,第二位数码管控制端, 为0时亮,为1时灭- F" \5 }: B+ x
sbit W3=P2^2; //定义W3表示P2.2位,第三位数码管控制端, 为0时亮,为1时灭
6 V" `2 J! E: u9 ?3 xsbit key=P3^7; //定义按键控制key为P3.7
' {$ t' L: j/ x6 G/ @5 d( q" O//----------------------------1ms延时函数2 p: H; D- Q- j& y3 l
void Delayms(unsigned char ms)
& j9 o1 R, Z$ W$ N{
{' }7 _8 M! K. Iunsigned char i;3 i& r; V# t, F; R. t
while(ms--)
/ F* {3 L9 K% [ v( hfor(i=0;i<120;i++);5 O' G& v% G! C0 u) f: e! m% _' L
}
4 _ M) }# F5 t//---------------------------显示转换结果(动态扫描模式)
; b% b* X$ C- U; {void Display(unsigned int d)
, F& v( ?/ k y& E: F$ f R% p3 \{
' m( p+ C/ d2 o; O* r+ c! u% `5 N d=d*1.0/256*5*40; //将数字量转换成模拟量的公式为5V*(d/256),采样电压值为电流值*100欧姆,所以要获得实际电流值,即为采样电压值*40倍 (n1:n2=4000:1)
! q/ h6 q; Y6 A8 z
0 c/ F! a0 g! V8 O# @ W1=0; //第一个数码管亮
1 } U- g/ L9 y: s P0=DSY_CODE[d%10]; //显示第一个数码管的值 为P1的值除以10取余
! g+ s5 S1 e! G. e6 [ Delayms(6); //延时5ms
. k; q' H7 s4 q8 P5 o X W1=1; //第一个数码管灭
6 w% a0 m! g# r/ V) q6 t) U2 e- B* j! O" C
W2=0;0 } K! k. O8 @: W# Y; L
P0=DSY_CODE[d%100/10]; //显示第二个数码管的值 为P1的值除以100取余 再除以10取整
0 B: p# K/ B* h2 C Delayms(6);) b# z, J$ b! h6 y
W2=1;
( S& @! U' I( S. c9 X6 I. R1 w+ o0 K" x) E6 `& u+ j' E
W3=0;
% s. r8 {1 _0 ^2 S P0=DSY_CODE[d/100]; //显示第三个数码管的值 为P1的值除以100取整' R( q$ E9 m1 A* i+ K
Delayms(6);
& [! j& Y. z; h' [& l' x W3=1;! Z( K b+ r! B$ T) m
}( U6 x- N' q2 r1 L
//-------------------------------------------------主程序
7 @1 R" L+ F* q6 J( ?/ Q3 g F8 I. _" Kvoid main()+ l3 L. F1 d( M+ F' @
{
/ F, D) [9 |8 E0 b+ \ N TMOD=0x02; //16位定时器0工作模式设置为2
" d& T- G% O c9 t TH0=0x14; //设置定时器高8位初值为0x14* T9 F+ v: |6 h( K2 ]# O& `
TL0=0x00; //设置定时器低8位初值为0x00$ L8 P3 C D/ h
TR0=1; //开启定时器0开关. P; Y, e2 r1 f. m/ r% N
ET0=1; //开启定时器0中断开关
" j5 @- b x0 Y9 m# z5 c! F EA=1; //开启中断总开关
1 i$ h& t! {% c7 z9 p# Q, S
6 @! W Q m: i9 u6 b2 Y' w* @//---------------启动 A/D 转换& W% A5 V8 C+ ?$ H% J1 l; o
# |! N" e$ ~, d//---------开始按键-----
1 U$ z# Z+ h( r' u3 B5 V7 \. LA: while(key==1); //等待按键按下2 M* b/ x0 @% }9 v8 i
Delayms(1); //延时1ms
* L `4 X- T. o/ E$ H# K1 A if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能) 1 L$ E* C2 W' g; y& U
while(key==0); //当按键松开时,循环转换和显示
4 @# K! g0 Y v: d2 _+ W! m- H( ~) }4 i4 _. [% S
while(1)$ s0 s0 _" V9 ~2 u
{. t* @3 s" q: c
ST=0;7 k) W1 J0 M: a7 }* H
ST=1;
$ i3 g3 ^- v, ?- A1 {& \" [0 [ ST=0;
- |# O2 h, k/ `: g; o* a2 z. _8 l" \& @4 R; \/ d1 X. N/ |
while(EOC==0); //等待转换完成' g6 K8 W2 q. _
OE=1; //开启输出端
8 g" v$ w( I9 b( q7 _- N6 K& y$ I# B- H' Z W1 m
Display(P1); //将输出到单片机P1端口上的数字信号在LED显示出来
* Y1 R& _5 t" y& q5 \ OE=0; //关闭输出端* U& Z0 s2 j4 u1 c
8 ]+ G/ Z6 n( l* r//------停止按键---------1 l0 L6 ?4 N! e3 J" k Q. A
if(key==0), Z+ i3 e5 Z6 ^% h# Z: p* a
{" E, I, y& q5 q- k6 h5 y
Delayms(1);$ \: ~, D5 R8 ]: A0 Q
if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能) + T @$ g$ T9 A J" g
while(key==0); //当按键松开时
! _8 D2 B6 O3 Q, b! I0 N& N( n: v _/ Q6 L9 i$ E' r; x, `5 G: H
8 H" A8 p" {, f! V0 l5 K: U…………限于本文篇幅 余下代码请下载附件…………
+ R2 E: [8 S# x
i6 u3 v; X5 ?4 I- V! L $ y! h8 A+ @$ R7 _; V6 @. [# W
全部资料打包下载:1 j; t& i3 b% M
+ T+ r& ~/ N+ u4 w1 n2 e6 Y" C
2 M2 `3 ~+ o* n3 h1 L7 r' S
* Y M: M* P" H+ Z8 o |
|