精华内容
下载资源
问答
  • 51单片机电流表程序

    2018-09-12 16:09:41
    内含51单片机AD0832驱动程序及数码管驱动程序,自己课设编写,实测可用。
  • 51单片机制作电压电流表,1206液晶显示屏 带报警功能,
  • 参考学习如何引用单片机实现电流表的设计,包括硬件电路的设计和程序设计
  • 使用STM8S003F3P6单片机设计的电压表电流表,带12864显示屏显示,具有校准功能,包含原理图,程序源码
  • 基于51单片机的数字电流电压

    万次阅读 多人点赞 2019-05-11 00:09:46
    本文介绍了基于STC89C52单片机为核心,分别以ACS712-05芯片和串联分压电路为为电流检测和电压检测电路,并通过AD0809数模转换芯片对电压信号进行采集和转换,传输给单片机进行处理,最后将处理后的电压值和电流值...

    1.简述
    本文介绍了基于STC89C52单片机为核心,分别以ACS712-05芯片和串联分压电路为为电流检测和电压检测电路,并通过AD0809数模转换芯片对电压信号进行采集和转换,传输给单片机进行处理,最后将处理后的电压值和电流值通过LCD1602显示屏显示出来。

    2.硬件设计
    本设计的硬件主要分为5部分,分别为:单片机最小系统、电流信号采样电路、电压信号采集电路、ADC转换电路、LCD1602显示屏电路。硬件框图如图:
    在这里插入图片描述
    (1)电流信号采集电路
    电流信号采集电路采用了ACS712-05芯片,该芯完全基于霍尔感应的原理设计,由一个精确的低偏移线性霍尔传感器电路与位于接近IC表面的铜箔组成、,电流流过铜箔时,产生一个磁场, 霍尔元件根据磁场感应出一个线性的电压信号,经过内部的放大、滤波、斩波与修正电路,输出一个电压信号,该信号从芯片的第七脚输出,直接反应出流经铜箔电流的大小。具体电路如图:
    在这里插入图片描述
    ACS712根据尾缀的不一样,量程分为三个规格:±5A、±20A、±30A,此次使用的量程为 ±5A,由于ADC转换芯片只能识别正压信号,所以电流的量程为0~5A。ACS712-05电流电压对应关系如下图,Ip=0A即没有输入电流的时候,对应输出电压为2.5V.精确度为185mV/A即为图中斜线的斜率。取VCC=5V,计算公式为:
    Vout = 2.5 + 0.185*Ip
    在这里插入图片描述
    (2)电压信号采集电路
    电压信号采集电路相对简单,主要使用了两个电阻作为串联分压电路,分压比为3。比如当检测表笔检测15V的电压时,由于分压比为3,R3端的电压为5V。如果需要提高测试电压的量测,可以更改分压比。(注意:在选用分压电阻时,尽量选择阻值大一点的电阻,不然电阻过小会导致输入电流过大;此电路也只适用于测试输入阻抗较大的电路上的电压,不然测试出来的误差较大);电路如图:
    在这里插入图片描述
    (3)ADC转换电路
    本次ADC转换电路采用了PCF8591芯片,该芯片是一个单电源低功耗的8位CMOS数据采集器件,即分辨率为256,具有4路模拟输入,1路模拟输出和一个串行I2C总线接口用来与单片机通信。此电路将电流信号和电压信号进行转换后传送给单片机。电路如图:
    在这里插入图片描述
    (4)总体电路
    在这里插入图片描述
    3.软件设计
    软件流程相对简单,当单片机上电后,程序对各个模块进行初始化后,进入循环,定时检测电流及电压值,并将最新的数据显示在显示屏上。程序流程如图:
    (1)主函数

    void main (void)
    {     
    	unsigned char midvolt,midcur;  //电压电流中间变量值
    
    	Init_Timer0();        //定时器0初始化
    	UART_Init();		  //串口初始化
    	             
    	LCD_Init();           //初始化液晶
    	DelayMs(20);          //延时有助于稳定
    	LCD_Clear(); 
    	sprintf(dis0,"My Designer!!  ");//打印
    	LCD_Write_String(0,0,dis0);//显示第一行
    	sprintf(dis0,"V:%3.2fv A:%3.2fA",Volt,Acurrent);//打印电压电流值
    	LCD_Write_String(0,1,dis0);//显示第二行
    	uartSendStr("reday ok!!",10);
    	while (1)         //主循环
    	{
    		midvolt=ReadADC(1);				//读取AD检测到的 电压值
    		DelayMs(50);          //延时有助于稳定
    		midcur=ReadADC(0);		//读取电流转化后的电压值
    
    		Volt=(float)midvolt*5.13/255*3;		//计算出电压 *3表示分压值
    		Acurrent=(float)midcur*5.13/255;		//计算出电流
    												
    		if(Acurrent>2.62)			 //如果电流转换后的电压值超过2.62
    		{
    			Acurrent=(Acurrent-2.62)/0.185;	 //电流模块 电压转换计算
    		}
    		else
    		{
    			Acurrent=0;
    		}	
    
    		sprintf(dis0,"V:%3.2fv A:%3.2fA",Volt,Acurrent);//打印电压电流值
    		LCD_Write_String(0,1,dis0);//显示第二行
    //		uartSendStr(dis0,16);	  //串口上报
    //		uartSendStr("\n",1);			   //换行
    		DelayMs(500);          //延时有助于稳定
    	}
    }
    

    详细完整的程序,可下载源码。

    源码+AD原理图 下载:关注公众号,首页回复“电压电流表”获取资料
    在这里插入图片描述

    展开全文
  • 本文中数字电流表的控制系统采用AT89S51单片机,A/D转换器采用ADC0809为主要硬件,实现数字电流表的硬件电路与软件设计。该系统的数字电流表电路简单,所用的元件较少,成本低,调节工作可实现自动化。数字电流表...
  • 基于AT89S51单片机的开发,包括电路图,主要构成模块原理图,及代码和示例。 基于AT89S51单片机的开发,包括电路图,主要构成模块原理图,及代码和示例。
  • 数字电流表的诞生打破了传统电子测量仪器的模式和格局。它显示清晰直观、读数准确,采用了先进的数显技术,大大地减少了因人为因素所造成的测量误差事件。数字电流表是建立在数字电压表的基础上,让电压表与电阻串联...

    【资源下载】下载地址如下1417:
    https://docs.qq.com/doc/DTlRSd01BZXNpRUxl

    数字电流表的诞生打破了传统电子测量仪器的模式和格局。它显示清晰直观、读数准确,采用了先进的数显技术,大大地减少了因人为因素所造成的测量误差事件。数字电流表是建立在数字电压表的基础上,让电压表与电阻串联,其显示的是电流,数字电压表是把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式,并加以显示的仪表。数字电流表把电子技术、计算技术、自动化技术的成果与精密电测量技术密切的结合在一起,成为仪器、仪表领域中独立而完整的一个分支,数字电流表标志着电子仪器领域的一场革命,也开创了现代电子测量技术的先河。本设计采用了以单片机为开发平台,控制系采用AT89C52单片机,A/D转换采用ADC0809。系统除能确保实现要求的功能外,还可以方便进行8路其它A/D转换量的测量、远程测量结果传送等扩展功能。简易数字电流测量电路由A/D转换、数据处理、显示控制等组成。

    	  #include<reg52.h>
    unsigned char code dispbitcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
    unsigned char dispbuf[4];
    unsigned int i;
    unsigned int j;
    unsigned char getdata;
    unsigned int temp;
    unsigned int temp1;
    unsigned char count;
    unsigned char d;
    sbit ST=P3^0;
    sbit OE=P3^1;
    sbit EOC=P3^2;
    sbit CLK=P3^3;
    sbit P34=P3^4;
    sbit P35=P3^5;
    sbit P36=P3^6;
    sbit P20=P2^0;
    sbit P21=P2^1;
    sbit P22=P2^2;
    sbit P23=P2^3;
    sbit P17=P1^7;
    void TimeInitial();
    void Delay(unsigned int i);
    
    void TimeInitial()
    { TMOD=0x10;
     TH1=(65536-200)/256;
     TL1=(65536-200)%256;
     EA=1;
     ET1=1;

     

     

      

     

    展开全文
  • 单片机及其扩展的外部电路先做成...由于通常所说的电流表是指灵敏电流计其量程太小,不能直接测量电流,仅用于检测有无电流和电流的方向,所以要想得到一个有多量程或量程较大的电流表需要将一个理想电压表改装而成。
  • 基于51单片机毫安微安电流表设计(包含源程序原理图PCB)
  • 基于单片机的简易电流表设计,设计意义,系统主要功能,设计方案,硬件电路描述,工作原理,电路图,元件清单,流程图,源代码,调试
  • 014 电流表 仿真 51单片机 proteus仿真
  • 基于51单片机的数字电流表设计,内附有具体实现的PCB图,原理图,源代码以及仿真图和芯片资料。
  • 视频演示:... 功能操作说明: 本设计是AT89C51为主控芯片,1602液晶显示。 开机默认显示测量出来的电压和电流。当电流电压不要范围灯会显示报警。 按键可以调整报警值大小。 ...

    视频演示:https://www.bilibili.com/video/BV1H64y197JF/

    功能操作说明:

    本设计是AT89C51为主控芯片,1602液晶显示。 开机默认显示测量出来的电压和电流。当电流电压不要范围灯会显示报警。 按键可以调整报警值大小。

    展开全文
  • 大家好,之前讲过几篇数字表都是电压表,而且都是直流电压,今天讲一下交流的电压电流表。本次设计的主要难度在于硬件电路设计,需要实现交流转直流,然后用ADC采集回去之后再换算。本次采用的核心处理芯片仍然是51...

    硬件设计

    大家好,之前讲过几篇数字表都是电压表,而且都是直流电压,今天讲一下交流的电压电流表。本次设计的主要难度在于硬件电路设计,需要实现交流转直流,然后用ADC采集回去之后再换算。本次采用的核心处理芯片仍然是51单片机,ADC采用的是凌力尔特的LTC1865。该芯片的主要性能如下:

    • 采用 MSOP 封装的 16 位、250ksps ADC
    • 单 5V 电源
    • 低电源电流:850μA (典型值)
    • 自动停机功能可把电源电流减小至 2μA (在 1ksps)
    • 真正的差分输入
    • 单通道 (LTC1864) 或双通道 (LTC1865) 版本
    • SPI/MICROWIRE™ 兼容型串行 I/O
    • 12 位 LTC1286 / LTC1298 的 16 位升级版器件
    • 与 12 位 LTC1860 / LTC1861 引脚兼容
    • 保证工作至 +125°C (MSOP 封装)

    总体分为了以下几部分:数码管显示、MCU控制电路、AD转换电路、交流电流转换电路、交流电压转换电路、电流有效值测量、电压有效值测量、电流电压相位转换电路。具体仿真电路图如下所示:

    1表示此时的电流:
    在这里插入图片描述
    2表示此时的电压:
    在这里插入图片描述

    程序设计

    #include<regx51.h>
    #include<intrins.h>
    #include<absacc.h>
    #include<math.h>
    #define uchar unsigned char 
    #define uint unsigned int 
    #define addo (5.0/65535.0)
    uchar vol[]="Voltage:";//定义串口通信的电压提示语
    uchar cur[]="Current:";//定义串口通信的电流提示语  
    uchar pf[]="Power Factor:";//定义串口通信的功率因数提示语 
    uchar num[10]={'0','1','2','3','4','5','6','7','8','9'};//定义串口通信的数字字符查表传送  
    sbit DIN = P2^0;
    sbit CS = P2^1;
    sbit CLK = P2^2;
    sbit SDO = P2^3;
    sbit SCK = P2^4;
    sbit CONV = P2^5;
    sbit SDI=P2^6;
    uint High,Low;  
    sbit K=P3^2;
    bit choose=1;//定义A/D转换器通道选择变量
    double t=0;       
    static unsigned char disbuf[8] = {1,2,3,4,5,6,7,8};//数码管显示缓冲数据
    /*延时函数*/
    void delay_ms(uint n)
    {
    	uchar i;
    	while(n--)
    	{
    		for(i=0;i<100;i++);
    	}
    }
    /*定时器T0初始化 */
    void Init_T0()  
    {  
    	TMOD=0x09;  
    	TH0=0;  
    	TL0=0;  
    }  
    /*数码管进行显示*/
    void WriteByte(uchar dat)
    {
    	uchar i;
    	for(i=0;i<8;i++)
    	{
    		DIN = ((dat<<i)&0x80)?1:0;
    		CLK = 0;
    		_nop_();
    		CLK = 1;
    		_nop_();
    	}
    }
    void MAX7221_WRITE(uchar addr,uchar dat)
    {
    	CS = 0;
    	WriteByte(addr);
    	WriteByte(dat);
    	CS = 1;
    }
    void MAX7221_Initial(void)
    {
    	MAX7221_WRITE(0x0A,0x07);
    	MAX7221_WRITE(0x0B,0x07);
    	MAX7221_WRITE(0x0C,0x01);
    	MAX7221_WRITE(0x0F,0x00);
    	MAX7221_WRITE(0x09,0xff);
    }
    void display(uchar *str)
    {
    	uchar i;
    	for(i=0;i<8;i++)
    	{
    		MAX7221_WRITE(i+1,str[i]);
    	}
    }
    /*A/D转换读取转换值*/
    uint LTC1864_READ(void)
    {
    	uchar i;
    	uint temp = 0;
    	CONV = 0;
    	CONV = 1;
    	_nop_();_nop_();_nop_();
    	CONV = 0;
    	SDO = 1;
    	for(i=0;i<16;i++)
    	{
    		SCK = 1;
    		_nop_();
    		SCK = 0;
    		_nop_();
    		if(i==0)
    		{
    			SDI=1;
    		}
    		if(i==1)
    		{
    			choose=	!choose;
    			SDI=choose;
    		}
    		temp <<= 1;
    		if(SDO==1)
    		{
    
    			temp |= 0x0001;
    		}
    	}
    	CONV = 1;
    	return temp;
    }
    /*电流值进行数码管转换显示*/
    void HEXTOBCD_I(uint temp)
    {
    	disbuf[0] = temp/10000;
    	disbuf[1] = (temp%10000/1000)|0x80;
    	disbuf[2] = temp%1000/100;
    	disbuf[3] = temp%100/10;
    	disbuf[4] = temp%10;
    	disbuf[5] = 15;
    	disbuf[6] = 15;
    	disbuf[7] = 1;
    }
    /*电压值进行数码管转换显示*/
    void HEXTOBCD_V(uint temp)
    {
    	disbuf[0] = temp/10000;
    	disbuf[1] = temp%10000/1000;
    	disbuf[2] = (temp%1000/100)|0x80;
    	disbuf[3] = temp%100/10;
    	disbuf[4] = temp%10;
    	disbuf[5] = 15;
    	disbuf[6] = 15;
    	disbuf[7] = 2;
    }
    

    .

    文件地址:
    链接:https://pan.baidu.com/s/146k5nKjulFsZeTJUKEvQDQ
    提取码:cukz

    .

    展开全文
  • 使用51单片机ACS712电流检测模块+AD采集芯片实现数字电流表电压表源程序原理图设计资料
  • 引言  本文介绍了这样一种腐蚀仪:目的是监测野外输油管道腐蚀度。...下位机以单片机为核心,通过程序控制来采集电流的数据,并进行相应的处理,最后显示,并将有关数据存储到IC卡。上位机则是通过计算机与Q
  • 基于51单片机+ACS712电流检测模块+AD采集芯片实现数字电流表电压表设计(包含源程序原理图等)
  • 本次研究探讨了数字万用表的目的和意义,以STC89C52单片机作为主控制芯片,结合电压检测电路、电流检测电路、电阻检测电路、数码管驱动电路、复位电路、震荡电路、52单片机最小系统、显示部分、A/D转换和控制部分...
  • 演示视频:https://v.youku.com/v_show/id_XNDU1OTIzODg5Mg==.html?spm=a2hzp.8244740.0.0 将链接复制至IE浏览器打开!!!
  • 4-基于51单片机的多量程数字电压

    千次阅读 2020-04-10 20:20:10
    以51单片机和A/D转换器为核心、以LCD1602位显示,设计一个可以自动选择档位的多档位直流电压测量电路。可测电压范围0V—500V。电压量程范围: 2V, 20V, 200V 和500V,共四个档位,可判断出电压范围并用继电器实现档位...
  • C51单片机ADC0809 电流表 欧姆表尝试 初步探索 给初学的同学参考
  • 基于单片机的LCD数字电流表的设计与实现.pdf
  • 单片机技术
  • 基于单片机的数字电流表的设计说明.doc
  • 单片机实现多功能数显电流表单片机实现多功能数显电流表单片机实现多功能数显电流表
  • 单片机技术
  • 电压电流表资料.zip

    2019-05-11 00:11:35
    本文介绍了基于STC89C52单片机为核心,分别以ACS712-05芯片和串联分压电路为为电流检测和电压检测电路,并通过AD0809数模转换芯片对电压信号进行采集和转换,传输给单片机进行处理,最后将处理后的电压值和电流值...
  • 基于单片机的数字电流表的设计本科生毕业论文.doc
  • 同时该内有电压电流表5V稳压输出,可以在DIY时对单片机提供电源。 具体功能介绍如下: 能够用于测量电压、电流、功率以及容量值。 容量值是采用每3.6S算一次,即0.001H*电流值平均值,每20S保存入单片机的EEPROM内...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,771
精华内容 2,308
关键字:

单片机电流表