[Zero]TC3216 点阵屏时钟

Photobucket

项目代号:TC3216 (101)
硬件设计:Xuping
程序设计:aGuegu
淘宝传送门
其实这个项目的历史算是和Xuping合作以来最悠久的一个,不过一开始目标定得比较高,而在开发过程中,也是遇到了各种各样的问题。所以走走停停,到现在其实也只能称之为“初號機”。而TC8,TC1608其实都只是利用了TC3216的一部分代码,稍作改进,就能成型了。

Photobucket
TC3216中最难的地方,其实就是它实现了无辅助芯片情况下的单片机直接驱动8个8×8点阵屏。除了LED的搭接比较特别以外,其实就是利用了STC单片机IO口的多种状态。而问题是,目前的TC3216和其它时钟一样,没有外部晶振。所以,只能使用11M左右的时钟频率进行驱动。所以就要进一步优化显示驱动。好在现在的效果基本满意,肉眼已经看不出闪烁了。

Photobucket

另外,就是一个全息页面的显示,不要小看这个界面,看似简单,其实实现的难度还是蛮高的。毕竟单片机是单线程的,而如果是直驱点阵屏的话,单片机必须不停地进行扫描,否则显示就会中断,也就是说,驱动时间、温度的时候,其实点阵屏是没有点被点亮的。如果这个时候有点被点亮,也会因为这段时长过长而显得特别亮,那样显示效果会更糟糕。相对而言,滚屏的界面,反而更简单。因为在滚屏之前,可以先生成接下来的画面,毕竟月、日、温度、星期几、这样的数据,不是实时都在变的。所以哪怕生成用的时间相对久一点,“黑屏”了,因为接下来立马就是滚屏,所以肉眼就察觉不到这个短暂的无显示状态。但是全息显示中,这个状态是不得不去面对的。

另外,全息现实中牵扯到一个不同字体,在不同位置的显示。不过,毕竟更早的时候,用点阵屏写过俄罗斯方块的,这个就不算什么难度了。:)
Photobucket
在全息显示中,UI设计下了不少功夫,就是要把各个信息整合到一块,又可以明显区分彼此。所以就做到以下几点:

  • 时间、日期使用不同字体,时间的字体更大
  • 如果出现零下的温度怎么办?那样会在温度读数上面加一条横线,类似于台球区分6和9的方法,不能在读数前面加负号,因为那样就和日期数据连在一起了
  • 星期几怎么办?在摆上时间、日期、温度以后,留给温度的空间就很可怜了。又不能使用数字的方式来显示,因为很容易和别的数据连在一起发生歧义。所以这里又借鉴了骰子的界面。除了星期日会变成“H”样以外,其它的就很讨巧。放在小时读数的前面,也不会发生干扰

依然是无按键设计,用电脑对时,方法和TC8一样。

Photobucket

看一下背面的元件吧,有条飞线,这个未来是会改进的。初号机嘛,难免有各种各样的问题。

视频说明:

淘宝传送门
原文链接:http://aguegu.net/?p=183
感谢Xuping在硬件设计上下的功夫,同时希望各位喜欢,:)

关于aGuegu

向着更高的逼格
此条目发表在初號機 | Zero分类目录,贴了, , , , , , , , , , 标签。将固定链接加入收藏夹。
  • 刘敦煌

    哥,觉得你比杜阳厉害过了……

  • 郑家锟

    您好,请教您个问题。您这样使用单片机直接驱动32*16的点阵片,是不是使用两块16*16点阵屏反并联的方法驱动的?我不明白的是怎么实现扫描的时候关闭所有点的显示?关了第一块屏第二块屏就全亮了,关了第二块屏第一块屏就全亮了。这样导致显示出了乱码。怎么解决?望解答。

    • 主要就是IO口状态也随着输出阶段的不懂而切换,加上这个就好了。

      • 郑家锟

        很高兴您能解答我的问题,我想再问问您是不是使用STC单片机的高阻状态来实现关屏的?