时间:2024-08-31
孙凤乾,郑太恒,刘海英,刘大鹏
齐鲁工业大学 (山东省科学院) 电气工程与自动化学院,济南 250353
数字时钟与机械时钟相比,有着定时准确、观察直观、成本低廉、使用寿命长等诸多优点[1]。进入21世纪以来,不断发展的高新技术带来了电子设备等领域更进一步的突破和发展。
目前主流的数字时钟设计,主要有通过小规模的集成电路实现计时效果、使用专用的电子钟芯片配合外围电路,或者用单片机作为主控制器实现等[2]。其中使用小规模的集成电路,在后续的功能扩展上困难且设计复杂。使用专用的电子钟芯片,不仅价格昂贵,而且维护困难。而使用单片机来完成,通过控制单片机定时计数器就可以达到时、分、秒的计数[3],不仅设计简单方便,而且编程控制灵活,成本也更低、且更易维护[4]。
单片机是当下主流的小型电子设备的核心,其自诞生以来便以体积小、面向控制、高性价比等优点在工控领域扮演着重要角色[5]。当前单片机正向着低噪声、高可靠性、大容量等方向发展并逐渐成为了研究的重点[6]。
在本次设计中,采用STC89C51系列单片机作为主控制器芯片,可以提升整体的计算性能和功能性,同时具备价格低廉、运算速度快、抗干扰能力强的优点[7]。采用内部实现的方式完成数字时钟的计时,设置了复位电路和外置的物理按键增加实用性,其中键盘是一组开关的组合,是单片机中最常见的输入设备之一[8]。最后采用数码管来实现时钟的时间效果显示,具备低功耗、寿命长、体积小、显示内容丰富、价格低、接口控制方便等优点[9]。在软件程序设计中,使用Keil C51软件进行单片机的C语言编程,代码生成效率高,作为项目开发极其理想[10]。
本次时钟设计的单片机主控制器,使用STC89C51,然后设置电源、复位、晶振、数码管、指示灯、按键等模块完成功能。
系统结构框图如图1所示。
图1 系统结构框图
设计核心是用单片机作为主控制器和内部时钟电路;电源模块提供能量用以驱动时钟系统的运行;晶振电路和复位电路分别用来辅助产生时钟信号和使系统复位;数码管驱动模块使得系统可以从视觉上正常显示时间;指示灯模块保证系统在切换时制时有一个清晰明了的提示效果;按键模块是为了系统可以正常的调时和归零。
相比于传统的数字时钟,该设计可以通过控制按键对时钟实现灵活的调时和复位功能,而数码管可以使时钟拥有更好的显示效果。
51系列单片机是目前最为广泛使用的几种单片机之一,具有结构简单、易于操作、功能完备的特点,在工业控制领域占有重要位置。其拥有强大的运算能力和实用性,易于编程,配合软件程序可以实现极其丰富的效果。
为了让时钟产生相应的时钟信号,需要设置晶振电路,从而完成对于时间的计时和时分秒的累加,这是时钟最基础的功能。
在本次设计中,采用内部时钟实现方法实现时钟信号。这样做的好处是可以减少芯片的使用,节约成本,通过单片机内部的定时计数器就可以达到时钟的计时效果。
其原理如图2所示。
图2 STC89C51内部时钟电路
核心原理在于激发单片机内部的振荡电路,具体方法是在芯片的XTAL1(18)和XTAL2(19)两个引脚上加入相应的晶振来产生一个时钟信号。
而加入一个电容的作用,则是使芯片在正常工作时频率稳定,从而使系统整个工作平稳快速。
设置复位电路的目的,一是为了给主控制器芯片提供一个默认的初始运行环境,二是当时钟系统的时间显示出现问题时,可以通过简单的复位,来重置系统的时间。
复位电路有多种实现方法:比如设置专用的电路来完成复位功能;或是通过物理方式,也即是通过触发相应的实体按钮来产生一个电平信号,实现复位。本次设计的复位电路部分,采用第一种方法实现。
本方法中,系统的复位由独立的复位电路来完成。方法是设置一个带电容的独立电路,当电路正常运行时,电容会产生充放电过程,这就会产生相应的电平信号,从而实现所需要的复位效果。
本次设计在最终的时钟时间视觉显示上采用了外接数码管的方式,其可以实现极其丰富的显示效果。
数码管采用直流驱动的方式,对于数码管的每一个独立的视觉显示部分,都单独划分一个单片机的输入/输出口来控制,因此需要外接一个驱动芯片。
采用74HC573芯片做为数码管驱动芯片,它通过内部的缓存器来实现对信号的输入和输出,可以加强数码管的视觉显示效果。
它的工作原理如下:
当芯片开始工作的时候,SCK上升沿接受到电平信号,然后芯片将相应的数据输入到芯片内部的位移缓存器,然后从输出接口输出,从而完成一个运行周期。
数码管驱动电路如图3所示。
图3 数码管驱动电路
指示灯模块主要包括LED和限流电阻。LED显示的优点在于其物理性能可靠,可以在很大程度上防止摔落和冲击造成的影响,且LED模块的工作电压低,需要的工作电流小,运行稳定可靠。
LED显示电路如图4所示。
图4 LED显示电路
物理按键采用了独立按键的接法。该方法主要是利用单片机输入/输出口所接受到的电平信息来判定物理按键是否被按下,然后再调用相应的程序。
同时考虑到因按键而导致的电平不稳定现象,要对按键电路模块做去抖动处理。常用的有硬件去抖动和软件去抖动,前者通过外加电路实现,后者则是通过内置程序来产生一个延迟处理,通过延迟来屏蔽电平信号不稳定而对整个系统产生的影响。
本次设计中,采用软件去抖动的方法来使系统更加稳定。方法是通过内置程序来产生一个延迟,通过延迟来屏蔽电平信号不稳定对整个系统产生的影响。
其实现方法是通过软件程序来监测按键的输入输出口,当监测到有低电平通过的时候,先延时一段时间,待延时结束后重新检查该接口的电平值,若数值为1,则表明该次触发为无效信息,可以屏蔽,否则视为正常操作,从而调用相应的程序。
软件程序设计的主要任务是,在完成整体的硬件设计的基础上,为了完成或达到最终想要的系统效果和功能,或是为了将系统的各个硬件部分组成一个整体,从而从软件层次上对系统进行控制和操作的时候,我们需要设置一段或若干段程序。通过这些程序来协助我们分配、划分和管理整个系统的各种硬件资源和软件资源,从而统筹系统的各个模块,将系统的所有硬件部分连成一个整体,从而实现我们需要或预期的效果。
软件程序设计如图5所示。
图5 软件程序流程图
在软件程序设计中,使用了Keil C51软件进行单片机的C语言编程。该软件提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,简单易用。
在代码编写上,因为使用单片机内部的定时器计时,所以先要设计一个主程序,用于初始化定时器。然后在单片机内部存储器分别设置三个字节,存放时钟的时、分、秒信息。
利用定时器与软件结合实现1 s定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将时字节清零。同时因为加入了物理按键,所以当按键被触发后,系统也会执行上述操作。
在本次系统调试与仿真中,需要使用仿真软件来完成工作,本次设计选用软件proteus。
使用软件仿真的优势在于可以提前确定系统的最终运行状况,从而检验系统方案的正确性和可行性。如果系统在设计上存在不足,也可以提前排查和修复,从而极大的节省硬件资源。
在仿真软件操作上,先在系统界面选择相应的电路元器件并连接组成电路,完成整个电路后,点击开始按钮进行仿真。
当然,在这个过程中还需要将相应的电路程序写入其中,最后加载,否则系统是无法运行的。
因为在软件程序设计时使用的C语言,所以需要先将C语言程序进行编译以生成需要的.hex文件,将这个文件导入proteus,然后等待运行结果并由此判断系统设计的正确性。
最终仿真结果如图6所示。
图6 系统仿真结果
本设计以单片机为核心,针对传统的数字时钟在设备构成、走时效率和误差等问题上进行了改进,在实现了和传统的数字时钟相同的计时效果的基础上,整体设计更加简单、功能性更加丰富。依靠软件编程和物理按键,实现了对时钟更加灵活的调时和复位设置,独立的显示模块也使得时钟的视觉效果更好。
在本次设计中,依托于单片机内部的定时计数器,可以高效率的实现时钟系统正常的计时效果,未来可以考虑通过加入独立的时钟芯片,来对系统的时间精度进行进一步的升级。
在时钟的功能性上,除了已经完成的传统的计时效果外,我们还可以根据实际场景下的具体要求,对电子时钟加入定点闹钟提示或者秒表等功能,进一步增加数字电子时钟的实用性和功能性。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!