这是我刚做的一个20~200A大电流检测电路,通过ADC0809转换成数字信号,通过LED显示结果,包括原理图,仿真文件,源代码。
将R1的电压采样到ADC0809,转换为数字信号,输入单片机
AD画的原理图(附件中可以可以下载):
51单片机P0口和其他口内部结构不同
使用单片机P0端口时必须把P0的8个口都接上拉电阻,
使用单要不然P0口只能输出低电平,不能输出高电平
proteus仿真原理图:
单片机源程序:
- //------------------------------51单片机头文件
- #include<reg51.h>
- //各数字的数码管段码(共阴)
- 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}
- sbit CLK=P3^3; //时钟信号
- sbit ST=P3^6; //启动信号,由低电平到高电平时间段复位 ,高电平到低电平时间段开始转换
- sbit EOC=P3^5; //转换结束信号,当转换结束时会自动变成高电平
- sbit OE=P3^4; //输出使能 ,当OE为高电平时开启输出端,OE为低电平时禁止输出
- sbit W1=P2^4; //定义W1表示P2.4位,第一位数码管控制端, 为0时亮,为1时灭
- sbit W2=P2^3; //定义W2表示P2.3位,第二位数码管控制端, 为0时亮,为1时灭
- sbit W3=P2^2; //定义W3表示P2.2位,第三位数码管控制端, 为0时亮,为1时灭
- sbit key=P3^7; //定义按键控制key为P3.7
- //----------------------------1ms延时函数
- void Delayms(unsigned char ms)
- {
- unsigned char i;
- while(ms--)
- for(i=0;i<120;i++);
- }
- //---------------------------显示转换结果(动态扫描模式)
- void Display(unsigned int d)
- {
- d=d*1.0/256*5*40; //将数字量转换成模拟量的公式为5V*(d/256),采样电压值为电流值*100欧姆,所以要获得实际电流值,即为采样电压值*40倍 (n1:n2=4000:1)
- W1=0; //第一个数码管亮
- P0=DSY_CODE[d%10]; //显示第一个数码管的值 为P1的值除以10取余
- Delayms(6); //延时5ms
- W1=1; //第一个数码管灭
- W2=0;
- P0=DSY_CODE[d%100/10]; //显示第二个数码管的值 为P1的值除以100取余 再除以10取整
- Delayms(6);
- W2=1;
-
- W3=0;
- P0=DSY_CODE[d/100]; //显示第三个数码管的值 为P1的值除以100取整
- Delayms(6);
- W3=1;
- }
- //-------------------------------------------------主程序
- void main()
- {
- TMOD=0x02; //16位定时器0工作模式设置为2
- TH0=0x14; //设置定时器高8位初值为0x14
- TL0=0x00; //设置定时器低8位初值为0x00
- TR0=1; //开启定时器0开关
- ET0=1; //开启定时器0中断开关
- EA=1; //开启中断总开关
- //---------------启动 A/D 转换
- //---------开始按键-----
- A: while(key==1); //等待按键按下
- Delayms(1); //延时1ms
- if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能)
- while(key==0); //当按键松开时,循环转换和显示
- while(1)
- {
- ST=0;
- ST=1;
- ST=0;
-
- while(EOC==0); //等待转换完成
- OE=1; //开启输出端
-
- Display(P1); //将输出到单片机P1端口上的数字信号在LED显示出来
- OE=0; //关闭输出端
-
- //------停止按键---------
- if(key==0)
- {
- Delayms(1);
- if(key==0) //延时1ms后按键还是按下了,说明按键确实按下了(按键消抖功能)
- while(key==0); //当按键松开时
-
- …………限于本文篇幅 余下代码请从51黑下载附件…………
-
复制代码
全部资料打包下载:
大电流检测.zip
(210.71 KB, 下载次数: 257)
|