单片机电子时钟
基于单片机电子时钟设计

基于单片机电子时钟设计电子时钟是一种利用单片机技术来实现精确时间显示的装置。
它可以准确地显示时间,并且可以根据需要进行闹铃功能等扩展。
接下来,我将详细介绍基于单片机的电子时钟设计。
首先,我们需要选择合适的单片机来实现电子时钟。
目前,常用的单片机有STC51系列、PIC系列、AVR系列等。
在选择单片机时,我们需要考虑其性能参数、价格以及开发环境等因素。
接下来,我们需要设计电子时钟的电路结构。
电子时钟的核心是单片机,通过连接显示屏、RTC(实时时钟)、按键以及扬声器等设备,来实现时间的显示、调整以及报警功能。
首先,我们需要选择合适的显示屏。
常用的显示屏有数码管、液晶显示屏、LED点阵等。
数码管和液晶显示屏可以直接连接到单片机的IO口,而LED点阵需要借助驱动芯片来完成控制。
其次,我们需要选择合适的RTC模块,以确保时钟的准确性。
RTC模块可以借助于DS1302等实时时钟芯片来实现。
同时,我们还需要连接按键,来实现对时钟进行调整的功能。
通过按键的组合操作,我们可以调整年、月、日、小时、分钟等时间参数。
此外,如果我们希望实现报警功能,我们还需要连接一个扬声器。
通过控制扬声器的开关,我们可以在设定的时间点播放报警铃声。
在硬件设计完成后,我们就可以进行软件开发工作了。
首先,我们需要编写主程序来初始化硬件设备,并进入主循环。
在主循环中,我们需要不断读取RTC模块的时间数据,并在显示屏上进行实时显示。
同时,我们也需要编写按键检测和处理的程序。
按键检测可以通过查询IO口的状态来实现,而按键处理则需要根据按键的值进行相应的功能调整。
如果需要实现报警功能,我们还需要编写报警处理的程序。
在设定的时间点,我们可以通过控制扬声器的开关来实现报警铃声的播放。
最后,我们需要进行整体的调试和测试工作。
通过不断地调整和优化程序,来确保整个电路和软件的正常运行。
总结起来,基于单片机的电子时钟设计包括硬件设计和软件开发两部分。
通过选择合适的单片机、显示屏、RTC模块、按键和扬声器等设备,并编写相应的程序,我们可以实现一个功能完善的电子时钟。
基于单片机及时钟芯片DS1302的电子时钟设计

基于单片机及时钟芯片DS1302的电子时钟设计一、概述二、电子时钟的基本原理电子时钟是一种以单片机为核心的智能电子产品,采用数字电路来显示时间。
电子时钟的核心部件是一个定时器,通过周期性的计数来确定时间,然后再将计数器的结果通过数码管等显示装置进行显示。
除此之外,电子时钟还需要一个能够准确计时的时钟芯片,如本文所使用的时钟芯片DS1302。
三、电子时钟的设计方法本文设计的电子时钟采用AT89C52单片机和时钟芯片DS1302,并通过外围的驱动电路和数码管来实现时间的显示。
该电子时钟具有以下特点:1.可进行24小时制和12小时制的切换:电子时钟可以通过按键实现24小时制和12小时制的切换,可按需选择。
2.自动夏令时判断:电子时钟可自动识别夏令时,并根据设定值进行切换,方便易用。
3.温度显示:电子时钟的DS1302时钟芯片自带温度探测器,可实现温度的实时显示。
本文所设计的电子时钟的硬件设计方案如下:1.主控芯片:采用AT89C52单片机2.显示装置:采用数码管进行时分秒的显示,共4位数码管。
3.时钟芯片:采用DS1302时钟芯片,保证时间的准确性。
5.电源:采用开关电源或锂电池供电。
锂电池供电时,电子时钟可实现断电后不重置的功能。
1.初始化:在电子时钟启动时,需要对各个模块进行初始化,如DS1302时钟芯片的读写口、数码管和按键都需要进行初始化。
2.频率切换:按下切换按键后,电子时钟的频率从24小时制切换到12小时制。
3.设定夏令时:按下设定按键后,可以进行夏令时设定。
设定值以秒为单位存储,在夏季过渡期改变时,只需修改设定值即可。
5.时间的显示:通过程序将DS1302时钟芯片中的时间读出并在数码管上显示,实现实时显示的功能。
五、总结本文设计的基于单片机及时钟芯片DS1302的电子时钟,可通过按键实现24小时制和12小时制的切换、自动夏令时判断、温度显示等多种功能,实现了电子时钟的多种要求和需求。
该设计方案具有简单实用、成本低廉、易于维护等优点,可广泛应用于各个领域。
基于单片机的电子时钟设计

基于单片机的电子时钟设计电子时钟是一种显示时间的设备,通常基于单片机设计。
它不仅可以准确显示时间,还可以具备闹钟、日历等功能。
本文将介绍基于单片机的电子时钟的设计。
首先,我们来看单片机的选择。
在设计电子时钟时,常用的单片机有PIC、AVR和STM32等。
这些单片机都有较强的计算能力和丰富的外设接口,非常适合用于电子时钟的设计。
具体的选择可以根据需求和个人熟悉程度做出决定。
接下来,我们需要设计时钟的显示部分。
一般来说,电子时钟的显示可以采用液晶显示屏或LED数码管。
液晶显示屏具有占用空间小、显示效果清晰等优点,适合用于大号时钟;而数码管则适合用于小型时钟。
根据具体需求选择合适的显示器件。
在电子时钟设计中,如何准确获取时间是关键。
可以利用主频计数的方法,通过单片机的定时器来获取时间。
比如用32.768kHz的振荡源作为单片机的时钟源,然后每秒进行一次中断计数,通过累加中断计数值,即可得到秒数、分钟数、小时数等。
在此基础上,可以进一步添加日历计算功能,如年、月、日的计算。
闹钟功能是电子时钟的重要组成部分之一、我们可以通过按键输入设置闹钟的时间和开关状态。
当闹钟时间到达时,可以通过蜂鸣器或液晶显示器等方式提醒用户。
闹钟的开关状态可以通过EEPROM等非易失性存储器来保存,以实现断电重启后不丢失设置的功能。
除了基本的显示和计时功能,电子时钟还可以增加其他实用的功能。
比如温湿度显示功能,可以通过外部传感器获取环境的温度和湿度,并显示在屏幕上。
还可以添加定时开关机功能,通过按键设置时间和开关状态,控制电源的开关。
这些功能的实现都需要通过合理的硬件设计和软件编程来完成。
总的来说,基于单片机的电子时钟设计需要首先选择合适的单片机,并根据具体需求设计显示部分、时间获取部分、闹钟部分以及其他扩展功能。
其中涉及到硬件设计和软件编程的内容,需要有一定的电子和计算机基础知识。
通过合理的设计和编程,我们可以实现一个功能齐全、准确可靠的电子时钟。
基于单片机的数字电子时钟设计

基于单片机的数字电子时钟设计数字电子时钟是一种非常常见的电子产品,它可以帮助我们实现精确的时间显示,让我们的生活更加方便。
随着科技的不断发展,数字电子时钟也在不断更新和发展,基于单片机的数字电子时钟已经成为当前最先进的技术之一。
本文将介绍基于单片机的数字电子时钟的设计原理和实现方法。
一、数字电子时钟的设计原理数字电子时钟的实现原理就是把时间信号转换成数字信号,再通过计算机芯片来显示时间。
其中,时间信号可以是电缆信号或者无线信号,并且也可以通过外部的控制电路进行调节。
而计算机芯片可以采用单片机、PLC控制器等方案进行设计。
基于单片机的数字电子时钟,可以使用数字时钟芯片和定时器芯片来完成。
数字时钟芯片是一种能够实现数据的统计、时钟显示等功能的IC芯片,通过将其与定时器芯片相连,就能够实现精确的时间统计和显示。
此外,在设计时还需要进行软硬件电路的优化和调试。
二、基于单片机的数字电子时钟的实现方法1、硬件设计基于单片机的数字电子时钟的硬件设计,主要包含单片机控制电路、显示电路、外设接口电路、供电电路、时钟芯片和定时器芯片等部分。
其中,时钟芯片用于提供精准的时间信号,定时器芯片则用于进行计时,而单片机和外设接口电路则用于控制整个数字电子时钟的功能。
另外,数字电子时钟还需要进行外观设计,通常采用的是数码管或液晶屏幕显示时间。
通过优化电路布局和参数匹配,可以有效地提高整个数字电子时钟的稳定性和精度。
2、软件设计在数字电子时钟的软件设计中,主要包含固件设计和操作系统设计两部分。
固件设计是指对单片机系统进行程序编写、调试和优化,以实现时钟的各种功能;而操作系统设计,则是对固件进行封装,建立起一套完整的操作环境,方便用户进行操作。
在固件设计中,需要考虑到时钟的显示、调节、闹钟、定时等多种功能的实现。
通常,这些功能都会涉及到多个模块和数据结构的设计,需要通过循序渐进的方式逐步实现。
在操作系统设计中,需要对时钟的各种操作进行封装,形成一套完整的操作界面。
基于单片机的电子时钟设计

基于单片机的电子时钟设计电子时钟是人们日常生活中常见的设备之一,它不仅能够准确显示时间,还可以搭配其他功能,如闹钟、温度显示等。
本文将介绍基于单片机的电子时钟的设计原理和步骤,并探讨其在现代生活中的应用。
一、设计原理基于单片机的电子时钟主要由以下几个模块组成:时钟模块、显示模块、控制模块和电源模块。
时钟模块负责获取当前时间并进行计时,显示模块用于将时间信息显示出来,控制模块用于处理用户的输入操作,电源模块为电子时钟提供稳定的电源。
1. 时钟模块时钟模块的核心是一个定时器,它可以定时触发中断,通过中断服务程序来更新时间。
在单片机中,我们可以使用定时器模块来实现这个功能,通过设定合适的定时器参数,可以实现从毫秒级到秒级的计时精度。
2. 显示模块显示模块通常采用数码管或者液晶显示屏来显示时间信息。
数码管可以直接显示数字,在低功耗和成本方面具有优势;液晶显示屏可以显示更多的信息,具有更好的可视角度和美观性。
在电子时钟中,我们可以通过控制显示模块的引脚,以适当的方式显示小时、分钟和秒数。
3. 控制模块控制模块主要用于处理用户的输入操作,如设置闹钟时间、调整时间等。
可以通过按键开关、旋转编码器或者触摸屏等方式来实现用户交互。
当用户按下按键或者滑动触摸屏时,控制模块会相应地改变时钟模块中的时间数据或者触发其他操作。
4. 电源模块电子时钟需要一个稳定的电源来工作,通常使用交流电转直流电的方式进行供电。
电源模块可以通过整流、滤波和稳压等电路来提供稳定的直流电源。
二、设计步骤基于单片机的电子时钟的设计步骤如下:1. 确定需求和功能:首先需要明确设计的需求和功能,包括显示方式、时间格式、附加功能等。
2. 选择单片机:根据需求选择适合的单片机型号,考虑处理性能、存储空间、外设接口等因素。
3. 设计电路图:根据选择的单片机和其他模块,设计电子时钟的电路图。
包括时钟模块、显示模块、控制模块和电源模块的连接方式。
4. 编写源代码:根据电路图和功能需求,编写单片机的源代码。
单片机电子时钟课程设计实验报告(1)

单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。
二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。
2.软件设计通过C语言编写单片机程序,用于实现时钟功能。
3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。
(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。
(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。
(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。
三、实验结果经过调试,电子时钟的各项功能都能够正常实现。
在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。
在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。
四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。
通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。
在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。
单片机电子时钟课程设计

单片机电子时钟课程设计一、课程目标知识目标:1. 让学生理解单片机的基本原理,掌握电子时钟的工作原理;2. 使学生掌握单片机编程技术,能独立完成电子时钟的程序编写;3. 帮助学生了解电子时钟的设计过程,掌握相关电子元器件的使用。
技能目标:1. 培养学生运用单片机解决实际问题的能力,提高编程和调试技巧;2. 培养学生动手实践能力,能独立完成电子时钟的组装和调试;3. 提高学生的团队协作和沟通能力,能在小组项目中发挥积极作用。
情感态度价值观目标:1. 激发学生对电子技术和单片机编程的兴趣,培养创新意识;2. 培养学生严谨、细致的学习态度,养成良好的学习习惯;3. 增强学生的自信心和责任感,使其在项目实践中勇于面对挑战。
课程性质:本课程为实践性较强的课程,旨在通过项目实践,让学生掌握单片机编程和应用,培养实际操作能力。
学生特点:学生具备一定的单片机基础知识和编程技能,对电子技术有一定了解。
教学要求:注重理论与实践相结合,强调动手实践,鼓励学生创新和团队协作。
将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. 单片机基础:回顾单片机的基本原理、结构、工作方式,重点掌握时钟电路、I/O 口编程、中断系统等基础知识。
教材章节:《单片机原理与应用》第1-3章2. 电子时钟原理:学习电子时钟的基本构成、工作原理,分析时钟芯片DS1302的功能和应用。
教材章节:《单片机原理与应用》第6章3. 程序设计:学习C语言编程,编写电子时钟程序,掌握定时器、中断处理、数据存储等编程方法。
教材章节:《单片机C语言程序设计》第4-6章4. 硬件设计:学习电子时钟硬件电路设计,包括单片机、时钟芯片、显示模块、按键模块等。
教材章节:《电子电路设计》第2-3章5. 调试与优化:学习电子时钟系统的调试方法,分析常见问题,进行程序和硬件优化。
教材章节:《单片机原理与应用》第8章6. 项目实践:分组进行电子时钟项目实践,从硬件组装、编程调试到产品展示,全面锻炼学生的动手能力。
单片机电子钟实训报告

一、引言随着电子技术的不断发展,单片机在各个领域得到了广泛的应用。
电子钟作为单片机应用的一个重要实例,具有很高的实用价值。
本实训报告主要介绍了单片机电子钟的设计与实现过程,包括硬件电路设计、软件编程以及调试过程。
二、硬件电路设计1. 单片机选择本实训选用AT89C51单片机作为核心控制器,该单片机具有丰富的I/O端口、较强的计算能力和较大的存储空间,能够满足电子钟的设计需求。
2. 时钟芯片本实训采用DS1302时钟芯片作为时间源,该芯片具有年、月、日、周、时、分、秒的精确计时功能,并具备闰年补偿等功能。
3. 液晶显示屏本实训选用1602液晶显示屏用于显示时间、日期等信息。
1602液晶显示屏具有清晰显示多个字符和符号的特点,方便用户查看时间和其他信息。
4. 按键模块本实训设计按键模块用于用户输入和设置。
按键包括时间设置键、日期设置键、闹钟设置键等,方便用户进行各项操作。
5. 电源模块本实训采用DC5V电源模块,为整个电子钟提供稳定的电源供应。
三、软件编程1. 主程序主程序负责初始化单片机、时钟芯片、液晶显示屏等硬件设备,并进入主循环。
主循环中,程序会不断检测按键状态,根据按键输入调整时间、日期和闹钟设置。
2. 时钟控制程序时钟控制程序负责实现时钟的基本功能,包括计时、闰年补偿等。
程序通过定时器中断,每秒更新一次时间。
3. 显示程序显示程序负责将时间、日期等信息显示在液晶显示屏上。
程序使用1602液晶显示屏的指令集,动态显示时、分、秒和日期。
4. 按键扫描程序按键扫描程序负责检测按键状态,并根据按键输入调整时间、日期和闹钟设置。
程序采用轮询方式检测按键状态,以提高按键响应速度。
5. 闹钟程序闹钟程序负责实现闹钟功能,当时间达到设定的闹钟时间时,电子钟会发出蜂鸣声提示用户。
四、调试过程1. 硬件调试首先,对硬件电路进行调试,检查各元器件是否安装正确,连接是否牢固。
然后,使用万用表检测电源电压、单片机各引脚电压是否正常。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机电子时钟DS1302是Dallas公司生产的一种实时时钟芯片。
它通过串行方式与单片机进行数据传送,能够向单片机提供包括秒、分、时、日、月、年等在内的实时时间信息,并可对月末日期、闰年天数自动进行调整;它还拥有用于主电源和备份电源的双电源引脚,在主电源关闭的情况下,也能保持时钟的连续运行。
另外,它还能提供31字节的用于高速数据暂存的RAM。
鉴于上述特点,DS1302已在许多单片机系统中得到应用,为系统提供所需的实时时钟信息。
一、 DS1302的主要特性1. 引脚排列500)this.width=500 border=0>;图1 DS1302引脚排列图DS1302的引脚排列如图1所示,各引脚的功能如下:X1,X2——32768Hz晶振引脚端;RST——复位端;I/O——数据输入/输出端;SCLK——串行时钟端;GND——地;VCC2,VCC1——主电源与后备电源引脚端。
2. 主要功能DS1302时钟芯片内主要包括移位寄存器、控制逻辑电路、振荡器、实时时钟电路以及用于高速暂存的31字节RAM。
DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。
其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在作用于SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。
因此,其与单片机之间的数据传送是十分容易实现的。
二、时钟的产生及存在的问题(1) 在实际使用中,我们发现DS1302的工作情况不够稳定,主要表现在实时时间的传送有时会出现误差,有时甚至整个芯片停止工作。
我们对DS1302的工作电路进行了分析,其与单片机系统的连接如图2所示。
从图中可以看出,DS1302的外部电路十分简单,惟一外接的元件是32768Hz的晶振。
通过实验我们发现:当外接晶振电路振荡时,DS1302计时正确;当外接晶振电路停振时,DS1302计时停止。
因此,我们认为32768Hz晶振是造成 DS1302工作不稳定的主要原因。
500)this.width=500 border=0>;图2 DS1302与单片机系统的连接图(2) DS1302时钟的产生基于外接的晶体振荡器,振荡器的频率为32768Hz。
该晶振通过引脚X1、X2直接连接至DS1302,即DS1302是依靠外部晶振与其内部的电容配合来产生时钟脉冲的。
由于DS1302在芯片本身已经集成了6pF的电容,所以,为了获得稳定可靠的时钟,必须选用具有6pF负载电容的晶振。
然而,许多人在选用晶振时仅仅注意了晶振的额定频率值,而忽视了晶振的负载电容大小,甚至连许多经销商也不能提供所售晶振的负载电容。
所以即使在使用中选用了符合32768Hz的晶振,但如果该晶振的负载电容与DS1302提供的6pF不一致时,就会影响晶振的起振或导致振荡频率的偏移,出现上述在应用中的问题。
三、利用辅助电容实现负载匹配(1)当所选的晶振负载电容不是6pF时,可以采用增加辅助电容的方法提高或降低DS1302振荡器的电容性负载,使之与晶体所需的电容值匹配。
如果已知晶体的负载电容为CI,若CI;6pF,则可以在晶体的一端增加一个串联电容CS,以产生所需的负载电容CI,即1/CI=1/6pF+1/CS,通过计算即可得出应增加的辅助电容大小。
辅助电容的接法如图3所示。
500)this.width=500 border=0>;图3 CS连接电路图(2)在使用前对晶体的负载电容并不知道的情况下,通过测定晶体振荡频率的方法可以确定该晶体的负载电容。
对于晶体振荡器来说,其振荡频率与负载电容之间的关系是确定的。
以本文讨论的DS1302使用的32768Hz晶振为例:当它工作于所要求的负载电容时,能较准确地产生 32768Hz的频率;当它的负载电容小于6pF时,其振荡频率会正向偏移;当它的负载电容大于6pF时,其振荡频率就会负向偏移。
因此,对于未知负载电容的晶体应首先采用实验的方法,在其两端加入辅助电容使晶体起振,然后用频率计测出振荡频率。
若测得频率大于32768Hz,说明负载电容偏小;若测得频率小于32768Hz,说明负载电容偏大。
对辅助电容逐步调整,最终使振荡频率尽可能接近32768Hz,则此时晶体端所接负载电容的总和就是适合该晶体的负载电容。
结论以上方法经我们在实际工作中多次使用,证明确实有效。
它放宽了DS1302在使用中对晶振的条件要求,增强了DS1302在工作中的稳定性,对DS1302更广泛地应用具有积极的意义。
SECL EQU 30H;;;定义(时。
分。
秒)SECH EQU 31HMINL EQU 32HMINH EQU 33HHOURL EQU 34HHOURH EQU 35HORG 0000HLJMP MAINORG 000BH;中断入口LJMP TNTT0ORG 0100HMAIN:MOV SECL ,#00HMOV SECH ,#00HMOVMINL ,#00HMOV MINH ,#00HMOV HOURL,#00HMOV HOURH,#00H;;;;;;;;;;;;;;;;;MOV 36H,#0BHMOV37H,#00HMOV 38H,#00HMOV39H,#00H;;;;;;;;;;;;;;;;MOV40H,#00H;;;;;;;;;;;;;;;;;;;定时开关的地址;;;;;;;;;;;;;;;;;;MOV 60H,#00HMOV 61H,#00HMOV 62H,#00HMOV 63H,#00HMOV 64H,#00HMOV 65H,#00HMOV 66H,#00HMOV 67H,#00H;;;;;;;;MOV R5,#00HMOVR1,#00HMOV R2,#00HMOV R3,#02HMOV R4,#00HMOVR6,#00H;;;;;;;;;;;;;;;;;;;;;数码管的共公端地址;;;;;;;;;;;;;;;;;;;;;MOV 41H,#0FEHMOV42H,#0FDHMOV 43H,#0FBHMOV 44H,#0F7HMOV45H,#0EFHMOV 46H,#0DFHSETBP2.7;;;;;;;;;;;;;;;;;;;;;;;;;;;LOOP:SETB EASETB ET0MOV TMOD,#01HMOV TL0,#0BHMOV TH0,#38HSETB TR0MOV R0,#18LJMP CSCS:LCALL DISLJMP CSRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;加1子程序;;;;;;;;;;;;;;;;;;DIAY1:MOV TL0,#0BHMOVTH0,#38HRETITNTT0:;中断入口;;DJNZ R0,DIAY1MOVR0,#18;;;;;;;;;;; 秒加1; ;;;;;;;;;;;;;低位;;;MOV A,SECLSS:INC AMOV SECL,AJNB P3.2,AS;;;设置分JNBP3.1,HH1;;;设置时WWQ:CJNE A,#0AH,DIAY1MOV SECL,#00H;;高位;;;;MOV A,SECHINC AMOV SECH,ACJNEA,#06H,DIAY1MOV SECH,#00H;;;;;;;;;;; 分加1 ;;;;;;;;;;;;;;低位;;;MOV A,MINLINC AMOVMINL,ACJNE A,#0AH,DIAY1MOV MINL,#00H;;高位;;;;MOV A,MINHINC AMOV MINH,ACJNEA,#06H,DIAY1MOV MINH,#00H;;;;;;;;;;; 时加1; ;;;;;;;;;;;;;低位;;;MOV A,HOURLINC AINC R1MOV HOURL,ACJNE R1,#24,D1LCALL D2D1:CJNEA,#0AH,DIAY1MOV HOURL,#00H;;高位;;;;MOV A,HOURHINC AMOV HOURH,ACJNE A,#03H,DIAY1MOVHOURH,#00HRETHH1:LCALL HHRETAS:LCALL MMRET;;;;;;;;;;;;;;;;;24小时清0;;;;;;;;;;;;;;;;D2:MOV A,#0AHMOV R1,#00HRET;;;结束加1子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;动态扫描时间显示;;;;;;;;;;;;;;;;;;;;KK:LCALLONF7RETONOFF1:LCALL ONOFFRETDDD1:JNB P3.3,$LCALL NUOL1RETDIS:;;;秒;;;JNB P3.0,ONOFF1;;直开关机JNB P3.3,ddd1;;;进入闹钟设置JNB P3.4,KK;;;定时开关机MOV DPTR,#TABMOV A,SECLMOVC A,@A+DPTRMOV P0,AMOV P2,41HLCALL DIAYMOV A,SECHMOVC A,@A+DPTRMOV P0,AMOV P2,42HLCALL DIAY;;;;分;;;MOV A,MINLMOVC A,@A+DPTRMOV P0,AMOVP2,43HSETB P0.2LCALL DIAYMOV A,MINHMOVC A,@A+DPTRMOV P0,AMOV P2,44HLCALL DIAY;;;;时;;;;;MOV A,HOURLMOVC A,@A+DPTRMOV P0,AMOV P2,45HSETB P0.2LCALL DIAYMOV A,HOURHMOVC A,@A+DPTRMOV P0,AMOV P2,46HLCALL DIAYMOV A,MINLLCCG:;;铃声比较;;;;;;;CJNE A,36H,DFMOVA,MINHCJNE A,37H,DFMOV A,HOURLCJNE A,38H,DFMOV A,HOURHCJNE A,39H,DFLCALL LCDF:;;定时开机比较;;;;;;;MOV A,MINLCJNEA,60H,DGMOV A,MINHCJNE A,61H,DGMOV A,HOURLCJNE A,62H,DGMOV A,HOURHCJNE A,63H,DGLCALL OONDG:;;定时关机比较;;;;;;;MOV A,SECLCJNE A,#00H,TTMOVA,SECHCJNE A,#00H,TTMOV A,MINLCJNE A,64H,TTMOV A,MINHCJNE A,65H,TTMOV A,HOURLCJNE A,66H,TTMOV A,HOURHCJNE A,67H,TTLCALLOFFTT:RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;设置时钟,分&时;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;MM:;;;设置分;;;;MOV 30H,#00HMOV 31H,#00HMOV A,MINLINC AMOV MINL,ACJNE A,#0AH,DDMOV MINL,#00HMOV A,MINHINC AMOV MINH,ACJNE A,#06H,DDMOV MINH,#00H HH:;;设置时;;;MOV 30H,#00HMOV 31H,#00HMOVA,HOURLINC AINC R1MOV HOURL,ACJNE R1,#24,D4LCALL D2D4:CJNE A,#0AH,DDMOV HOURL,#00HMOV A,HOURHINC AMOV HOURH,ACJNE A,#03H,DDMOV HOURH,#00HDD:LCALL WWQRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;铃声;;;;;;;;;;;;;;;;;LC:LCALL DIAYCLR P2.7LCALL DELAYRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;按键直开关机子程序;;;;;;;;;;;;;;;;;;;;;;;;ONOFF:;;JNB P3.0,$LCALL DELAY1LCALL MNLCALL DELAYMOV 41H,#0FFHMOV42H,#0FFHMOV 43H,#0FFHMOV 44H,#0FFHMOV45H,#0FFHMOV 46H,#0FFHDJNZ R3,END1LCALL DELAY1MOV 41H,#0FEHMOV 42H,#0FDHMOV 43H,#0FBHMOV44H,#0F7HMOV 45H,#0EFHMOV 46H,#0DFHMOVR3,#02HEND1:LJMP SSRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;按键响声;;;;;;;;;;;;;;MN:CLR P2.7LCALL DIAYRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;定时开关机子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ONF7:JN B P3.4,$LCALL MNLCALL DELAYONF:;;;开设置;;;;;JNB P3.0,ONF3;跳到关设置JNB P3.4,ON1;分设置JNBP3.3,ON2;时设置LCALL ON5;;显示分LCALL ON6;;显示时LJMP ONFONF3:;;关设置;;;;JNB P3.0,$LCALLMNONF1:JNB P3.0,EE;;返回;;JNB P3.4,ON3;分设置JNB P3.3,ON4;时设置LCALL ON7;;显示分 LCALL ON8;;显示时 LJMPONF1EE:JNB P3.0,$LCALL MNLJMP CSRETON1:;;;开机分设置加1;;JNB P3.4,$LCALL MNMOV A,60HINC AMOV 60H,ACJNE A,#0AH,ONF5MOV 60H,#00HMOVA,61HINC AMOV 61H,ACJNE A,#06H,ONF5MOV61H,#00HONF5:LJMP ONFON2:;;;开机时设置加1;;JNB P3.3,$LCALL MNMOV A,62HINC AINC R4MOV 62H,ACJNE R4,#24,FFLCALLON69FF:CJNE A,#0AH,ONF5MOV 62H,#00HMOV A,63HINC AMOV 63H,ACJNE A,#03H,ONF5MOV 63H,#00HLJMP ONFON69:;24小时清0MOV A,#0AHMOV R4,#00HRETON3:;;关机分设置加1;;JNB P3.4,$LCALL MNMOVA,64HINC AMOV 64H,ACJNE A,#0AH,ONF6MOV 64H,#00HMOV A,65HINC AMOV 65H,ACJNE A,#06H,ONF6MOV65H,#00HONF6:LJMP ONF1ON4:;;关机时设置加1;;JNB P3.3,$LCALL MNMOVA,66HINC AINC R5MOV 66H,ACJNE R5,#24,FF11LCALLFF22FF11:CJNE A,#0AH,ONF0MOV 66H,#00HMOV A,67HINC AMOV 67H,ACJNE A,#03H,ONF0MOV 67H,#00HONF0:LJMP ONF1FF22:;24小时清0MOV A,#0AHMOV R5,#00HRETON5:;;开机显示分 ;MOV DPTR,#TABMOV A,60HMOVCA,@A+DPTRMOV P0,AMOV P2,43HLCALL DIAYMOV A,61HMOVC A,@A+DPTRMOV P0,AMOV P2,44HLCALL DIAYRETON6:;;开机显示时 ;MOV DPTR,#TABMOV A,62HMOVC A,@A+DPTRMOVP0,ASETB P0.2MOV P2,45HLCALL DIAYMOV A,63HMOVCA,@A+DPTRMOV P0,ASETB P0.2MOV P2,46HLCALL DIAYRETON7:;;关机显示分 ;MOV DPTR,#TABMOV A,64HMOVC A,@A+DPTRMOV P0,ASETB P0.2MOV P2,43HLCALL DIAYMOV A,65HMOVC A,@A+DPTRMOV P0,ASETB P0.2MOV P2,44HLCALL DIAYRETON8:;;关机显示时 ;MOV DPTR,#TABMOVA,66HMOVC A,@A+DPTRMOV P0,ASETB P0.2MOV P2,45HLCALL DIAYMOV A,67HMOVC A,@A+DPTRMOV P0,ASETB P0.2MOVP2,46HLCALL DIAYRETOFF:;;定时关机MOV 41H,#0FFHMOV 42H,#0FFHMOV 43H,#0FFHMOV 44H,#0FFHMOV 45H,#0FFHMOV46H,#0FFHRETOON:;;定时开机MOV 41H,#0FEHMOV42H,#0FDHMOV 43H,#0FBHMOV 44H,#0F7HMOV45H,#0EFHMOV46H,#0DFHRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;铃声设置;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;DDD :JNB P3.0,$LCALL MNLJMP CS;;返回;;RETNUOL1:MOV36H,#0BHNUOL:JNB P3.0,DDD;;返回;;JNB P3.4,WW1;跳设置分JNB P3.3,WW2;跳设置时LCALL NUOL2;;跳显示分LCALL NUOL3;;跳显示时LJMP NUOLWW1: ;;设置分JNB P3.4,$LCALL MNMOV A,36HINC AMOV36H,ACJNE A,#0AH,NUOLMOV 36H,#00HMOV A,37HINC AMOV 37H,ACJNE A,#06H,NUOLMOV 37H,#00HLJMP NUOLWW2:;;设置时JNB P3.3,$LCALL MNMOV A,38HINC AINC R2MOV 38H,ACJNE R2,#24,D0LCALL D9D0:CJNEA,#0AH,NUOLMOV 38H,#00HMOV A,39HINC AMOV 39H,ACJNE A,#03H,NUOLMOV 39H,#00HLJMP NUOLD9:;24小时清0MOV A,#0AHMOV R2,#00HMOV 36H,#00HMOV 37H,#00HRETNUOL2:;;显示分MOV DPTR,#TABMOV A,36HMOVCA,@A+DPTRMOV P0,AMOV P2,43HLCALL DIAYMOV A,37HMOVC A,@A+DPTRMOV P0,AMOV P2,44HLCALL DIAYRETNUOL3:;;显示分MOV DPTR,#TABMOV A,38HMOVC A,@A+DPTRMOVP0,AMOV P2,45HLCALL DIAYMOV A,39HMOVC A,@A+DPTRMOV P0,AMOV P2,46HLCALL DIAYRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;延时& ;;;;;;;;;;;;;;;;;;DELAY:;延时子程序.MOV R7,#0AHD7:MOV R6,#0FFH;Dp:DJNZ R6,DpDJNZ R7,D7;RET;DIAY:MOV R6,#05HT2:MOV R7,#0FFHDJNZR7,$DJNZ R6,T2RETDELAY1:;延时子程序.MOV R7,#0FFHD71:MOV R6,#0FFH;Dp1:DJNZ R6,Dp1DJNZ R7,D71;RET;TAB:DB 0EBH,081H,0DAH,0D9H,0B1HDB 079H,07BH,0C1H,0FBH,0F9HRETEND。