欢迎来到天天文库
浏览记录
ID:32446217
大小:157.19 KB
页数:6页
时间:2019-02-04
《基于单片机的数字电子钟的设计与制作》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、维普资讯http://www.cqvip.com第26卷第5期大庆师范学院学报Vo1.26No.52006年10月JOURNALOFDAQINGNORMALUNIVERSITYOctober.20o6基于单片机的数字电子钟的设计与制作卢超(陕西理工学院物理系,陕西汉中723000)摘要:该电子钟使用12MHZ晶振与单片机AT89C51相连接,通过软件编程的方法实现了以24小时为一个周期同时显示小时,分钟和秒的要求,并在计时过程中具有报时功能,当时间到达整点进行蜂鸣报时。该电子钟设有三个按键:s1,s2和s3键,使之具备了校时、定时功能。关
2、键词:电子钟;51系列单片机;AT89C51;晶振作者简介:卢超(1979一),男,陕西汉中人,陕西理工学院物理系教师,主要从事电子技术、测控方面的研究。中图分类号:TP271文献标识码:A文章编号:1006—2165(2006)05—0048—06收稿日期:2006—07—15数字电子钟设计与制作可采用数字电路实现,也可以采用单片机来完成。若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。若用单片机来设计制作完成,由于其功能的实现主要通
3、过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计与制作中采用单片机AT89C51,它是低功耗、高性能的CMOS型8位单片机。片内带有.4KB的Flash存储器,且允许在系统内改写或用编程器编程。另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。1硬件电路的设计该电子钟是以单片机AT89C51为核心来完成的,在硬件电路中采用P0口作为6位LED数码管的驱动接口,这是由于Po口输出驱动电路工作处于开漏状态,它
4、的驱动能力强,故只需外接上拉电阻便可以把LED数码管点亮。因为共阴的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故该电路中的6位LED数码管均用共阴极的数码管。在6位LED显示时,为了简化电路,降低成本,6个LED显示器共用一个8位的I/O,6位LED数码管的位选线分别由相应的P2.0~P2.5控制,而将其相应的段选线并联在一起,由一个8位的I/O口控制,即Po口。在电路中还设有三个按键Sl,S2和S3用来进行定时,选时和调时的选择,他们分别与单片机的P1.2,P1.4,P1.6口相连接。P1.7口与蜂
5、鸣器相连接。2软件程序的设计考虑到实用性,在该电子钟的设计中修改定时或调整时间时采用了闪烁,而且可以定时20组闹钟。在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一组固定单元用来存储计数的秒,分,时以及20组定时时间的序号等。在显示程序段中主要进行了闪烁的处理,采用定时器中断置标志位,再与位选相互结合的方法来控制调时或定时中的闪烁。时,分,秒的显示则是用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化。初始化之后,用中断方式对其计数,计数的同时采用了定时器比较的方法,比较当前计数时间与定
6、时时间是否相等,若相等则将闹铃标志位置数。由于定义了20组定时闹钟,在这里采用中断20次,每中断一次比较一组闹钟,避免了一次比较20组中断时间过长,影响下次中断时间。显示之后查询闹铃标志位是否与前面所置数相等,若相等则响铃。为了避免响铃影响显示,采用了每显示几屏以后在显示程序中出现脉冲,驱动喇叭,不会影响显示。之后用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的48维普资讯http://www.cqvip.com定时,选时或调时程序段。对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下
7、去。程序流程图见图I所示。图I.程序流程图3硬件电路与程序清单硬件电路如图2所示,相关程序附后。4性能及误差分析该电子钟设有三个按键:s1,s2和s3键。按s1键进行校时,可以分别对时及分进行单独校时,使其校正到标准时间,校时时需要校正哪一位哪一位就闪烁。按s2键是对闪烁位进行加一或返回的操作。按s3键调整定时时间和定时组数,需要调整哪一位哪一位就闪烁,该电予钟最多可定时20组闹钟。经测试该电子钟在一天的累计误差约为0.1秒。该电子钟的误差主要由晶振自身的误差所造成,晶振的误差约为0.0001~0.000001。在软件的编程过程中所产生的
8、误差比较小,在重装初值的过程中大概需要约8个机器周期,但在程序开始对定时器赋初值时,多加了8个机器周期,减小了这方面的误差。另外在中断的过程中,只会在第一次计时时产生时间的偏移,而它所产生累计
此文档下载收益归作者所有