电子闹钟设计-毕业设计.doc_第1页
电子闹钟设计-毕业设计.doc_第2页
电子闹钟设计-毕业设计.doc_第3页
电子闹钟设计-毕业设计.doc_第4页
电子闹钟设计-毕业设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

电子闹钟设计学生:XXX 指导老师:XXX内容摘要:此系统的时钟电路设计是采用的内部方式,即利用芯片内部的振荡电路。系统功能要求电子时钟一运行就从12点00分00秒开始计时,并在数码管上显示时、分、秒当前值。基本工作原理:AT89C51利用定时器每百分之一秒对百分之一秒寄存器的内容加一,并依次对秒、分、小时寄存器的内容加一;7SEG-MPX6-CA数码管动态显示时、分、秒的当前值。本课题要求实现的功能比较简单。此系统键的输入是通过独立式键盘来完成的,编程容易易懂,结构简单,实现起来方便。由P3.2、P3.3、P3.4作为控制端,构成独立式按键接口方式。百分之一秒的控制由AT89C51的定时器T0完成;在闹钟方面,通过周期检测闹钟按键和按键标识位来控制开启闹铃服务程序。在闹铃设置及正常时间设置时为避免时间停止,所以才用定时器计时。我设置的闹铃是用脉冲的形式驱动扬声器。关键词:扬声器 AT89C51 定时器Electronic alarm clock designAbstract: The system clock circuit design is the internal way, namely using chip inside of the oscillating circuit. System function requirements electronic clock from 12 points a run in points at timing starts seconds, and in the digital tube displayed on the present value, minutes and seconds. Basic working principle: AT89C51 use timer each one percent to one percent seconds of registers second content plus one, and in turn, minutes and hours of seconds the contents of a register with a; 7 SEG-MPX6-CA digital tube dynamic shows, the current value of the minutes and seconds. This topic request function of the realization of the quite simple. The system of the key input is through the independent type keyboard to complete programming easy to understand, the structure is simple, easy to realize. By P3.2, P3.3, P3.4 as control terminals, constitute independent type button interface way. One percent of the second timer of by AT89C51 prearcing control completion; In the alarm clock, through the cycle detection alarm clock button and buttons mark a to control open alarm service program. In the alarm set and the normal time set to avoid time to stop, so only use timer timing. I set the alarm is to use the form of pulse drive the speaker. Keywords: reproducer AT89C51 timer 目 录前言11 概述11.1 应用知识简介11.1.1 51单片机11.1.2 汇编语言12 设计基本原理简介22.1 CPU的分时复用22.2 检测开关时需要注意的问题22.4 设计要求及说明22.4.1 电子数字钟实现的主要功能22.4.2 其他设计说明32.5 整体设计方案及流程32.5.1 电路设计32.5.2 系统软件总流程设计42.5.3 主程序流程图42.5.4 显示电路52.5.5 按键控制电路53 程序显示状态63.1 正常显示状态63.2 时钟调整状态64 调试过程及结果分析总结75 结束语8附录9参考文献1314电子闹钟设计前言电子闹钟在科学技术高度发展的今天,千家万户都少不了它,所以很多家庭个人都需要有一个电子闹钟,为人们提供报时方便,但普通电子闹钟不够方便实用。这个设计给出了一种以51芯片的电子闹钟,从而给人们带来更为方便的工作与生活。现代的快节奏生活给人们的精神上带来了很大压力。如何排解或缓解这些压力已经成为很多人关心的问题。单片机电子闹钟是具发前闹钟创新性的系统,它代表了时代的发展趋势。本次设计的51电子闹钟,能随意设定走时起始时间。能指示秒节奏,即秒指示采用交直流供电电源。与石英钟不同的是,电子钟一般采用数码管等显示介质,因而必须以交流供电为主,以直流电源为后备辅助电源,并能自动切换。该设计主要包括:按键、显示程序单元部分,AT89S51单片机芯片、74HC245驱动LED显示电路,集成电路74HC245和LM386各1个,设计的51电子闹钟,该闹钟可由使用者自己设定一个时间,若想设置闹铃,应先按下复位按键,然后长时间按下设置按键,然后变为“00-00-00”,此时进入闹铃设置状态,设置方法跟上面一样,闹铃设置完后,下一步要设置当前时间,调整方法跳到第一步。这样设置好后,它就能按照主人的意思,定时的把你闹醒啦!1 概述1.1 应用知识简介 1.1.1 51单片机单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。作为嵌入式系统控制核心的单片机具有其体积小、功能全、性价比高等诸多优点。51 系列单片机是国内目前应用最广泛的单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51 系列单片机的发展又进入了一个新的阶段。在今后很长一段时间内 51 系列单片机仍将占据嵌入式系统产品的中低端市场。1.1.2 汇编语言 汇编语言是一种面向机器的计算机低级编程语言, 通常是为特定的计算机或系列计算机专门设计的。 汇编语言保持了机器语言的优点,具有直接和简捷的特点,其代码具有效率高实时性强等优点。但是对于复杂的运算或大型程序,用汇编语言编写将非常耗时。 汇编语言可以与高级语言配合使用,应用十分广泛。2 设计基本原理简介 数字钟的设计首先要保证其走时尽可能准确,其次再根据人们日常的使用习惯来设定其附加功能。 在设计中利用单片机定时计数器来完成走时并用两组输出口控制数码管来显示;通过编程向某一输出口输出方波实现报时及闹铃利用输入端口外接各种开关来完成对走时及显示的控制(如预置时间等)。2.1 CPU的分时复用单片机只有一个CPU,因此在一个时间内只能执行一条语句,要使单片机同时控制多个外部元。件(比如扬声器和数码管)就必须对单片机的CPU进行分时复用,让单片机在一小段时间内连续交替执行控制多个器件的语句,从表面上看,单片机便用一个CPU控制了多个元件。本次课程设计中对整点报时和闹铃功能的实现便用到了这个概念。2.2 检测开关时需要注意的问题对于用各种开关控制程序执行状态的程序设计中,需要注意实时地进行开关的检测,以确保一旦有开关动作,程序状态立即随之改变。此外,在用多个开关控制不同执行状态时,应注意设置开关检测的优先级以防止多个开关同时按下时出现错误。 2.3 系统资源分配与使用单片机有许多资源是有限的不能滥用,比如定时计数器T,外部中断等,在设计一个多模块程序时,要注意先做一个整体规划,把稀缺资源用在最需要用的地方。此外在有多个模块时,要注意模块间的数据传递,比如累加器A和进位标志C,在使用时要注意不能让前一个模块的数据对下一个模块产生不希望有的影响。在模块间的数据传递比较多时最好用固定的内部数据存储器,以避免冲突发生错误。2.4 设计要求及说明基于单片机电路,借鉴生活中常见的电子钟的功能,结合课本的要求使用汇编语言设计一个简单的电子钟系统。2.4.1 电子数字钟实现的主要功能 实现正常走时(秒分时进位)。能够预置时间和日期。具有闹铃及设定闹铃时间功能。走时可以调节。能够区分是否开启闹钟功能。2.4.2 其他设计说明 优先级:预置闹铃报时正常显示,即预置状态下闹铃、报时功能都无效。 预置功能通过主程序扫描实现。 时间改变通过定时实现。 用数码管(K0,K1)控制显示状态:00:时间,01:闹铃时间。 闹铃每次响一分钟。 闹铃使能由拨码开关1控制并实时显示。2.5 整体设计方案及流程2.5.1 电路设计 系统电路根据系统功能可知,需要六个数码管,一个扬声器,三个按键,由此结合单片机课程学习中对实验面板的了解,做出如下电路:图2.5.1-1 电路图如图,晶振频率12MHz,P0口的输出作为控制数码管的段控信号,数码管采用共阳接法(图中未标示);P1口作为数码管的位控信号输出端;扬声器由P3.0口控制,p3.2控制闹钟设置,p3.3控制小时设置,p3.4控制分钟设置。2.5.2 系统软件总流程设计 根据系统要求, 设计出系统软件总流程图如下。图2.5.2-2 系统软件流程图2.5.3 主程序流程图开始清显示缓冲区初始化定时计数器显示初值000000开定时器显示当前时钟值开始图2.5.3-3 程序流程图2.5.4 显示电路采用动态扫描方式,从左到右进行,显示缓冲区首地址为79H。因此各位显示器都扫过一遍之后,就返回监控程序。经过一段时间间隔后,再调用显示扫描程序。通过这种反复调用来实现LED显示器的动态扫描。程序图如下。0.1秒加11秒到了吗?开始时单元清0秒单元清00.1秒单元清0分单元清060秒到了吗?60分到了吗?24小时到了吗?秒加1分加1时加1装入初始值定时开始返回图 2.5.4-4 时钟程序流程图2.5.5 按键控制电路此系统键的输入是通过独立式键盘来完成的,编程容易易懂,结构简单,实现起来方便。如图由P3.0、 P3.2、P3.3、P3.4作为输入端,构成独立式按键接口方式。程序图如下:图2.5.5-5 按键之后驱动流程3 程序显示状态3.1 正常显示状态图3.1-1 正常显示状态图3.2 时钟调整状态其中秒位显示01 代表闹钟处于开状态 , 此时时钟正常计时,显示的是时钟设置时间,再按按键1(p3.2)可返回正常显示状态。图3.2-1 时钟调整显示图4 调试过程及结果分析总结主要问题在于语法错误,比如程序中堆栈时忘记对指针赋值和一些输入的错误调试时出现: 中断预置程序无法进行正常的加一程序。 计时进位有误,无法正常进位。 时间无法正常显示。 显示的数字不稳定,有许多干扰。由于无法调整到准确的定时初始值,计时一定时间后会出现走时不准的误差,而且没有放大电路,闹铃声音过小,其次,由于在闹铃响期间,走的程序数不一样,导致脉冲周期不一样,结果闹铃声音不好听。鉴于闹铃声音不好听,可考虑用蜂鸣器来实现 摆脱脉冲周期不一得难题。5 结束语在课程设计期间,在老师的教导下,在同学的帮助下,通过不断学习理论知识和参与实践,感觉自己的综合素质在很大程度上得到了提升,努力将自己塑造成为一个专业功底扎实、知识结构完善、适应能力强的合格大学生。我所学的专业是计算机科学与技术,我认为对于任何一名计算机相关专业的学生来说,光学好书本上的知识是远远不够的,学习是学生的天职,同样,它需要智慧,毅力和恒心,尤其是在当今这个快速发展的信息时代,更要求我们不断汲取新知识,学以致用,理论联系实际。这次课程设计,不仅让我们大开眼界,也是对以前所学知识的一个初审,从这次实习中,进一步巩固和深化了所学的理论知识,弥补了单一理论教学的不足,并为后续专业课学习和毕业设计打下了坚实的基础。对于我来说,收获最大的是方法和能力,那些分析和解决问题的能力。在整个课程设计的过程中,我发现我们学生在经验方面十分缺乏,空有理论知识,没有理性的知识,有些东西可能与实际脱节。总体来说,我觉得像课程设计这种类型的作业对我们的帮助是很大的,它需要我们将学过的相关知识系统地联系起来,从中暴露出自身的不足,以待改进。通过这次实习,加深了大家对本专业的了解及信心,可以提高我们的自身竞争力,让我们在未来社会中站稳脚尖。这次设计,我要感谢我们的XX老师,是他悉心教育和细心地指导使得我的这次课程设计取得成功。还要感谢学校老师和领导们给了我们能够把自己所学的知识与实际操作相结合的操作机会。附录:程序代码DisplayBuffer equ 30h;设置显示缓冲区的地址为30h-35h共6个字节 OneSecondCounter equ 39h;设置1秒计数器的地址,1秒计数器是用来计数1秒内计时器的中断次数Hour equ 3ah;设置小时计数器的地址Minute equ 3bh;设置分钟计数器的地址Second equ 3ch;设置秒计数器的地址ClockMode equ 20h.0;模式(正常走时/闹时)设置寄存器地址,值为0时正常走时,为1时闹时设定AlarmOnOff equ 20h.1;闹钟开启/关闭标志,为0关闭,为1开启AlarmTimeOn equ 20h.2;此位为1时表示闹时时间到DispHour equ 21h;设置小时显示寄存器的地址DispMinute equ 22h;设置分钟显示寄存器的地址DispSecond equ 23h;设置秒显示寄存器的地址AlarmHour equ 2eh;设置闹时小时计数器的地址AlarmMinute equ 2fh;设置闹时分钟计数器的地址AlarmSetKey bit P3.2;闹钟设置键MinuteKey bit P3.4;定义分设置键HourKey bit P3.3;定义小时设置键RelayOut bit P3.0;定义输出引脚,扬声器控制org 0000hajmp Start;程序开始org000bh ;Timer0中断向量地址ajmp TimeInt;跳到中断处理程序org 0020hStart: ;以下为初始化程序,为各个变量赋初值mov sp,#60hmov OneSecondCounter,#125;1秒钟中断次数;mov Hour,#12;开机时间 mov Minute,#00 mov Second,#00;设置上电时时钟显示的初值 mov AlarmHour,#06;开机时闹钟默认时间 mov AlarmMinute,#00;设置上电时闹时时间的初值 clr AlarmOnOff;上点复位后闹时功能处于关闭状态 clr ClockMode;正常走时模式 clr AlarmTimeOn;闹钟时间还没有到 clr RelayOut; 清闹时输出 mov tmod,#01H; mov th0,#0e3h; mov tl0,#33h; mov ie,#82h;开全局中断 setb tr0;开定时中断,启动定时器MainLoop:jb AlarmSetKey,CheckMinuteKey;闹时设置键按下了吗?没有则转去检测秒设置键篇p3.2lcall Delay2 jb AlarmSetKey,CheckMinuteKey;按下的时间超过15ms吗?setb ClockMode ;置为闹时设置模式 call AlarmSetCheckMinuteKey:jb MinuteKey,CheckHourKey;分设置键按下了吗?没有则转去检测小时设置键call Delay2 jb MinuteKey,CheckHourKey;按下的时间超过15ms吗? ;如按下调用蜂鸣器发音程序mov a,Minuteadd a,#1; 如果按下则将分钟加一 十进制调整mov Minute,a;cjne a,#3ch,NotOver1; 到60分钟了吗? mov Minute,#0; 到60分钟则将分钟清0NotOver1: ;以下等待按键释放及防抖动 jnb MinuteKey,$CheckHourKey: jb HourKey,CheckAlarm;小时设置键按下了吗?没有则转去闹时状态检测 call Delay2 jb HourKey,CheckAlarm;按下的时间超过15ms吗? ;如按下调用蜂鸣器发音程序 mov a,Hour add a,#1;如果按下则将小时加1 mov Hour,a cjne a,#18h,NotOver2 mov Hour,#0;到24小时则将小时清0NotOver2: ;以下等待按键释放及防抖动 jnb HourKey,$CheckAlarm: ; jnb AlarmTimeOn,ToReturn;闹钟时间到没有 call AlarmProcess;闹钟子程序ToReturn: ajmp MainLoopTimeInt: mov th0,#0d3h; 重新加载定时参数 mov tl0,#33h; push acc push psw; 保护累加器及程序状态字的内容 setb rs0; 选择工作寄存器组1,clr rs1; 这样可保护原工作寄存器组(0组)的内容 djnz OneSecondCounter,NotoneSecond; 中断了125次了吗?即够1秒了吗? mov OneSecondCounter,#125; 如够1秒则重新设置OneSecondCounter计数器call Clock ; 调用将时钟内容加1秒的子程序call ConvertoBuffer ; 调用将时钟内容转换到显示缓冲区子程序NotoneSecond:call ScanDisplay ; 调用扫描显示子程序 pop pswpop acc ; 恢复累加器及程序状态字的内容reti ; 中断返回ScanDisplay:MOV R1,#DisplayBuffer ;指向显示数据首址,利用c语言指针原理读取缓冲区的数值;子程序ConvertoBuffer已经将相应的值存放在displaybuffer的缓冲区中MOV R4,#00100000b ;扫描控制字初值,显示右边第一个数码管PLAY: MOV A,R4 ;扫描字放入AMOV P2,A ;从P2口输出,p2口的低六位分别控制对应的六个数码管的显示MOV A,R1 ;取显示数据到AMOV DPTR,#TAB ;取段码表地址 MOVC A,A+DPTR ;查显示数据对应段码MOV P0,A ;段码放入P0口,具体显示位INC R1 ;指向下一地址 MOV A,R4 ;扫描控制字放入AJnBACC.1,LPP1;显示时分位CLRP0.7CALLDelaySETBP0.7LPP1:JnBACC.3,LPP2;显示秒分位CLRP0.7CALLDelaySETBP0.7LPP2: JB ACC.7,ENDOUT ;扫到第六位时结束 RR A ;A中数据循环

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论