欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载
     

    带定时功能的闹钟设计.doc

    • 资源ID:3316367       资源大小:2.51MB        全文页数:37页
    • 资源格式: DOC        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    带定时功能的闹钟设计.doc

    课 程 设 计 说 明 书课程名称: 单片机技术 设计题目: 带定时功能的闹铃时钟设计 院(部): 电子信息与电气工程学院 学生姓名: 宋亚丽 学 号: 201202060030 专业班级: 12级自动化(专升本) 指导教师: 吴欣慧 2013年 5月 17 日课 程 设 计 任 务 书设计题目带定时功能的闹铃时钟设计学生姓名宋亚丽所在院部电子信息与电气工程专业、年级、班12级自动化(专升本)设计要求:1、有电源开具关及指示灯,有复位按键。2、接通电源后,蜂鸣器连续两次发出响声,同时工作指示灯LED闪动,表示程序执行,数码管显示“0000”3、接着设置当前时间。按K1键,LED停止闪动,即进入时间设置状态;按K2键调整小时,每按一次数值增1;按K3键调整时间。设置完成后,按K4,LED恢复闪烁,即设置完成,进入正常走时状态。4、设置闹铃时间,进入正常走时状态后再按K2键,即进入闹铃时间设定状态,K2为设置闹铃功能键,再按k2,小时调整;按k3,分钟调整。5、闹铃开、关设置。闹铃时间设定完后,再按k4,进入闹铃开、关设置。若设置为开,启动闹铃后连续3次发出响声;若设置为关,关闭闹铃时发出1次响声。 6、掌握程序模块化设计思想。程序设计时可分解为走时、闹铃设置、显示、检查闹铃时间、执行 闹铃时间处理、调整等部分组成。每部分均通过子程序实现。再过主程序的调用,使其有机联系,最终实现定时闹铃时钟功能。学生应完成的工作:要求设计带定时功能的闹铃时钟。查资料,画出设计原理图,编写设计程序,按照原理图焊接电路,将程序加载到单片机个,撰写并提交写课程设计报告。该设计是带定时功能的闹铃时钟,宋亚丽负责的是仿真。首先要查资料,组员之间进行讨论,设计出最初方案,画出设计原理图,研究其可行性,然后编写设计程序,检查程序是否有错误,进行仿真,仿真成功后,按照原理图焊接电路,烧程序最后写课程设计论文。参考文献阅读:1 张毅刚,彭喜元,董继成.单片机原理及应用.高等教育出版社,2010.2 童诗白,华成英.模拟电子技术基础.高等教育出版社,20063 张大明,刘振鹏.单片微机控制应用技术实操指导书.机械工业出版社,2007.4 徐晨,陈继红,王春明,徐慧.微机原理及应用.高等教育出版社,2004.工作计划: 2013.5.6-2013.5.8查资料,画出设计原理图 2013.5.9-2013.5.12编写设计程序2013.5.13-2013.5.14按照原理图焊接电路2013.5.15烧程序、仿真2013.5.16-2013.5.17写课程设计论文任务下达日期:2013 年05月 6 日 任务完成日期:2013 年05月 17 日指导教师(签名): 学生(签名): 带定时功能的闹铃时钟设计摘 要:本次设计的定时闹钟在硬件方面,采用了AT89S52芯片,用4位数码管来进行显示,LED用P1口进行驱动,采用的是动态扫描,能够比较准确的显示时间,电源电路主要是由变压器、桥堆、电容、稳压器、电阻、发光二极管等元件构成,由电容和晶振等构成时钟电路,一个开关和电容电阻接上电源构成了复位电路,然后通过S1、S2、S3和S4四个功能按键可以时间对事件的修改和定时,定时时间到后蜂鸣器发出响声。在软件方面采用C语言编程,运用protues仿真,仿真后整个系统能完成时间的显示、调时和定时闹钟、复位等功能,通过仿真后得到正确的结果。仿真无误后,汇编程序导入单片机,后把各个元器件排板(整齐、大方、美观)焊接到万能板上。检查无误后,接通电源,实现要求的走时定时等功能。关键词:单片机;AT89S52;带定时功能闹钟;复位电路 目 录1.设计背景31.1单片机的应用31.2课程设计的目的及意义42.设计方案42.1总体设计42.2时钟设计方案52.3显示方案62.4软件设计63. 方案实施73.1单片机的功能73.2系统时钟电路93.3系统电源电路103.4复位电路103.5控制按键电路113.6时间显示电路123.7闹铃电路124. 结果与结论134.1实验结果134.2实验总结135. 收获与致谢146. 参考文献157. 附件167.1原理图167.2流程图177.3程序197.4元件清单317.5实物图321.设计背景1.1单片机的应用单片机是在一块半导体芯片上集成了CPU、存储器以及输入和输出接口电路的微型计算机,其集成度高、功能强、通用性好,特别是它具有体积小、重量轻、能耗低、价格便宜、抗扰、能力强和使用方面等特点,它不仅是一项技术上的突破,同时也是对能源方面的有效节约与有效利用,因此深受国家有关技术部门和能源部门的重视和支持。其组合配件在日常生活的使用过程中非常方便、简单且使用,深受广大消费者的喜爱,已成为测量控制应用系统中的优选机种和新电子产品的关键部件。特别是在20世纪70年代以来,它以极高的性能价格比,受到人们的重视和关注,应用很广泛、发展很快,推广率高,市场利润率高,而51单片机是各单片机中最为典型和最有代表性的一种, 单片机在过程控制、机电一体化产品、智能仪器、国防装备、家用电器、计算机网络及通讯等方面得到广泛应用,已成为计算机发展和应用的一个极其重要的领域。1.2课程设计的目的及意义时间是现代社会中不可缺少的一项参数,无论是平时生活还是社会生产都需要对时间进行控制,有的场合对其精确性还有很高的要求.采用单片机进行计时,对于社会生产有着十分重要的作用。时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。一旦重要事情,一时的耽误可能酿成大祸。而钟表的数字化给人们生产生活带来了极大的方便。数字钟是通过数字电路实现时,分,秒数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所,成为人们日常生活中不可少的必需品。由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度,远远超过老式钟表,钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能,诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烤箱、通断动力设备、甚至各种定时电气的自动启用等。所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。2.设计方案2.1总体设计本次设计的定时闹钟在硬件方面,采用了AT89S52芯片,用4位数码管来进行显示,LED用P0口进行驱动,采用的是动态扫描,能够比较准确的显示时间,电源电路主要是由变压器、桥式整流、电容、稳压器、电阻、发光二极管构成的,由两个电容和一个晶振构成时钟电路,一个开关和电容电阻构成了复位电路,然后通过S1、S2、S3和S4四个功能按键可以时间对事件的修改和定时,定时时间到后蜂鸣器发出响声。在软件方面采用C编程,程序设计可分解为走时、闹铃设置、显示、检查闹铃实践、执行闹铃时间处理、调整等部分组成,每部分均通过子程序实现,再通过子程序调用,使其有机的联系,最终使整个系统完成时间的显示、调时和定时闹钟、复位等功能,并通过仿真后得到正确的结果。定时闹钟的系统可以分为六个环节,分别是电源电路模块、时钟电路模块、复位电路模块、时间显示模块、控制按键模块和闹铃模块。通过若干模块的协调工作就可以完成相应的时间调整和定时闹钟的相应功能以及显示功能。模块的相互连接如下图所示:复 位 电 路 模 块时 钟 电 路 模 块电 源 电 路 模 块控 制 按 键 模 块时 间 显 示模 块闹 铃 模 块图2.1.1模块的相互关系2.2时钟设计方案方案一:运用所学的数字电子技术知识, 555秒脉冲发生器和74系列等相关芯片设计出纯硬件的电子闹钟原理图。优点是:思想简单,不需要编写程序;缺点是:所需器件太多,电路复杂,不容易焊接。方案二:使用单片机内部的可编程定时器,根据单片机是利用MCS-51中的89C52作为其核心部分,其内部的定时/计数器进行中断定时,配合软件延时实现时、分、秒的计时。优点:这样设计硬件成本较低,电路简单;缺点:程序设计较为复杂。方案三:使用时钟芯片优点:系统就不怕掉电且时间精确;缺点:这种芯片比较贵,况且,设计本系统主要是为了学习单片机程序的编写和调试以及设计硬件电路的一些方法,因此采用软件的方法来计时而没有采用价格较高的时钟芯片。综上所述及本次课程设计的要求主要是锻炼我们利用单片机知识进行简单设计的能力,故选择方案二。2.3显示方案方案一:静态显示。所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。该方式每一位都需要一个8 位输出口控制。优点:静态显示时较小的电流能获得较高的亮度,且字符不闪烁。缺点:所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。方案二:动态显示。所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。优点:调整参数可以实现较高稳定度的显示。动态显示节省了I/O口,降低了能耗。缺点:利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。显示器的亮度既与导通电流有关,也于点亮时间与间隔时间的比例有关。方案三:液晶显示器。如果选择此方案,将会降低系统的功耗,这样就可以用电池供电,便于携带。但液晶显示器的驱动电路复杂,使用起来有一定的难度。 由于数码管使用起来较为方便,在夜间看时间也很方便,以及节省I/O口和降低能耗出发,本设计采用方案二。2.4软件设计本次设计用C语言作为编程语言,选择Keil C作为编程软件。Keil软件介绍:Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。程序主要负责显示模块的处理,键盘输入信息处理以及驱动蜂鸣器,本程序运用软件定时,最后把程序烧到单片机中。程序用以驱动硬件电路按照人的思维方式设计运行,达到方案设计要求的结果,是系统的内在控制核心。设置当前时间:按S1键LED停止闪动,即进入时间设置状态,按S2键调整小时,每按一次数值增一,按S3键调整时间,设置完成后按S4,LED恢复闪烁,及设置完成,进入正常走时状态。设置闹铃时间:S2键进入闹铃设置时间设定状态,S2为设置闹铃功能键,再按S2小时调整,按S3分钟调整。闹铃开关设置:闹铃时间设定后,再按S4键,进入闹铃开关设置。 程序和流程图见附件7.3和附件7.2。 3. 方案实施3.1单片机的功能AT89S52芯片由CPU、振荡器与时序电路、4KB的ROM、256KB的RAM、两个16位的定时器/计数器T0和T1、4个8位的I/O端口(P0、P1、P2、P3)、串行口等组成,其中振荡器时序电路与外时钟组成了一个定时控制部件。VCC:电源。GND:接地。P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程 序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作 输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻 拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存 储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器 的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89S52的一些特殊功能口,如下所示:口管脚 备选功能P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外部中断0)P3.3 /INT1(外部中断1)P3.4 T0(记时器0外部输入)P3.5 T1(记时器1外部输入)P3.6 /WR(外部数据存储器写选通)P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器 时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。图3.1.1 AT89S52引脚图3.2系统时钟电路AT89S52内部有一个用于构成振荡器的高增益反相放大器,此放大器的输入和输出端分别是引脚XTAL1和XTAL2,在XTAL1和XTAL2上外接是时钟电源可构成时钟电路。单片机的生产工艺不同,时钟的产生方式也不同,有内部和外部两种时钟产生方式,根据该设计需要,采取内部方式。图3.2.1系统时钟电路3.3系统电源电路这个电源电路主要是由变压器、桥式整流、电容、稳压器、电阻、发光二极管构成的。交流电压220V通过变压器变压以后,经过桥式整流变成直流电压,然后经过电容滤波和7805稳压,最后输出+5V的电源,然后在电源电路中加上一个发光二极管,当电源接通后发光二极管会亮。图3.3.1系统电源电路3.4复位电路在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51芯片便循环复位。复位后P0P3口均 在1引脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。复位操作不会对内部RAM有所影响。图3.4.1复位电路3.5控制按键电路VCC按键S1、S2、S3、S4分别接到P20、P21、P22、P23端口。S1键为时间设置和正常走时的设置键。S2键设置闹钟功能键、闹钟和当前时间的小时设置。S3键调整当前时间和闹钟的分钟设置。S4键为设置当前时间后恢复键和闹铃开关设置键。图3.5.1控制按键电路设置当前时间:按S1键LED停止闪动,即进入时间设置状态,按S2键调整小时,每按一次数值增一,按S3键调整时间,设置完成后按S4,LED恢复闪烁,及设置完成,进入正常走时状态。设置闹铃时间:S2键进入闹铃设置时间设定状态,S2为设置闹铃功能键,再按S2小时调整,按S3分钟调整。闹铃开关设置:闹铃时间设定后,再按S4键,进入闹铃开关设置。3.6时间显示电路显示部分是采用4位共阳极的数码管,它们的公共端分别接到P1.0、P1.2、P1.3、P1.4端,它们的abcdefg和DP分别接到P0.0、P0.1、P0.2、P0.3、P0.4、P0.5、P0.6、P0.7端,自左到右分别显示小时和分钟。3.7闹铃电路闹铃模块是由蜂鸣器和三极管组成的,接在单片机的P37端。接通电源后,蜂鸣器连续两次发生响声,LED闪动,程序执行。当闹铃开启后,蜂鸣器连续3次发出响声,当闹铃关闭后,蜂鸣器响一次。4. 结果与结论4.1实验结果1、有电源开具关及指示灯,2、接通电源后,蜂鸣器连续两次发出响声,同时工作指示灯LED闪动,表示程序执行,数码管显示“0000”3、接着设置当前时间。按S1键,LED停止闪动,即进入时间设置状态;按S2键调整小时,每按一次数值增1;按S3键调整分钟,每按一次数值增一。设置完成后,按S4,LED恢复闪烁,即设置完成,进入正常走时状态。4、设置闹铃时间,进入正常走时状态后再按S1键,即进入闹铃时间设定状态,S4为设置闹铃功能键,再按S2,小时调整;按S3,分钟调整。之后按下S4闹钟开始计时。5、闹铃开、关设置。闹铃时间设定完后,再按S4,进入闹铃开、关设置。若设置为开,启动闹铃后连续3次发出响声;若设置为关,关闭闹铃时发出1次响声。4.2实验总结在本次试验中,总体实现了要求功能,能够正常实现闹钟的计时和定时功能,并且指示灯能过正确发光。但依然有不完美之处,比如小时显示没有上限,不是在24以后从0开始,定式时秒针依旧在计时,对定时的精度产生一定的影响等等。我们在protues上进行了成功仿真,但是在焊完电路板,并且烧入程序后,数码管无法正常显示,且一些按键有些问题。我们又对电路进行了检查,发现了一些电路上的问题,并对电路板进行了加固焊接,防止有虚焊现象发生.在整个电路的设计过程中,我们尽自己的最大努力做好电路设计。对于该电路我们尽量让自己达到设计的所有要求。但在制作过程中我们遇到了一些问题,比如各个电子元件的工作电压VCC我们就没有考虑他们是否相同,地线是否选取最优放位等.但在实际电路中他们需要相同,以减少电路的复杂度。制作生产所需要的成本,对整个电路元件的选择和实际中有所差别。这些问题我们觉得都是值得进一步改进和值得探索的。5. 收获与致谢在本次课设中我真的学了不少知识,自己的动手能力也有了一定的提高。在这次课设过程中,我遇到了一些问题,比如为元件画封装,好几个元件要自己画封装,可是自己又不熟悉;接着就是布局和布线了,要想做得比较好看,真的要花很大的功夫。本次课设主要用到了单片机AT89S52、和其他一些器件,这些都是我在上课时略有接触过的器件。我们结合以前所上过的单片机实验,利用网上共享资源,在老师的教导和其他同学的帮助下,最终完成了作品。这次课设可以说是理论和实践的统一,是学理论的一次实际的应用,对于加强和巩固知识及提高学习的积极性起着十分重要的作用。通过本次课设我受益匪浅,深深感觉到了实践是多么的重要,使我懂得了学习真理的真谛。通过这次课设,我深深的感到这一切的来之不易,现将具体的感受总结如下:第一:要对我们学过的各种电路知识熟悉掌握以及学会运用;第二:在制作的过程中要有耐心,不能急躁,特别是在调试的过程中更要注意;第三:在编写程序的时候先要画出流程图,理清思路;第四:细心谨慎,才能避免不必要的错误出现,在制作的各个环节中都要注意;第五:态度决定一切,我们要摆正自己的心态,相信自己有能力独立完成设计。在这次课程设计中感谢吴欣慧老师对我们的耐心和细致的指导,同时也要感谢同组同学的的努力和付出,才能使我们顺利完成本次课程设计。6. 参考文献1 张毅刚,彭喜元,董继成.单片机原理及应用.高等教育出版社,20102 童诗白,华成英.模拟电子技术基础.高等教育出版社,20063 张大明,刘振鹏.单片微机控制应用技术实操指导书.机械工业出版社,20074 徐晨,陈继红,王春明,徐慧.微机原理及应用.高等教育出版社,20047. 附件7.1原理图7.2流程图N满20次否?设定定时器常数开中断主程序开始Y秒值加1N满60秒否?N到1秒?YY秒缓冲单元清零显示时间分值加1T0中断N满60分否?现场保护Y分缓冲单元清零现场保护时值加1N满24小时否?Y时缓冲单元清零恢复现场 图7.2.1秒定时流程图结束YS2是否按下?N关闭显示,省电YNYYYNNNY时值=24?按键S2时间t<0.5?时值清零分值清零时值加1时钟闪烁,调时状态分值加1分值=60?按键S2时间t>0.5?分钟闪烁,调时状态按键S2时间t>1?时钟调整程序返回显示图7.2.2分和时定时流程图7.3程序#include<reg52.h>#include<intrins.h>#define uint unsigned int#define uchar unsigned charuchar count,s1num,hour1,fen1;uchar miao,shi,fen,ge,hour,num,aa,numkey,numkey1,numkey2,numkey3,count1,flag,s4num, naozhong,k1,k2,m1,m2,s2num,fengming,beepnum,num1;/记录响了几声uchar k1,k2,kai,flagkai,count2,kaishi;uchar code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;sbit s1=P20;sbit s2=P21;sbit s3=P22;sbit s4=P23;sbit beep=P37;sbit led=P36;sbit led2=P35;sbit led3=P34;void delay(uint z);void disply();void init()TMOD=0x11;TH1=(65536-50000)/256;TL1=(65536-50000)%256;TH0=(65536-10000)/256;TL0=(65536-10000)%256;EA=1;ET0=1;TR0=0;ET1=1;TR1=1;kaishi=1;fen1=68;void disply() shi=hour/10; /小时显示ge=hour%10; P1=0X01; /P0段选 P1是位选P0=tableshi; delay(5);P1=0X02;P0=tablege; delay(5); P1=0X04; P0=0xbf; delay(5);shi=fen/10; /分钟显示 ge=fen%10;P1=0X10;P0=tablege;delay(5);P1=0x08;P0=tableshi; delay(5);P1=0X20; P0=0xbf; delay(5); shi=miao/10; /秒显示ge=miao%10; P1=0x40;P0=tableshi; delay(5);P1=0X80;P0=tablege;delay(5); void dingshi() /定时功能 if(kai=0) /按下定时功能键 if(hour=hour1) /小时定时 if(fen=fen1) /分定时 beep=0; else beep=1; /定时结束,发出1次响声 else beep=1; void main()init();while(1)disply();dingshi();if(s2num) led2=0; else led2=1; void delay(uint z)uint x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void timer1() interrupt 3 /定时器中断按键 TH1=(65536-10000)/256; TL1=(65536-10000)%256; count1+; count2+; if(kaishi=1) /beepnum用于记录蜂鸣器响的次数 if(count2<50) beep=0; else beep=1; /定时结束,蜂鸣器响一声 if(count2=100) count2=0; beepnum+; if(beepnum=2) /开始走时,蜂鸣器响两声 beepnum=0;kaishi=0; switch(numkey) /k1 case 0: if(s1=0) /如果按键1没按 numkey+; /numkey加1 break; case 1: if(s1=0) numkey+; else numkey=0; break; case 2: if(s1) numkey=0; flag=1; TR0=0; /控制灯的标志位 break;switch(numkey1) /k2 case 0: if(s2=0) /按键2没按 numkey1+; break; case 1: if(s2=0) numkey1+; else numkey1=0; break; case 2: if(s2) numkey1=0; if(flag=0) /flag=0表示调试结束,时钟正在运行 s2num+; /在定时状态下,S2按下次数 if(s2num=1) /按下一次S2,进入闹铃时间设定状态 k1=hour; k2=fen; if(s2num=2) /按下两次S2,小时调整 s2num=1; hour+; else if(hour=24)/flag=1表示正在调小时 hour=0; else hour+; break; switch(numkey2) /k3 case 0: if(s3=0) /未按下S3 numkey2+; break; case 1: if(s3=0) numkey2+; else numkey2=0; break; case 2: if(s3) numkey2=0; if(fen=60) /调分钟 fen=0;else fen+; break; switch(numkey3) /k4 case 0: if(s4=0) /未按下S4 numkey3+; break; case 1: if(s4=0) numkey3+; else numkey3=0; break; case 2: if(s4) numkey3=0; if(flag=0) /s2num是闹钟是否在设置 TR0=1; /* flag=0; /* s4num+; flagkai=1; /flagkai用于驱动蜂鸣器 kai=1; if(s4num=2) /按下两次,进入闹铃开、关设置 kai=0; s4num=0; /未按下S4 if(s2num) s2num=0; hour1=hour; fen1=fen; fen=k2; /按下K2调整小时 hour=k1; /按下K3调整分钟 else TR0=1; flag=0; /等又开始走 break;if(flag=1) led=0; else if(count1<50) led=1; if(count1>=50) led=0; if(count1=100) count1=0; if(flagkai=1)if(kai=0) /开闹钟 if(count2<50) beep=0; /蜂鸣器响不发声 else beep=1; /蜂鸣器响一次 if(count2=100) count2=0; beepnum+; if(beepnum=3) /蜂鸣器响三次 beepnum=0;flagkai=0; if(flagkai=1) /beepnum用于记录蜂鸣器响的次数 if(kai=1) if(count2<50) beep=0; else beep=1; if(count2=100) count2=0; beepnum+; if(beepnum=2) beepnum=0;flagkai

    注意事项

    本文(带定时功能的闹钟设计.doc)为本站会员(小小飞)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开