3208LED点阵电子钟(组图)

    

作品介绍

  制作之前先介绍一下这个电子钟的实用功能,看看这个小家伙是不是你的生活所需。我尽量用电子商品促销广告的形式介绍这个电子钟,令其老少咸宜、妇孺皆知。在网上,这款电子钟已经成为单片机爱好者喜爱的制作对象,借助《无线电》杂志您将率先领略它的魅力,心动不如快行动,赶陕打起精神制作吧!

  功能特点

  采用独特的 8 行 52 列L印点阵显示屏作为显示单元,其显示亮度高、自发光、无视角,制作者可以随意选择屏幕大小和发光颜色。

  日期、时间、星期、温度全信息交替显示,所需信息一目了然。

  采用专业时钟芯片 DS1302 和备用电池,时钟掉电依然走时,用户设置闹钟时间永久保存。

  远离机身的温度传感器设计, 0 ~ 60 ℃ 环境温度显示更精确。

  全功能菜单操作, 4 个按键操作,可加减调时,操作方便。

  8 路独立闹钟功能,可以设置独立闹钟时间和模式,大闹生活每一天。

  多种整点报时时间范围设置,保证休息时间不打扰。

  多种操作提示音,高音量闹钟音,耳目一新。

  设计有全屏 LED 点阵测试功能,制作和使用时轻松检查 L 印坏点。

  首次通电时可自动初始化时钟芯片。

  采购时间



又要拉清单了,表 1 所示是图 1 所示3208LED电子钟元器件清单,其中有一些“视情况而定”的元器件就是看你喜欢什么款式或是看能买到什么样的款式。将这个表单打印出来直接展示给卖元器件的老板看,一根烟的功夫交上钱提着东西就回家了。

  表 1 的第一项是 LED点阵屏,我可不是随便就把它放到前面的,整个制作最重要的器件就是它。假如你到了电子市场,首先就是找一款LED 点阵屏,它要是 8 行 8列单色点阵屏,柜台玻璃下面摆满不同大小和风格的,你要考虑后继电路板的大小还有你想设计的样子。选4块同样的点阵屏横着摆成一列,这就是它未来的样子,每块单价在 5 元~8元左右,卖屏的老板会说这是最低价了,其实还可以砍砍。买到手里的LED点阵屏要注意它的引脚,一般它并不会如你我想象的那样按顺序排列好,而是需要用万用表测量的,把表打到测试二极管的挡位(一般用欧姆挡也可以 ) ,随机地找两个引脚测试,看着前面的 LED 有没有点亮的,没有则改其他引脚再试,有则将引脚位置、点亮的LED的行列位置和极性记录下来。最后我们将得到一份完整的 LED 点阵列数据表,这是非常重要的数据,不可以有一点差错。图 2 所示是8 ×8LED 点阵屏内部结构,16条引脚我已经标示出来,实际引脚位置并不是这个简单的顺序,万用表总结出来的数据表就是帮你整理引脚位置用的。

  本电子钟是具有温度显示功能的,这就需要有一种温度传感器芯片来实现。而现在温度传感器的种类众多,在应用于高精度、高可靠性的场合时DALLAS(达拉斯 ) 公司生产的 DS18820温度传感器当仁不让。超小的体积、超低的硬件开销、抗干扰能力强、精度高、附加功能强,使得DS18820更受欢迎。对于我们普通的电子爱好者来说, DS18820的优势更是我们学习单片机技术和开发温度相关的小产品的不二选择。DS18820温度传感器外观和普通三极管没有什么区别,它是直接将温度值处理成数字信号发送给单片机的,所以精度高、价格也高,一支10元左右。最好把它单独包装,要是不小心当三极管来用,那你就赔大了。在制作电路的时候要将DS18820用导线延展出来,不然电路板发热会让温度显示失准。

  头一次用的东西不少, DS1302 时钟芯片算是一个,下面的文章里还会用到。它是 8个脚的芯片,好像动漫版蜘蛛造型的装饰物。DS1302 还是 DALLAS 公司推出的涓流充电时钟芯片产品,内含一个实时时钟和 31字节静态RAM,通过简单的串行接口与单片机进行通信,实时时钟电路可提供秒、分、时、日、星期、月、年的信息,每月的天数和闰年的天数可自动调整,时钟操作可通过AM/ PM 指示决定采用 24 或 12 小时格式。 DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需用到三个接口线。DS1302 工作时功耗很低,保持数据和时钟信息时功率小于1mW 。它可以应用于电话、传真、便携式仪器、电池供电的仪器仪表以及3208LED电子钟当中。如果想让制作好的时钟掉电后也依然走时就应该买一个备用电池,可以选择 3 .6V可充电的镍氢电源,它可以在电子钟通电时为电池涓流充电,而普通非充电电池也可以使用,只是一年半载后它会变成废铁。 DS1302价格在6 元左右,多买几个再让老板白送配套的晶振。

  74HC154 是一种 4 线转 16 线的译码器,简单说来就是一个接口扩展芯片,如果单片机有一百多个 I /O口也就用不到它了。单片机使用 4 条数据线和译码器连接,并向译码器发送 BCD 码,共有16种码值,每个值对应一个输出接口的电平状态,相当于让单片机又多了一排 I / O 口。这么好的芯片仅售4元左右,应该不算贵哦。

  制作过程

  元器件说完了,再说说原理图。现在要有耐心听我把话说完,原理图也是重要的一环,要是不小心弄错了再修改是很麻烦的。图 3是3208LED 电子钟的电路原理图,电路中包括单片机最小系统部分、LED点阵屏驱动部分、列数据扩展部分、时钟电路部分、温度传感器电路部分、扬声器部分、按键部分,另外建议留出ISP下载线接口,方便程序下载和以后的学习,反正我们已经有了ISP下载线了,加个排针不就行了。我是选择较小一点的电路板,用多层叠加在一起制作的,这样制作可以节省空间,将飞线藏在夹层里面,如图4所示。制作中 LED 点阵屏的引脚测量是重要的,前面已经说过,还有就是要注意 P2 接口的连接,如图3所示的样子,不要接反。将这些元器件焊接起来是非常不容易的,既要认真又要耐心,没焊几条线你就会感觉到这和洗碗一样,是无聊重复的工作。别打算花一百块钱雇个人帮你焊,那样你什么也学不到,成功就在眼前了,加油!

  工作原理

  单片机制作的东西是不容易从原理说明的,一般都是分析程序的流程,这在其他单片机制作的文章里可见一斑。事先说好了这里不谈编程,我就说一点LED点阵屏驱动的原理吧,看看这 256 个 LED 是怎么按照我们的意愿被点亮的。


图 2 所示是 LED 点阵屏的内部阵列式的连接方式,单片机的 P0 和 P2 接口分别连接 4 块 LED点阵屏的行接口,而16 个列接口由 74HC154 控制逐一选通。现在电路被简化了许多,假设 P0 和P2接口所有数据线都变成高电平,则相应的行接口通过 VT1 ~VT16就被拉到高电平了,这时如果所有列都被拉到低电平则会一片光明,所有的 LED 都会被点亮,虽然这并不是我们想要的效果,但控制LED显示的味道慢慢变浓了。如果我们只想让第一列的 LED点亮,我们只要拉低第一列的电平就行了,其他列都是高电平自然是没有电流的。想让第5 列点亮就拉低第 5 列,这个选择由单片机向74HCl54 发出的 BCD 码决定。好,如果现在我想同时只点亮第 1 列和第 5列应该怎么办呢 ? 因为可怜的74HC154只能根据单片机的指令同一时间选通一列。我们可以从电视显示原理中得到真经,流畅的电视的图像是利用逐点扫描技术和人眼的视觉暂留特点而实现的,图像以至少每秒25次的频率显示时我们就被忽悠了,当单片机快速地在第 1 列和第 5 列之间交替点亮LED时就会让我们感觉它们是同时被点亮了。幸好单片机可以达到这样的速度,不然再高级的LED显示屏也只是一串流水灯。基于这个原理,我们就可以同时点亮更多行甚至全屏,但这还不是我们想要的效果。不急,谜底就要浮出屏幕了。我们先让单片机帮我们从第l列到最后 1 列交替显示,让整个屏幕都亮起来,之后我们再偷偷地做点小动作。我们在交替显示到第 1 列的时候在 P0 和P2接口上动手脚,让 P0 . 0 接口为高电平,其他都为低电平,这时只有第 1 行第 1 列的一个 LED 点亮了。当交替显示到第2列时让 P0 . 1 接口为高电平,其他都为低电平,这时只有第 2 行第 2 列的一个LED点亮了。以此类推就显示出了一条斜线,则在交替选通某一列时就在行中送入这一列要显示的对应数据,这就是谜底:逐列扫描。可以在纸上画一个32列8行的点阵列,之后再重看一遍前面的叙述,聪明的你就会豁然开朗。关于单片机如何读取温度和时间数据,这要等你学会编程之后再说,或是不用说就已经明白了。

  系统的工作流程是复杂的,复杂到我不能记得全部的细节,这里我只能简单介绍一下。系统通电后会先显示开机标志“DoYoung”,这证明这个钟是我设计的,别人都这样设计,我也跟着凑个热闹。开机标志显示1秒后单片机会读取时钟芯片数据并检查时间数据有没有丢失,如果芯片是第一次使用或时间数据已经丢失则单片机会对时钟进行初始化,即将时间设置为2007年 1 月 1 日 0 时 0 分0秒并开始走时,这是很重要的环节,不进行初始化的时钟芯片可能走时不准甚至不能走时。接下来进入时间显示程序,这是个无限循环的部分,单片机会不断地从时钟芯片、温度传感器中读出动态数据送入LED显示屏显示。前面提到 DS1302 中有一个 31 字节的 RAM 空间,这是供用户使用的空间,我们的8路独立闹钟数据和整点报时数据都存放在这里。当单片机读取时钟芯片时是将时间数据和 31 字节RAM的数据一块读出来的,然后将现在的时间和闹钟方式设置为开启状态的闹钟时间进行对比,如果时间相同则说明闹钟时间到,LED显示屏闪烁显示闹钟时间,扬声器开始大喊大叫1分钟。在这一分钟里单片机也会一直判断是否有按键被按下,如果有则关掉扬声器返回时间显示状态。不只是闹钟到时才判断按键的,在平常的时间显示时单片机也会不断判断是否有键被按下,因为它通过这个知道人们要中断时间显示而进入菜单操作。要在操作时想到你虽然是在和单片机打交道,但也需要耐心而温和地操作。

  使用说明

  当一切制作完成后,下面的使用说明才有实效。这个电子钟的操作是简单而快捷的,也许你会为它的设计和操作而着迷。当然也可能会有令你不如意的地方,当你慢慢学会修改程序的时候就可以改到满意为止,甚至重新写一个比我这个还好的程序,我只算是引领入门或叫抛砖引玉。


图 3 所示的按键定义是这样的, SB1 :菜单/退出, SB2 :确定/下一项, SB3 :加 1 , SB4 :减1。开机画面为 DoYoung ,也可在时间显示状态按下“加 1 ” 键也可显示,1秒后自动返回。时间显示使用日期、时间、温度切换显示方式,日期和温度停留 1 秒,时间停留 2 秒。在时间显示状态按下“减 1”键也可显示版本信息, 1 秒自动返回。在时间显示状态按下“确定/下一项”键即可点亮全屏 LED ,1秒后自动返回时间显示状态。这一功能可以方便硬件电路做好后或使用中测试LED坏点。在时间显示状态按下“菜单/退出”键也可进入功能主菜单或从任何菜单中退出到时间显示,按“加 1 ” 或“减 1”键选择功能项,功能项目循环选择,它们是:

  ALARM1 ~ ALARM8( 从 1 到 8 的 8 路独立闹钟设置 )

  TIME ( 实时时钟设置 )

  POINT ( 整点报时设置 )

  ON&OFF ( 闹钟总开/关设置 )

  以上是主菜单的功能项,下面是各菜单中的二级菜单内容,按下“确定/下一项”键进入相应功能的二级菜单。在 ALARM1 ~ALARM8选项中按“确定/下一项”键进入,第一项是闹钟方式设置,由数字 0 ~ 6 表示: 0 :此闹钟独立关闭,1:此闹钟鸣响一次后自动关闭, 2 :此闹钟常响, 3 :此闹钟周一至五鸣响,周六、日除外, 4 :此闹钟周一至六鸣响,5:此闹钟周六、日鸣响, 6 :此闹钟周日鸣响。再按“确定/下一项”键设置闹钟小时和分钟,“加 1 ” 或“减 1”键调整。闹钟方式设置为 0 时 ( 独立关闭此闹钟 ) 其闹钟时间数据不丢失。闹钟鸣响时间为1分钟,在此期间按任意键可停止鸣响。

  在 TIME 选项中按“确定/下一项”键进入时间设置,按年、月、日、周、时、分逐项设置。“加 1 ” 或“减 1”键调整它们,按“确定/下一项”键进入下一项设置,按下“菜单/退出”键退回时间显示状态。时间设置里没有秒的操作,但当分数据更新时秒值自动变为00秒。注意:设置值前面的“ T :”表示时间设置,如果是“ A :”表示设置闹钟,“ P :”设置整点报时。

  在 POINT 选项中按“确定/下一项”键进入整点报时设置,当设置从 7 时到 23 时启动整点报时功能时不包括 7 时和23时,即从 8 时到 22 时。按“确定/下一项”键选择其他时段,按“菜单/退出”键完成设置退回时间显示状态。

  在ON&OFF选项中按“确定/下一项”键进入闹钟总开关设置,进入时的显示为当前设置状态,按“确定/下一项”键选择总开关状态,开关为关时8个闹钟都不响应,但设置数据不丢失。

  好玩吧 ? 会玩了吧?它的魅力不只停留在三分钟的新鲜感,日后的实用性更能让你受益匪浅。希望你在玩够了之后回过头来研究一下源程序,看看它是怎么实现这些有趣功能的,单片机是一个非常有趣的东西,我相信你和我一样,满脸笑容、深信不疑。

  练武场

  有许多朋友制作了我的这款电子钟,可是他们对如此费尽心思的设计依然不满。他们希望LED显示屏上的字可以从右至左流动显示,感觉这样会好看一些。我也是同大家一样的审美观,不过我在设计它的时候兼顾了实用和美观,偏向任何一边都是会得罪人的。其实流动显示的实现并不困难,我也实验过,只是流动得太快会看不清显示,如果放慢的话一次时间的完整显示会让你等得不耐烦。不过并不绝对是这样的,也许你有更好的方法可以实现,现在机会在这里,聪明的你可以尝试研究一下。



地址:常州高新科技园15#3F 手机:13906119565 电话:0519-85119897

http://www.ledinfo.com.cn Email:led@ledinfo.com.cn

/**/