请点上面蓝色字    即可免费订阅! 

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);//显示第二行    DelayMs(500);          //延时有助于稳定  }}

源码+AD原理图 下载:关注公众号,首页回复“电压电流表“”获取资料

sTC8G1K08+通过串口显示内部电压_基于51单片机的数字电流电压表相关推荐

  1. sTC8G1K08+通过串口显示内部电压_LED电子显示屏控制卡常见软、硬件问题

    许多技术员在操作led电子显示屏的时候,经常显示屏的软件或者硬软出现异常,那是怎么回事呢? 一.软件应用 1.为什么显示的时候某显示项只闪一下就消失了? 在预览脚本或在屏幕上显示脚本的时候,发现某项一 ...

  2. 普中单片机怎么接霍尔传感器_基于51单片机的数字测速系统的设计方案

    本方案所设计的基于霍尔元件的脉冲发生器要求成本低,构造简单,性能好.在电气控制系统中存在着较为恶劣的电磁环境,因此要求产品本身要具有较强的抗干扰能力.系统主要由AT89S52 单片机处理系统.电机.传 ...

  3. 基于51单片机的自动浇花系统设计/基于51单片机的智能抽奖系统控制设计/基于51单片机的数字时钟与日历显示控制设计 毕业设计

    1147基于51单片机的自动浇花系统设计 设计思路:通湿度传感器实时监测湿度,通过LCD显示出实时的湿度采集值,可以通过按键设定目标界限,当达到这个界限值时,浇花系统的电机装置运行. 电路包含:LCD ...

  4. 基于51单片机的数字电子钟万年历闰年判断闹钟设计

    基于51单片机的数字电子钟万年历闰年判断闹钟设计 视频 1 开发环境 2 功能说明介绍 3 仿真图 4 程序 5 原理图 6 视频讲解 7 设计报告 7.1 设计目的 7.2 概述 8 资料清单下载链 ...

  5. 基于51单片机的数字电子钟

    目录 摘  要 1.课程设计任务 1.1课程设计题目 1.2设计的要求 2.设计总体方案 2.1初步设计方案 2.2芯片的选型 2.2.1时钟芯片的选择 2.2.2温度传感器的选择 2.2.3显示电路 ...

  6. 基于51单片机的数字时钟(万年历)

    具体实现功能 系统由STC89C52单片机+DS1302时钟芯片+按键模块+LCD1602显示+电源构成. 具体功能: 1.可以显示年.月.日.时.分.秒.星期.农历: 2.按键可以设置闹钟及报警: ...

  7. 收音机c语言程序,基于51单片机的数字FM调频收音机的设计(附接线图,主程序代码)...

    基于51单片机的数字FM调频收音机的设计(附接线图,主程序代码)(任务书,开题报告,论文15000字) 摘要 在当今的社会时代中,信息的传输扮演着极其重要的地位.随着科学技术的不断发展与进步,人类的生 ...

  8. 基于51单片机的数字电子时钟

    基于51单片机的数字电子时钟 单片机课程设计要求使用51单片机完成一个电子时钟,要求满足基本功能的同时增添丰富的功能参考了很多大佬的方案代码才勉强完成,工程文件下载点击此链接欢迎交流.如遇下载问题可以 ...

  9. 51单片机 外部时钟_基于51单片机的LCD12864显示模拟时钟

    今天要分享的仿真和程序是基于51单片机的LCD12864显示模拟时钟.公众号之前也分享过数字时钟,但是那些时钟都是采用数字显示的形式来显示时间,而今天分享一个采用LCD12864显示的模拟指针式时钟. ...

最新文章

  1. 【题解】CF1070E Getting Deals Done(二分+思维)难度⭐⭐⭐
  2. 3种用python代码实现99乘法表
  3. lotus表单域怎么获取视图结果_翻译案例 | 商业推广类文章怎么翻?如何修改译文?...
  4. 详解 二叉搜索树-----AVL树
  5. 在MAC下安装Exuberant ctags
  6. python把回车作为输入_python将回车作为输入内容的实例
  7. easyUI按钮图表对照大全
  8. Express框架的请求处理~非常详细
  9. JavaScript 执行覆盖测试分析
  10. oracle错误 无监听程序,oracle_无监听程序_错误
  11. php递归5,5.5.1 PHP递归函数
  12. python计算学分绩点的程序_Python爬虫实战七之计算大学本学期绩点
  13. html 在行前显示黑点,word 每行前有个黑点 word 每行前面的黑点
  14. GNU 软件文档下载
  15. 泰坦尼克号数据_泰坦尼克号数据可视化分析
  16. 网点分布图怎么做,用地图制作客户分布图
  17. VUE之高德地图轨迹绘制与轨迹回放
  18. linux 启动openfire
  19. IT公司软件工程师薪水排名
  20. 熊孩子乱敲键盘攻破linux桌面,“熊孩子”乱敲键盘攻破了Linux桌面,怎么做到的?...

热门文章

  1. 为了追求极致的性能,Kafka掌控这11项要领
  2. 【专题介绍】音视频+
  3. Navicat Premium 12安装及常用快捷键
  4. lua的元表metatable及元方法
  5. leetcode 331. Verify Preorder Serialization of a Binary Tree | 331. 验证二叉树的前序序列化(栈解法)
  6. C++ 流体效果的实现
  7. C++ 算法设计 最大子序和问题
  8. netty系列之:自定义编码和解码器要注意的问题
  9. Apache Maven ToolChains的使用
  10. HMAC算法及其应用