步骤1:设计
总之,在我满意之前,我制作了三个不同版本的时钟。这些版本的设计如下:
使用标准的20 MHz晶振作为PIC。采用这种设计,在运行一天后,时钟不同步1秒。这太过分了。接下来,由于设计中没有备用电池,因此关闭时钟时会丢失时间。
使用DS1302时钟模块。这个模块的好处是它有一个备用电池,所以当你关掉时钟时,时间不会丢失。当我用这个模块测试时钟时,时钟不同步7秒!一天后。我认为这是由错误的晶体或糟糕的PCB设计引起的。
使用DS3231时钟模块。该模块还配有备用电池,比DS1302更精确。这个模块的时钟工作正常,所以我用它来进行最终设计。因此,PIC不再需要晶体。
完整的设计在三个原理图中绘制:
时钟控制器使用PIC
60双色LED
步骤2:必需组件
您需要为此项目提供以下组件:
一块面包板
PIC单片机16F1823
3移位寄存器74HC595
IC插座:1 * 14引脚,3 * 16引脚,1 * 18引脚
时钟模块DS3231
2个按钮开关
电阻:2 * 33k,8 * 100欧姆,8 * 47欧姆
1个电解电容100 uF/16V
4个电容器100 nF
LED:60 2 mm双色(红色/绿色),1 5 mm黄色
插头插头3 mm
5伏适配器,例如用于为智能手机充电的适配器。确保它是真正的5伏电源。
可选:用于将外部部件连接到面包板的接头
Kynar wire&剥线钳
时钟的外壳。
请参阅如何连接组件的示意图。它需要相当多的焊接,尤其是连接60个LED。原理图包含在zip文件中。
步骤3:构建时钟
查看我如何构建的图片时钟。我开始拆除原始时钟的内部构件,之后我在前板上为双色LED钻了60个2毫米的孔。然后我把前面板涂成了黑色并添加了一块塑料来覆盖那个时钟的原始指针定位的孔。现在黄色LED位于该位置。
然后我安装了所有60个LED,使用一些热胶将它们保持在它们的位置,并将它们与Kynar线相互连接。最后但并非最不重要的是我用所有组件组装了面包板。
在后盖上安装了两个按钮和电源插孔。忘记我粘在背面的额外板子,如图所示。我补充说,因为在我的第一个设计中,按钮位于那里,但我需要移动它们,因为我必须添加DS3231模块,我只能在我第一次设计时找到这些按钮的位置。
步骤4:软件
如前所述,该软件是使用JAL编程语言为PIC16F1823编写的。 PIC运行在32 MHz的内部时钟上。如前所述,时钟时序由DS3231时钟模块完成。
该软件执行以下主要任务:
使用I2C接口初始化DS3231模块。模块将产生1秒信号,该信号连接到PIC的中断引脚。 PIC使用此1秒中断来读取DS3231模块的时间。
通过移位寄存器驱动60个双色LED。在示意图中可以看出LED以16×8矩阵连接。这减少了连接所有LED所需的导线数量。这种矩阵设计要求PIC需要多路复用LED,以便能够单独点亮它们。多路复用LED是在中断的基础上完成的,其中刷新频率为70Hz,因此人眼看不见。
处理按钮。这些用于设置时间,一个用于设置小时,一个用于设置分钟。需要按下两个按钮才能激活时间设置模式。选择时间设置模式时,黄色LED将持续亮起。在不使用按钮5秒后,时钟返回到正常时间操作,黄色LED将开始闪烁。
-
时钟
+关注
关注
10文章
1733浏览量
131462
发布评论请先 登录
相关推荐
评论