技术中心
 
 

如何制作数字时钟

   日期:2009-08-21     来源:互联网    
如何制作数字时钟

花79美元让一只LED亮起来似乎有些奢侈。你肯定更想用BASIC Stamp制作出更实用的东西。花上100多美元,你就可以制作一台精致的数字时钟!这好像也过于奢侈,但以后做其他各种装置时,你会发现这些元件都可以重复利用。

我们将使用BASIC Stamp的输入输出引脚来显示数字。在数字时钟部分,我们了解了如何连接7447芯片的7段显示发光二极管。7447芯片可以和BASIC Stamp协同工作。将BASIC Stamp的四根输入输出引脚直接与7447相连,就可以很容易的显示0到9的数字。BS-1版本的Stamp有8根输入输出引脚,这样可以直接驱动两片7447芯片。

就一个时钟而言,需要至少显示4个数字。为了用8个输入输出引脚驱动4片7447,我们需要更有创造性一些。下图给出了一种解决办法:

用8个输入输出引脚驱动4片7447的解决办法

上图中,8根输入输出引脚从左边引入。该方法用4个输入输出引脚驱动全部的4片7447。剩余的4个引脚,用来按顺序激活4片7447(芯片上的“E”表示“Enable 使能”——7447芯片上的5号引脚)。要让这个系统工作,Stamp的程序首先通过4根数据线发出第一个数字,并且把第一片7447的E引脚与第一根控制线置位,从而把7447激活。然后发出第二个数字,激活第二片7447,就这样按顺序不停的反复激活四片7447。 实际上,稍微改动一下连线,一片7447就可以实现这些功能。使用74154多路转换芯片以及一些驱动,就可以用这种方法驱动多达16个数字。

这就是实际中控制发光二极管显示屏的标准方法。如果你有一个老式的发光二极管显示的计算器,边晃动边观察显示屏。你会发现同一时刻只有一个数字被点亮。这种技术被称为多路复用显示。

这种技术在时钟和计算器上有很好的应用,但是存在两个重要问题:

发光二极管耗电量大。 7 段显示发光二极管只能显示数字。

另一方法是使用液晶显示屏。 液晶显示屏应用广泛,而且与Stamp连接方便。 例如,下图所示的两行字母数字式的液晶显示屏在Jameco公司(部件号150990)和Parallax公司(部件号27910)都可以买到。 此处展示的是一个典型的液晶显示屏,将液晶显示屏插在面包板上,便于和其他芯片连接:

个典型的液晶显示屏,将液晶显示屏插在面包板上,便于和其他芯片连接

这类液晶显示屏的优点:

一根引脚就可以驱动显示。 显示屏包含允许Stamp以串行方式与自己通信的逻辑电路,因此只需一根引脚。 此外,BASIC Stamp中的SEROUT命令可以十分容易的实现串口通信,控制显示屏十分简单。 液晶显示屏可以显示字母数字文本,包括: 字母和数字,甚至可以是自定义字符。 液晶显示屏耗电量极低——只需3毫安的电流。

唯一美中不足就是,这样的一个液晶显示屏要花费59美元。显然,没有人会在烤箱上装这样的显示屏。 而设计烤箱时,一般会先用这样的显示屏作样品试验,而后用自己设计的芯片和软件驱动便宜的显示屏,用于最终的产品。

驱动这样的显示屏,你只需提供5伏以上的电源和地线(Stamp的9伏电池满足这两个条件),然后把Stamp的一个输入输出引脚与显示输入线连接。 要将Stamp的输入输出引脚连接到像液晶显示屏这样的设备,我能找到的最轻松的方法,是使用Jameco公司生产的连线工具(部件号34577)和30-gauge规格的连接线(部件号22541)。这样不需要焊接,并且连接结实、可靠。

下面的程序中,BASIC Stamp完成了一个时钟的功能,通过液晶显示屏输出时间(假定液晶显示屏接在Stamp输入输出0号引脚上):

 
pause 1000 '等待液晶显示屏启动
serout 0, n2400, (254,1) '清除显示
serout 0, n2400, ("time:") 显示屏上 显示“time:”
'在加载程序之前进行预设
b0 = 0 '秒数
b1 = 27 '分钟数
b2 = 6 '小时数

again:
b0 = b0 + 1 '秒数加1
if b0 < 60 then minutes
b0 = 0 '如果秒数等于60
b1 = b1 + 1 '则分钟数加1
minutes:
if b1 < 60 then hours
b1 = 0 '如果分钟数等于 60
b2 = b2 + 1 '则小时数加1
hours:
if b2 < 13 then show
b2 = 1 '如果小时数等于13,则重置为1

show:
serout 0, n2400, (254, 135) '在显示屏上定位光标,
'然后显示时间
serout 0, n2400, (#b2, ":", #b1, ":", #b0, " ")
pause 950 '暂停950毫秒
goto again '重复

这个程序中,通过SEROUT命令向液晶显示屏发送数据。 序列 (254, 1) 用于清空液晶显示屏,其中254是转义字符,1是清空屏幕的指令。 序列(254, 135)用于定位光标。其他两个SEROUT指令只是将文本字符串发送到显示屏。

这种方法将得到一个比较精确的时钟。通过调整PAUSE语句,可以将每天的误差控制在数秒之内。显然,真正的时钟需要一到两个按钮来校正时间—— 在这个程序中,你需要在向 Stamp 载入程序前,预先设置时间。

此方法简单、有效,但并不十分准确。如果你需要提高计时精度,在Stamp上连接实时时钟芯片是一种好的选择。这样,每过一秒左右就会从芯片读取时间并显示出来。实时时钟芯片中使用石英晶体获得极佳的精确度。 时钟芯片通常还包含日期信息,并可以自动进行闰年修正。

要让实时时钟和Stamp实现对接,一个简单的办法是使用称为Pocket Watch B的元件。

Pocket Watch B模块
Pocket Watch B模块
Pocket Watch B在Jameco公司(部件号145630)和Parallax公司(部件号 27962)都可以买到。该元件只有一枚硬币大小,包括时钟芯片、石英晶体和与输入输出引脚通信用的串行接口。它的价格在30美元左右,也不适用于烤箱,但却非常适合在搭建样品模型时使用。

 
  
  
  
  
 
更多>同类技术
 
全年征稿 / 资讯合作
 
推荐图文
推荐技术
可能喜欢