ELEJ-CDC1简介
ELEJ-CDC1是一款创意型数字时钟(即Creative Digital Clock)。之所以说它是创意制作,其实就是使用常规的数码管和常见元器件,实现通常时钟具备的功能的同时,还通过硬件改进和软件设置,巧妙实现通常时钟不具备的功能——人性化用户体验。
时钟太常见了,是生活中极其普通的物品之一,我们只需瞧一下钟,就能说出时间,而且我们也把这看成是很自然的事情。功能完善的时钟可以计时间(Clock)和日期(Calendar),即年、月、星期、日、时、分和秒的实时参数。时钟有很多种,按照不同的分类标准可以分为不同的类型,对于按照模拟数字量分为传统的模拟时钟和数字时钟,这里主要流量套餐分析一下数字时钟。
数字时钟可以由模块化的时钟电路实现,可以由数字门电路+时钟发生电路实现,也可以由控制器(单片机)+定时器实现,还可以由控制器+RTC芯片实现等,其实这里也不用“等”了,因为似乎没有其他方法了。你可能会说从网上下载一个时钟软件不也是嘛,哈哈,告诉你吧,其实这样的软件用的时钟信号是你计算机主板上的RTC芯片时钟或者集成在某个大规模集成电路内部的RTC模块提供的。
RTC即为实时时钟,它是可提供时间(通常也提供日期)的时钟器件。RTC通常包含一个可长期供电的电池,即使在没有电源供电的情况下也可以保持时间的跟踪。
有很多著名厂商和很多著名的RTC芯片,玩单片机的应该没有不知道DS1302流量套餐、DS12887和PCF8523等芯片的;RTC著名厂商有很多,比如Maxim(美信〈达拉斯半导体〉)、NXP(恩智浦)、Intersil(英特矽尔)等。笔者曾经使用过美信的DS3231用作智能电表的时钟计量,调过英特矽尔的ISL12022M,DS3231和ISL12022M,它们都集成了晶体振荡器,精度极高,且外围电路十分简单,基本无需外围元器件,其实DS3231和ISL12022M的功能也很相似、性能也差不多。恩智浦的RTC芯片有很多款,比如本文要介绍的ELEJ-CDC1,使用的是PCF8523。PCF8523性能很不错,使用的是I2C总线与控制器连接,且是高速I2C总线(Fm+),可以达流量套餐到1MHz,在某些实时性要求极高的系统中非常适用。常见的PCF8523有SO8和TSSOP14封装,TSSOP14引脚间距较小,引脚排列很密,不容易焊接,大家可以选择SO8封装的,容易焊接。
制作实时时钟非常有趣,可以同时学会很多与界面显示相关的技术、控制器接口技术、数字处理技术和按键功能实现技术等,对于各种智能家用电器的显示界面设计有参考意义,例如冰箱、洗衣机、电磁炉等的显示界面。关于实时数字显示器件的选择,可以是LED、数码管、点阵屏、LCD等,实际学习可以逐个调试掌握、真正搞懂,然后独立开发基于控制器的项目就不成问题了。(不骗你,真的!)
现在,我们就一起开始制作吧!
ELEJ-CDC1硬件原流量套餐理
ELEJ-CDC1由6个模块电路构成:电源电路、控制器电路、RTC电路、数码管电路、蜂鸣器电路和按键电路,其中电源电路、数码管电路、蜂鸣器电路和按键电路与ELEJ-IDBC1智能数字电池充电器设计中的电路设计方法和电路原理一样,只是数码管在实际的排列时有所不同,而且数码管选用的是1位的8段式数码管。
下面主要介绍控制器电路、RTC电路和特殊处理的数码管电路。
为了大家的制作方便,这个制作仍然使用STC的51控制器,ELEJ-CDC1使用的控制器型号为STC15F204EA,用DIP-20封装,电路连接如图1.1所示。STC15F204EA内部高精度R/C时钟,常温下温漂5‰,时钟从5~35MHz流量套餐可选,这样我们就无需再外置晶体振荡器了。实际焊接在“洞洞板”上如图1.2所示。
RTC芯片用NXP的PCF8523时钟芯片,PCF8523电路图如图1.3所示。
图1.3中电阻R11、R16和R17是上拉电阻,因为PCF8523的INT2、INT1/CLKOUT引脚都是开漏输出,所以必须上拉,此外,SDA和SCL也必须上拉。仔细看看图1.3,你会发现在+5V电源和PCF8523的VDD之间接了VD5、R15和C6,有什么用,不接可以吗?很多时钟芯片都不接的呀!说说原因吧:仔细阅读PCF8523数据手册的典型应用一节,你会发现它提供的典型应用电路连接有R15和C6,它俩的作用是限制VDD的压摆率,如流量套餐果VDD下降得过快,就不能确保内部电路可靠切换到备用电池供电;二极管VD5是为了防止电源反接烧坏PCF8523TS,PCF8523TS不便宜啊,烧的是钱呢!
注 :电压转换速率(Slew Rate),简写为SR,简称压摆率,其定义是在1μs或者1ns的时间里电压升高的幅度,直观上讲就是方波电压由波谷升到波峰所需时间,单位通常有V/s、V/ms、V/μs和V/ns四种。电压转换速率用示波器就可以测量。
我使用的是TSSOP14封装的,由于芯片引脚很密,所以我腐蚀了一块转接板,实物如图1.4所示。注意:在制作中你可以使用SO8封装的,无转接板也可以焊接。
图1.1 控制器电路
图1.2 控制器实物图
图1.流量套餐3 PCF8523电路图
图1.4 PCF8523腐蚀板
图1.5 PCF8523腐蚀板焊接实物
焊接上芯片,通电蓝色LED点亮,如图1.5所示。
数码管电路如图1.6所示。其实仔细看看原理图,和通常使用的电路没有任何区别,其实就是驱动电路的设计。
图1.6 数码管电路图
与通常使用不同的是数码管的放置方式。如何实现显示功能,以下详细说明一下。
对于动态扫描显示技术,几乎每本书、每个资料都会说“动态显示是多个数码管交替显示,利用人的视觉暂留作用,使人看到多个数码管同时显示。在编程时,需要输出段选和位选信号,位选信号选中其中一个数码管,然后输出段码,使该数码管显示所需要的内容,延时一段时间后,再选中另一个数码流量套餐管,再输出对应的段码,高速交替。”如果你是初学者,肯定感到有点迷惑!
那我就用图来说明一下吧!动态扫描最根本的原理如图1.7所示。
图1.7 数码管动态扫描原理
4个数码管轮流显示一遍为一个周期T,即4个显示ton之和,且由于每个显示时间一样,也即T=4×ton,在软件实现手段上,我用的是定时器中断,这样便于main函数处理多个任务。使用的数码管为共阳极的,所以ton时间数码管的位引脚为低电平(以数码管DS1为例:当LED_COM1=0,三极管导通,DS1选通,此时如果有段码数据加到A-H引脚,则DS1显示),即数码管显示,数码管会按照300μs的时间轮流循环显示,即:数码管1→数码管2→数码管3→流量套餐数码管4→数码管1……无限循环往复,由于“数码管1→数码管2→数码管3→数码管4”仅需要1200μs,即扫描频率833Hz,我们眼睛是分辨不出它们是在逐个显示的,我们可以看到的是每个数码管都完整显示。如果,你想仔细看看所谓的“扫描”是啥,你可以把T选得大一些,对应的ton=T/4也大些,那样你就会看到数码管逐个显示,显示的界面会让你感觉很不舒服(一个接一个地闪烁显示)。
图1.8 ELEJ-CDC1数码管实物
图1.9 ELEJ-CDC1整机焊接面实物图
总结一下:我们调试数码管,说白了就是调试T(根据实际调试数据ton≈1ms时,显示效果也很不错,当然是越小越好了;扫描的速度足够快,给人的印象就是流量套餐一组稳定的显示数据,不会有闪烁感),此外还要注意以下两个问题。
(1)所谓的“消隐”问题,当你更新显示的“段”的时候,显示的位置还是在前一时间的“位”上;然后你再更新“位”,这就出现移动的效果了。解决方法:显示下一位时先让数码管熄灭;在位的数码显示前,先关闭一下数码管,这样方可消除拖尾现象。
(2)驱动要足够,例如,我在使用数码管时均使用了三极管驱动,尽管STC控制器I/O口可以配置为推挽输出,但是为了便于硬件移植,即51控制器通用,还是加了驱动,在实际制作调试时,你也可以选择用STC控制器直接驱动。
ELEJ-CDC1创意数字时钟数码管实物如图1.8所示,焊接面如图1.9所示。
软件设计思路
这里我直流量套餐接用文字叙述:在没有任何认为“干预”ELEJ-CDC1的情况下,ELEJ-CDC1从用户接通电源起,工作步骤(也就是软件执行过程)为控制器初始化、某些系统参数初始化→配置PCF8523、获取RTC数据(通过I2C接口读取)→处理RTC数据,处理结果暂时存储在控制器缓存中→通过定时器中断技术使控制器缓存中的RTC数据显示在数码管上→再读取新的RTC数据,处理数据,实时显示……就这样只要用户不断电,ELEJ-CDC1就会“不知疲倦”地重复实时显示RTC的实时数据。
然而,RTC芯片内部的数据在上电时,一般不会是当前的时间,怎么办呢?一般人都知道重新校准时间。其实,从PCF8523角度来看,就是重新向流量套餐PCF8523内部时钟寄存器内写入数据,覆盖掉原始的不是当前时间的数据,然后PCF8523就从新的时间数据开始计时(时钟源就是那个32768Hz的晶体振荡器)。这样,自然就需要一个校时程序,而且这个校时程序块不是一直运行,只有用户需要时才启动,所以就需要一个开关。开关?你可能会惊讶:软件里面哪里有开关呢?此时,如果你仔细想一想数字电路,是不是想起了0和1,就是啊,这个开关就用一个Bit变量实现,比如,变量为1时启动校时程序块,为0时运行时钟。记住一点,校时程序块和正常走时程序块在同一时间绝不可能同时运行!
至于闹钟,也很简单,每读取一次RTC数据显示,程序就判断一次此时的时间和用户设定的闹钟时间流量套餐是否一样,如果一样,那就“闹”吧!闹多久?程序开发者自行设置,如果开发者愿意,甚至可以让用户自行配置;如果你既是开发者又是用户,那我就不说啥了,随你的心情,随意配置吧!
读到这里,你是不是感觉ELEJ-CDC1总体脉络很清晰了呢!如果真的用心说是,那就好,你肯定可以独立调试ELEJ-CDC1了,而且,你还可以学习很多工程设计调试的方法。再说得犀利些:如果你仅仅是为了做一个ELEJ-CDC1,完全或者基本没有什么浓厚实物兴趣驱使你,你可能在调试时非常痛苦,甚至不能让ELEJ-CDC1正常运行。比如,你在调试ELEJ-CDC1时,你会彻彻底底地明白什么是数码管动态显示,为什么动态显示要用定时器中断,流量套餐为什么不直接用延时扫描的方法,数码管不同界面切换方法,I2C驱动如何写(后续我会仔细说),甚至蜂鸣器振荡频率如何选择……总之,我们喜欢电,我们可以在兴趣中提高能力和扎实掌握解决实际工程问题的方法。哇!说多了,不过这样的兴趣就是动力,可以很随意地步行10多里路去二手电子市场(偷笑)。
图1.10 “AL:–”界面
图1.11 “AL:on”界面
图1.12 “12Hr”和“24Hr”界面
图1.13 时间显示界面
图1.14 日期显示界面
图1.15 星期显示界面
看几张数码管的界面图片吧!如图1.10~1.15所示。
好吧,这个版本的ELEJ-CDC1制作就介绍到这里吧,其实如果想再加其他功能,真的有点难,流量套餐因为4K字节ROM空间的STC15F204EA放不下了,我就遇到此尴尬,不然ELEJ-CDC1最后一位本来打算用作“℃”显示的数码管就不会没用上,我的代码中,数码管段码就没有全部放在code内,否则连闹钟功能也没了。反正我们以后会让ELEJ-CDC1升级的!
相关源程序可以到qq群657864614进行下载!
新店开张,为了提升人气,即日起将开启前所未有的优惠力度,相当于免费送了!商品限购,先买先得!所有商品均可以无理由退换,请放心购买!一个属于电子工程师的专属淘宝店,总有一款适合你:首页-电子工程师小李-淘宝网
友情提醒: 请添加客服微信进行免费领取流量卡!
QQ交流群:226333560 站长微信:qgzmt2
原创文章,作者:sunyaqun,如若转载,请注明出处:https://www.dallk.cn/24617.html