mini1608将会是你见过的极精简的LED点阵屏电子时钟之一,同时它也将会是功能强大且扩展性很大的作品。本文首先会改变你一直以来对LED点阵屏电子时钟的观 念,然后告诉你15分钟之内完成制作的方法,最后介绍一下我的设计历程及几项技术的实现原理。mini1608没有PCB电 路板,没有电源稳压电路,没有单片机复位电路,没有外扩 时钟芯片,没有LED点阵屏的驱动芯片或电路。mini1608只 需要11种元器件,而且还可以更少。它能够横向流动显示 日期、时间、温度信息,纵向显示汉字及全中文操作菜单。不需要光电二极管或任何感光电路就可以实现对环境亮度的感知并自动调整LED点阵屏的显示亮度。它具有20级流动显示速度 设置,9级显示亮度设置,2009-2029年的公历日期计算,1~60℃的室内温度显示。将来它还会具有20年内的公历及农历 日的中文提醒功能,用户自定义记念日提醒,9路独立闹钟 功 能 和 自 定 义 整 点 报 时 功 能 。 随 着 程 序 的 开 发 和 改屏触摸操作,100级时钟模糊校准功能,高考或重要日期倒计时功能,用户自定义显示内容,还有一些杂七杂八的小功能。欢迎电子DIY爱好者朋友和我一起制作mini1608,我将为 你提供烧写文件和程序升级,让它不仅制作好玩,而且可以 从中得到启发,还有实用功能。闲谈碎语不要讲,下一节中说端详,现在跟我动手做,图文并茂指方向。
制作开始
请按照附表所列元器件清单去准备,注意单片机不可用89C51系列单片机代替,只能使用清单中指定的单片机型号,否则不能完成制作,这一点我在下文中会介绍原因。本文中使用4.5V的电池盒为mini1608提供电源,你也可以采用 USB或电源适配器为它供电,但要注意意外断电将会使时钟数据丢失。要避免这种情况,你可以采用电池和市电并用的 双电源设计,《无线电》2009年第6期的《断电后还能运行的多时段开关定时器》就实现了这一功能。
1.将30pF电容绑在一起焊接在单片机的18、19和20这3个引脚上。
2.把 3 个微动开关剪去对侧的两个引脚,将余下的对侧引脚直接焊在单片机背面。
3.将芯片座插针一面直接焊接在单片机的引脚上。
4.把 0.1μF 的电容焊接在 3PIN 排线的两端线上,这两端的线将会作为 VCC 和 GND 来连接。
5.把排线放入单片机和芯片座之间的空隙中,排线两端焊接在 VCC 和 GND 上,中间线焊接在 22 脚上。
6.弯曲一下晶体振荡器的引脚并把它插入单片机 18 脚、19 脚对应的芯片座孔中。
7.把蜂鸣器负极直接插入单片机 20 脚对应的芯片座孔中,正极连接到单片机 23 脚对应的芯片座孔中。
8.把 LED 点阵屏模块按照电路原理图直接插入单片机对应的芯片座的孔中。
9.将 3PIN 排线的中间适当部位斜向划开表皮,不要割到内部的导线。
10.把 DS18B20 芯片的引脚对照电路原理图插入刚刚划开的斜口中,再用胶带或热缩管包好。
11.把 3PIN 排线的两端线(VCC 和 GND)与电池盒的正、负极连接。
我们的制作到这里就完成了。你可以用宏晶公司提供的专用ISP下载线电路和STC-ISP.exe软件为mini1608注入灵魂。mini1608的HEX烧写文件在《无线电》官方网站上可以下载。 目前的V1版本中有时间设置、流动速度设置、显示亮度设置 等功能。mini1608屏幕朝前时,按键功能从左到右依次为“设 置/下一项/退出”、“加1”、“减1”。试着用强光照射它,
再试着把它放在黑暗之中,看看它会有什么奇妙的反应。是的,在没有任何感觉元器件的情况之下mini1608是如何做到感 知并处理环境光亮度的呢?本节中的文字如同制作本身一样精简,形成了统一的风格,但精简之处仅是硬件制作,我把mini1608的复杂和强大都压缩在软件程序上面了,所以诸君如 果对mini1608的程序原理感兴趣,就让目光继续跟随我的笔 迹,峰回路转之间带你探索mini1608的奇妙原理。
精简设计
2009年5月17日凌晨2点45分,我一个人躺在床上,辗 转反侧不能合眼。心中浮现出一款漂亮的点阵屏电子时钟, 仿佛我曾经见过它一样,结构清晰、原理分明。我开始紧张,发冷汗,好像它正用一种魔力召唤着我,诱导我把它制造出来。在整理我的元器件箱时,会有一种莫名的兴奋,眼 前的一堆不起眼的东西,存在着无限巨大的可能,不同的 人、不同的思想决定了哪些作品会通过我们双手的拼接而来 到这个世界。它们来自电子世界,我们向往的世界。
我打开台灯,坐起身来,穿好衣服,开始制作。我可以 废寝,也可以忘食,因为一个电子爱好者怎么也抵挡不了电子世界的诱惑,于是忘乎一切而沉迷于电子制作。从元器件箱中找到一款DIP封装40脚的普通8051单片机,然后把新买 来的0788型8×8LED点阵屏的引脚插在上面,单片机的引脚竟然可以和点阵屏的引脚对应在一起。我更兴奋了,又找来一块点阵屏,将2块屏并列在一起,正好对应在单片机的连续16个引脚上。如果这16个引脚都是I/O接口,就可以直接把点 阵屏和单片机焊接在一起来显示了。可是大家知道,传统的8051单片机的接口定义中并没有连续16个引脚是I/O接口的,通常都会有复位引脚之类的夹杂在中间,所以使用传统8051单片机是不可行的。打开电脑,查找各大单片机厂商的选型 指南,希望找到一款适合的单片机来完成我的设想。不知过 了多久,突然我的心跳加速、瞳孔放大,目光停留在数据表 中的一行。STC11F32XE,32K字节FLASH、1208字节RAM、36个I/O接口、40脚PDIP封装。随后打开STC11F32XE的数据 手册,找到它的引脚说明,它的40个引脚中除了VCC、GND 和两个晶体振荡器接口之外,其他引脚都可以作为I/O接口使 用。而且每一个I/O接口都有4种工作方式,其中包括推挽输 出。这正预示着mini1608问世在即。
于是制作最简单硬件电路电子时钟的想法开始萌生,有了合适的单片机,余下的工作就是做减法,看看在传统的电 子时钟的设计中有哪一些元器件和功能电路可以省略。我找 出DY3208电子时钟的资料,那是很久以前的作品,虽然当时 它受到了许多爱好者的欢迎,但我仍感觉这个电路对于初学 者来说有些复杂,可惜一直没有好的方案蹦出来。这回的机 会难得,就以DY3208电子时钟的功能为准,看看哪些可以继 承,哪些可以精简。
DS1302是制作电子时钟最常用的时钟芯片之一,我之 前制作的每一款时钟都有它的身影。他可以计算公历日期、备用电池保证时钟走时 、内部RAM可以存储用户闹钟等数 据。经过一番研究之后,决定在mini1608中使用单片机程序 计算公历日期,STC11F32XE内部有EEPROM空间,可以长久地保存用户数据。但如果没有备用电池,单片机一旦断电就会丢失时间数据。为了解决这个问题,我决定使用电池为电 子时钟供电。这样一来,我们成功地省去了DS1302时钟芯 片,同时没有失去应有的功能。
DS18B20是一款温度传感器芯片,它有一种TO-92封装,和普通直插式三极管的外观无异。当然,我也考虑过使用热敏电阻或其他电路替代,但都因电路复杂和稳定性等问题被否 决,最后还是继承了这种温度传感器方案。单总线的通信方式 确实可以节省本来就紧张的单片机I/O接口资源,还是沿用先 前的设计,将DS18B20芯片制作在外延的电线上,目的是为 了防止电子时钟主体发热而导致对温度采集的干扰。
按键是电子钟必不可少的组成部分,除非它可以实现 无线遥控或者触摸屏幕。在没有其他成熟的方案之前,我还 是使用普通的微动开关。我选择的是体积较大一些的微动开 关,尺寸为12mm×12mm×6mm,因为我发现这种型号的微动开关可以直接放在单片机的背面,并焊接在单片机上。在 传统的设计中,虽然按键功能并不是设计的主角,但它都会 独自占用几个I/O接口。mini1608的方案决定了,不可能留出 I/O接口专门给按键享用,它必须要“寄生”在现有功能的I/O 接口上,通过程序分出按键扫描的时间。这样一来,按键电 路没有独占I/O接口,省出了几个I/O接口。
因为使用电池供电,自然省去了电源稳定电路。因为I/O接口有推挽工作方式,也省去了LED点阵屏和蜂鸣器的驱动 电路。当我在考虑省去元器件的时候,结果发现我连电路板也一并省去了。没有电路板的电子时钟电路,至少在我的记 忆中前无古人。我重重地靠在椅背上,长叹一口气,复杂的 终于不见了,留下的只有精简与创意。诸君注意,复杂的终 于不见并不是说真的消失,而是绕过精简的硬件制作跑到了 无形的程序世界。形成了简单的外表和复杂内心的反差。要 相信,在我辗转反侧的时候,在我选择单片机的时候,在我 精简电路的时候,我都在不断地思考程序的设计与实现,那是mini1608存在的根本,也是精简设计的灵魂。灵感乍现并 不是失眠所至,不要学习辗转反侧,失眠不会成产生灵感反
会影响健康。创新是放弃所学的固有知识,在思想中不断探 索最根本的学术原理,创新的前提不是学习,是放弃。
原来是理
探索最基本的学术原理,这是科技进步的大前提。手机 的发明是因为发现了无线电,飞机的出现是因为有了空气动 力学原理,mini1608的发明是因为有了杜洋不懈努力。学会了制作,就只学会了制作,学会了基本原理便学会了创作。 本文的续篇是对mini1608程序实现原理的分析,它包括对增强型单片机内部集成功能的使用,还有对各器件的驱动和各 种数据的处理。其中I/O的推挽工作方式、LED点阵屏实现测光的原理,在给你启发的同时,也给你尽情畅想和发挥的 天地。一个月之后的今天,阳光明媚的中午,别忘了《无线电》的老地方,杜洋与你的神秘约会。