• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

给朋友的生日礼物,mini1608时钟纯手工打造(原理图、程序源码)

2017/03/08
21
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

mini1608_SCH.jpg

共4个文件

同学送给朋友的生日礼物,按照杜洋工作室的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...

  • mini1608_SCH.jpg
    下载
    描述:原理图
  • mini1608源码.rar
    下载
    描述:mini1608源码
  • 主函数代码.txt
    下载
    描述:主函数代码
  • lcd汉字取模软件.zip
    下载
    描述:lcd汉字取模软件

相关推荐