给朋友的生日礼物mini1608时钟纯手工打造(原理图、程序源码) 电路方案
同学送给朋友的生日礼物,按照杜洋工作室的mini1608制作的简化版,只有两块点阵和三个按键。由于杜洋没有给源代码,只有编译好的HEX,就让我写了。 由于硬件的限制和时间的限制只写了基本的显示功能和按键的功能。 使用的单片机为STC12C5A60S2,因为是按照杜洋工作室介绍焊的硬件,只不过没有焊18b20和蜂鸣器,就不过多介绍了。 直接附上杜洋工作室的制作链接:https://www.doyoung.net/works/DOCLOCK_MINI1608_V1TE... 视频演示: 主函数的代码部分截图,自认为驱动函数的接口留的还是比较方便调用的。源代码见“相关附件”下载。 调驱动的时候遇到了一些比较有意思的现象和大家分享一下。 因为是使用单片机IO端口直接驱动点阵,所以很正常的就想到了把点阵阳极行选的引脚设置成了强推挽输出,选行的时候就把那一行对应的端口置1,然后给数据,果然很顺利的就调出来了。但是增加按键功能的时候就出问题了,因为按键两端都焊在IO端口上,所以按下按键的时候就会把两个引脚连接起来,而这两个引脚都又连着点阵,就会导致点阵的某一列全亮,不能正常显示。为了解决这个问题我想到了一个方法,首先将行选对应的端口全部置1,但是不设置推挽输出,因为准双向的驱动能力很弱,所以点阵是不会亮的,选行的时候再将对应的端口设置为强推挽模式,加大驱动能力,这一行便可以被点亮,这样又能保证按键被按下时,列选不会被未选中的行选拉低导致某一列全亮。不知道杜洋工作室的源代码是不是通过这种方式实现的,或者有其他更好的方法。 这个程序其他就没有什么难点了。可能有些同学会疑问点阵的有些引脚连接在了单片机的RESET,ALE等引脚上了,不知道是怎么操作的,60s2的这些引脚都是可以复用为第二功能P4端口,只需操作寄存器P4SW即可,此部分在芯片手册的《1.3 STC12C5A60S2系列单片机管脚图》章节的最后部分有介绍,其中复位脚作为IO口使用还需要再下载程序时对硬件选项进行设置,勾上“复位脚用作I/O口”,杜洋工作室的制作介绍也有说明。 按键切换的部分还有个小BUG,因为时间关系没有时间继续写了。 最后是我使用的点阵取模软件,如果想使用我的程序直接显示其他汉字,只需要更改code_dat.h中的字模即可,数据排列顺序为“从左到右从上到下”,取模方式为“横向8点右高位”,想要显示其他英文字符串,只要调用我写的函数,更改参数即可,不用重新取模。 实物购买链接:https://item.taobao.com/item.htm?spm=a1z10.3-c.w40...
下载地址
用户评论