硬件设计

大家好,之前讲过几篇数字表都是电压表,而且都是直流电压,今天讲一下交流的电压电流表。本次设计的主要难度在于硬件电路设计,需要实现交流转直流,然后用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;
}

附:http://www.jh-tec.cn/archives/7305

基于51单片机的单相交流电压电流表仿真LTC1865 数码管显示相关推荐

  1. 基于51单片机的倒计时器秒表定时器数码管显示原理图方案设计

    系统的功能分析 (末尾附文件) 框架图: 原理图: 声光报警电路(低电平有效)设计 有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电 ...

  2. 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)

    摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...

  3. 基于51单片机手动计步器protues仿真设计

    基于51单片机手动计步器protues仿真设计 (源码+仿真) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0021 目录标题 基于51单 ...

  4. 基于51单片机的电子秤proteus仿真设计

    本设计仅供学习参考 基于51单片机的电子秤proteus仿真设计(仿真+程序+原理图+报告+讲解) 原理图:Altium Designer 仿真图proteus 7.8 程序编译器:keil 4/ke ...

  5. S0011基于51单片机DS18B20温控风扇仿真设计

    基于51单片机DS18B20温控风扇仿真设计 (仿真+原理图+源码+设计报告) 原理图:Altium Designer 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程 ...

  6. 【030】基于51单片机的超声波液位测距报警系统(带温度显示)Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计一份: (2).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计keli ...

  7. 基于51单片机的16X64点阵仿真

    目录 一.项目需求 二.仿真图 三.代码 四.资料清单 资料下载地址:基于51单片机的16X64点阵仿真 一.项目需求 16X64点阵上显示汉子,并且可以左右移动. 二.仿真图 左移 右移 三.代码 ...

  8. 基于51单片机智能家居电路控制仿真

    [毕设课设]基于51单片机智能家居电路控制仿真 ​效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: ​效果图 更多内容请关注@WENJIE电子科技 ​ 基于51单片机pro ...

  9. 51单片机入门教程(3)——数码管显示

    51单片机入门教程(3)--数码管显示 一.LED数码管简介 二.数码管静态显示 三.数码管动态显示 特别鸣谢:HFUTer-朱聪强 一.LED数码管简介 LED数码管(LED Segment Dis ...

最新文章

  1. 本地 无法启动 SQL Server 错误代码126
  2. C++中如何去掉std::string对象的首尾空格
  3. mongodb上一篇下一篇_如何使用Microsoft office word—上一篇
  4. 计算机一级上网题怎么创建桌面快捷方式,计算机一级上机操作题2016
  5. Dedecms之SQL语句修改和调用数据总结
  6. 力扣题目系列:605. 种花问题
  7. 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_24-CMS前端页面查询开发-使用钩子方法实现立即查询...
  8. 【Linux】04 实验笔记
  9. 拆一台微型计算机步骤,台式微型计算机拆装.doc
  10. physx中ray不碰撞某些物体的方法
  11. urchin.js作用以及urchin.js注释
  12. 《炬丰科技-半导体工艺》MEMS 应用中不同厚光刻胶的比较研究
  13. Xmind for Mac 绿色破解(包含激活序列码)
  14. Java Vs. C♯
  15. vue中 根据权限 动态的设置路由
  16. Snort:Barnyard2+MySQL+BASE 基于Ubuntu 14.04SNORT
  17. STM32寄存器ODR,BSRR和BRR
  18. FPGA SATA IP控制器的SATA接口调试记录
  19. 学生管理系统课程设计
  20. 街都VR:景区使用360全景制作的八个优势

热门文章

  1. HDU 1174 爆头(几何---叉积)
  2. 百度浏览器奔跑的北极熊
  3. php unset 变量,php unset全局变量运用问题的深入解析
  4. Gorm中HasMany
  5. css 跳跃动画,如何使用纯CSS实现方块跳跃的动画(附源码)
  6. [FIDO]U2F Message协议介绍
  7. 【Linux操作系统总结】梳理操作系统源码
  8. 关于各类光学遥感卫星的波段波长的整理
  9. 怎么设置table的行高_社群裂变软件怎么可以快速实现社群裂变?如何设计一个好的社群裂变方案?...
  10. matlab欧拉法原理,欧拉法函数