找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 13351|回复: 11
打印 上一主题 下一主题
收起左侧

IIC驱动四位数码管显示模块 TM1650数码管显示 I2C协议 按键调节

  [复制链接]
跳转到指定楼层
楼主
ID:284341 发表于 2019-3-30 23:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
功能描述:I2C总线接口,只需要4根线就可以驱动4位数码管显示和3个按键的
扫描,可做面板使用,正面只有数码管和按键,其他元件都在背面,可连接各
种单片机实现控制,简单方便,另外可配本店其他继电器板子实现功能。
【简要说明】
一、 尺寸:长42mmX宽36mmX高10mm
二、 主要芯片:共阴数码管,TM1650(专用数码管驱动芯片)
三、 供电电压:直流5V  电流小于50MA
四、特点:
1、内部有专用数码管驱动电路
2、四位一体数码管显示
3、使用寿命:≥5万小时
4、排线长度:30cm (送)
5、驱动方式:I2C协议
6、电器绝缘电阻100M
7工作温度-40度至 +70度
8、工作湿度 40%  ~ 80%RH
9、板子功耗小于0.1W
功能特点:
1、只用四根线就可以方便连接
2、只占用单片机两个IO口,大大减少了单片机IO口
3、八级灰度可以调节,可以通过写寄存器的值来调节
4、无需单片机主程序动态去扫描,大大节省了单片机CPU占用率
5、方便与各种单片机控制板连接,用于显示和参数设置调节
6、接口采用白色优质插头,插拔方便,接线方便
7、用途广泛,可用于单片机控制板需要拓展显示的电路板等等
8、四个固定孔3mm方便客户安装设备面板
用途:
用于计数器、延时器、频率计、秒表、电压电流显示等等,也可配套我们继电器控制板用来显示时间和参数调节
使用说明:
【标注说明】
接线说明
原理图


PCB

元件清单
参考例程

程序中晶振位6M,数码管3个按键,按第一个进入设置模式,此时后面的数码管开始闪烁,
按后2个按键可以调节时间,再次按设置键回到时间显示状态
触发后开始延时,继电器吸和,延时结束后继电器断开
***************************************/
#include"STC15F104E.h"
#include"TM1650.h"
#include"eeprom.h"
#define uchar unsigned char
#define uint unsigned int
uchar CODE[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //0~9显示代码
sbit  OUT = P3^2;
sbit IN = P3^5;
uint time1,time2;
uchar count;
uchar disbuf[4] = {0,0,0,0};
uchar update_dis;
uchar key_timeto;
uchar mode;
uchar t,t1;
uint time;
static uchar stat;
uchar Start_Delay;
void init_timer(void) //定时器初始化
{
TMOD = 0x01;  //定时器模式
TH0 = (65535-1000)/256;//定时器赋初值
TL0 = (65535-1000)%256;
ET0 = 1;  //开定时器中断
TR0 = 1; //开定时器
EA = 1; //开总中断
}
void main(void) //
{
uchar key,key_ok;
Init_Tm1650();//初始化数码管
TM1650_Set(0x68,CODE[0]);//初始化后要把显存先写数据就能显示
TM1650_Set(0x6A,CODE[0]);
TM1650_Set(0x6C,CODE[0]);
TM1650_Set(0x6E,CODE[0]);
time1 = (IapReadByte(0)<<8)+IapReadByte(1);//eeproM中数据,初始化时间初值
if(time1 >= 999)//如果时间值大于999则是第一次上电
{
time1 = 200;//则为默认值
}
init_timer();//定时器初始化
time = time1;//初始化时间
while(1)
{
if(key_timeto)//如果按键扫描时间到,此变量在定时器中会被每隔60ms1一次
{
key_timeto = 0; //0
key = Scan_Key();//读按键
//第一个按键按下
if(key == 0x47)   //此键值和数据手册上对应
{
if(key_ok==0) //按键按下
{
key_ok = 1;
mode = (mode+1)%2;//切换模式
}
}
//第二个按键按下
else if(key == 0x4d)
{
if(mode == 1)//模式1为设置模式
{
if(time1<999)
time1 = (time1+1);//按此键加时间
}
else if(mode ==2)
{
time2 = (time2+1);
}
IapEraseSector(0);//保持改变后的时间值
IapProgramByte(0,(time1>>8));
IapProgramByte(1,(uchar)time1);
}
//第三个按键按下
else if(key == 0x56)
{
if(mode == 1)//模式1
{
if(time1>0)
{
time1--;//减时间
}
}
else if(mode ==2)
{
if(time2>0)
{
time2--;
}
}
IapEraseSector(0); //保存时间
IapProgramByte(0,(time1>>8));
IapProgramByte(1,(uchar)time1);
}
else
{
key_ok = 0;
}
}
if(update_dis) //30ms到,更新显示
{
update_dis = 0;
if(stat ==0)
{
if(mode == 1)//如果是模式1
{
t1++;
if(t1<=4) //则后三位闪烁显示
{
TM1650_Set(0x68,0x77); //显示
TM1650_Set(0x6A,CODE[time1/100]);
TM1650_Set(0x6C,CODE[time1/10%10]|0x80);
TM1650_Set(0x6E,CODE[time1%10]);
}
else  //
{
if(t1>8)
t1 = 0;   //不显示
TM1650_Set(0x68,0x77);
TM1650_Set(0x6A,0);
TM1650_Set(0x6C,0);
TM1650_Set(0x6E,0);
}
}
else if(mode == 0)
{
TM1650_Set(0x68,0x77);
TM1650_Set(0x6A,CODE[time/100]);
TM1650_Set(0x6C,CODE[time/10%10]|0x80);
TM1650_Set(0x6E,CODE[time%10]);
}
}
else if(stat == 1)//最后倒计时完后显示的内容
{
TM1650_Set(0x68,0x40);
TM1650_Set(0x6A,0x40);
TM1650_Set(0x6C,0x40);
TM1650_Set(0x6E,0x40);
}
}
}
}
void timer() interrupt 1//定时器中断
{
static uchar key,L_key;
static uint cnt,cnt1,cnt2;
TH0 = (65535-1000)/256;//6M晶振,2ms进一次中断
TL0 = (65535-1000)%256;
L_key = key;   //保持此次状态
key = IN; //读取输入状态
if((key == 0)&&(L_key ==  1))//如果是输入有触发
{
cnt = cnt1 = 0;
if(++count>=1)
{
count = 2;
OUT = 0;  //开继电器
Start_Delay = 1;//开始计时
time = time1;
stat = 0;
}
}
if(++cnt2>=30) //更新按键扫描和显示标记位
{
cnt2 = 0;
update_dis = 1;
key_timeto = 1;
}
if(Start_Delay)//如果开始延时
{
if(++cnt1>=50) //0.1s
{
cnt1 = 0;
if(stat==0)
{
if(time == 0)//如果时间为0
{
OUT  = 1;//关继电器
stat = 1;
Start_Delay = 0; //停止延时
}
if(time>0) //时间大于0就减1
{
time--;
}
}
else if(stat== 1)
{
}
}
}
}
   
【图片展示】

GYJ-0138_四位数码管串行驱动模块发货资料.rar

4.32 MB, 下载次数: 104, 下载积分: 黑币 -5

GYJ-0138_四位数码管串行驱动模块使用手册.doc

2.75 MB, 下载次数: 54, 下载积分: 黑币 -5

GYJ-0138_四位数码管串行驱动模块使用手册.pdf

1.03 MB, 下载次数: 58, 下载积分: 黑币 -5

GYJ-0138_四位数码管串行驱动模块应用例程.rar

210.2 KB, 下载次数: 150, 下载积分: 黑币 -5

GYJ-0138_四位数码管串行驱动模块原理图及PCB图.pdf

258.88 KB, 下载次数: 82, 下载积分: 黑币 -5

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏11 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:549358 发表于 2019-5-28 19:48 | 只看该作者
可以解释下工作原理吗
回复

使用道具 举报

板凳
ID:302850 发表于 2019-5-29 00:38 来自手机 | 只看该作者
很棒的资料,喜欢
回复

使用道具 举报

地板
ID:601868 发表于 2019-8-20 10:35 | 只看该作者
支持一下。。。
回复

使用道具 举报

5#
ID:601868 发表于 2019-9-6 16:33 | 只看该作者
lz,我按照你的电路做了一版。对你的电路,给你一点建议。
按照tm1650的datasheet中可以按照竖排按键连接的方式,这样的好处是只要一个电阻即可。
回复

使用道具 举报

6#
ID:38658 发表于 2019-12-26 17:38 | 只看该作者
怎么弄数码管就是不显示,搞不懂,而且我问了一个兄弟,他居然给每一个段都定义了,但也没有显示。
回复

使用道具 举报

7#
ID:275111 发表于 2020-3-31 17:52 | 只看该作者
mark
看看按键板是怎么使用I2C的。
回复

使用道具 举报

8#
ID:843102 发表于 2020-11-13 15:12 | 只看该作者
看不见图片啊
回复

使用道具 举报

9#
ID:334781 发表于 2022-2-28 16:21 | 只看该作者
楼主是高手,下载学习一下,好资料,正在找关于1650按键方面的程序呢,谢谢。
回复

使用道具 举报

10#
ID:93375 发表于 2022-4-24 22:38 | 只看该作者
thank you very much share
回复

使用道具 举报

11#
ID:379382 发表于 2022-6-6 15:37 | 只看该作者
楼主是高手,下载学习一下,好资料
回复

使用道具 举报

12#
ID:601194 发表于 2022-9-14 02:22 | 只看该作者
可以解释下工作原理吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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