学习数字电路的二进制之后,觉得二进制数很神奇,例如现在的电脑都是采用二进制。二进制容易实现,运算规则简单,只有0和1,两种状态的转换速度极快,从而由简单的0和1构成了复杂的计算机世界。我国古代的一本奇书《易经》中说“万事万物都有阴阳”,似乎有异曲同工之妙,这些都让我对二进制数产生好奇。直到有一天我在网络上看到一个这样的题目:
一片果林的成熟季节又到了,大批量的水果就要和买主交易,然而,买主来收购之前给农户出了一个“难题”:将1000个水果事先放在10只箩筐里,待其到来时如果能整筐整筐地搬出来并凑够临时指定的数量,买卖照做还坚持长期合作;如果做不到,预约好的买卖取消,今后也不来打交道了。
题目出得很巧妙,我一想想不出来就查看答案,原来是一个跟二进制数相关的问题,第一个箩筐装1个,第二个箱子装2个,后面的箩筐的数量都是前一个箩筐的一倍(最后一个除外),所以各个箩筐的数量分别为:1、2、4、8、16、32、64、128、256和489,这样的话就可以任意取出所需的数量了。一看答案,惊叹二进制数的神奇之处,竟然能这样任意表达出所需的数量。
二进制时钟诞生记
正好这几天研究着用DS1302时钟芯片和单片机制作一个时钟,突然想到,既然二进制能用“10个箱子”任意取出“1000内的数”,那么是否可以制作出一个跟二进制数相关的时钟呢?当两种思维结合在一起的时候,就可以产生出很多有趣的事情来。这么一来,就很自然地想出了制作一个二进制时钟,但是用什么方式来显示呢?看到手头上有多种颜色的LED灯,于是想到就用发光二极管呗,灯亮就是“1”,灯灭就是“0”,一排LED的亮就形成一个二进制数,从而读出相应时间。这个想法让我兴奋不已,于是我开始着手单片机的编程,用单片机把在DS1302上取出的时间的BCD码转换成10进制数直接放在一组I/O口上面,单片机会自动把十进制数转换成以1和0表示的数放在一组的8个I/O口上,这样一来,在相应I/O口上连接LED灯就能显示出“时间”来了。由于小时最多为“24”,因此只需要5个LED灯就可以完整表示,而“分”和“秒”部分要6个LED灯才能完整表示。
注意事项
还有需要注意的地方是,我们平常读数是从左到右读高位数到低位数,但是大多单片机的I/O口组是从低位到高位的,因此我们制作时要特别注意焊接LED灯的顺序,或者把单片机翻转摆放就可以解决这个问题。
读时钟的方法
如题图所示的每组数就是“10110”、“101011”、“100001”,在脑袋里进行简单的运算就可以得出时间为:“22:43:33”。科学发现,经常运算可以防止老年痴呆症^_^,因此,二进制时钟就有了它的意义所在了。
上一篇:8051兼容单片机主要参数选编
下一篇:简单程序打造“山寨”版机器手
- 热门资源推荐
- 热门放大器推荐
设计资源 培训 开发板 精华推荐
- 本田严厉警告日产:若与鸿海合作,那么本田与日产的合作将终止
- Microchip推出新款交钥匙电容式触摸控制器产品 MTCH2120
- Matter对AIoT的意义:连接AIoT设备开发人员指南
- 我国科学家建立生成式模型为医学AI训练提供技术支持
- Diodes 推出符合车用标准的电流分流监测器,通过高精度电压感测快速检测系统故障
- Power Integrations面向800V汽车应用推出新型宽爬电距离开关IC
- 打破台积电垄断!联电夺下高通先进封装订单
- Ampere 年度展望:2025年重塑IT格局的四大关键趋势
- 存储巨头铠侠正式挂牌上市:首日股价上涨超10%
- Vishay 推出新款精密薄膜MELF电阻,可减少系统元器件数量,节省空间,简化设计并降低成本