数码之家

 找回密码
 立即注册
搜索
查看: 11054|回复: 66

[C51] 还做时钟,1.5寸双色共阳极数码管STC15W204S+TM1629B+RX8025T【源码分享】

[复制链接]
发表于 2020-8-1 14:32:12 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 慕名而来 于 2020-8-1 14:47 编辑

总是发做时钟的帖子,再次发帖有些难为情了,或许有朋友会问:你要用多少个闹钟呀?可以肯定的说,我只用一个闹钟放在卧室床头桌上,只需要一个无论白天还是黑夜、无论是在我的卧室里还是在对门的卧室里都能清晰的看到数字的闹钟,随着人老眼花,用了十几年的1寸数码管的时钟(见头像图片)离远了有些看不清了,于是就做了一个1.5寸数码管的时钟(详见上一贴20年数码时钟制作1,再做一个数码时钟STC15W204S+TM1637+DS3231【源码分享】https://www.mydigit.cn/forum.php?mod=viewthread&tid=156133(出处: 数码之家)),本以为可以收手不再做了,但没用几天却被别人相中了就只好再做一个了,本来想做一个完美的终结版,于是画板、打样废了好多精力,但是因为起初的设计就出现了问题,或许因为我编程水平不行以至于原设计的用两片TM1637驱动两个颜色的方案无法实现,到了最后虽然打样的板子没有浪费但却花费了很多精力飞线换了一片32引脚的LED驱动芯片TM1629B,所以最后完成的东西仍然有太多的遗憾,好在没有影响使用功能也就可以将就用了。
一、本次制作的原理图:
b4.jpg
二、代码分享:
TM1629B_LED.zip (74.25 KB, 下载次数: 73)
三、PCB图片:
注:因为此电路已经改变,在此没有必要分享打样文件了,只是展示一下!
b02.jpg
b01.jpg
四、PCB板实物相关:
1.到货
b3.jpg
2.
切割
b2.jpg
3.
拼板(经过改线的应用板)
b1.jpg
五、成品相关:
1.点亮led数码显示屏
a1.jpg
2.程序调试完成并投入使用的闹钟(橙黄色显示,图片颜色失真了)
a7.jpg
注:选择这款1.5寸双色LED数码管相当不理想的,它的绿色亮度过低红色亮度过高虽然在每只数码的红色com端都串联了一直二极管,但仍然不能获得纯正的黄色,另外,虽然加入了LED散光板并且增加了有时贴膜,但亮度全开时仍然有明显的亮点。
3.全手工外壳
a3.jpg
4.全手工面板
a4.jpg
5.内部展示
4a.jpg









打赏

参与人数 5家元 +180 收起 理由
powell007 + 20 優秀文章
kkdkj + 20 太复杂,不懂呀,只有加分的份.
家睦 + 100
jf201006 + 20 謝謝分享
人艰不拆了 + 20

查看全部打赏

发表于 2020-8-1 14:44:37 | 显示全部楼层
:lol::lol::lol::lol:越玩越利害 了...
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-1 14:46:25 | 显示全部楼层
long2012 发表于 2020-8-1 14:44
越玩越利害 了...

谢谢,都是小制作。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-1 15:29:37 | 显示全部楼层
狗尾续貂:说说TM1629驱动共阳极数码管的那些事
TM1629是一款驱动共阴极的芯片,虽然也可以变通使用来驱动共阳极芯片但程序会麻烦些,本次制作曾经一度困在了这里,经过一番挣扎最终利用一段网上的程序实现了自己的控制,其实时钟的整体程序方案用的是我自己的,如果不涉及共阴、共阳的数据变换问题,程序就与上篇帖子的没啥区别了,只不过更加完善了一些,另外,本次制作没有用到TM1629的按键功能而是用了单片机端口按键控制,主要是因为这个芯片的按键功能与1637不相同,1637的按键是每个都有固定的编码可以读取任意按键的键值,而1629则必须一次性按顺序读出4个值,4个值静止在数组里我废了很多精力也无法实现抬键判断,如果那位高手有办法也请指点一下、在此先谢了!下面继续说共阴、共阳的数据转换的原理,如果用TM1629来驱动共阴极数码管,则欲使某为数码显示某个数字,只需要经该数字的编码存入相应位的显存中即可直接看到显示了,对于TM1629B而言,因为可以同时驱动12段LED,所以每一位显存都由两个8位寄存器组成,例如:GRID1就有0x00,0x01两个寄存器,如果我们在SEG1-SEG8上连接一个8段数码管,那么,只要在0x00中存入0x77(0字的段码)就可以看到第一个数码管显示为0;如果驱动共阳极数码管那么数码管的公共端就要连接在SEGn上而段引脚就要连接在8个GRIDn上,此时要想在由SEG1控制的第一位数码管上显示一个数字0就要分别在8个相应寄存器中写入SEG1位的值,详见数据手册相关表格,也就是说显示一个数字需要写8个寄存器。
下面是网上找来的数据变换函数:
//8段数码显示的共阴数据到共阳数据的转换 外加数码位移 -- 实质是一个数组的转置 并且只改变位
void NE_C(unsigned char ydata,unsigned char cnt)
{
char i=0,j=0;
if(cnt>0)
{
if(cnt>8)
{
//myflag |= 0x01;
cnt = cnt -9;
for(i=1;i<16;i=i+2)
{

if(ydata&0x01 == 0x01)
{
BCD_LABLE_anode |= (0x01<<cnt);
else
{
BCD_LABLE_anode &= ~(0x01<<cnt);//清零
ydata = (ydata>>

1);
}

}
else
{
cnt = cnt -1;
for(i=0;i<16;i=i+2)
{

if((ydata&0x01) == 0x01)
{
BCD_LABLE_anode |= 1);
}

}
else
{
cnt = cnt -1;
for(i=0;i<16;i=i+2)
{

if((ydata&0x01) == 0x01)
{
BCD_LABLE_anode |= (0x01<<cnt);
else
{
BCD_LABLE_anode &= ~(0x01<<cnt);//清零
ydata = (ydata>>1);
}
}
}



}
以下是我改编的可以任意进行三种颜色驱动输出时的数据变换函数
//匹配程序的接线详解程序标注
  1. void Convert(uchar ydata, uchar cnt, uchar se)
  2. {
  3.     uchar i,in,im;

  4.     if(se==1)//显示绿色====由SEG1-SEG5驱动
  5.     {
  6.         in=2;//用到寄存器0x00、0x02、0x04、0x06、0x08、0x0A、0x0C、0x0E
  7.         im=0;
  8.     }
  9.     if(se==2)//显示红色====由SEG9-SEG13驱动
  10.     {
  11.         in=2;//用到寄存器0x01、0x03、0x05、0x07、0x09、0x0B、0x0D、0x0F
  12.         im=1;
  13.     }
  14.     if(se==3)//显示橙色
  15.     {
  16.         in=1;//用到全部16个寄存器(两个8位寄存器分别存储红色和绿色段码数据)
  17.         im=0;
  18.     }
  19.     for (i = im; i < 16; i = i+in)
  20.     {

  21.         if (ydata & 0x01 == 0x01)
  22.         {
  23.             DATE[i] |=  (0x01 << cnt);
  24.         }
  25.         else
  26.         {
  27.             DATE[i] &= ~(0x01 << cnt);
  28.         }
  29.         if(se==3)
  30.         {
  31.             if(i%2==1)
  32.             {
  33.                 ydata = (ydata >> 1);
  34.             }
  35.             else
  36.             {
  37.                 ydata = ydata;
  38.             }
  39.         }
  40.         else
  41.             ydata = (ydata >> 1);
  42.     }

  43. }
复制代码





回复 支持 反对

使用道具 举报

发表于 2020-8-1 16:15:33 | 显示全部楼层
这个是高手。会玩程序的我都认为是高手。:lol:
回复 支持 1 反对 0

使用道具 举报

发表于 2020-8-1 16:52:44 | 显示全部楼层
用驱动共阴的芯片驱动共阳的数码管的确很蛋疼,程序要麻烦很多。
回复 支持 反对

使用道具 举报

发表于 2020-8-2 11:27:15 来自手机浏览器 | 显示全部楼层
厉害厉害,总算又见老哥第二发了…
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 11:46:58 | 显示全部楼层
mmmmmc1024 发表于 2020-8-1 16:15
这个是高手。会玩程序的我都认为是高手。

动手能力尚可,编程水平属于地皮级别的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 11:47:34 | 显示全部楼层
bboroo 发表于 2020-8-1 16:52
用驱动共阴的芯片驱动共阳的数码管的确很蛋疼,程序要麻烦很多。

这个芯片还好,就是一个函数的事儿。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-2 11:51:44 | 显示全部楼层
触景情伤 发表于 2020-8-2 11:27
厉害厉害,总算又见老哥第二发了…

这次确实弄了好久,开始用两片1637驱动两个颜色废了很多时间没成功,又重新拍了1629、重新弄板子废了好大劲走了好多绕道才弄好。
回复 支持 反对

使用道具 举报

发表于 2020-8-3 08:49:23 | 显示全部楼层
厉害,下次看你弄个彩色的,
驱动IC后面混色不好调亮度,可否考虑再加一个1629, 一个红色,一个绿色,调整灰度等级来混色,
我这几天在做混色, 对红色, 绿色波长有要求,不然混不到一起, 数码管的绿不是绿, 大多是黄绿,YG
要用3V电压的绿。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-3 09:00:41 | 显示全部楼层
希望 发表于 2020-8-3 08:49
厉害,下次看你弄个彩色的,
驱动IC后面混色不好调亮度,可否考虑再加一个1629, 一个红色,一个绿色,调 ...

多谢支持,帖子里面描述过了,你说的双控制方案我没有弄成功,我画的PCB板子原本是两片1637分别控制红、绿的,结果弄了好久也没弄好,最终换成了一片1629B。感觉现在的数码管没有以前的好,至少那种白色的均光材料就不对,怀疑只是贴了一层低透光性的散光膜,由于红绿两种发光管的压降不同,所以亮度严重不同,如果想要混色好些就只能调整红色的供电电压,我只是串联了一直二极管,虽然效果挺明显的但仍然不尽如人意,而你说的分别调整显示控制的方法我也弄了好久到最后也没有弄成,期待你的成功并且分享经验。
回复 支持 反对

使用道具 举报

发表于 2020-8-3 13:20:30 | 显示全部楼层
慕名而来 发表于 2020-8-3 09:00
多谢支持,帖子里面描述过了,你说的双控制方案我没有弄成功,我画的PCB板子原本是两片1637分别控制红、 ...

把两个驱动一起,数码管需要分开线路,
不然很难弄的,  如果数码管的位数够的话,就用,GRID1,2,3,4,  做红色, GRID5,6,7,8做绿色, 段并用

混色效果好调的,试着慢慢调,   黄绿色+红色出来的黄色不怎么好,

回复 支持 反对

使用道具 举报

发表于 2020-8-3 13:24:58 | 显示全部楼层
慕名而来 发表于 2020-8-3 09:00
多谢支持,帖子里面描述过了,你说的双控制方案我没有弄成功,我画的PCB板子原本是两片1637分别控制红、 ...

扩散的问题也被你说中了, 以前都是进口日/台扩散膜或者胶水扩散,现在基本都是国产的,价格区别很大,

国产的膜,灯的位置亮一点,边上暗一台, 好的膜,比较均,透度也比较高,
回复 支持 反对

使用道具 举报

发表于 2020-8-3 17:18:00 | 显示全部楼层
有个叫做SD3078的芯片也可以试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-4 11:34:29 | 显示全部楼层
希望 发表于 2020-8-3 13:24
扩散的问题也被你说中了, 以前都是进口日/台扩散膜或者胶水扩散,现在基本都是国产的,价格区别很大,

...

现在这个闹表已经在使用中了,现在用的是14段驱动的TM1629B驱动5位共阳极数码,1-5段控制绿色位、9-12段控制红色位、而8个位控输出段码刚刚好用,控制也很简单,金黄色显示也可以接受的不继续折腾了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-4 11:37:08 | 显示全部楼层
bg4rff 发表于 2020-8-3 17:18
有个叫做SD3078的芯片也可以试试

多谢推荐,已经网上看了这个芯片了,不只是精度好而且8引脚也不错零星用途价格也不是问题,手里的其他时钟芯片用尽了会考虑这个芯片的。
回复 支持 反对

使用道具 举报

发表于 2020-8-5 00:27:17 来自手机浏览器 | 显示全部楼层
色度问题可以把LED里面的发光二极管拆了用白炽灯换上…对色度有要求的最后都会换成VFD或者辉光管…
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-5 09:33:02 | 显示全部楼层
触景情伤 发表于 2020-8-5 00:27
色度问题可以把LED里面的发光二极管拆了用白炽灯换上…对色度有要求的最后都会换成VFD或者辉光管… ...

哈哈,你这办法靠谱呀,话说辉光管是个好东西,满满的历史厚重感,只是那东西钱不细玩不动呀,最近正在琢磨一个低仿电子管外形的LED闹表,透明的亚克力管材已经入手了,每个仿电子管的外壳需要用到车床加工、正在准备不锈钢材料,等待热天过去了动手。
回复 支持 反对

使用道具 举报

发表于 2020-8-5 15:07:38 来自手机浏览器 | 显示全部楼层
慕名而来 发表于 2020-8-5 09:33
哈哈,你这办法靠谱呀,话说辉光管是个好东西,满满的历史厚重感,只是那东西钱不细玩不动呀,最近正在琢 ...

别低仿了…亚克力外壳,字段用半透明的做好隔光,发光源用3v的以前那种3mm的指示灯白炽灯平放…驱动芯片得换一下…辉光管其实也不贵咸鱼上有不少…别买那种一个字符一个管的,买那种一个管可以显示很多字符的…
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-20 04:48 , Processed in 0.280800 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

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