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

单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码
; _6 [9 i7 I1 E& C# ]. P# l4 V8 N

( d9 z* O# w7 T9 p) p& M) U# r这是我刚做的一个20~200A大电流检测电路,通过ADC0809转换成数字信号,通过LED显示结果,包括原理图,仿真文件,源代码。9 _0 }& H: ^: J0 J! i( Z0 n
将R1的电压采样到ADC0809,转换为数字信号,输入单片机0 s" x. e1 Q9 t- w' Q4 p; K

0 p3 l2 s9 W& U4 J& \  FAD画的原理图(附件中可以可以下载):
1 I1 @( |' Q! }" S' R0 J# x ! V$ q/ Z+ @7 _( L% `2 m) Z# m( J) C8 b

, ^* k: Q0 y3 @2 i) ?3 w2 F0 R$ M9 a- t6 x2 d1 l1 H, `' K

* K2 z; V+ L6 F0 `0 F# W, @单片机源程序:
4 ^2 d! J. l7 O% L/ ^4 D# }' J
//------------------------------51单片机头文件
( ?% ~: H$ w  T8 F! J( v#include<reg51.h>
+ U" C) |) O, v8 h0 C8 b; ~' `; W# R
//各数字的数码管段码(共阴)
2 f% Y0 G+ l! b9 j, d, y7 [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}% _6 c0 f0 D$ v& Y- z5 Q

) h  t2 Q/ W7 x! l* Esbit CLK=P3^3;    //时钟信号
7 f6 C" n- G! T5 u- M) xsbit ST=P3^6;     //启动信号,由低电平到高电平时间段复位 ,高电平到低电平时间段开始转换) C% \# G5 {. O; M1 H2 F
sbit EOC=P3^5;    //转换结束信号,当转换结束时会自动变成高电平
- k& U: B" c# c5 ^8 Usbit OE=P3^4;     //输出使能 ,当OE为高电平时开启输出端,OE为低电平时禁止输出
6 E, v) r1 e4 a+ S: U+ @& `$ D% Gsbit W1=P2^4;     //定义W1表示P2.4位,第一位数码管控制端, 为0时亮,为1时灭
4 k, k/ [1 w& A1 \, W* \+ Psbit W2=P2^3;          //定义W2表示P2.3位,第二位数码管控制端, 为0时亮,为1时灭
" I' G& N# |: H+ r, ~sbit W3=P2^2;          //定义W3表示P2.2位,第三位数码管控制端, 为0时亮,为1时灭% R; D+ n* _. `/ \  M4 F
sbit key=P3^7;          //定义按键控制key为P3.7
7 {7 Q$ T, t1 K- e. F+ e//----------------------------1ms延时函数- U/ ~8 v' W! R- ~5 j
void Delayms(unsigned char ms)7 Z0 R( j9 d3 @# a
{
9 R8 F- \6 g: k5 y* C( Y6 |0 L3 \4 P# zunsigned char i;" z7 P9 G5 O5 r1 H
while(ms--)
& x* J$ \5 M9 @. k/ @for(i=0;i<120;i++);) D- S$ `3 D/ }1 a( v3 _: l
}) m: G2 H+ d! J5 B% |" o
//---------------------------显示转换结果(动态扫描模式)
% ]" c4 Q  r" w( m# }1 y1 ]1 Ivoid Display(unsigned int d)0 p8 c8 |5 x4 W/ o+ Y  r5 z, X- {
{
; i" @7 ]0 t' H" s        d=d*1.0/256*5*40;  //将数字量转换成模拟量的公式为5V*(d/256),采样电压值为电流值*100欧姆,所以要获得实际电流值,即为采样电压值*40倍 (n1:n2=4000:1), i, n# C6 k8 k# R5 G) s. v
: ]7 H- G( O6 {0 p* R# q9 e' i
        W1=0;   //第一个数码管亮+ h; a5 R, Z' ~2 S, f/ {" P
        P0=DSY_CODE[d%10];  //显示第一个数码管的值 为P1的值除以10取余
+ L; K. E/ d7 f& i( }% E4 a        Delayms(6);                        //延时5ms
: z# `/ W! U# w0 d' O3 D+ w        W1=1;   //第一个数码管灭
% R. M- Y) c. G: O2 c3 Z
* ]5 a4 x1 h. F$ R        W2=0;+ Q* s2 \1 o* P9 m9 N
        P0=DSY_CODE[d%100/10];        //显示第二个数码管的值 为P1的值除以100取余 再除以10取整- ~7 h; K* u8 |( D1 b( r! W
        Delayms(6);
2 L  C' p; b8 ?2 F5 B$ b        W2=1;
: m+ s, F. t2 F6 N
, o6 q5 R, v0 K8 Z; H        W3=0; , P/ r8 r* H( }( f) x  Z& Q* `5 W
        P0=DSY_CODE[d/100];           //显示第三个数码管的值 为P1的值除以100取整
% G/ o& V4 }. p/ {' j4 h6 N        Delayms(6);! t% x3 N; E! n# e" B
        W3=1;
7 u- g/ A% D8 C            }0 J. E. u6 d4 k9 H* A4 t$ ]
//-------------------------------------------------主程序' X+ c. a2 L; X: |4 [0 }
void main()
4 C% K  f- a3 N; P5 x5 ?{                                                                                 
$ R4 Z* }7 q9 \: N  d: p  y        TMOD=0x02; //16位定时器0工作模式设置为2  J" z' J1 h4 Q1 S
        TH0=0x14;  //设置定时器高8位初值为0x14
- R; n7 U) _" P/ Z1 M/ E        TL0=0x00;  //设置定时器低8位初值为0x00
1 l% _1 A  `. K7 D0 B        TR0=1;           //开启定时器0开关
+ r& |7 {8 C: q        ET0=1;           //开启定时器0中断开关
! f) d' n6 k& V& N3 @( F        EA=1;           //开启中断总开关
8 D6 ?4 C( v" @2 y1 Y$ f' V
6 p- j3 I' h! j3 D$ _//---------------启动 A/D 转换, i5 P2 p, z7 T7 G

: [, N+ n$ ?! z) ]5 h: u( j3 w9 S" S//---------开始按键-----
7 l. d  O! B2 b/ }A:        while(key==1);     //等待按键按下
& n1 ^  s; d2 H$ K8 \0 }1 P. m        Delayms(1);               //延时1ms8 a) C- D& c) @- B  Y7 N
        if(key==0)         //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能) $ c) ~, V, f! F. C0 P
        while(key==0);           //当按键松开时,循环转换和显示* L  \- S. `6 G2 C8 j

4 D; G' ]. e" o7 `4 D( }                while(1)
8 D% j6 M: D/ ?2 C# G$ c" g                {, U* d4 B/ W. m
                ST=0;8 |9 k/ o" n' K. T$ n
                ST=1;% Y. N$ H# y3 \8 M
                ST=0;  
" Q8 [8 q0 R1 R5 i) F+ w/ E
! n& u$ `1 Y) w; E% E8 N                while(EOC==0);   //等待转换完成
- E! ~* V2 f9 n' c                OE=1;                          //开启输出端
: H+ Y  @( p' B4 d) h6 W' S/ W: ^+ T) r! J. e4 x0 J, s  S
                Display(P1);     //将输出到单片机P1端口上的数字信号在LED显示出来: i* x( Z2 c3 v8 o0 Z& i
                OE=0;            //关闭输出端6 B0 u0 U; R. F* x; l
8 L3 m1 {, I# i+ s+ t0 @
//------停止按键---------4 j* k; _5 x3 F, N+ O( G& T: q
           if(key==0)
; N- t" u# ]7 a! Q0 M! Q                   {
' P' `4 p+ B; g4 e% M                        Delayms(1);
4 h% d3 t" k$ {7 m9 B9 H5 [                    if(key==0)         //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能)
9 \' Z# D7 {! `5 A                        while(key==0);           //当按键松开时
  m3 i! A; Z7 N' a# k9 `% E/ a/ f5 L$ ~. b8 s" ^

4 P- o2 G6 o, E, j+ k* Y…………限于本文篇幅 余下代码请下载附件…………
% k" h! T8 B# U9 i" M* o0 _9 ?: R5 J7 R6 l! h9 g6 q3 f) y! l
1 c/ s- X7 D1 q. D6 M. |
全部资料打包下载:
( f) M, W" T0 G6 L, B* X! n
游客,如果您要查看本帖隐藏内容请回复
/ X# O2 K( i% `! g
4 d. r# e) n( z5 b9 h
0 p0 M5 k! X* a! I8 w

该用户从未签到

推荐
发表于 2019-10-12 21:24 | 只看该作者
多谢分享                    
+ w& t* B4 B* A" Q! ?# y

该用户从未签到

推荐
发表于 2020-11-23 16:06 | 只看该作者
1111111111111111111111111
$ X9 \- v, w5 \, E2 Q

该用户从未签到

推荐
发表于 2021-5-23 14:44 | 只看该作者
学习学习666666666666666

该用户从未签到

5#
发表于 2019-1-10 16:53 | 只看该作者
好东东,谢谢楼主分享

该用户从未签到

11#
发表于 2020-2-13 09:35 | 只看该作者
谢谢分享

“来自电巢APP”

该用户从未签到

12#
发表于 2020-2-13 09:37 | 只看该作者

该用户从未签到

13#
发表于 2020-5-17 21:53 | 只看该作者
这个不错 值得一看

该用户从未签到

14#
发表于 2020-9-10 10:46 | 只看该作者
  • TA的每日心情
    擦汗
    2021-3-3 15:52
  • 签到天数: 78 天

    [LV.6]常住居民II

    15#
    发表于 2021-5-27 11:20 | 只看该作者
    下载下来看一看

    “来自电巢APP”

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

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

    EDA365公众号

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

    GMT+8, 2025-10-29 15:54 , Processed in 0.187500 second(s), 28 queries , Gzip On.

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

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

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