单片机课程设计实验报告--电子时钟.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文档。上传文档
查看更多
单片机课程设计实验报告--电子时钟

单片机课程设计 实验报告 电 子 时 钟 姓名: 学号: 班级:自动化0801 指导老师: 电子时钟 实验目的 学习8051定时器时间计时处理、按键扫描及LED数码管显示的设计方法。 设计任务及要求 利用实验平台上4个LED数码管, 设计带有闹铃功能的数字时钟,要求: 在4位数码管上显示当前时间。显示格式“时时分分” 由LED闪动做秒显示。 利用按键可对时间及闹玲进行设置,并可显示闹玲时间。当闹玲时间到蜂鸣器发出声响,按停止键使可使闹玲声停止。 拓展:使数字时钟的闹铃为音乐。(电子音调发生器) 硬件设计 显示模块 为了将时间在LED数码管上显示,可采用静态显示法和动态显示法,由于静态显示法需要数据锁存器等较多硬件,可采用动态显示法实现LED显示。方法是将所有位的段选线相应并联,由一个8位I/O口控制,从而形成段选线的多路复用,同时各位的公共端分别由相应的I/O线控制,实现分时选通。 硬件电路图如下,图中10k电阻起到限流作用;三极管起到驱动数码管的作用。若不使用三极管,数码管发光微弱。 闹铃模块 闹铃声由交流蜂鸣器产生,电路图如下。当P1.7输出蜂鸣器的音 整体硬件电路图 软件设计 计时模块 利用单片机定时器0完成计时功能。定时器0计时中断程序每隔1ms中断一次并当作一个计数,每中断一次计数加1,当计数1000次时,则表示1s到了,秒变量加1。当秒变量达到60时,秒变量清零同时分变量加1。分变量达到60时,分变量清零同时时变量加1。当时变量达到24时,时变量清零。 由于实验要求由LED闪动做秒显示,因此每隔0.5s即计数500次时,P1^1(驱动LED灯)取反一次,从而实现LED灯闪动一次为1s,秒变量加1。 该模块流程图如下: 显示模块 为在各位LED上分别显示不同的字符,需要采用循环扫描显示的方法,即在某一时刻只选通一条位选线,并输出该位的字段码,其余位则处于关闭状态。可见,各位LED显示的字符并不是同时出现的,但由于人眼的视觉暂留及LED的余辉,可以达到同时显示的效果。程序流程图如下: 采用动态显示时,需要确定LED各位显示的保持时间。由于LED从导通到发光有延时,时间太短会造成发光微弱,显示不清晰;如果显示时间太长,则会占用较多的CPU时间。 按键判断及处理程序 按键的闭合与否,反映在电压上就是呈现出高电平或低电平。由于机械触点的弹性作用,在闭合及断开的瞬间,电压信号伴随有一定时间的抖动,抖动时间与按键的机械特性有关,一般是5~10ms。为了保证CPU确认一次按键动作,既不重复也不遗漏,必须消除抖动的影响。 通过软件消除抖动的方法为:在程序执行过程中检测到有按键按下时,调用一段延时(约10ms)子程序,然后判断该按键的电平是否仍然保持在闭合状态,如果是,则确认有键按下。 按键判断流程图如下: 按键处理流程图如下: 音乐响铃模块 音乐闹铃程序:单片机演奏一个音符,是通过引脚,周期性的输出一个特定频率的方波。这就需要单片机,在半个周期内输出低电平、另外半个周期输出高电平,周而复始。众所周知,周期为频率的倒数,可以通过音符的频率计算出周期;演奏时,要根据音符的不同,把对应的半个周期的定时时间初始值,送入定时器,再由定时器按时输出高低电平。 我所使用的单片机音乐演奏程序中,包括了两个数据表,其中存放了事先算好的各种音符频率所对应的半周期的定时时间初始值。有了这些数据,单片机就可以演奏低音、中音、高音,个八度共个音符。演奏乐曲时,就根据音符的不同数值,从表中找到定时时间初始值,送入定时器即可控制音调。 乐曲的数据,也要写个数据表:表中每三个数字,说明了一个音符,它们分别代表:第一个数字是音符的数值第二个数字是123之一,代表低音、中音、高音第三个数字是时间长度,以半拍为单位。乐曲数据表的结尾是三个0。 音调 X 音调 X 音调 X 低音1 F921 中音1 FC8F 高音1 FE47 低音2 F9E1 中音2 FCEE 高音2 FE77 低音3 FA8C 中音3 FD44 高音3 FEA2 低音4 FAD8 中音4 FD6B 高音4 FEB6 低音5 FB68 中音5 FDB4 高音5 FEDA 低音6 FBE9 中音6 FDF4 高音6 FEFA 低音7 FC5B 中音7 FE2D 高音7 FF16 程序流程图如下: 主函数流程图 程序清单 #include reg52.h #define uchar unsigned char #define uint unsigned int uchar code segcode[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共阳数码管0~9 uchar code select[]={0x0e,

文档评论(0)

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

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

1亿VIP精品文档

相关文档