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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
单片机20~200A大电流检测电路设计 用AD实现 带原理图,源代码2 q7 F8 n& J1 a& g7 `8 U& k

( }4 E( j, K4 ^2 H6 L, K6 e

9 S- [9 q) F. m" Z8 s( P9 X- D这是我刚做的一个20~200A大电流检测电路,通过ADC0809转换成数字信号,通过LED显示结果,包括原理图,仿真文件,源代码。
- S+ j. |5 o  x. A; E2 W将R1的电压采样到ADC0809,转换为数字信号,输入单片机
% |: q; }- m# `$ n1 y2 j6 h
* h# s1 M+ i4 }0 ^AD画的原理图(附件中可以可以下载):2 ?5 @& S' d) M. z% c

9 f8 b- J/ z3 V
. Z% e/ ]- {) N2 p1 S# N! U: ^- i" e- J" |% O4 T% ~+ T
/ V+ _# u% }! L  Z6 z
单片机源程序:
1 Q# J; g$ w5 n; D
//------------------------------51单片机头文件' {7 [+ i  F- E( O  a% \: Y' S
#include<reg51.h># ~; G; u' |$ f, b+ Y
  R5 G- o: ~6 A, q' u2 ^
//各数字的数码管段码(共阴)
5 J: T% L! W5 u" Nunsigned char code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管显示数组{0,1,2,3,4,5,6,7,8,9}
4 c7 D/ z* P( P  p$ c2 j3 r% Y0 X. R- F
sbit CLK=P3^3;    //时钟信号
% v) S7 C7 e- i9 A5 esbit ST=P3^6;     //启动信号,由低电平到高电平时间段复位 ,高电平到低电平时间段开始转换
, x" R/ [/ r& c" a( A5 Jsbit EOC=P3^5;    //转换结束信号,当转换结束时会自动变成高电平
$ M8 \+ z; z2 \) o4 n+ F2 b' U" jsbit OE=P3^4;     //输出使能 ,当OE为高电平时开启输出端,OE为低电平时禁止输出
# E" E5 d& s/ h, |- V& usbit W1=P2^4;     //定义W1表示P2.4位,第一位数码管控制端, 为0时亮,为1时灭+ s& N. V6 R/ q; E5 B2 A3 e
sbit W2=P2^3;          //定义W2表示P2.3位,第二位数码管控制端, 为0时亮,为1时灭3 p9 G- l; i+ w! a7 m
sbit W3=P2^2;          //定义W3表示P2.2位,第三位数码管控制端, 为0时亮,为1时灭0 ^2 K5 ?' _& A5 _/ B
sbit key=P3^7;          //定义按键控制key为P3.7& }: G% F; l# y& X0 R2 }1 a
//----------------------------1ms延时函数& O1 g# S, i8 U0 i
void Delayms(unsigned char ms)
, ]) B5 i" D# K2 J) V! P{9 ^0 G: I8 b0 Z! ~, p! |
unsigned char i;3 J6 `6 s: F9 n, X8 i
while(ms--)
( s- h5 I2 |3 U' a* ufor(i=0;i<120;i++);
! Y! g% A' y- r! G( n}+ ]* [$ O3 m3 F/ U; I7 v
//---------------------------显示转换结果(动态扫描模式)5 j. [; l5 S% u2 c; n2 t: ~
void Display(unsigned int d)& x, Z( i) Z" j- _
{
6 k8 |$ b# C  g4 I$ N        d=d*1.0/256*5*40;  //将数字量转换成模拟量的公式为5V*(d/256),采样电压值为电流值*100欧姆,所以要获得实际电流值,即为采样电压值*40倍 (n1:n2=4000:1), b- [3 [) z8 Y: v- l. `  h6 _

& {$ ^% _8 |% N) M        W1=0;   //第一个数码管亮& Q8 [9 o2 p- ~$ h' O. G& ?
        P0=DSY_CODE[d%10];  //显示第一个数码管的值 为P1的值除以10取余' k0 O; M3 o1 E1 x5 [+ I) f$ c
        Delayms(6);                        //延时5ms( m% \7 K1 r+ @" P: X* ]
        W1=1;   //第一个数码管灭
4 b$ R: k$ F1 Y+ p+ z" @4 q
/ b$ a# F( O. o        W2=0;
  H! _( l4 ~# `2 X( \! y        P0=DSY_CODE[d%100/10];        //显示第二个数码管的值 为P1的值除以100取余 再除以10取整- {4 Q+ @& K2 T, l6 F; Q
        Delayms(6);+ C4 W1 p" D7 c& Q" _. j
        W2=1;
* X. |/ {& j0 Z! p0 A
, Y7 k5 z: s9 Q. z4 m; ^        W3=0;
/ ]  s+ r# ~; B. x- p! S* ^        P0=DSY_CODE[d/100];           //显示第三个数码管的值 为P1的值除以100取整
- L- ?  W3 @- z* V+ L- n        Delayms(6);
, C7 F  Z2 i4 e, h. h        W3=1;
7 O& @9 A& O! L            }
& Q- ~+ l4 p/ Q" S2 S" g. Y3 C7 c//-------------------------------------------------主程序
8 j, s- q0 a* u0 ?/ Vvoid main()
/ ?7 P8 |, x8 ~1 v7 W- I- j{                                                                                 
' O) g& i' `0 s& V. x9 I% u        TMOD=0x02; //16位定时器0工作模式设置为2, \" U) ~5 H6 ]9 w4 v. c/ k. D
        TH0=0x14;  //设置定时器高8位初值为0x14( G/ ^. H. E7 Z; N( v( O6 v* q* g
        TL0=0x00;  //设置定时器低8位初值为0x00
0 }$ z, \; V) k5 P; s( f( m, s* |        TR0=1;           //开启定时器0开关
+ i/ s( G# E8 m+ i, Q& i. V" g        ET0=1;           //开启定时器0中断开关1 h& l6 S! M6 K
        EA=1;           //开启中断总开关2 ?; l5 F' M% h0 p+ q
$ s$ M0 N3 R4 V6 b6 L
//---------------启动 A/D 转换! A' ?, O1 T& L9 l

8 s$ D0 q: t: P" R2 y: O- M//---------开始按键-----! f2 q9 c1 T1 J1 W  m' d' _. x
A:        while(key==1);     //等待按键按下
6 q. E* a5 [% x! `" p. H6 o& V: b: T% H        Delayms(1);               //延时1ms1 Q% P9 v6 E7 ~% q
        if(key==0)         //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能) + J( u+ s8 @; r
        while(key==0);           //当按键松开时,循环转换和显示0 ]% ~& y! t# n

4 A" L/ ~8 E% e: e                while(1)
  v7 d0 A5 _( ]8 E                {
- C0 r# J/ l  k+ Z: @  `5 O" i                ST=0;- q. s1 B9 {$ b( O9 ?: o5 L& y
                ST=1;" Y7 [3 f' t% @( v' o  E& ^7 G) K3 N% a
                ST=0;  ; p7 {  j3 l8 Y  a0 N- f3 J) U5 z

5 R6 Y. n' K' W6 g1 @& h7 k' v) Z' N2 _3 [                while(EOC==0);   //等待转换完成6 y# c0 w2 F+ s- ]9 H( K- u3 ~
                OE=1;                          //开启输出端( B# d4 h  D- N" E" K9 J

1 l: Q. Y" b# h0 N( p' W5 u8 Z                Display(P1);     //将输出到单片机P1端口上的数字信号在LED显示出来
+ e" L8 y  d0 B5 a8 H2 G  p0 \                OE=0;            //关闭输出端* D) W& r& v3 h+ L( p; j

, ?" J3 O" j9 H# n6 P$ t; ?//------停止按键---------% @% R+ J" J/ l, |
           if(key==0)" N: G1 `  ]/ f( [' ^. d8 H2 V
                   {
9 f/ N! F7 @, y& ]: s$ r# r                        Delayms(1);
; \2 ~* I9 G) A# D                    if(key==0)         //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能)
+ A: H& _8 r$ D$ u: E+ E9 d' I                        while(key==0);           //当按键松开时9 N3 K! C. A* v# a7 ?4 R4 Y

1 w+ ^9 w7 P$ t- T6 m; ~/ C
7 H9 c# {  @' h…………限于本文篇幅 余下代码请下载附件…………2 W0 s& m0 g* J. p  n: ]4 ]& w

: O# z! b3 S5 w / B- H- `$ D* H! V3 E: d
全部资料打包下载:3 [3 {* t% g0 e3 x
游客,如果您要查看本帖隐藏内容请回复

: N& Y9 v  ?' g. }& e+ l
4 t' x6 c6 t/ p
& d, ^* `9 _) Q

该用户从未签到

推荐
发表于 2019-10-12 21:24 | 只看该作者
多谢分享                    , u- V9 r! ]) R

该用户从未签到

推荐
发表于 2020-11-23 16:06 | 只看该作者
1111111111111111111111111
) Z6 |9 _( m" l# E# |

该用户从未签到

推荐
发表于 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-11-29 17:38 , Processed in 0.171875 second(s), 28 queries , Gzip On.

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

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

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