一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 25269|回复: 66
收起左侧

[51单片机] [开源]01.公布oled电压电流表源程序

  [复制链接]
发表于 2015-6-2 12:41 | 显示全部楼层 |阅读模式
基于IAP15w1k29型51单片机+INA226双向16位UI专用AD的oLED电压电流表程序
单片机使用频率12Mhz,外围原件极为简单,直接连接即可
单片机若是更换需要改变几个掉电保存量的地址声明即可
可简单更换至任意stc12系列以上的带T2串口以及内部EEP大于2KB的1T单片机上
oled为SSD1306驱动芯片的0.96或者1.3寸型号(不兼容SH1106切忌),工作于普通4线模式
其他外围电路请参照INA226手册进行搭接
精度测试链接https://www.yleee.com.cn/thread-42894-1-1.html程序为半成品,有一些bug(负方向电流显示错误,电池电量累积功能未完成(已屏蔽))不过不影响正常使用,正方向电流无BUG
功能引脚定义:

RTX_EX1.c文件内定义
sbit INX=P5^5; //IN:高精度=1\大电流=0切换位
sbit K1=P5^4;  //IN:按键1
sbit K2=P1^7;  //IN:按键2
sbit A1=P1^6;  //常态0
sbit A0=P1^5;  //常态0
sbit SCL=P1^3;//I2C数据位
sbit SDA=P1^2;//I2C时钟位

LQ12864.c文件内定义
sbit LCD_SCL=P3^4; //oled时钟 D0
sbit LCD_SDA=P3^3; //oled数据 D1
sbit LCD_RST=P3^6; //oled复位
sbit LCD_DC =P3^5; //oled数据/命令控制
sbit LCD_CS =P3^7; //oled片选


时钟频率修改步骤:
1主任务T0时间片为1ms,对应12MHZ  T0初值1000
修改需要在Conf_tny.A51文件第36行修改.
2串口T2工作于1T模式,现在12Mhz波特率4800
修改需要在RTX_EX1.c文件第236行uart_init()函数修改

任务基于RTX51tny系统做的,程序内用了4个任务,
任务0实时刷屏,任务1按键扫描(带长短按)+串口
任务2 i2c数据采集与累积参数计算(这里后面的系统等待决定累加值的准确度,默认的200ms一次没校准过绝对慢......)
任务3串口接受时间基准


掉电内容保存在第29行定义的地址中
#define EEP_ADD  0x7000         //Flash 设置参数首地址
#define ADDR1 0x6a00  //累积掉电保存地址1
#define ADDR2 0x6c00  //累积掉电保存地址2


数据声明(忘了的都没写.........)
bit ah,eer,high_flag=0,iurl=0;     //ah是累加显示0界面显示AH还是WH的标志位,High_flag是高精度\大电流的标志位,iurl是电压电流表\电池累积(没完成暂时不用)
xdata char dp_en=1,chset=0;   
xdata char set=0,set_ch=0;ch=0;   //set是是否进入set模式的标志位,set_ch是决定设置时候是设置第几位的数值,ch决定是显示哪个界面
idata unsigned char sav_buff[10]; //掉电存储器FLASH缓冲区
idata int read[2]; //电流AD (-32768-32767)  电压mv
pdata double Ireal,pow;   //显示电流,功率值
xdata int Iinbuff=0;  //按键\串口  校准电流时候使用
pdata int buff1,buff2;  //随便定义的几个缓冲变量
idata double buff3,buff4;
pdata double var_Iref,var_Iref2,var_AH;  
xdata unsigned char bc=0;

xdata unsigned char addbuff1[4];  //double转char缓冲数组1
xdata unsigned char addbuff2[4];  //缓冲2
xdata double adpbuff[2];  //上电累积数据取回用暂存数组
pdata double add_par[2]={0,0}; //AH  P
pdata unsigned char adpjs;  
xdata unsigned int dtr_buf;  //存入数据指针
pdata unsigned char add_tim=0;


有问题可以把程序操下来发来问我
另外要电路图的就免谈了,做电路简单的都不画电路图的
当然有人好信给电路图画出来那是相当感谢了

最近自己做的4层板迷你开发板到了(虽然有一堆小BUG),准备各种不定期开源.希望大家支持.

REV.233.rar

167.62 KB, 下载次数: 1022, 下载积分: 一乐金币 -1

评分

参与人数 4一乐金币 +226 收起 理由
fujiachun + 100 赞一个!
北极光1977 + 20
yleee + 100 赞一个!
DIY + 6 很给力! 谢谢分享!

查看全部评分

发表于 2015-6-2 13:16 | 显示全部楼层
INA226貌似1.4美刀一个啊……真贵。
STC就这尿性,要是内部ADC基准电压1V左右,或者干脆外部基准,就可以不这么纠结用外部ADC或者运放之类的,直接做一个精度不错的电压电流表了
不过15系列内部有个基准算是进步了那么一点儿点儿
发表于 2015-6-2 14:40 | 显示全部楼层
INA226 这个芯片厉害,关键是高端电流取样,谢谢楼主分享

点评

看看这个用INA226制作的表头。 https://v.youku.com/v_show/id_XNDM4Mjg3NDM0OA==.html?spm=a2h0k.11417342.soresults.dtitle  详情 回复 发表于 2019-10-17 19:44
发表于 2015-6-2 15:42 | 显示全部楼层
本帖最后由 f516411213 于 2015-6-2 15:54 编辑

哈哈哈 。。神秘的东西。。现在开源。大家都来折腾吧 。   来吧一起折腾。欢迎
附件 PCB 文件。    文件是用 PADS VX 版本画的。

STC-V5.3-1.3.zip

107.16 KB, 下载次数: 199, 下载积分: 一乐金币 -1

售价: 5 人民币  [记录]

PADS vx

 楼主| 发表于 2015-6-2 15:57 | 显示全部楼层
sdf15937 发表于 2015-6-2 13:16
INA226貌似1.4美刀一个啊……真贵。
STC就这尿性,要是内部ADC基准电压1V左右,或者干脆外部基准,就可以 ...

实际淘宝价格是8块多到12之间主流
要是廉价的有6元的220和4元的219
发表于 2015-6-2 20:22 | 显示全部楼层
开源了我也玩不转,顶开源分享精神!
发表于 2015-6-3 16:10 | 显示全部楼层
非常感谢分享,现在刚好在搞OLED显示的
发表于 2015-6-3 19:21 | 显示全部楼层
只能在这里找到你了?
发表于 2015-6-4 06:37 | 显示全部楼层
STC12系列似乎没有有t2的,取代的是独立波特率发生器
 楼主| 发表于 2015-6-4 08:47 | 显示全部楼层
benli 发表于 2015-6-4 06:37
STC12系列似乎没有有t2的,取代的是独立波特率发生器

额额...........查了下真是.话说以前明明觉得12定时器挺多啊,好吧15用多凌乱了

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号-1粤公网安备44522102000183号 )

GMT+8, 2022-10-7 20:12 , Processed in 0.051447 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表