矿石收音机论坛

 找回密码
 加入会员

QQ登录

只需一步,快速开始

搜索
查看: 1754|回复: 8

学习单片机编程,显示TM1639驱动数码管

[复制链接]
     
发表于 2022-5-5 10:41:41 | 显示全部楼层 |阅读模式
先上图,再说故事。

微信图片_20220505090518.jpg

微信图片_20220505090537.jpg

微信图片_20220505090529.jpg

故事一:TM1639是可以匹配共阴或共阳数码管的(都是8X8),拿出N年前购买的片子,找到数据手册,只看了一眼封装(24SDIP300),立马拿起手机(用手机打开数据手册)对着管脚就在LAYOUT6.0上画起来,这是LAYOUT的一个弊端,不用画原理图,直接开干,所有原理图只能脑补。因为没有看到数据手册的提示“无论是驱动共阴极数码管还是驱动共阳极数码管,SEG引脚只能接LED的阳极,GRID只能接LED的阴极,不可反接”,结果想着画共阴管,却画成了共阳管。
这是所有后续故事(或事故)的开端~~

打版回来后,立马开干,接上八位共阴管,,,,
咦??怎么一接电源,TMD八位全微亮了???
此时还没有编程呢。
怎么回事???
先丢一边,过五一节去了。
直到过了三天,回头看看数据手册,赶紧换回共阳数码管,幸好两种管脚是一样的,只是方向不同,方便互换。
果然通电,八位管黑得不能再黑了。

故事二:手头没有关于TM1639的例程,淘宝卖家只卖芯片不提供资料。使用各种搜索大法开始各种搜索,找了N个单片机论坛,只找到两个疑似可用的例子。听坛友建议,去找官网技术支持,对方一听我只是一个爱好者,就没有下文了,,,,这个事例说明,做人不能太老实,如果我说是一个开发商,准备深度开发TM芯片,说不定官方会亲自派人来对接,,,但人与人之间的基本信任呢??是不是就这样被消耗了??这次大搜索也不是没有收获的,毕竟找到了一个比较有意思的单片机论坛,准备长期在那里潜水了。

故事三:无奈,只能又再去读数据手册。结合上面找到的疑似可用的例子对照,决定自己从头开始写程序。第一步是串口数据传输子函数,每次传八位(无论是命令或地址或数据都一样),这种例子,完全照抄即可,稍要注意的区别是先传低位或先传高位而已。第二步是调用串口函数传命令、传地址、传数据。问题来了,对于共阴管,传一个地址,再传一个数据,就可以点亮一位数码管了;但对于共阳管,需要传输八次地址(八次地址才算是一个完整数据),原共阴数据端变成了位选(地址)。
所以,驱动共阴管,只需要两条语句(一条传地址,一条传数据)即可:
QQ浏览器截图20220505095633.png

而对于共阳管,驱动一个管子,则要十六条语句,相当于输入了一个8X8数据表:
QQ浏览器截图20220505100119.png

故事四:好不容易对照数据手册,终于可以点亮一个数码管了。高兴了两天,问题又来了,如何点亮八个呢??如果是共阴管就容易多了,接着传八次地址、数据就行了。按照这个方式用于共阳管就不行了,每一个数码管都要传八次地址,再传一个数码管,又要传八次地址,,后八次地址把前八次地址覆盖了,,,
既然共阳管每次都相当于传一个8X8的数据表,那么先算好八个数码管的数据,填好表格(列为数据,行为地址),再一次性上传就不会存在后地址覆盖前地址问题了。
真为自己的小聪明感到高兴,,,,,


故事五:
咦???
怎么回事?后四位怎么没有按脑补的方式显示?黑呼呼??
又找来数据手册,才发觉坑爹的TM1639的数据不是SEG1~SEG8,而是(看下图):
QQ浏览器截图20220505101700.png

居然是SEG1~4、SEG8~12,要显示共阳八位管,低四位和高四位要分开来传输,一共要16次地址。晕倒~~~~
图省事,选择连续传输数据模式(只传一个起始地址,连续传输数据),结果又晕了,要示显示“12345678”,结果显示“13572468”。
又去看了看上面的数据手册,原来地址低四位和高四位是梅花间竹的。只好又编了一个数组储存一个新的地址顺序表。

故事六:如何显示一个小数点,又成为一个新的问题。如果熟悉C语言的,会觉得这不是一个问题,就是一个简单的判断语句,但我N十年前学的是PASCAL语言,习惯真的很难改。PASCAL语言中,逻辑“等于”就是“=”,而在C语言中是“==”,所以编程中,老是少打一个“=”。如果是PASCAL,编译时会报错,而C语言通常不会报错,但结果却是随机的。对于C语言这种弱语法检查问题,很是不适应,有时出错了还要回头检查N次才能发现。
幸好家里小孩是学计算机的,和他讨论过这个问题,也讨论不出什么结果,只能说习惯就好。
为了显示水平不比小孩差,现在偷偷借他的C语言的课本来死磕。
再次发现N十年前谭浩强老师编的C语言教程,居然现在还在使用,只是变成了第五版!!!很好奇谭老师几岁了?
     
 楼主| 发表于 2022-5-5 10:50:43 | 显示全部楼层
最终两个深刻体会:
一、要么玩成熟方案,网上可查到N多案例的芯片方案的,可以省许多麻烦。
二、要么深读数据手册,再画板子,单片机程序都是和板子设计密切相关的,别人的例子不能照抄,只能参考。
回复 支持 反对

使用道具 举报

     
发表于 2022-5-5 13:43:52 | 显示全部楼层
得出以下结论
1.搞电子技术可以遗传
2.活到老,学到老。
为二师兄的打破砂锅问到底的学习精神点赞。
回复 支持 反对

使用道具 举报

     
发表于 2022-5-5 13:51:49 | 显示全部楼层
把arduion库打开是不是简单得多?
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-5-5 14:45:37 | 显示全部楼层
w6955 发表于 2022-5-5 13:51
把arduion库打开是不是简单得多?

不知道,没玩过arduion。
回复 支持 反对

使用道具 举报

发表于 2022-5-5 15:08:25 | 显示全部楼层
本帖最后由 girlexplorer 于 2022-5-5 15:12 编辑

这是高级玩法。
电路板右上角的logo不错。
这个不知是液晶屏还是数码管,感觉字不容易看清楚。不显示的笔画如果不是白色,而是黑色就好了。
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-5-5 15:14:36 | 显示全部楼层
girlexplorer 发表于 2022-5-5 15:08
这是高级玩法。
电路板右上角的logo不错。
这个不知是液晶屏还是数码管,感觉字不容易看清楚。不显示的笔 ...

看帖不认真~~
这个当然是数码管啦。
看着还是很清楚的,觉得不清楚是手机拍照的问题(有频闪)。
此芯片有八级亮度控制,我这里选了第四级,不算很亮,所以会觉得对比不明显。
如果真正把数码管用到实处,数码管前面再加一块膜,效果会更好一些,不显示的笔画可以隐匿起来。
回复 支持 反对

使用道具 举报

     
发表于 2022-5-5 18:27:34 来自手机 | 显示全部楼层
PASCAL好评!!
用1637的代码改改估计差不多!!
回复 支持 反对

使用道具 举报

     
 楼主| 发表于 2022-5-6 08:57:22 | 显示全部楼层
本帖最后由 乙猪 于 2022-5-6 09:35 编辑
无敌吴刚 发表于 2022-5-5 18:27
PASCAL好评!!
用1637的代码改改估计差不多!!


区别还是比较大的,改写不如重写。
又去搜了好几过TM芯片,感觉这个芯片和TM1618最相似。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 加入会员

本版积分规则

小黑屋|手机版|矿石收音机 ( 蒙ICP备05000029号-1 )

蒙公网安备 15040402000005号

GMT+8, 2025-4-28 09:05

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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