- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计任务
设计一个定时闹钟
设计要求与实现思路
设计要求:
1) 能显示 时时—分分—秒秒。
2) 能够设定定时时间、修改定时时间。
3) 定时时间到能发出报警声或者启动继电器,从而控制电器的启停。
实现思路:
电子钟设计与制作既可以采用数字电路来实现,也可以采用单片机来完成。
方案一:采用数字电路来实现,所设计的电路相当复杂,大概需要十几片数字集成块,其功能主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。
方案二:采用单片机来实现,由于其功能的实现主要通过软件编程来完成,不仅降低了硬件电路的复杂性,而且成本也降低不少。
最终方案:采用单片机的方式来实现定时闹钟。
硬件系统设计
1) 元件的选择
a:单片机的选用
由于传统的8031单片机内部没有存储器,需要另扩展外部程序存储器,系统构成较为复杂. 在众多的51系列单片机中,要算 ATMEL 公司的8C51更实用,
b:数码管的选用
为减少连接线路的复杂性,在此选用八位一体的共阴数码管,八位一体数码管在内部已将段码相连,位选线则相互独立,可以很方便地外接为动态显示电路。
LED数码管Proteus仿真图:
2) 硬件电路
定时闹钟以单片机80C51为核心来完成,使用12MHZ晶振与单片机80C51相连接,通过软件编程的方法实现了以24小时为一个周期同时显示小时、分钟和秒的要求,并在计时过程中具有报时功能,当时间到达整点进行蜂鸣报时。
在硬件电路中采用P0口作为6位LED数码管的驱动接口,这是由于P0口输出驱动电路工作处于开漏状态,它的驱动能力强,故只需外接上拉电阻便可以把LED数码管点亮。因为共阴的LED数码管它的驱动电流是分开的,在单片机进行动态扫描的时候不会影响彼此的电流,故该电路中的LED数码管采用共阴极的数码管。6位LED数码管的位选线分别由相应的P2. 0~P2. 5控制,相应的段选线由8位的I/O口控制,即P0口。
该电子钟设有四个按键: S1、 S2、S3和S4键(由上至下依次为S1、S2、S3、S4),他们分别与单片机的P1.1、P1.2、P1.3和P1.4口相连接。
S1、S2、S3和S4键Proteus仿真图如下:
硬件电路Proteus仿真图如下:
软件系统设计
考虑到实用性,在该电子钟的设计中修改定时或调整时间时采用了闪烁。在编程上,首先进行了初始化定义了程序的入口地址以及中断的入口地址,在主程序的开始定义了一个固定单元用来存储计数的秒、分、时。在显示程序段中主要进行了闪烁的处理,采用定时器中断置标志位,再与位选相互结合的方法来控制调时或定时中的闪烁。时、分、秒的显示则是用了软件译码(查表)的方式,再用了一段固定的程序段进行进制转化。初始化之后,用中断方式对其计数,计数的同时采用了定时器比较的方法,比较当前计数时间与定时时间是否相等,若相等则将闹铃标志位置数。为了避免响铃影响显示,采用了每显示几屏以后在显示程序中出现脉冲,驱动喇叭,不会影响显示。之后用查询方式对按键进行判断,若有键按下,则进行软件延时消抖,避免了抖动引起的干扰,执行相应的定时,选时或调时程序段。对当前时间或定时时间修改后又返回到最初的显示程序段,如此循环下去。
程序流程图如下:
程序实现如下:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP TIME
*****MAINPROGRAM*****
ORG 0100H
MAIN:MOV SP,#50H
MOV 20H,#00H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#01H
MOV 24H,#01H
MOV 25H,#00H
MOV 30H,#00H
MOV 31H,#00H ;
MOV 32H,#00H
MOV 33H,#00H ;
MOV 34H,#00H
MOV 35H,#00H
MOV 36H,#01H
MOV 37H,#00H
MOV 38H,#01H
MOV 39H,#00H
MOV TMOD,#01H
MOV TH0,#03CH
MOV TL0,#0B0H
MOV IE,
SETBTR0
MOV R2,#14H
MOV P2,#0FFH
LOOP: LCALL TIMEPRO
LCALL DISPLAY1
J
文档评论(0)