一、设计思路
首先应将电子骰子做成一个能够投掷和滚动的小正立方体,并在立方体的6个表面上分别安装能够显示不同点数的发光二极管,由装在立方体内部的9V小型电池通过限流电阻为这些发光二极管供电。然而,由于骰子6个面上的点数不同,每个面上安装的发光二极管只数也各不相同,使骰子的重心不可能正好位于骰子正立方体的中心,必然存在偏移。于是,经投掷后,骰子最轻的一面位于顶上的几率远大于其他面,该面点数出现的机会就比其他“较重的”面多得多,最终使骰子失去了可信性和公正性。
怎么办?经过一番思考后我们得出结论:在骰子的每个面上都安装7只发光二极管,使它的重心位于立方体的中心。这样投掷时,每个面最终位于顶上的几率相同,而在投掷后6个面却显示不同的随机值,从而保证骰子的公正性。显然,此方案需要功能比较复杂的电路才能实现。当骰子被投掷出去时,首先要检测骰子的滚动状态。为此,用一只水银倾斜式开关来担任此任务,这样即便只是摇动骰子也能获得与滚动一样的效果。接着,要产生出现在骰子6个面上的随机数值,此任务由一只微控制器(即单片机芯片)来担任,以便使骰子保持较小的体积,使用起来更加得心应手。
需要考虑的另一个设计问题是:怎样将主电路板与其他5块电路板连接起来?如果连线太多,则不仅麻烦还很不好看。为了减少连线的数量,决定在各电路板之间采用串行连接,在每块电路板上用一只移位寄存器IC来驱动所在面上的7只发光二极管。这样在6块电路板之间就只需连接4根线,其中两根用于供电,一根用来传送数据,另一根用来传送时钟信号。
此外,还要考虑骰子的消耗电流和电源开关,这里显然不能使用普通的电源开关,因为骰子表面不允许有任何东西突出在外,否则电源开关就会妨碍骰子滚动,甚至有可能因滚动中受压而自我关断。解决此问题的办法是,在骰子其中一面的凹处安装一只接通电源的按键开关,并使电路在骰子停止滚动时自动断开电源。
二、主电路板
图1是本电子骰子的主板电路图.其核心是Atmel公司生产的AT89C2051-12PI微控制器(IC1),可以将它用于本电子骰子的软件。该微控制器芯片内部具有保存程序的闪存,无需外接存储器。晶体X1与电容C1、C2组成时钟振荡器,IC1通过它的I/O引脚直接驱动7只发光二极管,由于使用了小电流发光二极管,无需使用额外的缓冲器。
图1电子骰子主板电路图
图2 2号电路板及其余4块电路板的电路图
电源部分与常见的电路稍有不同,因为我们要用按键来使电路接通电源,而由微控制器自己来切断电源。这一功能是由晶体管T1、T2及其周边电路来实现的,K2是连接9V电池的插座.当按下2号电路板上的按键开关S1时(参看图2中的上图),就有小电流从+9V经晶体管T1的基/射结、电阻R8、K3和S1流到地,使T1导通,电池开始为三端稳压器78L05(IC2)供电,后者就对其余电路提供稳定的+5V电源电压。如果只是这样,则当松开按键S1时,上述电流不再流过R8,会使电路失去电源而停止工作,这就要求在投掷骰子的过程中一直保持按下S1,使用起来很难操作。为了解决这一问题,另外增加了电阻R9、R11和晶体管T2,并由微控制器来驱动T2,当电路接通电源时,微控制器使T2也导通,T1基极电流就经R9和T2流到地,不再依赖于按下S1,如果微控制器发现骰子有几分钟没有动过,它就停止驱动T2,使骰子自动切断电源,当再次按下S1时,上述过程又再次重复。
C5和R10用来为微控制器IC1产生上电复位信号.IC1产生的时钟(CLK)和数据(DATA)信号经 插座K3送到2号电路板,K3 的其余引脚则用来为2号电路板供电和连接该电路板上的按键开关S1。将按键开关S1装在2号电路板上是因为主电路板上元件太多,挤不下了。
1/2 1 2 下一页 尾页 |