基于51单片机的单相交流电压电流表仿真LTC1865 数码管显示
硬件设计
大家好,之前讲过几篇数字表都是电压表,而且都是直流电压,今天讲一下交流的电压电流表。本次设计的主要难度在于硬件电路设计,需要实现交流转直流,然后用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 数码管显示相关推荐
- 基于51单片机的倒计时器秒表定时器数码管显示原理图方案设计
系统的功能分析 (末尾附文件) 框架图: 原理图: 声光报警电路(低电平有效)设计 有源蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电 ...
- 基于51单片机数字电压表的设计 仿真、程序、原理图(转发)
摘 要 数字电压表简称DVM,数字电压表基本原理是将输入的模拟电压信号转化为数字信号,再进行输出显示.而A/D转换器的作用是将连续变化的模拟信号量转化为离散的数字信号,器基本结构是由采样保持,量化,编 ...
- 基于51单片机手动计步器protues仿真设计
基于51单片机手动计步器protues仿真设计 (源码+仿真) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0021 目录标题 基于51单 ...
- 基于51单片机的电子秤proteus仿真设计
本设计仅供学习参考 基于51单片机的电子秤proteus仿真设计(仿真+程序+原理图+报告+讲解) 原理图:Altium Designer 仿真图proteus 7.8 程序编译器:keil 4/ke ...
- S0011基于51单片机DS18B20温控风扇仿真设计
基于51单片机DS18B20温控风扇仿真设计 (仿真+原理图+源码+设计报告) 原理图:Altium Designer 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程 ...
- 【030】基于51单片机的超声波液位测距报警系统(带温度显示)Proteus仿真设计
一.压缩包资料内容 (1).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计一份: (2).基于51单片机的超声波液位测距报警(带温度显示)系统proteus仿真设计keli ...
- 基于51单片机的16X64点阵仿真
目录 一.项目需求 二.仿真图 三.代码 四.资料清单 资料下载地址:基于51单片机的16X64点阵仿真 一.项目需求 16X64点阵上显示汉子,并且可以左右移动. 二.仿真图 左移 右移 三.代码 ...
- 基于51单片机智能家居电路控制仿真
[毕设课设]基于51单片机智能家居电路控制仿真 效果图 Proteus仿真: 功能简介: 文件内容: 程序框架: 网盘链接: 效果图 更多内容请关注@WENJIE电子科技 基于51单片机pro ...
- 51单片机入门教程(3)——数码管显示
51单片机入门教程(3)--数码管显示 一.LED数码管简介 二.数码管静态显示 三.数码管动态显示 特别鸣谢:HFUTer-朱聪强 一.LED数码管简介 LED数码管(LED Segment Dis ...
最新文章
- 本地 无法启动 SQL Server 错误代码126
- C++中如何去掉std::string对象的首尾空格
- mongodb上一篇下一篇_如何使用Microsoft office word—上一篇
- 计算机一级上网题怎么创建桌面快捷方式,计算机一级上机操作题2016
- Dedecms之SQL语句修改和调用数据总结
- 力扣题目系列:605. 种花问题
- 阶段5 3.微服务项目【学成在线】_day02 CMS前端开发_24-CMS前端页面查询开发-使用钩子方法实现立即查询...
- 【Linux】04 实验笔记
- 拆一台微型计算机步骤,台式微型计算机拆装.doc
- physx中ray不碰撞某些物体的方法
- urchin.js作用以及urchin.js注释
- 《炬丰科技-半导体工艺》MEMS 应用中不同厚光刻胶的比较研究
- Xmind for Mac 绿色破解(包含激活序列码)
- Java Vs. C♯
- vue中 根据权限 动态的设置路由
- Snort:Barnyard2+MySQL+BASE 基于Ubuntu 14.04SNORT
- STM32寄存器ODR,BSRR和BRR
- FPGA SATA IP控制器的SATA接口调试记录
- 学生管理系统课程设计
- 街都VR:景区使用360全景制作的八个优势
热门文章
- HDU 1174 爆头(几何---叉积)
- 百度浏览器奔跑的北极熊
- php unset 变量,php unset全局变量运用问题的深入解析
- Gorm中HasMany
- css 跳跃动画,如何使用纯CSS实现方块跳跃的动画(附源码)
- [FIDO]U2F Message协议介绍
- 【Linux操作系统总结】梳理操作系统源码
- 关于各类光学遥感卫星的波段波长的整理
- 怎么设置table的行高_社群裂变软件怎么可以快速实现社群裂变?如何设计一个好的社群裂变方案?...
- matlab欧拉法原理,欧拉法函数