电子日历单片机课程设计

合集下载

单片机课程设计-电子日历

单片机课程设计-电子日历

湖南科技大学信息与电气工程学院《课程设计报告》题目:电子日历专业:通信工程班级: 3班姓名:黄夏妮学号: 1304040322指导教师:陈君2016年 6 月 16 日单片机原理与应用课程设计评阅书信息与电气工程学院课程设计任务书2015—2016学年第二学期专业:通信工程班级: 3班学号: 1304040322 姓名:黄夏妮课程设计名称:单电片机原理与应用设计题目:电子日历完成期限:自 2016 年 6 月 6 日至 2016 年 6 月 17 日共 2 周设计依据、要求及主要内容(可另加附页):设计依据:本方案以STC15F2K60S2单片机作为主控核心,与时钟芯片、LED显示、按键等模块组成硬件系统,通过《单片机原理与应用》这门课的课程设计,学生应能对STC15系列单片机有一个全面的认识,掌握以STC15系列单片机为核心的电子电路的设计方法和应用技术。

设计要求:(1)利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。

(2)利用LED分别显示当前时间和日历。

(3)利用尽可能少的开关实现:校正日历和时间(4)定制闹钟(时、分、表)设计内容:该课程设计是利用STC15F2K60S2单片机内容的定时/计数器、中断系统、以及行列键盘和LED显示器等部件,设计一个单片机电子时钟。

设计的电子时钟通过数码管显示,并通过按键实现时间和暂停、启动控制等。

我们选择的方法是单片机开发设计使用的传统方法,通过本次设计,可以了解整个单片机开发的流程。

文章首先介绍了单片机的基本知识,然后同时给出了框图,流程图等。

论文涵盖了从系统设计,编程,原理图等产品开发的基本过程。

指导教师(签字):批准日期:年月日摘要本设计是根据我们所学的单片机课程,按照大纲要求利用STC15F2K60S2单片机作为主控器组成一个电子日历和电子钟。

随着科技的快速发展,时间的流逝,从观太阳、摆钟到现在电子钟,人类对时钟进行不断研究,不断创新纪录。

单片机课程设计 电子日历时钟显示器设计

单片机课程设计 电子日历时钟显示器设计

目录1.题目设计要求 (1)2.开发平台简介 (1)3.系统硬件设计 (2)3.1设计原理 (2)3.2器件的功能与作用 (2)3.2.1 MCS51单片机AT89C51 (2)3.2.2复位电路 (3)3.2.3晶振电路 (4)3.2.4 DS1302时钟模块 (4)3.2.5 引脚功能及结构 (4)3.2.6 DS1302的控制字节 (5)3.2.7 数据输入输出(I/O) (5)3.2.8 DS1302的寄存器 (6)3.2.9 液晶显示LCD1602 (6)3.2.10 串行时钟日历片DS1302 (8)4.系统软件设计 (10)4.1程序流程 (10)4.2程序代码 (10)5.系统仿真调试 (20)5.1仿真原理图设计 (20)5.2仿真运行过程 (21)5.3仿真运行结果 (21)6.总结 (21)7.参考文献 (22)1.题目设计要求通过串行日历时钟芯片DS1302生成当前日期和是时间,通过IO口传输到AT89c52芯片中,然后再将AT89c52接收到的数据输出到LCD上。

要求LCD上显示的日期和时间与当前系统时间保持一致。

2.开发平台简介2.1系统仿真平台ProteusProteus软件是由英国Labcenter Electronics公司开发的EDA工具软件,已有近20年的历史,在全球得到了广泛应用。

Proteus软件的功能强大,它集电路设计、制版及仿真等多种功能于一身,不仅能够对电工、电子技术学科涉及的电路进行设计,还能够对微处理器进行设计和仿真,并且功能齐全,界面多彩。

和我们手头其他的电路设计仿真软件,他最大的不同即它的功能不是单一的。

另外,它独特的单片机仿真功能是任何其他仿真软件都不具备的。

2.2软件开发平台Keil CKeil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。

基于单片机的万年历课程设计

基于单片机的万年历课程设计

一、前言随着电子技术的迅速发展,特别是随大规模集成电路出现,给人类生活带来了根本性的改变。

由其是单片机技术的应用产品已经走进了千家万户。

电子万年历的出现给人们的生活带来的诸多方便。

本设计是基于51系列的单片机进行的电子万年历设计,采用八位数码管显示年月日时分秒及温度信息,具有可调整日期和时间功能。

时间、日期调整由三个按键来实现,并可对闹铃开关进行设置。

日历能显示阳历和阴历年、月、日以及星期、时、分、秒。

设计以STC89C52RC 单片机为核心,构成单片机控制电路;以DS1302时钟芯片作为万年历信号发生器;以DS18B20作为检测温度的传感器。

关键词时钟电钟;DS1302;DS18B20;数码管;单片机。

二、系统概述及总体方案2.1系统概述本电子万年历采用单片机控制技术和数码管显示方案,可以很好的完成万年历和实时温度显示。

它可以对年、月、日、周日、时、分、秒进行计时,还具有闰年补偿等多种功能。

对于数字电子万年历采用直观的数字显示,可以同时显示年、月、日、周日、时、分、秒和温度等信息,还具有时间校准等功能。

2.2总体方案2.2.1单片机芯片:采用AT89S52,片内ROM全都采用Flash ROM;能以3V的超低压工作;同时也与MCS-51系列单片机完全相同,该芯片内部存储器为8KB ROM 存储空间,同样具有89C51的功能,且具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片多次拔插,所以不会对芯片造成损坏。

所以选择采用AT89S52作为主控制系统.2.2.2 时钟芯片:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM做为数据暂存区,工作电压2.5V~5.5V范围内,2.5V时耗电小于300nA.且同组同学已从Maxim申请到了这种芯片,所以本设计采用了这种芯片。

工学单片机课程设计电子万年历

工学单片机课程设计电子万年历

本科课程设计课程名称:单片机原理与接口技术课设项目:电子万年历课程设计课设地点:专业班级:学号学生姓名:同组人:指导教师:2012年05月30日设计题目:电子万年历设计任务与要求:1、显示年月日时分秒及星期信息2、具有可调整日期和时间功能3、增加闰年计算功能4、增加了显示温度的模块设计方案:由于我是在网上购买的现成的开发板来学习和使用的,故在方案的选择上也只能限于开发板设计好的电路和芯片.系统分为主控模块、时钟电路模块、温度检测模块,按键扫描模块,LCD显示模块,电源电路、复位电路、晶振电路等模块。

主控模块采用AT89C52单片机,按键模块用四个按键,用于调整时间,显示模块采用LCD1602,时钟电路模块采用DS1302时钟芯片实现对时间、日期的操作,温度模块使用18B20实现度温度的操作。

STC89C52,ATMEL的51系列单片机,价格便宜,在国内使用者非常多。

支持串口下载,使用非常方便,且具有很大的价格优势。

缺点是仅支持串口下载,不支持在线下载,使用中会有些不方便。

1.显示模块:方案一:普通的共阴LED数码管,用点阵LED实现文字的显示.方案二:LCD1602液晶显示屏.LED数码管价格适中,对于数字显示效果较好,而且使用单片机的端口也较少; LCD1602液晶显示屏,显示功能强大,可以显示大量文字、图形,显示多样性,清晰可见,价格相对LED数码管来说要昂贵些,但是基于本设计显示的东西较多,若采用LED数码管的话,所需数码管较多,而且不利于控制,因此选择LCD1602作为显示模块.故选择方案二.2.时钟电路模块:方案一:用单片机的定时器产生1S的时基信号,然后用程序来实现时钟的时、分、秒计时,同时用程序来产生年、月、日。

该方案优点是减少使用外设芯片;缺点是用单片机模拟时钟,使编程量增大,且用定时器产生时基信号,精度不高。

方案二:DS1302是一款高性能的实时时钟芯片,以计时准确、接口简单、使用方便、工作电压范围宽和低功耗等优点,得到广泛的应用,实时时钟有秒、分、时、星期、日、月和年,月小于31天时可以自动调整,并具有闰年补偿功能,而且在掉电时能够在外部纽扣电池的供电下继续工作。

单片机课程设计--电子日历的制作

单片机课程设计--电子日历的制作

课程设计课程单片机课程设计题目院系电气信息工程学院测控技术与仪器系专业班级学生姓名学生学号指导教师2013年 7 月 8日东北石油大学课程设计任务书课程单片机课程设计题目电子日历的制作专业测控技术与仪器姓名学号一、任务以AT89C51单片机为控制核心,利用电子日历芯片DS1302及LCD液晶显示屏设计出一种具有时间及日期显示、预约定时等基本功能的电子日历。

二、设计要求[1] 掌握LCD液晶显示屏的工作原理;2、该电子日历可以显示,年、月、日、时、分、秒及星期等内容;3、具有4个按键操作来设置现在的时间。

操作键K1- K6功能如下:(1)操作键K1:进入设置现在的时间;(2)操作键K2:设置月;(3)操作键K3:设置日;(4)操作键K4:设置小时;(5)操作键K5:设置分钟;(6)操作键K6:确认完成设置。

4、基本电路包括:单片机最小系统、LCD显示电路、蜂鸣器电路、独立键盘电路等;5、提交设计报告、电路图及程序源码。

三、参考资料[1] 刘国钧,陈绍业,王凤翥.图书馆目录[M].北京:高等教育出版社,1957.15-18.[2] 刘润华,刘立山.模拟电子技术[J].山东:石油大学出版社,2003.[3] 苏成富.彩灯控制器[J].北京:电机电器技术,2000,(01).[4] 祝富林.音乐彩灯电路CS9482[J].北京:电子世界,1995,(12).[5] 彭介华.电子技术课程设计指导[J].北京:高等教育出版社,1997.完成期限 2013.7.1 - 2013.7.10指导教师专业负责人2013年 6月 29 日目录第1章绪论 (1)1.1 LED点阵显示屏概述 (1)1.2 LED显示屏控制技术状况 (1)1.3 本设计任务 (2)第2 章总体方案论证与设计 (3)2.1 LED驱动模块 (3)2.2 数据存储模块 (3)2.3 总体硬件组成框图 (4)第3章系统硬件设计 (5)3.1 LED驱动模块的硬件设计 (5)3.2数据存储电路设计 (6)3.3 PC机通信模块的设计 (7)第4章系统的软件设计 (9)4.1 主程序设计 (9)4.2 驱动显示子程序设计 (10)第5章系统调试与测试结果分析 (12)5.1 使用的仪器仪表 (12)5.2 系统调试 (12)5.3 测试结果 (12)结论 (13)参考文献 (14)附录1 程序 (15)第1章绪论近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

单片机课程设计报告电子万年历

单片机课程设计报告电子万年历

单片机课程设计报告电子万年历单片机课程设计报告:电子万年历一、设计简介在本次单片机课程设计中,我们选择了电子万年历作为设计主题。

电子万年历是一种结合了数字电路、单片机技术和实时时钟(RTC)技术的电子产品,它具有显示年份、月份、星期、日、时、分、秒的功能,还可以根据用户的需求进行定时、闹钟、报时等功能。

二、硬件设计我们采用了基于8051内核的单片机作为主控芯片。

该单片机具有丰富的I/O 端口,适于实现各种复杂的输入输出操作。

此外,它还内置了定时器和中断控制器,可以很方便地实现实时时钟功能。

1.显示模块:为了方便用户查看时间信息,我们选用了LCD显示屏作为显示设备。

LCD屏具有功耗低、体积小、显示内容丰富等优点。

2.实时时钟(RTC)模块:我们采用了常用的DS1302芯片作为实时时钟模块。

该芯片可以提供秒、分、时、日、星期、月、年的信息,而且还有可编程的报警功能。

3.按键模块:为了实现人机交互,我们设计了一组按键。

用户可以通过按键来调整时间、设置闹钟等。

4.电源模块:为了保证系统的稳定工作,我们采用了稳定的5V直流电源。

三、软件设计我们采用了C语言编写程序。

程序主要由以下几个部分组成:1.主程序:主程序主要负责读取RTC模块的时间信息,并控制LCD显示屏显示时间。

同时,主程序还要检测按键输入,根据用户的需求进行相应的操作。

2.RTC驱动程序:为了正确地读取和设置DS1302芯片的时间信息,我们编写了相应的驱动程序。

驱动程序包括初始化和读写寄存器两部分。

3.按键处理程序:按键处理程序用于检测按键输入,并根据按键值执行相应的操作。

比如,用户可以通过按键来增加或减少时间,设置闹钟等。

4.LCD显示程序:LCD显示程序用于控制LCD显示屏的显示内容。

在本设计中,我们使用了点阵字符库,将时间信息以字符的形式显示在LCD屏上。

四、测试与验证为了确保我们的电子万年历设计正确无误,我们进行了以下的测试和验证:1.硬件测试:首先,我们对硬件电路进行了测试,确保每个模块都能正常工作。

单片机课程设计(论文)电子万年历的设计

单片机课程设计(论文)电子万年历的设计

目录1设计要求 (2)2方案论证与对比 (2)液晶显示器控制方式选择 (2)2.2并行接口动态显示电路选择 (2)2.3LCD液晶显示器的接口方法选择 (3)液晶显示器限流电阻选择 (4)3系统硬件电路的设计 (5)主控模块AT89C52 (5)3.2显示模块电路设计 (6)4系统软件设计 (7)4.1系统软件概述 (7)4.2主要子程序设计 (8)4.2.1 时钟中断服务子程序设计 (8)时间调整子程序设计 (9)4.2.3 判断闰年子程序设计 (9)4.2.4 精度分析分析与计算 (10)4.2.5 第一次初值的设置 (10)4.2.6 重载初值的方法 (10)5系统仿真与测试 (11)5.1系统仿真 (11)功能测试 (11)6总结 (12)参考文献 (13)1设计要求本课题以AT89C52单片机为核心,设计并制作出智能LCD电子钟,具有以下基本功能:能进行时间、年份、日期、星期显示;能区分是否闰年;能检测室温并显示。

扩展功能部分可以通过控制按键使时间暂停、可以调整校正时间并通过按键切换轮流显示时间、年份、日期、星期。

2方案论证与对比2.1液晶显示器控制方式选择采用LCD液晶显示,具有超精致影像画质、十足平面显示、节省空间、节省能源等优点,但按控制方式不同,LCD可分为被动矩阵式LCD及主动矩阵式LCD两种。

可根据不同需要采用不同的方式。

方案一被动矩阵式LCD被动矩阵式LCD在亮度及可视角方面受到较大的限制,反应速度也较慢。

由于画面质量方面的问题,使得这种显示设备不利于发展为桌面型显示器,但成本低廉。

方案二主动矩阵式LCD目前应用比较广泛的主动矩阵式LCD,也称TFT-LCD(Thin Film Transistor-LCD,薄膜晶体管LCD)。

TFT液晶显示器是在画面中的每个像素内建晶体管,可使亮度更明亮、色彩更丰富及更宽广的可视面积。

与CRT显示器相比,LCD显示器的平面显示技术体现为较少的零件、占据较少的桌面及耗电量较小,但CRT技术较为稳定成熟。

单片机简易日历课程设计

单片机简易日历课程设计

单片机简易日历课程设计一、课程目标知识目标:1. 理解单片机的基础知识,掌握其内部结构和功能;2. 学习简易日历的原理,了解日期、时间与单片机编程的关系;3. 掌握C语言编程基础,运用其进行单片机程序设计。

技能目标:1. 能够独立完成单片机的硬件连接,进行基本的程序下载与调试;2. 运用C语言编写简易日历程序,实现日期、时间的显示与修改;3. 培养学生动手实践能力,提高问题分析及解决能力。

情感态度价值观目标:1. 培养学生对单片机编程的兴趣,激发创新意识;2. 培养学生的团队协作精神,提高沟通与交流能力;3. 培养学生严谨、细心的学习态度,养成良好的编程习惯。

分析课程性质、学生特点和教学要求,本课程旨在通过单片机简易日历的设计与实现,让学生掌握单片机基础知识、编程技能,并培养其团队协作和创新能力。

课程目标具体、可衡量,便于教学设计和评估。

通过本课程的学习,学生将能够独立完成单片机程序的编写与调试,为后续相关课程打下坚实基础。

二、教学内容1. 单片机基础知识:介绍单片机的内部结构、工作原理及功能,涉及教材第1章内容;- 单片机硬件结构及引脚功能;- 单片机工作原理及指令系统。

2. C语言编程基础:学习C语言基础知识,掌握基本语法,为单片机编程打下基础,涉及教材第2章内容;- 数据类型、变量与常量;- 运算符、表达式及语句;- 控制结构(顺序、选择、循环)。

3. 简易日历原理:学习日期、时间的计算方法,了解日历程序设计思路,涉及教材第3章内容;- 日期、时间的基本概念;- 日历程序设计思路及算法。

4. 单片机程序设计:结合C语言,学习单片机程序编写与调试,实现简易日历功能,涉及教材第4章内容;- 单片机程序框架及编程规范;- 简易日历程序的编写与调试;- 硬件连接及程序下载。

5. 实践操作:安排学生进行单片机简易日历的实践操作,巩固所学知识,涉及教材第5章内容;- 硬件连接与程序下载;- 程序调试与优化;- 团队合作、沟通交流。

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

单片机课程设计学院:电气与信息工程学院专业:电子信息工程班级:姓名:学号:指导教师:电子日历的设计一实验目的:现今,高精度的计时工具大多数都使用了石英体振荡器,如电子钟,石英表,石英钟都采用了石英技术。

这种时钟走时精度高,稳定性好,使用方便,不需要经常调校,数字式电子钟用集成电路计时,译码代替机械式转动,用LED显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表具有时,分,秒显示时间的功能,还可以进行时和分的校对,片选的灵活性好。

本设计利用AT89C51为核心,辅以必要的芯片和外围电路,构成一个电子日历,旨在:1、加深对单片机课程的全面认识和掌握,对单片机课程的应用进一步的了解。

2、掌握单片机的接口技术及相关外围芯片的外特性、控制方法。

3、通过这次课程设计将单片机软硬件结合起来,对程序进行编辑,校验,锻炼理论联系实际的能力。

4、通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。

5、掌握单片机和外部电路的连接特性,更好地把握单片机的特性二系统设计要求1.设计一个可以显示年月日、时间,并有闹钟功能的电子日历。

2.具有时间设置功能。

3.具有定时闹钟功能。

三系统设计环境开发软件:Keil c51,Proteus6.9, STC-ISP四实验接线图五.实验说明与连线用一片8255进行扩展,8255的PA,PB口外接6位LED数码管构成时钟显示器。

单片机CPU的P1口外界4个按键K1、K2、K3、K4。

利用这6个LED显示当前时间。

P3.5口外界一个二极管作为闹钟提示标志,当到达设定的闹钟时间,改灯自动亮30秒,随即熄灭。

四个按键的功能分别是:K1:日期切换按键;K2:设置键,用于选择需要设置的位;K3:加1键,设置时,按下即加1;K4:显示闹钟时间键;六.主要实验设备电烙铁、数字万用表、导线若干89c51芯片一块、8255A芯片一块、2083两块、6个独立的8段数码管、100欧姆排阻2个、4个轻触开关七.注意事项线路板的布局原则是按照各元器件的特点,兼顾元器件便利装卸和考虑抗干扰性(一个互相干扰和外来干扰)。

要求达到版面整洁,布局合理,线路清晰,连接有序。

一个好的布局,能便于焊接和电路检修。

八.主要程序见附1九、电路板实样89c51芯片8255A芯片十.操作演示1.设置首先进入年月日设置界面,按下K2键进入设置界面。

通过按K3键进行加1达到设置,按下K2一次则进入下一位设置,则设置位依次从年、月、日跳转。

设置完“日”位,再按K2键,自动进入时间设置界面——相同的,设置完时间,按下K2键进入闹钟设置闹钟只需设置时和分即可。

2.显示时间设置好后,自动显示设置好的时间可以清楚地看到当前时间为10:01:46;按下K1键即可看到当前日期当前日期为09年5月14日;按下K4键即可看到设置的闹钟时间可以看到闹钟为10:00;十一.设计总结以及感想这次课程设计,应该说中间的过程是比较曲折的,虽然最后的实验结果按照自己的预期实现了,但是中间走了些弯路,也经历了些小小的坎坷。

不过总体来说还是很有成就感的,也学到了不少知识。

这次试验的主程序主要是参考别人的,我最主要的任务是把它看懂看透,并且在此基础之上稍作修改,同时焊接板子并且下载。

经过自己的不懈努力,终于可以仿真成功。

我的坎坷主要体现在接下来焊接器件的过程中,以及之后的调试过程中。

因为硬件排错是很困难的。

我吸取之前同学的经验教训,焊地很仔细,因为一旦焊错了,将会非常麻烦。

但是问题仍然出现。

首先焊完之后,我的电源按钮没有作用,只要上电就一直工作。

经过我的思考分析,断定问题应该出在电路上面,而且肯定是电源电路那一部分。

最后终于发现,焊接的时候由于没有把PCB的电路认真看明白,导致我多焊了两个电源,所以我断定这个应该是导致我电源按钮失效的根源。

于是我去掉这两根线,重新下载,此时该问题已经消除,LED也可以显示。

然而,一个新的问题出现了,LED的某一位一直不亮。

我反复检查了自己的电路,并没有焊错的问题,反复看程序也找不到不对劲的地方。

我确定是自己的硬件除了问题,一定有某个地方接触不良。

我将几个重要的接口之间的线重新焊了一遍。

果然,显示器全都亮了,而且开始计时。

但这个时候,新的问题又出来了——我的显示的高低位全部反了!这个问题无疑可以通过修改程序来实现。

于是我仔细研读了程序的显示部分,将里边循环移位的顺序修改了一下。

虽然仿真的时候是反的,但当程序下到板子上后一切正常。

后来又经过改正,将显示的频闪和秒钟速度得以完善。

这次的坎坷经历让我受益很大。

硬件焊接和调试的那一天,苦于对线路的研究和对各种问题的排除,我从早上8点一直忙到晚上9点,中间的午饭也只是下楼买了盒饼干充饥。

但是真正搞完之后,真的大松了一口气。

虽然知道将来研究生期间这样的经历会很多,但是这次的课程设计还是对我有很大的启发的。

我打算在课余自己独立写个程序,这样才使得课程设计真正属于自己的。

附1:(主要程序)ST_ADDR EQU 0000HPA EQU 7CFFH;A口地址PB EQU 7DFFH;B口地址CTR EQU 7FFFH;控制字地址BUF EQU 23HSBF EQU 22HMBF EQU 21HHBF EQU 20HDAY EQU 19HMONTH EQU 18HYEAR EQU 17HHOUR EQU 16HMIN EQU 15HORG 0000HLJMP MAINORG 000BHLJMP CLOCKORG 0200HMAIN:MOV DPTR,#CTRMOV A,#80HMOVX @DPTR,AANL TMOD,#0F0HORL TMOD,#01HMOV TL0,#00HMOV TH0,#38HSETB P3.5SETB EASETB ET0SETB TR0MOV MBF,#00H;***********闹钟************** MAIN1: LCALL ADS1MOV A,SBFCJNE A,#00H,KEY0 ;秒位是否相同MOV A,MBFCJNE A,MIN,KEY0 ;分位是否相同MOV A,HBFCJNE A,HOUR,KEY0 ;时位是否相同CLR P3.5 ; 定时时间到,灯亮KEY0: MOV A,#30H;30秒后自动关闹钟CJNE A,SBF,K0SETB P3.5;****************K0: JNB P1.0,AAAJNB P1.3,BBBJNB P1.1,GWAITAJMP MAIN1 AAA: LCALL BDS1 AJMP MAIN1 BBB: LCALL CDS1 AJMP MAIN1 GWAIT: LCALL YDS1JNB P1.1,GWAIT ;判断P1.1是否按完SETG1: LCALL YDS1 JNB P1.1,GWAIT2 JNB P1.2,GADDYEAR AJMP SETG1 GADDYEAR: MOV R7,YEAR LCALL ADD1 MOV YEAR,A CJNE A,#51H,WAITT1 MOV YEAR,#01H WAITT1: LCALL YDS1JNB P1.2,WAITT1 ;判断P1.2是否按完AJMP SETG1;************* GWAIT2: LCALL MODS1 JNB P1.1,GWAIT2 SETG2: LCALL MODS1 JNB P1.1,GWAIT3 JNB P1.2,GADDMONTH AJMP SETG2GADDMONTH: MOV R7,MONTH LCALL ADD1 MOV MONTH,A CJNE A,#13H,WAITT2 MOV MONTH,#01H WAITT2: LCALL MODS1 JNB P1.2,WAITT2 AJMP SETG2 GWAIT3: LCALL DDS1 JNB P1.1,GWAIT3 SETG3: LCALL DDS1 JNB P1.1,GWAIT4 JNB P1.2,GADDDAY AJMP SETG3 GADDDAY: MOV R7,DAY LCALL ADD1MOV DAY ,ACJNE A,#32H,WAITT3 MOV DAY ,#01H WAITT3: LCALL DDS1 JNB P1.2,WAITT3 AJMP SETG3 GWAIT4: LCALL HDS1 JNB P1.1,GWAIT4 SETG4: LCALL HDS1 JNB P1.1,GWAIT5 JNB P1.2,GADDHBF AJMP SETG4 GADDHBF: MOV R7,HBF LCALL ADD1 MOV HBF,ACJNE A,#24H,WAITT4 MOV HBF,#00H WAITT4: LCALL HDS1 JNB P1.2,WAITT4 AJMP SETG4 GWAIT5: LCALL MDS1 JNB P1.1,GWAIT5 SETG5: LCALL MDS1 JNB P1.1,GWAIT6 JNB P1.2,GADDMBF AJMP SETG5 GADDMBF: MOV R7,MBF LCALL ADD1 MOV MBF,ACJNE A,#60H,WAITT5 MOV MBF,#00H WAITT5: LCALL MDS1 JNB P1.2,WAITT5 AJMP SETG5 GWAIT6: LCALL CDS1 JNB P1.1,GWAIT6 SETG6: LCALL CDS1 JNB P1.1,GWAIT7 JNB P1.2,GADDHOUR AJMP SETG6 GADDHOUR: MOV R7,HOUR LCALL ADD1 MOV HOUR,A CJNE A,#24H,WAITT6MOV HOUR,#00H WAITT6: LCALL CDS1 JNB P1.2,WAITT6 AJMP SETG6 GWAIT7: LCALL CDS1 JNB P1.1,GWAIT7 SETG7: LCALL CDS1 JNB P1.1,SETGOUT JNB P1.2,GADDMIN AJMP SETG7 GADDMIN: MOV R7,MIN LCALL ADD1 MOV MIN,ACJNE A,#60H,WAITT7 MOV MIN,#00H WAITT7: LCALL CDS1 JNB P1.2,WAITT7 AJMP SETG7 SETGOUT: LCALL ADS1 JNB P1.1,SETGOUT LJMP MAIN1;***********显示模块*********** ADS1: MOV R0,#45HMOV R2,#01H ;CHANGGE ADS2: MOV DPTR,#PB;位选 MOV A,R2 MOVX @DPTR,A MOV DPTR,#PA MOV A,@R0 LCALL TABLEMOVX @DPTR,A;送段码 LCALL DELAY1;延时 DEC R0 CLR C MOV A,R2RLC A ;CHANGGE MOV R2,A JNZ ADS2 MOV R0,#45H MOV A,SBF LCALL GET MOV A,MBF LCALL GET MOV A,HBFLCALL GET RETBDS1: MOV R0,#45H MOV A,DAY LCALL GET MOV A,MONTH LCALL GET MOV A,YEAR LCALL GET MOV R0,#45HMOV R2,#01H ;CHANGGE BDS2: MOV DPTR,#PB;位选 MOV A,R2 MOVX @DPTR,A MOV DPTR,#PA MOV A,@R0 LCALL TABLEMOVX @DPTR,A;送段码 LCALL DELAY1;延时 DEC R0 CLR C MOV A,R2RLC A ;CHANGGE MOV R2,A JNZ BDS2 RETSDS1: MOV R0,#45H MOV A,SBF LCALL GET MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A MOV R0,#45HMOV R2,#01H ;CHANGGE SDS2: MOV DPTR,#PB;位选 MOV A,R2MOVX @DPTR,A MOV DPTR,#PA MOV A,@R0 LCALL TABLEMOVX @DPTR,A;送段码 LCALL DELAY1;延时 DEC R0 CLR C MOV A,R2RLC A ;CHANGGE MOV R2,A JNZ SDS2 RETDDS1: MOV R0,#45H MOV A,DAY LCALL GET MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A MOV R0,#45HMOV R2,#01H ;CHANGGE DDS2: MOV DPTR,#PB;位选 MOV A,R2 MOVX @DPTR,A MOV DPTR,#PA MOV A,@R0 LCALL TABLEMOVX @DPTR,A;送段码 LCALL DELAY1;延时 DEC R0 CLR C MOV A,R2RLC A ;CHANGGE MOV R2,A JNZ DDS2 RETMDS1: MOV R0,#45H MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,MBF LCALL GET MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A MOV R0,#45HMOV R2,#01H ;CHANGGE MDS2: MOV DPTR,#PB;位选 MOV A,R2 MOVX @DPTR,A MOV DPTR,#PA MOV A,@R0 LCALL TABLEMOVX @DPTR,A;送段码 LCALL DELAY1;延时 DEC R0 CLR C MOV A,R2RLC A ;CHANGGE MOV R2,A JNZ MDS2 RETMODS1: MOV R0,#45H MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,MONTH LCALL GET MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AHMOV @R0,A MOV R0,#45HMOV R2,#01H ;CHANGGE MODS2: MOV DPTR,#PB;位选 MOV A,R2 MOVX @DPTR,A MOV DPTR,#PA MOV A,@R0 LCALL TABLEMOVX @DPTR,A;送段码 LCALL DELAY1;延时 DEC R0 CLR C MOV A,R2RLC A ;CHANGGE MOV R2,A JNZ MODS2 RETHDS1: MOV R0,#45H MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,HBF LCALL GET MOV R0,#45HMOV R2,#01H ;CHANGGE HDS2: MOV DPTR,#PB;位选 MOV A,R2 MOVX @DPTR,A MOV DPTR,#PA MOV A,@R0 LCALL TABLEMOVX @DPTR,A;送段码 LCALL DELAY1;延时 DEC R0CLR C MOV A,R2RLC A ;CHANGGE MOV R2,A JNZ HDS2 RETYDS1: MOV R0,#45H MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,#0AH MOV @R0,A DEC R0 MOV A,YEAR LCALL GET MOV R0,#45HMOV R2,#01H ;CHANGGE YDS2: MOV DPTR,#PB;位选 MOV A,R2 MOVX @DPTR,A MOV DPTR,#PA MOV A,@R0 LCALL TABLEMOVX @DPTR,A;送段码 LCALL DELAY1;延时 DEC R0 CLR C MOV A,R2RLC A ;CHANGGE MOV R2,A JNZ YDS2 RETCDS1: MOV R0,#45H MOV A,MIN LCALL GET MOV A,#0AH MOV @R0,A DEC R0MOV A,#0AH MOV @R0,A DEC R0 MOV A,HOUR LCALL GET MOV R0,#45HMOV R2,#01H ;CHANGGE CDS2: MOV DPTR,#PB;位选 MOV A,R2 MOVX @DPTR,A MOV DPTR,#PA MOV A,@R0 LCALL TABLEMOVX @DPTR,A;送段码 LCALL DELAY1;延时 DEC R0 CLR C MOV A,R2RLC A ;CHANGGE MOV R2,A JNZ CDS2 RET TABLE: INC AMOVC A,@A+PC RET DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,0BFHGET: MOV R1,A ANL A,#0FH MOV @R0,A DEC R0 MOV A,R1 SWAP A ANL A,#0FH MOV @R0,A DEC R0 RETCLOCK:MOV TL0,#00H;定时器中断子程序 MOV TH0,#38H PUSH PSW PUSH ACC INC BUF MOV A,BUFCJNE A,#14H,QUIT MOV BUF,#00H MOV A,SBF INC A DA A MOV SBF,A CJNE A,#60H,QUIT MOV SBF,#00H MOV A,MBF ADD A,#1H DA A MOV MBF,A CJNE A,#60H,QUIT MOV MBF,#00H MOV A,HBF ADD A,#1H DA A MOV HBF,A CJNE A,#24H,QUIT MOV MBF,#00H MOV A,day ADD A,#1H DA A MOV day,A CJNE A,#32H,QUIT MOV day,#01H MOV A,month ADD A,#1H DA A MOV month,A CJNE A,#13H,QUIT MOV month,#01H MOV A,year ADD A,#1H DA A MOV year,A QUIT: POP ACC POP PSW RETI ADD1: MOV A,R7 ADD A,#01H DA A RETDELAY1: MOV R4,#05;4ms 延时DEL11: MOV R5,#0AH DEL12: MOV R3,#18H DEL13: DJNZ R3,DEL13DJNZ R5,DEL12DJNZ R4,DEL11RETEND。

相关文档
最新文档