数字电子钟说明书汇.doc

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数字电子钟说明书汇

数字电子钟说明书 姓名: 学号: 指导老师: 时间:2011年12月7日星期三 数字电子钟说明书 一、电子钟功能介绍 可调整运行的电子钟具有三种工作状态:“P.”状态、运行状态、调整状态。 (1)、“P.”状态,依靠上电或者复位键进入,在此状态下,按B、C、D键均无效,按A键有效,进入运行状态; (2)、运行状态,按奇数次A键进入,在此状态下,按B、C、D键均无效,只有按A键有效,按下A键后,退出运行状态,进入调整状态; (3)、调整状态,按偶数次A键进入,在此状态下,按B、C、D键均有效,如按下A键,则推出调整状态,进入运行状态;B、C、D分别为调时、分、秒,分别使之加1;调整后,按A键退出调整状态。 二、实现时钟计时的基本方法 (1)计数初值计算: 把定时器设为工作方式1,定时时间为50ms,则计数溢出20次即得时钟计时最小单位秒。 假设使用T/CO,方式1,50ms定时,fosc=12MHz。 则初值X满足 (2)采用中断方式进行溢出次数累计,计满20次为秒计时(1秒); (3)从秒到分和从分到时是通过累计加和数值比较实现。 三、电子钟的时间显示 电子钟的时钟时间在六位数码管上显示,因此,在内部RAM中设置显示缓冲区共8个单元。 LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 37H 36H 35H 34H 33H 32H 31H 30H 时十位 时个位 分隔 分十位 分个位 分隔 秒十位 秒个位 四、电子钟的启、停及时间调整 电子钟设置4个按键,通过程序控制来完成电子钟的启、停及时间调整。 A键控制电子钟的启、停; B键调整时; B键调整分; B键调整秒。 五、电子钟电路仿真图: 六、电子钟元件清单: 元件名称 规格型号 数量(个) 单片机 AT89C52 1 显示驱动芯片 74LS245 2 8位一体的共阳LED 显示器 7SEG-MPX8-CA-BLUE 1 晶振 12MHz 1 无极电容 1nF 2 有极电容 1n 1 按键 BUTTON 5 电阻 1K 1 电阻 10K 4 限流电阻 10K 8 排阻 RESPACK-8 1 万能板 小 1 七、电子钟程序流程框图 1、主程序流程图: 2、按键子程序流程图 3、中断服务子程序流程图 4、显示子程序流程图 八、电子钟程序清单 #includereg52.h unsigned int start; unsigned int count=0; unsigned char fg; unsigned char c[]={ 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; unsigned char sec,min,hour; sbit sec1=P2^7; sbit sec2=P2^6; sbit min1=P2^4; sbit min2=P2^3; sbit hour1=P2^1; sbit hour2=P2^0; sbit a=P2^5; sbit b=P2^2; sbit key_A=P1^0; sbit key_B=P1^1; sbit key_C=P1^2; sbit key_D=P1^3; void delay(unsigned int t) { for(t;t0;t--); } void display() { P2=0xff; P0= c[sec%10]; sec1=0; delay(15); sec1=1; P0=c[sec/10]; sec2=0; delay(15); sec2=1; P0=c[min%10]; min1=0; delay(15); min1=1; P0=c[min/10]; min2=0; delay(15); min2=1; P0=c[hour%10]; hour1=0; delay(15); hour1=1; P0=c[hour/10]; hour2=0; delay(15); hour2=1; P0=0x40; a=0; delay(10); a=1; P0=0x40; b=0; delay(10); b=1; } void Intl() { unsigned char ts; P0=0xf3; P2=0xfe; for(ts=0;ts12;ts++) delay(9999); sec=0,min=0,hour=0; } void keyA() { if(key_A==0) {display(); delay(30); if(key_A==1

文档评论(0)

liwenhua00 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档