"); //-->
这是一件有趣的设计,它可以为你的圣诞树增加一些不同的气氛,或者把它挂在窗户上从而给你的邻居留下极为深刻的印象。
硬件介绍
这个电路与“爱心”的电路很类似。硬件部分使用了一片ATMEL公司的AT89C2051微控制器。
要想使它开始工作,我们需要一个由C7组成的复位电路。当电源切断时D2迫使C7快速放电。我们还需要由一个振荡器和C1、C2两个电容组成的振荡电路。注意:振荡器可以是石英晶振也可以是陶瓷振荡器,频率范围可以在10MHZ--12MHZ之间选取而不会对电路产生大的影响。如果晶振为12MHZ,则2051的每条指令周期为1-2US。
从电路图上可以看出,30个LED组成了一个矩阵。为什么用30个LED,并不是出于商业目的,因为我想要一个五角星,所以LED的数量必须是5的倍数,另外的一个原因是我喜欢吉祥的数字,“6”看来就不错。如果想要多一点LED,那就要40个LED,13个I/O口和更复杂的印板图。 我们用11个I/O口驱动30个LED的方法叫做多路技术。一列的LED被连在一起,在很短的时间里导通(约2MS),所有的列依次导通,循环一次约需10MS。LED闪烁的频率约100HZ,根据视觉暂留的原理,我们察觉不到LED的闪烁。
电源部分使用了一个7805三端稳压器和C4、C5两个滤波电容。二极管D1防止反向 电流。当LED全亮时,电路总电流为150MA,但大多数时候,只有不足50MA的电流。当外接9V直流电源时,7805不加散热片的温度也不会超过30度,这是很安全的。当外接12V直流电源时,7805会有点热,但只要把它固定在电路板的铜箔面上,仍不需散热片。
软件
电路预留了一个EEPROM的位置,以便扩充程序,读者可自行添加编程。
软件采用查表的法。这意味着显示的模式和次序是由表中的存储区的数据决定的。这是一个简单的解释程序--通过扫描整个表来完成指令。下表列出了被定义的字节的确切含义。
字节的含义和范围 操作结果
01 to 30 (0x01 to 0x1e) 点亮LED1至30
33 to 62 (0x21 to 0x3e) 熄灭LED1至30 (LED number = byte-32)
64 (0x40) 循环开始后返回byte
65 to 79 (0x41 to 0x4f) 循环开始,计数器 = byte-64
128 (0x80) 延时(use last delay count), each count = 10ms
129 to 191 (0x81 to 0xbf) 延时 count = byte-128, each count = 10ms
253 (0xfd) 所有LED点亮
254 (0xfe) 所有LED熄灭
255 (0xff) 表的结尾
因为存在一些未定义的值,所以程序仍有扩充的可能性。
组装
装配十分简单。你需要一把好一点的尖头电烙铁,最好带温度控制。 仔细检查PCB板铜箔之间有无短路或断路。先焊接小的部分--跳线、电阻、二极管。然后焊接晶振、集成电路插座。接着焊接三极管、电容、LED,特别需要注意的是LED的方向,如果接反了,是不能工作的。最后焊接三端稳压器和电源插座。在进行调试之前,先要仔细检查有无焊接错误或焊锡粘连(焊桥)的地方。连接好电源,检查U1的PIN20(+)与PIN10(-)之间的电压应在4.8V至5.2V左右,如果没问题,断开电源,插上集成电路。LED1旁边的两个洞是用来悬挂星星的,因为洞距离SK1很近,所以也可使用电源线而不必用另外的绳子。 最终,需要找一个漂亮的盒子作外壳,LED前可放一张红色透明的塑料薄膜。
常见故障没有+5V电压:检查电源极性--SK1的中心的引线是正极。检查SK1-D1-7805-U1有无断路或短路。某一LED不亮:极性接反或短路。一组LED不亮:检查公共地和列驱动三极管。某几个LED不亮:检查行驱动电路。
元件列表数量 名称
杂件
1 星型印刷电路板
1 3.5MM DC电源插座(SK1)
1 11 - 12MHz石英晶振(X1)
1 8脚IC插座
1 20脚IC插座
1 9V/150MA直流电源或6V电池盒及4节电池
半导体元件
1 AT89C2051(已编程)(U1)
1 7805三端稳压器(U2)
1 24C16 EEPROM (U12) (可选件)
30 高亮度发光二极管(LED1-LED30)
5 BC557, BC558或类似的PNP三极管(Q1-Q5)
1 1N4004 整流二极管(D1)
1 1N4148 二极管(D2)
电阻(1/4W,精度5%)
5 470R (R1-R5)
6 120R (R6-R11)
电容
2 27p (C1-C2)
3 100n(C3-C5)
1 10uF(C7)
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。