《数字时钟课程设计论文》.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一、数字时钟的基本原理 数字时钟是用数字集成电路组成,用数码管显示的一种现代化计数器。数字时钟实际上是一个对标准频率(1Hz)进行计数的计数电路。振荡器产生的时钟信号经过分频器形成秒脉冲信号,秒脉冲信号输入计数器进行计数,并把累计结果“时”、“分”、“秒”的数字显示出来。秒计数器电路计满60后触发分计数器电路,分计数器电路计满60后触发时计数器电路,当计满24小时后又开始下一轮的循环计数。由于计数的起始时间不可能与标准时间(如北京时间)一致,故需在电路上加一个校时电路可以对分和时进行校时。 二、数字时钟的硬件设计 1、数字时钟的电路原理图 2、原器件清单 序号 器件名称 参数 数量 1 USB座 无 1 2 USB线 无 1 3 双排针(2) 无 1 4 跳帽 无 3 5 电容 0.1uF 7 6 LED灯 无 1 7 电阻 2K 1 8 40针座 无 1 9 STC89C51 无 1 10 晶振 12MHZ 1 11 电容 20pF 2 12 复位键 无 1 13 电阻 10K 1 14 蜂鸣器 无 1 15 三极管9015 无 9 16 电阻 330 9 17 16针座 无 1 18 MAX232 无 1 19 单排针(5) 无 1 20 按键 无 4 21 单排针(3) 无 1 22 4位LED 无 2 23 电阻 4.7K 8 三、数字时钟的软件设计 1、程序流程图 开始 清显示缓冲区 初始化定时计数器 赋时钟初值 开定时器 调整时间 数码管显示当前时钟值 2、源程序 #include reg52.h //定义按键端口 sbit key_1=P3^0;//用于小时增加 sbit key_2=P3^1;//用于分钟增加 sbit key_3=P3^2;//用于分钟减少 sbit key_4=P3^3;//用于秒钟增加 //定义所需变量 unsigned char shi=12,fen=00, miao=00;//定义十分秒并初始化为12:00:00 code unsigned char tab[]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};//定义共阳极数码管编码表 unsigned char sbuff[8];//定义数据缓冲数组 void init() //定义初始化函数对定时器0和定时器1进行初始化 { TMOD=0x11; //定时器0和1均为模式1 ET0=1;//开定时器0中断 ET1=1;//开定时器1中断 TH0=0xd8; TL0=0xf0; //定时10ms TH1=0xfc; TL1=0x18;//定时0.1ms TR1=1;//T1开始计时 TR0=1;//T0开始计时 EA=1;//开总中断 } //显示数值写入缓冲区函数 void displayset() { sbuff[7]=tab[(shi/10)];//显示小时的十位 sbuff[6]=tab[(shi%10)];//显示小时的个位 sbuff[5]=0xbf;// 显示-号 sbuff[4]=tab[(fen/10)];//显示分钟十位 sbuff[3]=tab[(fen%10)];//显示分钟个位 sbuff[2]=0xbf;//显示-号 sbuff[1]=tab[(miao/10)];//显示秒钟十位 sbuff[0]=tab[(miao%10)];//显示秒钟个位 } //延时子函数 void delay(unsigned char z) { while(z--) {unsigned char j; for(j=0;j123;j++); } } void key_scan() { if(!key_1) //按键1去抖以及动作 { delay(100); if(!key_1) { shi++; if(shi==24) shi=0; //正常时间 小时 加1 displayset(); } } if(!key_2) //按键2去抖以及动作 { delay(100); if(!k

文档评论(0)

zhuslong + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档