基于单片机的电子闹钟的设计说明

合集下载

基于单片机的闹钟设计

基于单片机的闹钟设计

华北理工大学轻工学院Qing Gong College North China University of Science and TechnologyEDA辅助设计结课报告项目名称:基于单片机的闹钟设计专业班级:学号:姓名:成绩:一、项目说明利用STC89C52单片机设计闹钟,通过LCD1602液晶显示,利用按键调节时钟时间和闹钟设定并能够自由切换闹钟与时钟,通过蜂鸣器到时提示。

二、项目原理图1、原理图图1 项目原理图2、各部分说明(1)电源部分为设计的电路板提供5v电源和底线的连接。

图2 电源(2)控制芯片(单片机stc89c52)利用单片机中的可编程定时计数器和定时中断功能为设计的闹钟提供计时功能。

图3 主控芯片(3)单片机最小系统辅助单片stc89c52实现计时和复位功能。

图4 最小系统(晶振、复位)(4)按键控制用于控制时间和闹钟的设定,并自由切换时钟和闹钟的显示。

图5 按键(5)声音与显示通过蜂鸣器进行闹钟提示,利用LCD1602液晶显示屏显示时间。

图6 声音与显示(LCD1602、蜂鸣器)三、项目中的器件及其封装1、材料清单,如表1所示。

表1 项目材料清单2、项目中元器件及其封装 (1)STC89C52单片机封装(2)0805电阻封装图3 贴片电阻、电容封装图(4)电源DC002图5 电源dc002封装图(6)按键SW-PB封装图7 按键SW-PB封装图(7)三极管pnp s8550封装图8 三极管pnp s8550封装图(8)蜂鸣器buzzer封装图9 蜂鸣器buzzer封装图(9)晶振XTAL封装图10 晶振XTAL封装图(10)电解电容10uf封装图11 电解电容封装图(11)蓝白可调电阻图12 封装图四、项目完成情况1、PCB 照片 (1)正面照片图1 PCB 板正面照片(2)反面照片图2 PCB 板反面照片(3)成品照片图3 PCB板成品图2、SmarPDF导出图(1)整个PCB图4 PCB图(2)Top Layer图5 Top Layer图片(3)Top OverLayer图6 Top OverLayer图片(4)Bottom Layer图7 Bottom Layer图片(5)Bottom OverLayer背面无丝印五、心得体会1、项目完成过程中遇到的问题及解决办法在制作pcb图时软件自带封装无法满足制作需求,最终在确定器件之后找到封装尺寸画出满足制作需求的封装图。

单片机闹钟设计程序报告

单片机闹钟设计程序报告

单片机闹钟设计程序报告1. 引言闹钟作为人们日常生活中的常用物品,不仅有叫醒人们起床的功能,还可以作为提醒的工具。

随着科技的进步,单片机闹钟逐渐取代了传统的机械闹钟,成为人们生活中不可或缺的一部分。

本报告旨在介绍一个基于单片机的简单闹钟设计程序。

2. 设计方案本设计方案使用了单片机和数码管作为主要硬件,通过对单片机的编程,实现了闹钟的基本功能,包括时间设置、闹钟时间设置、闹钟触发、蜂鸣器报警等。

2.1 硬件设计硬件方面,本设计基于某型号的单片机和数码管。

单片机通过相关的引脚与数码管相连,通过控制引脚的电平来显示不同的数字。

2.2 软件设计软件方面,本设计使用C语言编程实现。

主要的功能包括获取当前时间、显示时间、设置时间、设置闹钟时间、闹钟触发检测、蜂鸣器报警等。

3. 程序实现3.1 初始化设置在程序的开始部分,需要对单片机进行初始化设置。

包括设置引脚的输入输出模式、设置计时器、设置中断等。

3.2 时间显示为了实现时间显示的功能,我们需要通过单片机的计时器来不断获取当前时间,并将其转换为时、分、秒的格式。

然后通过数码管显示出来。

3.3 时间设置通过给单片机的某个引脚接入按钮,实现时间设置功能。

当按钮被按下时,单片机进入时间设置模式。

此时,用户可以通过另外的按钮来逐个调整时、分、秒的数值。

3.4 闹钟时间设置类似于时间设置,闹钟时间设置也需要通过按钮来实现。

用户可以按下对应的按钮来设置闹钟的时、分,设置完毕后,单片机会将设置的时间保存起来。

3.5 闹钟触发检测在每一次时间显示的循环中,程序都会检测当前时间是否与闹钟时间相符。

如果相符,则触发闹钟,蜂鸣器开始报警。

3.6 蜂鸣器报警通过单片机的一个输出引脚,连接到蜂鸣器,实现蜂鸣器的报警功能。

当闹钟触发时,单片机会给对应的引脚输出一个高电平,从而使蜂鸣器发声。

4. 总结通过对单片机闹钟设计程序的实现,我们成功实现了闹钟的基本功能,包括时间设置、闹钟时间设置、闹钟触发、蜂鸣器报警等。

基于单片机的定时闹铃设计

基于单片机的定时闹铃设计

时间是现代社会中不可缺少的一项参数,无论是平时生活还是社会生产都需要对时间进行控制,有的场合对其精确性还有很高的要求.采用单片机进行计时,对于社会生产有着十分重要的作用。

本文首先在绪论中介绍了单片机和时钟的概念和现状,然后在对单片机系统、喇叭装置和显示电路做了深入的研究之后,提出了系统总体设计方案,并设计了各部分硬件模块和软件流程,在用汇编语言设计了具体软件程序后,用伟福软件进行了仿真和调试,结果证明了该设计系统的可行性。

由于AT89C51系列单片机的控制器运算能力强,处理速度快,可以精确计时,很好地解决了实际生产生活中对计时高精确度的要求,因此该设计在现代社会中具有广泛的适用性。

关键字:AT89C51,定时,LCD显示,仿真,调试Modern society is indispensable to a parameter, whether in peacetime or in social production need to control the time, there are some occasions to its high accuracy requirements. Microcontroller used to time, the community has a production very important role.This paper first introduced in the introduction of the concept of SCM and clock and the status quo, then the SCM system, speakers and display circuit devices do an in-depth study, the overall design of the system proposed programme, all parts of the design of the hardware module And software processes used in the compilation of the specific language of the software design process, Fu Wei-use software simulation and debugging, the results proved the feasibility of the design.As the controller AT89C51 MCU computing capability and processing speed, precision timing, a good solution to the life of the actual production of high precision timing of the request, so the design in modern society has a broad applicability.Keyword: AT89C51, timing, LCD display, simulation, debugging第一章绪论 (1)第一节设计本电子定时闹钟的目的和意义 (1)第二节单片机和数字钟介绍 (1)一、单片机介绍 (1)二、数字钟介绍 (3)第三节本LCD电子闹钟的特点和功能介绍 (4)一、本电子钟设计特点 (4)二、本电子钟的主要功能 (4)第二章总体方案设计与硬件设计 (5)第一节总体设计方案 (5)第二节电路总体概念图设计 (5)第三节 MCS-51单片机硬件结构设计 (6)一、 MCS–51单片机内部总体结构 (6)二、 MCS-51单片机的引脚 (6)三、 MCS-51 的微处理器 (9)四、 MCS-51存储器的结构 (9)五、 MCS-51 的并行I/O口 (14)六、 MCS-51时钟电路与时序 (16)七、 MCS-51的复位和复位电路 (17)第四节主控芯片AT89C51的设计 (18)第五节时钟电路部分设计 (20)第六节 LCD显示电路部分 (21)一、 LCD介绍 (21)二、 LCD的选材 (25)第七节喇叭部分的电路 (26)第三章软件设计 (27)第一节软件设计概述 (27)第二节主函数的设计 (27)第三节部分设计思想的说明 (28)一、程序初始化 (28)二、闹钟的实现 (29)三、显示程序 (29)第四章软件仿真 (31)第一节仿真器介绍 (31)第二节仿真器编程 (33)第三节仿真器执行 (33)总结 (34)外文资料 (35)中文译文 (42)参考文献 (47)致谢 (48)附录 (49)附录1 源程序代码 (49)附件2 系统原理图 (78)第一章绪论第一节设计本电子定时闹钟的目的和意义一、复习和巩固所学过的知识,利用此毕业设计正好可以对所学过的知识进行系统的回顾和总结。

基于单片机的音乐闹钟毕业设计

基于单片机的音乐闹钟毕业设计

摘要20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,在以AT89S51单片机为代表的电子技术有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。

本课题基于单片机完成了音乐电子闹钟的设计与实现,通过软、硬件结合实现了设定时间、按时闹铃、数字显示等功能。

硬件部分是通过STC89C51实现音乐电子闹钟的基本框架。

软件设计利用C51单片机语言完成了时间显示、走时计数、判断时间及按时响铃等功能。

本电子闹钟系统结构简单、成本低,具有比较好的市场前景。

关键词:单片机闹钟设计2 I目录摘要 (I)目录 (II)前言 (1)第一章绪论 (2)1.1概述 (2)1.1.1 音乐电子闹钟发展趋势 (2)1.1.2 本课题研究的主要内容 (2)1.2音乐电子闹钟简介 (3)1.2.1 开发的目的和意义 (3)1.2.2 音乐电子闹钟的优点 (4)1.2.3 音乐电子闹钟的用途 (4)1.2.4 音乐电子闹钟的特点 (4)第二章 STC89C51单片机基础知识简介 (4)2.1单片机的特点及应用 (4)2.1.1 单片机的特点 (4)2.1.2 单片机的应用 (5)2.2 STC89C51芯片基本工作原理及其应用 (5)2.2.1 AT89S51简介 (6)2.2.2 电源 (9)2.2.3 应用 (10)第三章系统方案设计 (11)3.1 系统功能描述 (11)3.2系统设计思路与步骤 (11)第四章系统设计 (12)4.1系统硬件设计 (12)4.1.1 按键电路 (12)4.1.2 复位电路 (13)4.1.3 显示电路 (14)4.1.4 发音部分 (15)4.1.5 晶振电路 (16)4.1.6 电源电路 (17)4.2系统软件设计 (17)4.2.1 软件设计 (17)4.2.2系统软件部分总体设计 (19)第五章系统调试和性能分析 (20)5.1系统调试方法 (20)1II5.1.1 输入按键调试 (21)5.1.2 显示电路调试 (21)5.1.3 系统联调 (21)5.2系统性能分析 (21)结束语 (22)参考文献 (23)附录1 电路图 (24)附录2 实物图 (25)附录3 程序 (26)2 III音乐电子闹钟的设计前言自单片机问世以来,性能得到不断提高和完善,因其资源能够满足很多应用场合的需要,加之单片机具有集成度高、功能强、速度快、体积小、功耗低、使用方便、性能可靠、价格低廉等优点。

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计

基于51单片机的多功能电子钟设计1. 本文概述随着现代科技的发展,电子时钟已成为日常生活中不可或缺的一部分。

本文旨在介绍一种基于51单片机的多功能电子钟的设计与实现。

51单片机因其结构简单、成本低廉、易于编程等特点,在工业控制和教学实验中得到了广泛应用。

本文将重点阐述如何利用51单片机的这些特性来设计和实现一个具有基本时间显示、闹钟设定、温度显示等功能的电子钟。

本文的结构安排如下:将详细介绍51单片机的基本原理和特点,为后续的设计提供理论基础。

接着,将分析电子钟的功能需求,包括时间显示、闹钟设定、温度显示等,并基于这些需求进行系统设计。

将详细讨论电子钟的硬件设计,包括51单片机的选型、时钟电路、显示电路、温度传感器电路等。

软件设计部分将介绍如何通过编程实现电子钟的各项功能,包括时间管理、闹钟控制、温度读取等。

本文将通过实验验证所设计的电子钟的功能和性能,并对实验结果进行分析讨论。

通过本文的研究,旨在为电子钟的设计提供一种实用、经济、可靠的方法,同时也为51单片机的应用提供一个新的实践案例。

2. 51单片机概述51单片机,作为一种经典的微控制器,因其高性能、低功耗和易编程的特性而被广泛应用于工业控制、智能仪器和家用电器等领域。

它基于Intel 8051微处理器的架构,具备基本的算术逻辑单元(ALU)、程序计数器(PC)、累加器(ACC)和寄存器组等核心部件。

51单片机的核心是其8位CPU,能够处理8位数据和执行相应的指令集。

51单片机的内部结构主要包括中央处理单元(CPU)、存储器、定时器计数器、并行IO口、串行通信口等。

其存储器分为程序存储器(ROM)和数据存储器(RAM)。

程序存储器通常用于存放程序代码,而数据存储器则用于存放运行中的数据和临时变量。

51单片机还包含特殊功能寄存器(SFR),用于控制IO端口、定时器计数器和串行通信等。

51单片机的工作原理基于冯诺伊曼体系结构,即程序指令和数据存储在同一块存储器中,通过总线系统进行传输。

基于单片机的定时闹钟设计.

基于单片机的定时闹钟设计.

目录目录 (I)一设计题目 (1)二设计要求 (1)三作用与目的 (1)四设备及软件 (2)1.AT89C51单片机 (2)2. Proteus仿真软件 (2)3.Keil软件 (3)五系统设计方案 (4)1 电路的总体原理框图 (4)2 工作原理 (5)六系统硬件设计 (5)1.系统总体设计 (5)2.系统时钟电路设计 (6)3.系统复位电路的设计 (6)4.闹钟指示电路设计 (6)5.电子闹钟的显示电路设计 (6)七系统软件设计 (7)1.主模块的设计 (7)2.基本显示模块设计 (8)3. 时间设定模块设计 (9)4. 闹铃功能的实现 (10)八 Proteus软件仿真 (11)1.本次试验的效果图 (12)2.性能及误差分析: (12)九设计中的问题及解决方法 (13)十设计心得 (14)参考文献 (15)致谢 (16)附录1 系统整体结构电路原理图 (17)附录2 程序清单 (18)基于单片机的定时闹钟设计一设计题目基于单片机的定时闹钟二设计要求1、能显示时时-分分-秒秒。

2、能够设定定时时间、修改定时时间。

3、定时时间到能发出报警声或者启动继电器,从而控制电器的启停。

三作用与目的以单片机为核心的数字时钟是很有社会意义和社会价值的。

钟表原先的报时功能已经原不能满足人们日益增长的要求,现代的电子时钟多带有类似自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、通断动力设备、甚至各种定时电气的自动启用等功能数字闹钟通过数字电路实现时、分、秒。

数字显示的计时装置,广泛用于个人家庭、车站、码头办公室等公共场所成为人们日常生活中不可少的必需品。

由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表。

多功能数字钟的应用非常普遍。

由单片机作为数字钟的核心控制器,通过它的时钟信号进行实现计时功能,将其时间数据经单片机输出,利用显示器显示出来。

通过键盘可以进行校时、定时等功能。

单片机实训 ——基于单片机的电子闹钟设计

单片机实训  ——基于单片机的电子闹钟设计

单片机实训——基于单片机的电子闹钟设计学院:电子与通信工程学院专业:电子信息工程技术班级:信息122姓名:冯健学号:22指导老师:邬志锋、香永辉实训时间:2013年6月30日-7月5日目录绪论 (3)第一章总体设计方案 (3)1.1 目的 (3)1.2 要求 (3)1.3 工作原理 (4)1.4 思路 (4)第二章系统硬件设计 (4)2.1 系统的硬件设计框 (4)2.2 主要单元的电路设计 (4)2.2.1 单片机最小系统 (4)2.2.2 DS1302时钟电路 (5)2.2.3 LCD1602液晶显示电路 (5)2.2.4 键盘电路 (6)第三章系统的软件设计 (6)3.1 主程序流程图 (6)3.2 时钟程序流程图 (7)第四章结束语 (7)附录 (8)绪论时钟的数字化,大力推动了计时的准确性和可靠性。

在单片机构成的装置中,实时时钟是必不可少的部件。

时钟芯片DS1302与单片机同步通信构成数字时钟电路。

DS1302的后背电源及对后背电源进行涓细电流充电功能保证电路断电后仍能保存时间和数据信息等。

该时钟电路强大的功能和优越的性能,在很多领域的应用中,尤其是某些自动化控制、长时间无人看守的测控系统等对时钟精确性和可靠性有较高的场合,具有很高的使用价值。

第一章总体设计方案1.1目的1)加深了对ds1302时钟芯片及其应用;2)了解了lcd1602液晶显示屏的工作原理和内部结构;3)能够熟练的应用lcd1602来做一些小制作。

1.2 要求1)根据系统设计的要求和设计思路,确定该系统的系统设计结构如图1所示。

电路整体上分为控制和显示部分,以单片机最小系统为核心电路,控制LCD显示,具体的显示内容和方式由软件来完成;图(1)2)由于有时钟和日期的调节功能需要校准电路和基本的复位电路,复位电路采用按键复位,调节键、加1键、确定键,闹钟调节键,共五键,计时功能由DS1302完成,显示功能则由LCD1602液晶完成。

单片机做闹钟综合设计报告

单片机做闹钟综合设计报告

单片机做闹钟综合设计报告1. 引言闹钟是人们日常生活中常见的用于定时提醒的设备,而使用单片机来设计一款智能闹钟更加便捷和实用。

本设计报告将介绍如何使用单片机进行闹钟设计并具备一定的智能化功能。

2. 设计原理2.1 硬件设计本设计使用了一块单片机开发板、一块液晶显示屏、一个蜂鸣器和几个按键进行硬件设计。

- 单片机开发板:使用STC89C52单片机作为核心处理器,具有较高的稳定性和可靠性。

- 液晶显示屏:用于显示当前时间、闹钟设置和其他相关信息。

- 蜂鸣器:用于发出闹钟提醒的声音。

- 按键:用于设置闹钟时间和关闭闹钟。

2.2 软件设计软件设计主要基于C语言编写的程序,通过单片机的IO口来控制硬件设备。

- 系统初始化:设置单片机的时钟、IO口和外部中断等。

- 时间设置:通过按键实现对当前时间的设置,包括小时、分钟和秒钟。

- 闹钟设置:通过按键实现对闹钟时间的设置,并保存到EEPROM中,以便断电后依然能够记住设置的闹钟时间。

- 闹钟提醒:当当前时间和闹钟时间匹配时,发出蜂鸣器的声音提醒用户。

- 其他功能:包括显示当前时间、闹钟时间和提醒信息等。

3. 设计流程本次设计主要分为硬件设计和软件设计两个部分。

3.1 硬件设计流程1. 搭建电路连接,将单片机、液晶显示屏、蜂鸣器和按键连接在一起。

2. 使用示波器测试电路连接的正常性和稳定性,保证电路连接无误。

3. 按照电路图逐步搭建实验电路。

4. 将电路连接好后,用万用表和示波器等测试仪器对电路进行检测,确保硬件连接正确。

3.2 软件设计流程1. 编写初始化函数,对单片机进行必要的初始化设置。

2. 编写时间设置函数,通过调用按键函数实现时间的增加和减少,并将设置后的时间显示在液晶显示屏上。

3. 编写闹钟设置函数,通过按键设置闹钟时间,并将设置的闹钟时间保存在EEPROM中,以备断电后读取。

4. 编写闹钟提醒函数,通过对比当前时间和已设置的闹钟时间,当条件满足时,发出蜂鸣器的声音提醒用户。

基于单片机电子闹钟的设计

基于单片机电子闹钟的设计

基于单片机电子闹钟的设计电子闹钟是一种基于单片机技术的智能设备,可以通过设置闹钟时间来提醒人们起床、上班或者进行其他活动。

本文将介绍基于单片机的电子闹钟的设计过程和实现功能。

首先,我们选择一款适合作为控制核心的单片机芯片。

常用的单片机有51系列和AVR系列,其中51系列的代表性芯片是STC89C52,AVR系列的代表性芯片是ATmega16、我们可以根据具体需求选择适合的芯片。

其次,我们需要设计电子闹钟的硬件电路。

主要包括时钟电路、显示电路、按键输入电路和报警电路。

时钟电路通过晶体振荡器产生准确的时钟信号,显示电路通过数码管或液晶屏显示时间等信息,按键输入电路用来设置闹钟和调整时间,报警电路则用来发出可听到的声音提醒。

在硬件设计完成之后,我们还需要编写单片机的软件程序。

首先,我们需要初始化各个硬件模块,包括时钟模块、IO口模块和定时器模块等。

然后,我们需要编写定时中断函数,用来更新显示时间。

接下来,我们需要编写按键处理函数,用来设置闹钟和调整时间。

最后,我们需要编写报警函数,通过发出蜂鸣器的声音来提醒。

设计的基本功能包括:设置时间、设置闹钟、调整时间、调整闹钟、报警功能等。

用户可以通过按键输入来设置时间和闹钟,并且可以通过按键调整时间和闹钟的设置。

当闹钟时间到达时,蜂鸣器会发出声音提醒用户。

同时,数码管或液晶屏会显示当前的时间。

为了提高闹钟的实用性,我们还可以添加一些其他功能。

例如,可以加入温湿度传感器来测量当前的环境温度和湿度,并在数码管或液晶屏上显示。

还可以加入闹铃音乐的选择功能,让用户可以选择自己喜欢的音乐作为报警铃声。

总之,基于单片机的电子闹钟设计涉及到硬件电路设计和软件程序编写两个方面。

通过合理设计硬件电路和编写完善的软件程序,可以实现各种实用的功能。

电子闹钟可以帮助人们准时起床、上班或进行其他活动,提高人们的时间管理能力和生活质量。

基于STC89C52单片机时钟的设计与实现

基于STC89C52单片机时钟的设计与实现

基于STC89C52单片机时钟的设计与实现1. 本文概述本文主要介绍了基于STC89C52单片机和DS1302时钟芯片的电子时钟设计与实现。

该电子时钟系统具有年月日等基本时间显示功能,并集成了秒表计时处理、闹钟定时、蜂鸣器和温度显示等附加功能。

系统采用LCD1602作为液晶显示器件,通过单片机对时钟和温度等数据进行处理后传输至LCD进行显示。

用户可以通过按键对时间进行调节,同时,单片机还通过扩展外围接口实现了温度采集等功能。

本文的目标是提供一个功能丰富、易于操作的电子时钟系统,为学习和应用单片机技术提供一个实用的案例。

2. 系统设计要求在设计基于STC89C52单片机的时钟系统时,我们需要考虑以下几个关键的设计要求:时钟系统必须具备基本的时间显示功能,能够以小时、分钟和秒为单位准确显示当前时间。

系统还应支持设置闹钟功能,允许用户设定特定的时间点进行提醒。

系统需要保证长时间稳定运行,具备良好的抗干扰能力,确保在各种环境下都能准确计时。

还应具备一定的容错能力,即使在操作失误或外部干扰的情况下,也能保证系统的正常运行。

用户界面应简洁直观,便于用户快速理解和操作。

时钟的显示部分应清晰可见,即使在光线较暗的环境下也能保持良好的可视性。

同时,设置和调整时间的操作应简单易懂,方便用户进行日常使用。

在设计时钟系统时,应考虑到未来可能的功能扩展,如温度显示、日期显示等。

系统的设计应具有一定的灵活性和扩展性,以便在未来可以轻松添加新的功能模块。

鉴于时钟系统可能需要长时间运行,能耗是一个重要的考虑因素。

设计时应选择低功耗的元件,并优化电源管理策略,以延长电池寿命或减少能源消耗。

在满足上述所有要求的同时,还需要控制成本,确保产品的市场竞争力。

这可能涉及到对单片机的编程优化、选择性价比高的外围元件等措施。

通过满足上述设计要求,我们可以确保开发出一个功能完善、稳定可靠、用户友好、易于扩展、节能环保且成本效益高的STC89C52单片机时钟系统。

基于at89c51单片机的定时闹钟的设计

基于at89c51单片机的定时闹钟的设计

基于at89c51单片机的定时闹钟的设计本文介绍了基于AT89C51单片机的定时闹钟的设计。

文章将探讨设计目的和背景,并着重阐述定时闹钟的实现原理和功能。

本文档将介绍基于at89c51单片机的定时闹钟的硬件设计要点,包括电源、显示器、按键等组件选择和连接方式。

电源选择与连接在设计定时闹钟的硬件方案时,选择合适的电源是非常重要的。

以下是一些电源选择和连接的要点:使用稳定可靠的电源模块,例如直流电源模块,以确保单片机工作的稳定性。

将电源模块的正负极连接到at89c51单片机的VCC和GND引脚上。

注意电源的电压和电流要符合at89c51单片机的工作要求。

显示器选择与连接显示器是定时闹钟中显示时间和其他信息的重要组件。

以下是一些显示器选择和连接的要点:考虑使用液晶显示器 (LCD) 或数码管作为显示器,这些显示器可以清晰地显示数字和字符。

根据设计需求,选择合适的显示器尺寸和类型。

将显示器的控制引脚与at89c51单片机的相应引脚连接,以实现时间和信息的显示。

按键选择与连接按键是控制定时闹钟设置和功能的重要组件。

以下是一些按键选择和连接的要点:选择合适的按键类型,例如触摸按键或机械按键。

根据设计需求,确定所需的按键数量和布局。

将按键的引脚连接到at89c51单片机的GPIO引脚,以接收按键输入并实现相应的功能。

上述是基于at89c51单片机的定时闹钟的硬件设计要点,通过合理选择和连接电源、显示器和按键等组件,可以确保定时闹钟的稳定运行和正常功能。

本文将阐述基于at89c51单片机的定时闹钟的软件设计要点,包括如下内容:定时器的设置:使用at89c51单片机的定时器来实现定时功能,可以通过对定时器寄存器的设置来调整定时的时间间隔。

中断处理:在定时器到达设定的时间间隔时,通过中断处理来触发相应的操作。

可以通过设定中断优先级来确保定时器中断的可靠性。

闹钟功能的实现:通过软件算法和控制电路,将定时器和中断处理结合起来实现闹钟功能。

单片机课程设计电子闹钟

单片机课程设计电子闹钟

报警器数码显示时钟电路AT89C51键盘电路《单片机》课程设计 课题名称:电子闹钟姓名 班级学号实验地点实验时间年 月 日 星期一、实验目的:1.能显示 时时-分分-秒秒。

2.能够设定定时时间,修改定时时间。

3.定时时间到能发出警报声或者启动继电器,从而控制电器的起停。

二、实验仪器、设备和材料:AT89C51 单片机,共阴极数码管6个,喇叭一个,电容2个,晶阵一个,电阻(10K )4个,电源,导线若干三、实验思路:实验原理:采用单片机AT89C51作为本设计的核心元件,利用7段共阴LED 作为显示器件。

接入共阴LED 显示器,可显示时,分钟,秒,单片机外围接有定时报警系统,定时时间到,扬声器发出报警声,提示预先设定时间电器的起停时间到,从而控制电器的起停。

电路由下列部分组成:时钟电路、复位电路、控制电路、LED 显示,报警电路,芯片选用AT89C51 单片机。

系统框图:时钟电路:实验过程及步骤:首先将几个按键从上往下为k1,k2,k3,k4 。

k1与p1.4相连,k2与p1.3相连,k3与p1.3相连,k4与p1.1相连。

当需要设定当前时间时,按一下k4键,进入时间设定状态,按一下k2,分加1;按一下k3,小时加1。

如此反复来设定当前时间。

调好时间后按k1退出当前时间设定状态。

当要设定定时时间时,按下k3,进入定时时间设定状态,按一下k2,小时加1;按一下k4,分钟加1。

如此反复来设定要设定的定时时间。

设好后,按下k1退出定时时间设定状态。

程序设计流程图:AT89C51XTAL2XTAL1JZ 12MC130P F C230P F四:指导老师意见:评阅导师: 日 期:判断闹钟时间到否程序初始化调用显示程序开始P1.1是否 按下?调用时间设定程序P1.2是否按下?Y调用闹钟时间设定程序NNY硬件电路连接X T A L 218X T A L 119A L E 30E A 31P S E N 29R S T 9P 0.0/A D 039P 0.1/A D 138P 0.2/A D 237P 0.3/A D 336P 0.4/A D 435P 0.5/A D 534P 0.6/A D 633P 0.7/A D 732P 1.01P 1.12P 1.23P 1.34P 1.45P 1.56P 1.67P 1.78P 3.0/R X D 10P 3.1/T X D 11P 3.2/I N T 012P 3.3/I N T 113P 3.4/T 014P 3.7/R D 17P 3.6/W R 16P 3.5/T 115P 2.7/A 1528P 2.0/A 821P 2.1/A 922P 2.2/A 1023P 2.3/A 1124P 2.4/A 1225P 2.5/A 1326P 2.6/A 1427U 1A T 89C 51234567891R P 1R E S P A C K -8X 1C R Y S T A LC 147pC 247pG N DV C CV C CG N DL S 1S P E A K E RG N DR 310k R 210k R 110kR 410k。

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计

基于单片机的简易电子时钟设计引言:电子时钟是人们日常生活中广泛应用的一种设备,基于单片机的电子时钟可以实现精确的时间显示、闹钟设置、定时功能等。

本设计将使用单片机控制电子时钟的各种功能,通过一个LCD显示屏来显示时间和其他信息。

一、设计目标:1.实现准确显示时间功能;2.设计带有闹钟设置的功能;3.实现定时功能。

二、设计原理:该电子时钟工作原理主要是通过单片机将外部的时钟信号进行调整和处理,然后控制液晶显示屏显示时间。

电子时钟的核心是单片机,通过单片机的计时功能实现时钟的准确显示,并通过输入设备设置闹钟功能和定时功能。

三、设计流程:1.系统初始化:首先,将单片机初始化,设置时钟和计时器的相关参数,开启显示屏的显示功能。

2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。

3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。

4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。

四、硬件设计:1.单片机选择:选用一款适合的单片机,如51系列单片机。

2.时钟电路:通过外部晶振或者RTC芯片来提供准确的时钟信号。

3.输入设备:使用按键作为输入设备,用于设置闹钟和定时功能;4.显示屏:选用合适的液晶显示屏,用于显示时间。

五、软件设计:1.系统初始化:设置时钟和计时器的相关参数,开启显示屏的显示功能。

2.时间显示功能:通过计时器中断,定时更新时间,并将时间值传递给液晶显示屏显示出来。

3.闹钟设置功能:通过按键输入设置闹钟时间,将设置好的闹钟时间存储到单片机中。

4.定时功能:通过按键输入设置定时时间,将设置好的定时时间存储到单片机中,当定时时间到达时,触发相应的动作,如报警等。

六、实验结果:本设计可以准确显示时间,并可以设置闹钟和定时功能。

当闹钟和定时时间到达时,会触发相应的动作,实现了基本要求。

基于单片机C语言电子时钟完整版(闹钟,整点报时)

基于单片机C语言电子时钟完整版(闹钟,整点报时)

《单片机技术》课程设计说明书数字电子钟系、部:电气与信息工程学院学生姓名:指导教师:职称专业:班级:完成时间:2013-06-07摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。

所以设计一个简易数字电子钟很有必要。

本电子钟采用ATMEL公司的AT89S52单片机为核心,使用12MHz 晶振与单片机AT89S52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。

该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEU5键,进行相应的操作就可实现校时、定时、复位功能。

具有时间显示、整点报时、校正等功能。

走时准确、显示直观、运行稳定等优点。

具有极高的推广应用价值。

关键词电子钟;AT89S52;硬件设计;软件设计ABSTRACTClock is widely used in life, and a simple digital clock is more welcomed by people. So to design a simple digital electronic clock is necessary.The system use a single chip AT89S52 of ATMEL’s as its core to control The crystal oscillator clock,using of E-12MHZ is connected with the microcontroller AT89S52, through the software programming method to achieve a 24-hour cycle, and eight 7-segment LED digital tube (two four in one digital tube) displays hours, minutes and seconds requirements, and in the time course of a timing function, when the time arrived ahead of scheduled time to buzz a good timekeeping. The clock has four buttons KEY1, KEY2, KEY3,KEY4 and KEY5 key, and make the appropriate action can be achieved when the school, timing, reset. With a time display, alarm clock settings, timer function, corrective action. Accurate travel time, display and intuitive, precision, stability, and so on. With a high application value.Key words Electronic clock;;AT89S52;Hardware Design;Software Design目录1设计课题任务、功能要求说明及方案介绍 (1)1.1设计课题任务 (1)1.2功能要求说明 (1)1.3设计总体方案介绍及原理说明 (1)2设计课题硬件系统的设计 (2)2.1设计课题硬件系统各模块功能简要介绍 (2)2.2设计课题电路原理图、PCB图、元器件布局图 (2)2.3设计课题元器件清单 (5)3设计课题软件系统的设计 (6)3.1设计课题使用单片机资源的情况 (6)3.2设计课题软件系统各模块功能简要介绍 (6)3.3设计课题软件系统程序流程框图 (6)3.4设计课题软件系统程序清单 (10)4设计结论、仿真结果、误差分析、教学建议 (21)4.1设计课题的设计结论及使用说明 (21)4.2设计课题的仿真结果 (21)4.3设计课题的误差分析 (22)4.4设计体会 (22)4.5教学建议 (22)结束语 (23)参考文献 (24)致谢 (25)附录 (26)1 设计课题任务、功能要求说明及方案介绍1.1 设计课题任务设计一个具有特定功能的电子钟。

电子闹钟说明文档

电子闹钟说明文档

计算机科学与信息技术学院《单片机原理及接口术》课程设计报告姓名:赵晶学号:211101041187班级:2011级嵌本班2012年6月28日电子闹钟说明文档一、功能描述1、功能:1)在数码管上显示小时和分钟,用小灯的闪烁表示秒。

2)用按键调整时间,按键2为功能选择键,按键3和按键4为调时键及调分键。

3)用按键设置闹钟,可设两个闹钟,按键2为功能选择键,按键3和按键4为调时键及调分键。

4)整点报时。

5)在正常走时时按键可查看闹钟2、操作方法:K2键(右1)为功能选择键:不按K2(右1)键时,按K3(右2)键查看闹钟1,按K4(右3)键查看闹钟2,。

按一下进入调时,时钟停止更新,K3键(右2)调整分钟,K4键(右3)调整小时。

按两下进入闹钟1调整,K3键(右2)调整分钟,K4键(右3)调整小时。

按三下进入闹钟2调整,K3键(右2)调整分钟,K4键(右3)调整小时。

按四下时间恢复显示,标志位清零。

二、线路连接图1(线路连接图)IRQ--P2^3,DS---P2^4,RW--P2^5,AS--P2^6,CS--P2^7,A--P1^0,B--P1^1,C--P1^2,D--P1^3,LE--P1^4,s11--P3^0,s12--P3^1,f11--P3^ 2,f12--P3^3,LED1--P1^5,LED2--P1^6,k2--P2^2,k3--P2^1、k4--P2^0,buzzer--P1^7.二、实验器材单片机最小系统一个时钟芯片DS12C887一片CD4511BE数码管驱动芯片一片共阴极数码管四个蜂鸣器一个电阻若干四角按键三个三、功能实现图2(实验板)1、CD4511CD4511是一个用于驱动共阴极 LED (数码管)显示器的 BCD 码—七段码译码器,特点如下:具有BCD转换、消隐和锁存控制、七段译码及驱动功能的CMOS电路能提供较大的拉电流。

可直接驱动LED显示器。

图3(CD4511的引脚图及接线图)BI:4脚是消隐输入控制端,当BI=0 时,不管其它输入端状态如何,七段数码管均处于熄灭(消隐)状态,不显示数字。

电子闹钟说明书

电子闹钟说明书

本电子闹钟的设计是以单片机技术为核心,采用了小规模集成度的单片机制作的功能相对完善的电子闹钟。

硬件设计应用了成熟的数字钟电路的基本设计方法,并详细介绍了系统的工作原理。

硬件电路中除了使用AT89C51外,另外还有晶振、电阻、电容、发光二极管、开关、喇叭等元件。

在硬件电路的基础上,软件设计按照系统设计功能的要求,运用所学的汇编语言,实现的功能包括‘时时-分分-秒秒’显示,设定和修改定时时间的小时和分钟、校正时钟时间的小时、分钟和秒、定时时间到能发出一分钟的报警声。

一芯片介绍AT89C51是一种带4K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。

AT89C51是一种带2K字节闪存可编程可擦除只读存储器的单片机。

单片机的可擦除只读存储器可以反复擦除1000次。

该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。

由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51是它的一种精简版本。

AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案,外形及引脚排列如图1-1所示。

图1-1 AT89C51引脚图74LS573 的八个锁存器都是透明的D 型锁存器,当使能(G)为高时,Q 输出将随数据(D)输入而变。

当使能为低时,输出将锁存在已建立的数据电平上。

输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,新的数据也可以置入。

这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。

特别适用于缓冲寄存器,I/O 通道,双向总线驱动器和工作寄存器。

外形及引脚排列如图1-2所示。

图1-2 74LS573引脚图二硬件电路设计1 时钟电路设计AT89C51系列的单片机的时钟方式分为内部方式和外部方式。

内部方式就是在单片机的XTAL1和XTAL2的两引脚外接晶振,就构成了自己振荡器在单片机内部产生时钟脉冲信号。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告课程名称:单片机课程设计题目:多功能电子表学院:环境与化学工程系:过程装备与测控工程专业:测控技术与仪器班级:测仪111学号: 5801211040学生:白金成起讫日期: 2012-12-28~2013-1-7指导教师:大勇、俊清、熊剑单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。

而51单片机是各单片机中最为典型和最有代表性的一种。

本设计以AT89C52芯片为核心,辅以必要的外围电路,设计了一个结构简单,功能齐全的闹钟,它由5V直流电源供电。

在硬件方面,除了CPU外,使用1602液晶显示时钟的时间,并通过所写程序控制在某个时间点蜂鸣器的响应,即完成闹钟的功能,该闹钟设有4个独立按键,时间调整按键、闹钟调整按键和两个时间加减按键。

软件方面采用C语言编程。

整个闹钟系统能完成时间的显示、调时和定时闹钟的功能。

选用单片机最小系统应用程序,添加比较程序、时间调整程序及蜂鸣程序,通过时间比较程序触发蜂鸣,实现闹钟功能,完成设计所需求的软件环境。

介绍并使用KEIL单片机模拟调试软件,测试程序的可行性并用Proteus进行仿真。

关键词:AT89C52单片机定时器中断闹钟一、设计任务、要求 (4)1.1、设计任务: (4)1.2、设计要求: (4)二、方案总体设计 (5)2.1、显示模块 (5)2.2、实时时间计算模块 (5)2.3、按键控制模块 (5)2.4、声音报警模块 (5)2.5、总体设计: (5)三、硬件设计 (7)3.1、单片机最小系统 (7)3.1.1、时钟信号的产生 (7)3.1.2、复位电路 (7)3.2、液晶显示模块 (8)3.2.1、1602液晶引脚图及连线电路 (8)3.2.2、一般1602字符型液晶显示器实物图 (8)3.3、矩阵键盘 (8)3.4、蜂鸣器电路 (9)3.5、电源指示灯部分 (9)3.6、STC89C52芯片 (9)3.7、整体电路原理图 (10)3.8、Lockmaster硬件电路 (11)四、程序流程图 (12)五、系统仿真与调试 (14)5.1、Proteus仿真原理图 (14)5.2、实物图 (16)5.3、使用说明 (16)六、设计总结及心得体会 (17)附录: (18)一、设计任务、要求1.1、设计任务:利用单片机、4个独立按键、1602液晶显示器、无源蜂鸣器实现具有日期、时间、闹钟功能的多功能电子表。

1.2、设计要求:1、准确计时,以数字形式显示年月、日、时、分、秒。

2、小时以24小时计时形式,分秒计时为60进位,日期平年和闰年将自行更换。

3、采用4个独立按键对电子表进行控制,可进行闹钟设定、控制及时间日期的设定。

4、闹钟功能,可任意设定闹钟时间,一旦走时到该时间,能以声的形式告警提示。

5、复位电路采用按键复位电路。

二、方案总体设计本次设计闹钟,使用了STC89C52单片机芯片控制电路,单片机控制电路简单,电路简明易懂,使用键盘键上的按键来调整电子表的月、日、时、分和闹钟的设定,用蜂鸣器来进行定时提醒,编程采用KEIL C,编程简单便捷且调试方便,这样通过四个模块:按键、芯片、蜂鸣器、1602液晶显示器即可满足设计要求。

2.1、显示模块液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。

液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。

2.2、实时时间计算模块AT89S52单片机部带有定时/计数功能,此定时功能是通过对外部晶振的脉冲进行计数,从而达到计时功能,使用12MHz的晶振就能实现高精度的计时,因此可以利用此功能实现计时。

2.3、按键控制模块本设计用到的键盘有4个独立按键,分别为时间调整按键、闹钟调整按键和两个时间加减按键。

以此控制时间的调整和闹钟时间的调整。

2.4、声音报警模块此模块采用无源蜂鸣器实现,通过编写相应的程序,当满足要求时,给蜂鸣器提供不同频率的方波,使其发出不同频率的声音,把不同频率的声音按一定的时序输出,从而发出音乐。

2.5、总体设计:总体框架如图2-1所示:图2-1 总体硬件框架图总体构思如图2-2所示:图2-2 总体构思框架图三、硬件设计3.1、单片机最小系统3.1.1、时钟信号的产生89C52芯片部有一个高增益法相放大器,用于构成振荡器。

反相放大器的输入端为XTAL1,输出端为XTAL2,两端跨接石英晶体及两个电容就可以构成稳定的自己振荡器,电路如图3-1所示。

图3-1 晶振电路3.1.2、复位电路复位操作有上电自动复位和按键手动复位两种方式,本设计采用按键电平复位,结构如图3-2所示。

图3-2 复位电路3.2、液晶显示模块3.2.1、1602液晶引脚图及连线电路图3-3 1602液晶显示器3.2.2、一般1602字符型液晶显示器实物图字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式LCD,目前常用16*1,16*2,20*2和40*2行等的模块。

下面以太阳人电子的1602字符型液晶显示器为例,介绍其用法。

一般1602字符型液晶显示器实物如图3-4图3-4 1602液晶显示器实物图3.3、矩阵键盘本设计采用4个独立按键控制,按键的接口、序号及接线图如下图所示:图3-5 独立按键连线电路图3.4、蜂鸣器电路本课程设计使用的蜂鸣器是有源蜂鸣器,通过对给蜂鸣器一定频率的方波,驱动蜂鸣器蜂鸣器发出相应频率的声音,其中方波可对端口进行连续取反实现,取反频率由定时器控制,驱动电路如下图所示:图3-6 蜂鸣器连线电路图3.5、电源指示灯部分电源指示灯部分包括一个开关,发光二级管和限流电阻。

当电源接通时发光二级管点亮,表明电路已上电。

电源指示灯原理图如图3-7所示:图3-7电源指示灯原理图3.6、STC89C52芯片STC89C52是一个低功耗,高性能CMOS8位单片机,片含具有如下特点:40个引脚(引脚图如图1-1所示),4kBytesFlash片程序存储器,128bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDTC)电路,片时钟振荡器。

此外,STC89C52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。

空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。

单片机引脚图如图3-8所示:图3-8单片机引脚图3.7、整体电路原理图整体电路原理图如图3-9所示:图3-9 总体电路原理图3.8、Lockmaster硬件电路图3-10 硬件电路正面视图图3-11 硬件电路背面视图四、程序流程图程序主要流程如图4-1所示,时间、日期、闹钟设置部分流程如图4-2所示。

图4-1 程序流程图图4-2 程序流程图时间、日期设置部分图4-3 程序流程图闹钟设置部分五、系统仿真与调试5.1、Proteus仿真原理图Proteus软件是英国electronics公司出版的EDA工具软件。

它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。

它是目前最好的仿真单片机及外围器件的工具。

Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。

它是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台。

以下是用Proteus仿真调试图:图5-1 日期时间显示图5-2 闹钟设置5.2、实物图图5-5 实物正面视图5.3、使用说明按键序号及对应具体功能为:按键1:时间与日期调整进入与退出键按键2:加一调整功能键按键3:减一调整功能键按键4:闹钟调整进入与退出键六、设计总结及心得体会单片机是我所学专业的主要课程之一,因此我认为单片机课程设计是十分必要而且十分重要的。

尽管刚刚拿到课程设计题目时有点迷惘,不知道如何着手,但通过上网和图书馆查阅相关资料,自己认真钻研以及虚心询问同学,终于解决了一个又一个的困难和障碍,成功完成了任务。

通过本次的单片机课程设计,不仅大丰富了我的理论知识,而且在实践过程中更令我学会了坚持、耐心和努力。

此次单片机课程设计需要运用到许多之前所学过的知识,令我认识到自己以前学习的一些不足之处,例如对以前所学知识的理解不够深刻,掌握得不够牢固,运用不够灵活。

这让我懂得了认真学习的重要性,以及要孜孜不倦地钻研所学过的知识,做得融会贯通,不能一览而过,不求甚解。

在边学习边动手的过程中,我对电子时钟的构造以及原理有了进一步的了解,同时也加深和巩固了我对单片机汇编语言的认识。

除此之外,由于是第一次做单片机,因此在此次课程设计的过程中,无论是电路绘制还是汇编语言编写都难免遇到了不少困难和障碍,例如汇编语言编写出错、电路元件无从入手等。

在面对困难和障碍时,我庆幸自己没有退缩和逃避,而是通过各种方法,迎难而上,以坚持、耐心和努力勇敢无畏地面对困难,克服困难,解决困难。

让我发现问题、分析问题、解决问题以及动手实践的能力都有了很大的提高,并了解到理论知识与实践相结合的重要意义。

从这次的课程设计中,我真真正正的意识到,在以后的学习中,要理论联系实际,把我们所学的理论知识用到实际当中,学习单机片机更是如此,程序只有在经常的练习的过程中才能提高。

本次课程设计尽管时间不长,但从中所获,将令我受益终生附录:#include<reg52.h>#define uchar unsigned char#define uint unsigned intuchar code table[]=" 2014-01-06 MON";uchar code table1[]=" 01:00:00";uchar code table2[7][3]= {{"MON"},{"TUE"},{"WED"},{"THU"},{"FRI"},{"SAT"},{"SUN"}}; //定义二维字符数组sbit RW=P2^6;sbit EN=P2^5; // 1602液晶使能端sbit RS=P2^7; // 1602液晶命令/数据端sbit key1=P1^0; // 声明s1按键sbit key2=P1^1; // 声明s2按键sbit key3=P1^2; // 声明s3按键sbit key4=P1^3; // 声明s4按键sbit beep=P3^7;uint a,s,spak,i,flag; // 声明蜂鸣器uchar num1,yue,ri,keynum1,week; //定义时分秒变量char shi=01,fen,miao,shi1,fen1,miao1;uint nian=2014; //定义年变量void delay(uint z){uint i,j;for(i=z;i>0;i--) //定义带参数延时函数for(j=100;j>0;j--);}void write_(uchar ) //1602液晶写指令函数{RW=0;RS=0;P0=;delay(5);EN=1;delay(5);EN=0;}void write_date(uchar date) //1602液晶写数据函数{RW=0;RS=1;P0=date;delay(5);EN=1;delay(5);EN=0;}void write_addate1(uchar add,uint date) //定义显示年的函数{uint qian;uchar bai,shi,ge;qian=date/1000;bai=date%1000/100;shi=date%1000%100/10;ge=date%10;write_(add+0x80);write_date(0x30+qian);write_date(0x30+bai);write_date(0x30+shi);write_date(0x30+ge);}void write_addate3(uchar add3,uint date3) //定义显示年的函数{uint qian;uchar bai,shi,ge;qian=date3/1000;bai=date3%1000/100;shi=date3%1000%100/10;ge=date3%10;write_(add3+0x80);write_date(0x30+qian);write_date(0x30+bai);write_date(0x30+shi);write_date(0x30+ge);}void write_addate2(uchar add,uchar date) //定义显示月、日、时、分、秒函数{uchar shi,ge;shi=date/10;ge=date%10;write_(add+0x80);write_date(0x30+shi);write_date(0x30+ge);}void write_rq(uchar i) //定义显示星期的函数{ uchar x;for(x=0;x<3;x++){ write_date(table2[i][x]);delay(5);}}void init () //定义初始化函数{beep=0;flag=1;yue=01;ri=06;TMOD=0x01; // 定时器0工作方式为16位TH0=(65536-50000)/256; // 装初值TL0=(65536-50000)%256;EA=1; // 开总中断ET0=1; // 开定时器0中断write_(0x38); // 设置16*2显示,5*7点阵,8位数据口write_(0x06); // 写一个字符后地址指针加1 write_(0x0c); // 设置开显示,不显示光标write_(0x01); // 显示清0,数据清0 write_(0x80); // 使指针指向第1行第1列}void keyscan() // 定义按键函数{uchar keynum;if(key1==0) //s1按键被按下{ delay(3); //去抖延时if(key1==0) //确认s1按键被按下,进入调时间模式{keynum++;while(!key1); //松手检测}if(keynum==1) //s1按下一次{ TR0=0; //关闭定时器0write_(0x81); //指针指向第1行2列write_(0x0f); //开启光标显示,光标闪烁}if(keynum==2){write_(0x86); //光标跳到月份}if(keynum==3){write_(0x89); //光标跳到日}if(keynum==4){write_(0x8c); //光标跳到星期}if(keynum==5){write_(0x80+0x40+4); //光标跳到时}if(keynum==6){write_(0x80+0x40+7); //光标跳到分}if(keynum==7){write_(0x80+0x40+10); //光标跳到秒}if(keynum==8){keynum=0; //退出调时间模式TR0=1; //开启定时器0write_(0x0c); //关闭光标显示}}if(keynum) //当进入调时间模式时{if(key2==0) //s2按键按下{delay(5); //去抖延时if(key2==0){if(keynum==1){nian++; //s2每按下一次年份加1if(nian==10000) // 加满清0nian=0;write_addate1(1,nian); // 显示年份write_(0x81); //写完数据指针指向年份原来位置}if(keynum==2){yue++; //s2每按下一次月份加1if(yue==13)yue=0; //加满清0write_addate2(6,yue); //显示月份write_(0x86); //写完数据指针指向月份原来位置}if(keynum==3){ ri++;if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12) //1,3,5,7,8,10,12月有31天{if(ri==32) //加满还原ri=1;}if(yue==4||yue==6||yue==9||yue==11) //4,6,9,11月有30天 {if(ri==31)ri=1;}if(yue==2&&((nian%4==0&&nian%100!=0)||nian%400==0)) //闰年2月有30天{if(ri==30)ri=1;}if(yue==2&&(nian%4!=0)||(nian%100==0&&nian%400!=0)) //非闰年2月有31天{if(ri==29)ri=1;}write_addate2(9,ri); //显示日write_(0x89); //写完数据指针指向日原来位置}if(keynum==4){week++;//s2每按下一次星期加1if(week==7)//加满还原week=0;write_rq(week);//显示星期write_(0x8c); //写完数据指针指向星期原来位置}if(keynum==5){shi++;//s2每按下一次时加1if(shi==24)shi=0;//加满还原write_addate2(0x44,shi); //显示时write_(0xc4); //写完数据指针指向时原来位置}if(keynum==6){fen++;//s2每按下一次分加1if(fen==60)fen=0;//加满还原write_addate2(0x47,fen); //显示分write_(0xc7);//写完数据指针指向分原来位置}if(keynum==7){miao++;//s2每按下一次秒加1if(miao==60)miao=0;//加满还原write_addate2(0x4a,miao);//显示秒write_(0xca);//写完数据指针指向秒原来位置}while(!key2); //松手检测}}if(key3==0){delay(5);if(key3==0){ //s3按下时减1if(keynum==1){nian--;if(nian==-1)nian=9999;write_addate1(1,nian);write_(0x81);}if(keynum==2){ yue--;if(yue==-1)yue=12;write_addate2(6,yue);write_(0x86);}if(keynum==3){ri--;if(ri==0){if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)ri=31;if(yue==4||yue==6||yue==9||yue==11)ri=30;if(yue==2&&((nian%4==0&&nian%100!=0)||nian%400==0))ri=29;if(yue==2&&(nian%4!=0)||(nian%100==0&&nian%400!=0))ri=28;}write_addate2(9,ri);write_(0x89);}if(keynum==4){week--;if(week==-1)week=6;write_rq(week);write_(0x8c);}if(keynum==5){shi--;if(shi==-1)shi=23;write_addate2(0x44,shi);write_(0xc4);}if(keynum==6){fen--;if(fen==-1)fen=59;write_addate2(0x47,fen);write_(0xc7);}if(keynum==7){miao--;if(miao==-1)miao=59;write_addate2(0x4a,miao);write_(0xca);}while(!key3);//松手检测}}}if(key4==0) //s4被按下进入调闹钟模式{ delay(3);if(key4==0){while(!key4);keynum1++;}if(keynum1==1){ write_(0x01); //清屏,指针清0write_(0xc6); //在时分之间显示":"write_date(':');write_(0xc9); //在分秒之间显示":"write_date(':');write_(0x0f); //开启光标write_(0xc4); //光标指向时}if(keynum1==2){write_(0xc7);//光标指向分}if(keynum1==3){write_(0xca); //光标指向秒}if(keynum1==4){ keynum1=0;write_(0x0c); //关闭光标}}if(keynum1){if(key2==0)//s2按下加1{delay(5);if(key2==0){while(!key2);if(keynum1==1){shi1++;if(shi1==24)shi1=0;write_addate2(0x44,shi1);write_(0xc4);}if(keynum1==2){fen1++;if(fen1==60)fen1=0;write_addate2(0x47,fen1);write_(0xc7);}if(keynum1==3){miao1++;if(miao1==60)miao1=0;write_addate2(0x4a,miao1);write_(0xca);}}}if(key3==0) //s3每按一次减1{delay(3);if(key3==0){while(!key3);if(keynum1==1){shi1--;if(shi1==-1)shi1=23;write_addate2(0x44,shi1);write_(0xc4);}if(keynum1==2){fen1--;if(fen1==-1)fen1=59;write_addate2(0x47,fen1);write_(0xc7);}if(keynum1==3){miao1--;if(miao1==-1)miao1=59;write_addate2(0x4a,miao1);write_(0xca);}}}}}void main(){ uchar num;init();for(num=0;num<15;num++){ write_date(table[num]);delay(5);} //显示初始时间write_(0xc0);for(num=0;num<12;num++){ write_date(table1[num]);delay(5);}TR0=1; //开启定时器0while(1){if(shi==shi1&&fen==fen1&&miao==miao1){flag=1;while(flag){beep=1;if(key2==0){beep=0;flag=0;}}}keyscan(); //扫描键盘}}void time() interrupt 1 //中断函数{TH0=(65536-50000)/256;TL0=(65536-50000)%256; //进入中断装初值num1++;if(num1==20) //一秒到了{ num1=0; //清0miao++;if(miao==60) //一分到了{ miao=0; fen++; }if(!keynum1) write_addate2(0x4a,miao); //当调闹钟模式按下时不显示当前时间if(fen==60){ fen=0;shi++;}if(!keynum1) write_addate2(0x47,fen); //当调闹钟模式按下时不显示当前时间if(shi==24){shi=0;ri++;week++;}if(!keynum1) write_addate2(0x44,shi);//当调闹钟模式按下时不显示当前时间if(yue==1||yue==3||yue==5||yue==7||yue==8||yue==10||yue==12)if(ri==32){ ri=1; yue++; }if(yue==4||yue==6||yue==9||yue==11)if(ri==31){ ri=1; yue++; }if(yue==2&&((nian%4==0&&nian%100!=0)||nian%400==0))if(ri==30){ ri=1; yue++; }if(yue==2&&(nian%4!=0)||(nian%100==0&&nian%400!=0))if(ri==29){ ri=1; yue++; }if(!keynum1)write_addate2(9,ri); //当调闹钟模式按下时不显示当前时间if(week==7)week=0;if(!keynum1)//当调闹钟模式按下时不显示当前时间{ write_(0x8c);write_rq(week);}if(yue==13){ yue=0;nian++;}if(!keynum1)//当调闹钟模式按下时不显示当前时间{write_addate2(6,yue);write_(0x88);write_date('-');}if(nian==10000)nian=0;if(!keynum1){ write_addate3(1,nian);//当调闹钟模式按下时不显示当前时间write_(0x85);write_date('-');}}}。

相关文档
最新文档