24小时制时、分、秒计时器设计报告.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
时钟仿真实验报告 班级 电子0934 姓名(学 号) 周志武(21) 雷维(19) 蒋志伟(28) 杨琼(22) 项目分工 方案总体设 计、程序集 成、报告撰写 时钟中断计 时模块函数 设计 显示模块函 数设计 仿真电路设 计及调试 一、任务及要求 用51单片机设计时、分、秒计时器,具体要求如下。 1、 具有时、分、秒计时功能和 8位数码管显示功能,显示格 式为:“时—分—秒”; 2、 用Proteus设计仿真电路进行结果仿真; 3、 4人组成设计小组完成,小组成员有明确分工,1人负责总 体方案设计及报告撰写,2人负责功能模块函数设计,1人负责仿真 电路设计及调试。 4、 完成程序设计、仿真电路设计、结果仿真,完成报告并上 传空间课程栏目中的课程设计报告子栏目中。 二、设计方案: 1、总体方案构思:通过使用定时计数器以及中断溢出, 50ms中断溢 出一次,溢出20次为1S。所以当定时溢出计数变量temp自加20次 时计数变量miao自加1,直到加到第60次时miao(秒)清零,并且计 数变量fen自加1,直到fen加到第60次时,fen(分)清零且shi(时) 自加1,直到shi加到第24次时,shi(小时)清零。最后经译码后, 通过扫描显示模块程序将得到的时钟结果以动态显示的方式显示在 8 位一体共阳数码管上。 2、 程序功能模块说明:此时钟程序包括时钟中断计时、延时函数、 显示函数等模块 3、 仿真电路构成:此次时钟程序的仿真电路的设计较简单,硬件部 分主要有AT89C52单片机芯片一块、八位一体LED共阳数码管一块、 8个普通电阻以及8个逻辑非门。其中8个普通电阻用作P0 口上拉 电阻。另外,由于数码管是共阳的,而实际程序中的位码是以低电平 有效的,所以八个逻辑非门用来取反单片机输出的位码。 4、 时钟计时程序设计思想分析:采用定时计数器 TO,工作方式1, 定时50ms再对定时溢出中断次数计数,若溢出了 20次则时间为1 秒! 5、函数模块程序流程图: 初始化定义定时计数器 及其中断初 始化函数 初始化定义 定时计数器 及其中断初 始化函数 文件包含 常量定义 变量定义 数据表格定义 设置定时器工作方式 (TMOD) 定时器赋初值(THx、TLx) 开总中断(EA=1) 开定时器计数中断(ETx=1) 启动定时器(THx=1)  void timer0i nit(void) { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; } 延时函数 延时函数通式 void delay( uint n) uint i,j; for(i=n;i0;i--) for(j=124;j0;j--); 定时计数 器中断函 数 重装初值,开始计数 对溢出中断计数,并判断是否 为20次,若是则temp清零秒 加1;判断秒是否加到 59,若 秒加到59,则秒清零分加1 ; 判断分是否分是否加到 59,若 分加到了 59,则分清零时加1 ; 判断时是否加到23,若时加到 23,则时清零。 显 示 函 数 秒输出各位位码 秒输出各位段码 分输出十位位码 分输出十位段码 时输出十位位码 时输出十位段码 P1=0x7f; P0=table[miao%10]; delay(5); // 亮 5ms P1=0xbf; P0=table[miao/10]; delay(5); // 亮 5ms P1=0xdf; P0=0xbf; P1=0xef; delay(5); // P1=0xf7; delay(5); // P1=0xfb; delay(5); P0=table[fe n%10]; 亮5ms P0=table[fe n/10]; 亮5ms P0=0xbf; delay(5); ]; 主函数 P1=0xfd; P0=table[shi%10 delay(5); // 亮 5ms P1=0xfe; delay(5); // 亮 5ms P0=table[shi/10]; { TH0=(65536-50000 )/256; TL0=(65536-50000) %256; if(temp==20) )/256; TH0=(65536-50000 %256; TL0=(65536-50000) if(temp==20) temp=0; if(miao==59) {miao=0; if(fen==59) {fen=0; if(shi==23) shi=0; else shi++; } else fen++; } else miao++; } else temp++; } 调用初始化函数对定时计 数器进行初始化 调用显示函数显示时间 void ma in (

文档评论(0)

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

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

1亿VIP精品文档

相关文档