基于单片机的电子时钟设计课程设计
- 格式:doc
- 大小:279.28 KB
- 文档页数:26
课程设计任务书摘要数字钟因其小巧,价格低廉,走时精度高,使用方便,功能多,便于集成化而受广大消费的喜爱,因此得到了广泛的使用。
单片机为基础上设计出来的数字时钟数字钟,在日常生活中最常见,应用也最广泛。
本次课程设计的时钟就是以STC89C52单片机为核心,配备LED显示模块、时钟模块、等功能模块的数字电子钟。
采用24小时制方式显示时间。
文章主要从硬件设计和软件编程两个大的方面。
硬件电路设计主要包括中央处理模块、时钟模块,显示模块等几部分。
时钟电路采用DS1302芯片,并选用LED显示器。
软件方面用keil C语言来实现。
软硬件配合,达到电子时钟精准的显示。
关键字:单片机,时钟模块,精准目录1绪论 (2)1.1设计概述 (2)1.2技术简述 (2)1.3本课题的背景 (3)1.4本课题的意义 (3)2系统设计 (4)2.1设计目的 (4)2.2设计功能及要求 (4)2.3设计思路 (4)2.4硬件方案 (4)2.4.1时钟芯片的选择 (5)2.4.2显示屏的选择 (5)2.4.3单片机的选择 (5)2.5软件方案 (5)2.6整体方案 (6)2.7元器件清单 (6)3硬件设计 (7)3.1单片机最小系统 (7)3.1.1时钟电路 (7)3.1.2复位电路 (8)3.2时钟电路 (8)3.3电源电路 (9)3.4系统整体电路 (9)3.5系统仿真 (10)3.6硬件制作 (10)4软件设计 (11)4.1程序设计步骤 (11)4.2系统主程序 (11)4.3时钟模块子程序 (12)4.4显示模块子程序 (12)4.5主程序 (13)5联机调试 (14)6总结 (15)7参考文献 (16)1绪论1.1设计概述在单片机技术日趋成熟的今天,其灵活的硬件电路和软件程序的设计,使单片机得到广泛的应用,从小的电子产品,到大的工业控制,单片机都起到了举足轻重的作用。
数字电子时钟是基于单片机和DS1302时钟芯片的一种计时工具。
电子钟课程设计--基于单片机的电子钟设计烟台南山学院单片机课程设计题目基于单片机的电子钟设计姓名:吴志涛所在学院:计算机与电气自动化学院所学专业:自动化班级:自动化2班学号: 201002160229指导教师:杨国庆完成时间: 2013.9.20目录一、设计任务与要求 (2)1.设计的目的 (2)2.设计的指标 (2)3.设计的要求 (2)二、总体方案设计 (2)1.设计的思路 (2)2.电路的结构特征 (3)3.数据输入输出(I/O) (4)三、单元电路分析与设计 (4)1.显示部分数码管(LED) (4)2.键盘部分 (5)四、总原理图及元器件清单 (5)1.总程序图 (5)2.时间产生流程图 (6)3.按键控制流程图 (7)4.电子钟软件系统程序 (7)5.元器件清单 (10)五、软件仿真 (11)六、结论与心得 (11)七、参考文献 (12)一、设计任务与要求1.设计的目的设计一个带有年月日、时分秒及星期显示的电子钟。
电子钟的主要功能是给人们提供时间和日期信息,无论其形式如何,从外部都可分为显示和校准两部分。
为使电子日历协调工作,整个系统从功能上可分为实时时钟、显示和键盘三个模块,分别完成时间和日期的计算以及人机交互的管理等。
2.设计的指标电子钟是一套完整的时间显示系统,采用单片机等控制设计作为核心控制器,并能实时显示当前的日期,能够设置时间等操作。
3.设计的要求本电子钟能动态显示年、月、日、星期、小时、分钟、秒。
二、总体方案设计按照系统设计功能的要求,初步确定系统由主控模块、时控模块、及显示模块和键盘接口模块共4个模块组成。
主控芯片使用51系列STC89C52RC单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。
采用DS1302作为计时芯片,可以做到计时准确。
更重要的是,DS1302可以在很小电流的后备电源(2.5~5.5V电源,再2.5V时耗电小于300nA),而且DS1302可以编程选择多种充电电流来为后备电源进行慢速充电,可以保证后备电源基本不耗电。
单片机技术课程设计数字电子钟学院:班级:姓名:学号:教师:摘要电子钟在生活中应用非常广泛,而一种简单方便的数字电子钟则更能受到人们的欢迎。
所以设计一个简易数字电子钟很有必要。
本电子钟采用AT89C52单片机为核心,使用12MHz 晶振与单片机AT89C52 相连接,通过软件编程的方法实现以24小时为一个周期,同时8位7段LED数码管(两个四位一体数码管)显示小时、分钟和秒的要求,并在计时过程中具有定时功能,当时间到达提前定好的时间进行蜂鸣报时。
该电子钟设有四个按键KEY1、KEY2、KEY3、KEY4和KEY5键,进行相应的操作就可实现校时、定时、复位功能。
具有时间显示、整点报时、校正等功能。
走时准确、显示直观、运行稳定等优点。
具有极高的推广应用价值。
关键词:电子钟 AT89C52 硬件设计软件设计目录NO TABLE OF CONTENTS ENTRIES FOUND.一、数字电子钟设计任务、功能要求说明及方案介绍1.1 设计课题设计任务设计一个具有特定功能的电子钟。
具有时间显示,并有时间设定,时间调整功能。
1.2 设计课题的功能要求说明设计一个具有特定功能的电子钟。
该电子钟上电或按键复位后能自动显示系统提示符“d.1004-22”,进入时钟准备状态;第一次按电子钟启动/调整键,电子钟从12时59分0秒开始运行,进入时钟运行状态;按电子钟S5键,则电子钟进入时钟调整状态,此时可利用各调整键调整时间,调整结束后可按S5键再次进入时钟运行状态。
1.3 设计课的设计总体方案介绍及工作原理说明本电子钟主要由单片机、键盘、显示接口电路和复位电路构成,设计课题的总体方案如图1所示:图1-1总体设计方案图本电子钟的所有的软件、参数均存放在AT89C52的Flash ROM和内部RAM 中,减少了芯片的使用数量简化了整体电路也降低了整机的工作电流。
键盘采用动态扫描方式。
利用单片机定时器及计数器产生定时效果通过编程形成数字钟效果,再利用数码管动态扫描显示单片机内部处理的数据,同时通过端口读入当前外部控制状态来改变程序的不同状态,实现不同功能。
单片机电子时钟课程设计实验报告(1)单片机电子时钟课程设计实验报告一、实验内容本次实验的主要内容是使用单片机设计一个电子时钟,通过编程控制单片机,实现时钟的显示、报时、闹钟等功能。
二、实验步骤1.硬件设计根据实验要求,搭建电子时钟的硬件电路,包括单片机、时钟模块、显示模块、按键模块等。
2.软件设计通过C语言编写单片机程序,用于实现时钟功能。
3.程序实现(1)时钟显示功能通过读取时钟模块的时间信息,在显示模块上显示当前时间。
(2)报时功能设置定时器,在每个整点时,通过发出对应的蜂鸣声,提示时间到达整点。
(3)闹钟功能设置闹钟时间和闹铃时间,在闹钟时间到达时,发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
(4)时间设置功能通过按键模块实现时间的设置,包括设置小时数、分钟数、秒数等。
(5)年月日设置功能通过按键模块实现年月日的设置,包括设置年份、月份、日期等。
三、实验结果经过调试,电子时钟的各项功能都能够正常实现。
在运行过程中,时钟能够准确、稳定地显示当前时间,并在整点时提示时间到达整点。
在设定的闹铃时间到达时,能够发出提示蜂鸣,并在屏幕上显示“闹钟时间到了”。
同时,在需要设置时间和年月日信息时,也能够通过按键进行相应的设置操作。
四、实验感悟通过本次实验,我深刻体会到了单片机在电子设备中的广泛应用以及C 语言在程序设计中的重要性。
通过实验,我不仅掌握了单片机的硬件设计与编程技术,还学会了在设计电子设备时,应重视系统的稳定性与可靠性,并善于寻找调试过程中的问题并解决。
在今后的学习和工作中,我将继续加强对单片机及其应用的学习与掌握,努力提升自己的实践能力,为未来的科研与工作做好充分准备。
52单片机时钟课程设计一、课程目标知识目标:1. 学生能理解并掌握52单片机的基本原理及其在时钟设计中的应用。
2. 学生能描述时钟电路的工作原理,包括时钟晶振、分频器等组成部分。
3. 学生能运用C语言编写程序,实现对时钟的显示、调整和时间计算功能。
技能目标:1. 学生能独立完成52单片机的时钟电路连接和程序编写。
2. 学生通过实验操作,培养动手能力和问题解决能力,能够调试并优化时钟程序。
3. 学生能够运用所学知识,结合实际需求,设计简单的时钟应用项目。
情感态度价值观目标:1. 学生通过学习单片机时钟设计,培养对电子技术和编程的兴趣,激发创新意识。
2. 学生在团队协作中,学会分享、交流和合作,提高沟通能力。
3. 学生认识到科技对社会生活的影响,增强社会责任感和时代使命感。
课程性质:本课程为实践性较强的电子技术课程,结合理论教学和实验操作,旨在培养学生的动手能力、编程能力和创新能力。
学生特点:学生已具备一定的电子技术基础知识,对编程有一定了解,但对单片机应用尚处于起步阶段。
教学要求:教师需结合学生特点,注重理论与实践相结合,关注个体差异,引导学生主动探究,培养其解决问题的能力。
通过课程学习,使学生能够将所学知识应用于实际项目中。
二、教学内容本课程教学内容主要包括以下几部分:1. 52单片机基础知识:介绍52单片机的结构、工作原理、引脚功能等,结合教材相关章节,让学生对单片机有基本的认识。
2. 时钟电路原理:讲解时钟电路的组成,包括时钟晶振、分频器等,分析时钟信号的产生、传输和作用。
3. C语言编程:复习C语言基础知识,重点讲解与52单片机编程相关的内容,如寄存器操作、I/O口编程、中断处理等。
4. 时钟程序设计:详细讲解如何利用52单片机实现时钟功能,包括时钟显示、调整和时间计算等,结合教材实例,让学生动手实践。
5. 实验操作与调试:指导学生进行时钟电路的连接、程序下载和调试,培养学生动手能力和问题解决能力。
单片机电子时钟课程设计报告一、设计目的。
本课程设计旨在通过单片机技术的应用,设计并制作一个简单的电子时钟。
通过这一设计,学生将能够掌握单片机的基本原理和应用,培养学生的动手能力和创新意识,提高学生的实际操作能力。
二、设计原理。
本电子时钟采用单片机作为控制核心,通过晶振产生的时钟信号来实现时间的计时和显示。
利用数码管来显示小时和分钟,通过按键来调整时间。
同时,通过蜂鸣器发出报时信号,实现基本的闹钟功能。
三、设计方案。
1. 硬件设计。
(1)单片机选择,本设计选用常见的51单片机作为控制核心,具有成本低、易于编程的特点。
(2)时钟电路,采用晶振作为时钟信号源,通过单片机的定时器来实现时间的计时。
(3)显示模块,采用数码管来显示小时和分钟,通过数码管的扫描显示来实现时间的动态显示。
(4)按键输入,设计按键来调整时间,包括调整小时和分钟。
(5)报时功能,通过蜂鸣器来实现基本的报时功能,可以设置闹钟时间。
2. 软件设计。
(1)时钟控制,通过单片机的定时器来实现时间的计时和更新。
(2)显示控制,设计数码管的扫描显示程序,实现时间的动态显示。
(3)按键处理,设计按键扫描程序,实现对时间的调整。
(4)报时功能,设计蜂鸣器的报时程序,实现基本的闹钟功能。
四、设计实现。
1. 硬件实现。
根据上述设计方案,完成了电子时钟的硬件连接和布线,保证各个模块之间的正常通讯和工作。
2. 软件实现。
编写了单片机的程序,实现了时钟的计时、显示和控制功能,保证了电子时钟的正常运行。
五、实验结果。
经过调试,电子时钟能够准确显示当前的时间,并能够通过按键调整时间和设置闹钟功能,报时功能也能够正常工作。
六、总结与展望。
通过本课程设计,学生掌握了单片机的基本原理和应用,培养了动手能力和创新意识。
在今后的学习和工作中,学生将能够更好地应用单片机技术,设计和制作更加复杂的电子产品。
同时,也为学生今后的科研和创新工作奠定了良好的基础。
《单片机原理及接口》课程设计报告题目:时钟系统设计姓名:专业:电信班级: 1 学号: *****指导教师:信息工程学院二0一六年一月时钟系统设计摘要:本系统是基于AT89C51单片机的具有准点报时、调时、以及可设闹钟功能的简单数字时钟系统的设计。
以AT89C51为核心控制器,系统分为时钟模块、显示模块、按键模块及闹钟模块。
系统以单片机内部定时器作为时钟模块的主要控制模块,通过频率计数实现计时功能,采用了8位数码管来显示时间,采用独立按键做为时间调时以及闹钟设置按键,采用蜂鸣器作为报时闹钟系统。
通过Keil软件C语言程序的编写、编译、调试以及硬件单片机的连接,实现了时间显示(24小时制)、闹钟设置、时间调试以及准点报时,可复位的功能,并运行了该电路的程序,得出了符合实验设计要求的结果。
关键字:数字时钟;AT89C51;数码管;C语言;闹钟;调时1 系统设计内容1.1 前言随着近年来科技的进步,单片机在近十年也取得了飞速的发展。
目前,单片机已经渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。
导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。
更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。
因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
现在虽然单片机的品种繁多,各具特色,但仍以MCS-51为核心的单片机占主流,兼容其结构和指令系统的有PHILIPS公司的产品,ATMEL公司的产品和中国台湾的WinBond系列单片机。
以8031为核心的单片机占据了半壁江山,在一定的时期内,这种情形将得以延续,将不存在某个单片机一统天下的垄断局面,走的是依存互补,相辅相成、共同发展的道路。
本科毕业论文基于89C51单片机电子数字时钟的设计目录第一章第一章 电子时钟的总体设计电子时钟的总体设计 ....................................................................................................... ...................................................................................................... 44 1.1 设计目的设计目的.......................................................................................................................... 4 1.1.1 课程设计课程设计 ............................................................................................................... 4 1.1.2 AT89C51芯片的串口功能芯片的串口功能.................................................................................... 4 1.1.3用keil 软件进行编程与调试 .................................................................................. 4 1.2 设计任务设计任务 .......................................................................................................................... 4 1.3 设计思路设计思路.......................................................................................................................... 4 第二章第二章 硬件系统的设计硬件系统的设计............................................................................................................... .............................................................................................................. 66 2.1 电路原理图设计电路原理图设计 .............................................................................................................. 6 2.1.1 电子钟的硬件电路框图电子钟的硬件电路框图...................................................................................... 6 2.2 AT89C51引脚及其功能 (6)2.2.1 AT89C51的原理及说明的原理及说明 ........................................................................................ 6 2.2.2 引脚功能引脚功能 ............................................................................................................... 7 2.3 驱动部件驱动部件 .......................................................................................................................... 8 2.4 显示部分显示部分.......................................................................................................................... 9 第三章第三章 软件系统的设计软件系统的设计............................................................................................................. ............................................................................................................ 110 3.1 电子钟的主程序电子钟的主程序............................................................................................................ 11 3.2 电子钟的显示子序电子钟的显示子序 ........................................................................................................ 12 3.3 定时器中断服务程序定时器中断服务程序 .................................................................................................... 13 3.4 电子时钟设计程序清单电子时钟设计程序清单 ................................................................................................ 15 3.5 程序进行编译仿真程序进行编译仿真........................................................................................................ 18 3.5.1 89C51程序 ......................................................................................................... 18 3.5.2 用PROTEUS ISIS 进行电子万年历的仿真测试 . (20)第四章第四章对89C51设计的电子时钟的总结................................................................................. 22 参考文献 ........................................................................................................................................ . (2)23摘要本次实训是基于AT89C51单片机电子钟的设计,对时、分、秒的显示的控制,时、分、秒用六位数码管显示LED 数码管时钟电路采用24小时计时方式。
基于单片机的电子钟设计目录第一章电子时钟设计--—--—----————-—-—-—----—-—-——-——21.1 设计原理简介--————-—----—---——---———-----——-—-—-—21.2 设计功能-——--—-—————-———-—----————---——--——-——---—3第二章主要电路元器件介绍-—-———-———-—------———---32。
1 STC89C52 单片机简介—--—--—-—-—-—-—-—---—-——-———32。
1.1 单片机简介--——--——--——---—-—--————----—————--——-—-32。
1.2 主要特性---——-------—---—-—---————-—--—--———-—-—-—32.1.3 管脚功能说明—---———-———-———-——---—-————-—-—-—-————42.1。
4 LCD1602-—------——---—--—-——--———--——------——-—-—5第三章单元电路的硬件设计—-----————————————————--63.1 硬件原理框图—-———--—--——---—--—-—---------—--———-—-63。
2 单片机 STC89C52 系统的设计-—-—-—-—-————-—————-—----63。
3 时钟电路—————-----———-—---—-——---—--—-—-—-—--————--73.4 复位电路-----——-——--———-————-———-—----———---—--—-—-------—-—--—-——---—-—————-—---——--73。
5 键盘接口电路--—---—-———--—--——--——--——----———---——-83.6 LCD1602显示——---——————--—-—-——--——----—----———-————8第四章设计总原理图—-—-—---——-----—-———-9 第五章心得体会---—-------—————--——-—-——9第六章源程序---—-—-——-—-------———---—-——————-——----10前言:摘要数字钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大的方便.由于数字集成电路技术的发展和采用了先进的石英技术,使数字钟具有走时准确、性能稳定、携带方便等优点,它还用于计时、自动报时及自动控制等各个领域。
单片机原理及应用课程设计专业:设计题目:电子时钟班级:学生姓名:学号:指导教师:分院院长:许建平教研室主任:方健电气工程学院一、课程设计任务书1.课程设计项目电子时钟(LED显示)2.设计内容1)以MCS-51系列单片机为核心器件组成电子时钟控制系统;2)利用提供单元模块构成硬件系统。
3)系统程序编制与调试;4)电路系统的综合调试;5)撰写课程设计论文;6)完成课程设计论文答辩。
3.设计要求1)以STC89C51单片机为控制核心,用单片机内部定时器为时钟源,设计电子时钟,使用4位数码管显示时、分,用小数点的闪烁显示秒。
2)显示格式为:“XX。
XX3)用4个功能键操作来进行对时。
可自行定义各键的功能,也可按下述方式定义K1~K4键的功能如下。
K1—功能键,每按下一次对应的LED闪烁。
K2—移位键,每按下一次向后移一位。
K3—加1键。
K4—减1键。
4.参考资料[1]李广弟,朱月秀,王秀山编著.单片机基础. 北京:北京航空航天大学出版社,2001[2] 何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,1999[3] 蔡美琴等编著.MCS-51 单片机系统及应用.北京:高等教育出版社.19925.设计进度(2011年6月13日至2011年6月24日)时间设计内容第1-2天查阅资料,方案比较、设计与论证,理论分析与计算第3-5天硬件电路调试第6-8天系统调试第9-10天书写报告、答辩6.设计地点新实验楼323微机实验室二、评语及成绩成绩:指导教师:单片机原理及应用课程设计班级:姓名:学号:指导教师:撰写日期:目录第一章课程设计内容与要求分析 (1)1.1课程设计内容 (1)1.2课程设计要求分析 (1)1.2.1系统单元电路组成 (1)第二章控制系统程序设计 (4)单片机原理及应用课程设计总结......... 错误!未定义书签。
参考文献. (8)附录 (9)注意:页码右对齐,使用超级链接,连接章节使用超级链接,连接章节的方法:1步:选择大纲视图2步:选择目录等级3步:定义标题2为2级目录4步:定义标题3为3级目录后以此类推。
第一部分设计任务和要求1.1单片机课程设计内容 (2)1.2单片机课程设计要求 (2)1.3系统运行流程 (2)第二部分设计方案2.1总体设计方案说明 (2)2.2系统方框图 (3)2.3系统流程图 (3)第三部分主要器材及基本简介3.1主要器材 (4)3.2主要器材简介 (4)第四部分系统硬件设计4.1最小系统 (6)4.2LCD显示电路 (6)4.3键盘输入电路 (7)4.4蜂鸣器和LED灯电路 (7)第五部分仿真电路图与仿真结果 (8)第六部分课程设计总结 (8)第七部分参考文献 (9)附录A 实物图附录B 系统源程序第一部分设计任务和要求1.1单片机课程设计内容利用STC89C51单片机和LCD1602电子显示屏实现电子时钟,可由按键进行调时和12/24小时切换。
1.2单片机课程设计要求1.能实现年、月、日、星期、时、分、秒的显示;2.能实现调时功能;3.能实现12/24小时制切换;4.能实现8 : 00—22 : 00整点报时功能。
1.3系统运行流程程序首先进行初始化,在主程序的循环程序中首先调用数据处理程序,然后调用显示程序,在判断是否有按键按下。
若有按键按下则转到相应的功能程序执行,没有按键按下则调用时间程序。
若没到则循环执行。
计时中断服务程序完成秒的计时及向分钟、小时的进位和星期、年、月、日的进位。
调时闪烁中断服务程序用于被调单元的闪烁显示。
调时程序用于调整分钟、小时、星期、日、月、年,主要由主函数组成通过对相关子程序的调用,如图所示。
实现了对时间的设置和修改、LCD显示数值等主要功能。
相关的调整是靠对功能键的判断来实现的。
第二部分设计方案2.1总体设计方案说明1.程序设计及调试根据单片机课程设计内容和要求,完成Protues仿真电路的设计和用Keil软件编写程序,并进行仿真模拟调试。
2.硬件焊接及调试根据仿真电路图完成电路板的焊接,并进行软、硬件的调试,只到达到预期目的。
3.后期处理对设计过程进行总结,完成设计报告。
单片机数字电子钟课程设计一、课程目标知识目标:1. 学生能理解单片机的基础知识,掌握数字电子时钟的原理和工作流程。
2. 学生能描述单片机编程的基本步骤,特别是与计时相关的指令和程序设计方法。
3. 学生能够解释数字电子钟各部分功能,如时钟电路、显示电路等,并了解它们之间的协作关系。
技能目标:1. 学生能够运用所学的单片机知识,设计并实现一个简单的数字电子钟程序。
2. 学生通过动手实践,提高焊接和电路排错的能力,能够组装和调试电子钟电路。
3. 学生能够利用仿真软件对电子钟程序进行测试和优化,培养问题解决和程序调试技巧。
情感态度价值观目标:1. 培养学生对电子制作的兴趣,激发创新意识和探索精神。
2. 通过团队协作完成项目,增强学生的合作意识和沟通能力。
3. 学生在课程学习过程中,能够体验到知识与实践相结合的成就感,培养科学、严谨的学习态度。
分析课程性质、学生特点和教学要求:本课程设计针对高中年级学生,假设他们已具备基础物理知识和一定的编程能力。
课程性质为实践性强的综合设计课,旨在通过单片机数字电子钟的制作,巩固学生的电子技术知识与技能。
课程目标设定时考虑了学生的年龄特点和认知水平,注重理论与实践的结合,鼓励学生动手操作和探究学习,旨在提高学生的综合技术应用能力。
通过具体的学习成果分解,本课程旨在让学生不仅学习到知识,而且能够将知识应用到实际问题的解决中,充分体现课程的实用性和创新性。
二、教学内容1. 单片机基础知识回顾:重点复习单片机的内部结构、工作原理及编程基础,关联教材第二章内容。
2. 数字电子时钟原理:讲解时钟电路、计数器、振荡器等组成部分,对应教材第四章第二节。
- 时钟电路的构成与工作原理- 计数器的作用及其编程方法- 振荡器的种类及其在电子时钟中的应用3. 单片机编程设计:结合教材第三章,介绍编写电子时钟程序所需的指令和编程技巧。
- 基本计时指令的使用- 程序流程图的绘制- 中断处理在电子时钟中的应用4. 电路设计与制作:依据教材第五章,指导学生进行电子时钟的电路设计和组装。
摘要 (2)Abstract (2)第一章前言 (3)第二章关于电子时钟 (4)2.1电子时钟简介 (4)2.2 电子时钟的基本特点 (4)2.3 电子时钟的原理 (4)该电子时钟由89C51,BUTTON,六段数码管等构成,采用晶振电路作为驱动电路,由延时程序和循环程序产生的一秒定时,达到时分秒的计时,六十秒为一分钟,六十分钟为一小时,满二十四小时为一天。
而电路中唯一的一个控制键却拥有多种不同的功能,按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。
(4)第三章关于单片机 (4)3.1 单片机简介 (4)3.2 单片机的发展史 (5)3.3单片机的特点 (6)第四章方案论证与比较 (7)2.1数字时钟方案 (7)2.2 数码管显示方案 (7)第五章系统设计 (8)5.1 总体设计 (8)计时方案 (8)控制方案 (8)5.具体设计分析 (8)5.2 模块设计 (9)5.2.1芯片分析 (9)5.2.1.1 AT89S51芯片 (9)5.2.1.2 74LS47芯片说明 (11)5.2.1.3 74LS138芯片说明 (13)5.2.2 晶振电路 (14)5.2.3复位电路 (15)5.2.4数码显示模块设计 (16)5.2.5 5.2.5按键模块 (17)5.2.5整个电路原理图 (18)第六章控制系统的软件设计 (18)源程序代码 (20)第七章系统仿真与实验测试 (26)7.1 系统仿真 (26)7.2 Proteus软件应用 (26)7.3 实验测试 (28)心得体会 (29)单片机电子时钟的设计摘要单片机自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注,应用很广、发展很快。
单片机体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易。
本设计是定时闹钟的设计,由单片机AT89C51芯片和LED数码管为核心,辅以必要的电路,构成的一个单片机电子定时闹钟。
电子钟设计可采用数字电路实现,也可以采用单片机来完成。
数字电子钟是用数字集成电路构成的,用数码管显示“时”,“分”,“秒”的现代计时装置。
若用数字电路完成,所设计的电路相当复杂,大概需要十几片数字集成块,其功能也主要依赖于数字电路的各功能模块的组合来实现,焊接的过程比较复杂,成本也非常高。
若用单片机来设计制作完成,由于其功能的实现主要通过软件编程来完成,那么就降低了硬件电路的复杂性,而且其成本也有所降低,所以在该设计中采用单片机利用AT89C51,它是低功耗、高性能的CMOS型8位单片机。
片内带有4KB的Flash存储器,且允许在系统内改写或用编程器编程。
另外,AT89C51的指令系统和引脚与8051完全兼容,片内有128B的RAM、32条I/O口线、2个16位定时计数器、5个中断源、一个全双工串行口等。
AT89C51单片机结合七段显示器设计的简易定时闹铃时钟,可以设置现在的时间及显示闹铃设置时间,若时间到则发出一阵声响,进—步可以扩充控制电器的启停。
设计内容包括了秒信号发生器、时间显示电路、按键电路、供电电源以及闹铃指示电路等几部分的设计。
采用四个开关来控制定时闹钟的工作状态,分别为:K1、设置时间和闹钟的小时;K2、设置小时以及设置闹钟的开关;K3、设置分钟和闹钟的分钟;K4、设置完成退出。
课设准备中我根据具体的要求,查找资料,然后按要求根据已学过的时钟程序编写定时闹钟的程序,依据程序利用proteus软件进行了仿真实验,对出现的问题进行分析和反复修改源程序,最终得到正确并符合要求的结果。
设计完成的定时闹钟达到课程设计的要求,在到达定时的时间便立即发出蜂鸣声音,持续一分钟。
显示采用的六位数码管电路,如果亮度感觉不够,可以通过提升电阻来调节,控制程序中延迟时间的长短,可以获得不同的效果。
《单片机技术》课程设计说明书数字电子钟系、部:电气与信息工程学院学生姓名:指导教师:职称专业:班级:完成时间: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 设计课题任务设计一个具有特定功能的电子钟。
可剪辑修改单片机课程设计(电子时钟)学院:电气自动化班级:电气0840班姓名:田永贤指导老师:杨宇佟云峰曾谢华精选文档可剪辑修改昆明冶金高等专科学校自动化与电力学院毕业设计(论文)开题报告设计题目:基于单片机的电子时钟学生姓名:田永贤学号:0800001236班级:电气0840班专业:电气自动化指导教师:杨宇佟云峰曾谢华填表时间2010年12月25日毕业设计开题报告精选文档可剪辑修改精选文档可剪辑修改精选文档可剪辑修改精选文档可剪辑修改精选文档可剪辑修改目录第一章绪论 (7)1.1 引言 (7)1.2 Proteus软件简介 (8)第二章单片机的相关知识 (8)2.1 单片机简介 (8)2.2单片机的发展史 (9)2.2.1 4位单片机 (9)2.2.2 8位单片机 (9)2.2.3 16位单片机 (9)2.2.4 32位单片机 (10)2.2.5 64位单片机 (10)2.3单片机的特点 (10)2.4 AT89C51单片机介绍 (11)2.4.1 主要特性 (11)2.4.2 管脚说明 (12)第三章硬件电路设计 (14)3.1电子钟系统硬件组成 (14)3.2电子时钟系统设计流程 (15)3.3单片机的基本结构 (15)3.4单片机的选择 (20)3.5Protel DXP电路图设计 (22)3.6 Proteus 电路图设计 (23)第四章软件设计 (24)4.1 程序流程图设计 (24)4.2 源程序设计 (29)4.3 KeilC51进行程序调试 (34)4.4 仿真与调试 (35)4.4.1 Proteus中Hex 文件选择 (35)4.4.2 Proteus进行电子钟系统仿真 (35)结束语 (36)参考文献 (37)致谢 (38)精选文档可剪辑修改第一章绪论1.1 引言近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此越来越广泛地应用各个领域.本文的电子钟系统是以单片机(AT89C51)为核心,时钟芯片DS1302、数码管显示驱动芯片MAX7219等元器件组成。
(课程设计)单片机原理及接口技术课程设计题目:LED点阵显示电子时钟学院班级:学生姓名:学号:摘要电子时钟是一种利用数字电路来显示秒、时的计时装置。
用单片机控制的LED点阵电子显示时钟具有结构简单、性能可靠、成本低廉和显示灵活等优点,其应用前景广阔。
本文设计的是一个5块8*8点阵时钟显示屏,数字采用静止显示方式。
实现的功能有:时钟功能,确定显示当前时间,并可以用按键实现误差调节;计时功能,开始与停止计时;显示精度切换功能,根据不同的工作场合,切换显示精度(时:分显示或分:秒显示硬件组成:AT89C51单片机、集成块74LS373和74LS138、LED点阵、按键若干、晶振、电容、电阻、电源等。
软件组成:定时中断程序、显示程序、起停控制程序、功能切换程序。
系统实现了计时和显示精度切换等创新功能。
关键词:点阵显示电子时钟;计时;精度切换目录摘要 (2)1 概述 (4)2 系统总体方案设计 (5)2.1系统总体设计框图 (5)2.2 初步设计思路 (5)3 硬件电路设计 (6)3.1 LED数码管显示电路 (6)3.1.1 LED点阵 (6)3.1.2 74LS373锁存器 (7)3.1.3 74LS138译码器 (7)3.2 复位电路 (8)3.3 晶振电路 (9)3.4 按键电路 (9)3.5 单片机连接电路 (10)4 软件设计 (11)4.1 计时程序设计 (11)4.2 显示程序设计 (11)4.3 时:分/分:秒切换程序 (13)4.4 起、停控制程序 (14)5 系统调试 (15)6 心得体会 (16)参考文献 (16)附录 (17)附录A:源程序清单 (17)附录B:元件清单 (23)1 概述在日常生活中,大家见到的都是数码管制作的电子钟,LED点阵时钟则不多见。
用单片机控制的LED点阵显示电子钟具有结构简单、性能可靠、成本低廉、价格便宜和显示灵活等优点,其应用前景广阔。
之所以使用LED点阵电子屏显示,是与它本身所具有的优点分不开的[1]。
目录第一章电子时钟的相关知识 (2)1.1电子时钟简介 (2)1.2电子时钟的工作原理 (2)1.3电子时钟的应用与优缺点 (2)第二章课程设计内容与要求分析 (4)2.1课程设计内容 (4)2.2设计要求 (4)2.3控制系统的选择 (4)第三章系统原理及其工作原理描述 (5)3.1STC89C51简介 (5)3.2系统电路组成 (7)3.3各个模块说明 (8)第四章控制系统的软件设计 (10)4.1程序流程图 (10)4.1.1按键处理程序 (10)4.1.2按键读取程序 (11)4.2程序设计 (12)第五章实验心得 (23)参考文献 (25)评语及成绩......................................... 错误!未定义书签。
第一章电子时钟的相关知识1.1电子时钟简介电子钟亦称数显钟(数字显示钟),是一种用数字电路技术实现时、分、秒计时的装置,与机械时钟相比,直观性为其主要显著特点,且因非机械驱动,具有更长的使用寿命,相较石英钟的石英机芯驱动,更具准确性。
电子钟已成为人们日常生活中必不可少的必需品,广泛用于个人家庭以及车站、码头、剧院、办公室等公共场所,给人们的生活、学习、工作、娱乐带来极大地方便。
相对于其他时钟类型,它的特点可归结为“两强一弱”:比机械钟强在观时显著,比石英钟强在走时准确,但是它的弱点为显时较为单调。
1.2电子时钟的工作原理电子钟是一个将“时”,“分”,“秒”显示于人的视觉器官的计时装置。
它的计时周期为24小时,显示满刻度为23时59分59秒,具有校时功能和报时功能。
因此,一个基本的数字钟电路主要由译码显示器、“时”,“分”,“秒”计数器、校时电路、报时电路和振荡器组成。
主电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。
秒信号产生器是整个系统的时基信号,它直接决定计时系统的精度,一般用石英晶体振荡器加分频器来实现。
将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。
“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。
“时计数器”采用24进制计时器,可实现对一天24小时的累计。
译码显示电路将“时”、“分”、“秒”计数器的输出状态用七段显示译码器译码,通过七段显示器显示出来。
整点报时电路时根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。
校时电路时用来对“时”、“分”、“秒”显示数字进行校对调整。
1.3电子时钟的应用与优缺点应用目前,在国内,电子钟因LCD数字显示效用直接有效,所以大多运用在城市的主要营业场所,以及车站、码头等公共场所。
在对公共场所的电子钟设定的时候,使用者还可根据周边的气候、温度等对LCD屏进行设置。
同时,因为LCD的显示耗电量很省,所以能够保持持续的工作效果。
夜间在睡觉的时候,床头如果放个带投影功能的电子钟,可以不用起床,直接让时间显示在天花板上,非常直观与有效。
现在生产的大部分汽车中,车内前方仪表盘旁边一般也都自带电子钟功能,采取蓝色背景光板成像效果,非常清晰。
优点与传统的机械钟先比,电子钟具有更优异的优点。
由于电子钟采用数字集成电路的发展和采用了先进的石英技术,使电子钟具有走时准确、性能稳定、携带方便等优点,电子钟用于定时自动报警、按时自动打铃、时间程序自动控制、定时广播及自动控制等各个领域。
缺点因为电子钟毕竟是电子产品,电子产品都有辐射,不过电子钟危害极低,对人体够不成任何危害,不象手机的辐射那么大。
第二章课程设计内容与要求分析2.1课程设计内容1)以MCS-51系列单片机为核心器件组成电子时钟控制系统;2)利用提供单元模块构成硬件系统。
3)系统程序编制与调试;4)电路系统的综合调试;5)撰写课程设计论文;6)完成课程设计论文答辩。
2.2设计要求1)以STC10F04E单片机为控制核心,用单片机内部定时器为时钟源,设计电子时钟,使用4位数码管显示时、分,后两位数码管(分)的闪烁显示秒。
2)显示格式为:“XXXX3)用4个功能键操作来进行对时。
可自行定义各键的功能,也可按下述方式定义K1~K4键的功能如下。
K1—功能键,每按下一次对应的LED闪烁。
K2—移位键,每按下一次向后移一位。
K3—加1键。
K4—减1键。
2.3控制系统的选择通过对多种单片机性能的分析,最终认为89C51是最理想的电子时钟开发芯片。
89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,器件采用宏晶高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容,并且可是在线编程。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中。
宏晶的STC89C51是一种高效微控制器,而且它与MCS-51兼容,且具有4K字节可编程闪烁存储器和1000写/擦循环,数据保留时间为10年等特点,是最好的选择。
第三章系统原理及其工作原理描述3.1STC89C51简介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口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能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禁止,置位无效。
图3-1 89C51单片机PSEN:外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。
EA/VPP:当/EA保持低电平时,则在此期间外部程序存储(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时, /EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
3.2系统电路组成图3-2 系统原理图图3-3 系统原理图3.3各个模块说明1、显示模块数码管是一种把多个LED显示段集成在一起的显示设备。
有两种类型,一种是共阳型,一种是共阴型。
共阳型就是把多个LED显示段的阳极接在一起,又称为公共端。
共阴型就是把多个LED显示段的阴极接在一起,即为公共商。
阳极即为二极管的正极,又称为正极,阴极即为二极管的负极,又称为负极。
通常的数码管又分为8段,即8个LED显示段,这是为工程应用方便如设计的,分别为A、B、C、D、E、F、G、DP,其中DP 是小数点位段。
而多位数码管,除某一位的公共端会连接在一起,不同位的数码管的相同端也会连接在一起。
即,所有的A段都会连在一起,其它的段也是如此,这是实际最常用的用法。
数码管显示方法可分为静态显示和动态显示两种。
静态显示就是数码管的8段输入及其公共端电平一直有效。
动态显示的原理是,各个数码管的相同段连接在一起,共同占用8 位段引管线;每位数码管的阳极连在一起组成公共端。
利用人眼的视觉暂留性,依次给出各个数码管公共端加有效信号,在此同时给出该数码管加有效的数据信号,当全段扫描速度大于视觉暂留速度时,显示就会清晰显示出来。
图3-4 数码管2、按键模块该设计只用了一个键盘,但实现的功能却是比较完善,减少了硬件资源的损耗,该键盘可以实现小时和分钟的调节以及控制是否进入省电模式。
当按键按下又松开,可以实现屏蔽数码管显示的功能,达到省电的目的;直接按下不松开,则可以通过按键实现分钟的累加,每按一次分钟加一;而连续两次按下按键不放松,则可实现小时的调节,同样每按一次小时加一。
达到时间调节的目的。
图3-5 按键第四章控制系统的软件设计4.1程序流程图4.1.1按键处理程序按键处理程序4.1.2按键读取程序按键读取程序4.2程序设计#include"reg51.h"#include<intrins.h>typedef bit BOOL; // 位变量//typedef unsigned char UINT8; // 无符号8位整型变量//typedef signed char INT8; // 有符号8位整型变量//typedef unsigned int UINT16; // 无符号16位整型变量//typedef signed int INT16; // 有符号16位整型变量//typedef unsigned long UINT32; // 无符号32位整型变量//typedef signed long INT32; // 有符号32位整型变量//typedef float FP32; // 单精度浮点数(32位长度)//typedef double FP64; // 双精度浮点数(64位长度)//sbit KeyFunction=P2^0;sbit KeyMove=P2^1;sbit KeyAdd=P2^2;sbit KeySub=P2^3;bit SetFinish=0; //设置完成标志bit SecFlag=0; //秒闪烁标bit SecFlag1=0;UINT8KeyfunFlag,MoveFlag,AddFlag,SubFlag,Set1Timer,Set2Timer,Set3Timer,Set4Timer; UINT8 code LEDVal[] = {0x03,0x9f,0x25,0x0d,0x99,0x49,0x41,0x1f,0x01,0x09};//0-9UINT8 data num[5];UINT8 data num1[5];UINT16 Time,GmsTimer;UINT8 Sec,Min,Hour;UINT8 disp_value;void Disp(UINT16 disp_value);void Disp1(UINT16 disp_value);void Bcd(UINT16 bcd_value);void DelayMs(UINT16 delay);void DispSet(UINT16 disp_value);void KeyScan();//========================================================// 函数名称:显示函数// 函数功能:// 入口参数:// 出口参数:// 备注://========================================================void Disp(UINT16 disp_value){UINT8 i;Bcd(disp_value);for(i=1;i<5;i++){if((SecFlag==1)&&((i==1)|(i==2))) //第几个管闪烁{SBUF=0xff;while(TI == 0);TI = 0;}else{SBUF=LEDVal[num[i]];while(TI == 0);TI = 0;}}}///////////////////////////////void Disp1(UINT16 disp_value){{UINT8 i;Bcd(disp_value);for(i=1;i<5;i++){if((SecFlag1==1)&&((i==1)|(i==2))) //第几个管闪烁{SBUF=0xff;while(TI == 0);TI = 0;}else{SBUF=LEDVal[num[i]];while(TI == 0);TI = 0;}}}}//======================================================== // 函数名称:设置显示函数// 函数功能:// 入口参数:// 出口参数:// 备注://======================================================== void DispSet(UINT16 disp_value){UINT8 i;Bcd(disp_value);for(i=1;i<5;i++){if((MoveFlag==i)&&(SecFlag1==1)){ SBUF=0xff;while(TI == 0);TI = 0;}else{SBUF=LEDVal[num[i]];while(TI == 0);TI = 0;}}}//======================================================== // 函数名称:延时函数// 函数功能:// 入口参数:// 出口参数:// 备注://======================================================== void DelayMs(UINT16 delay){UINT8 j;while(delay--){for(j=125;j>0;j--){;}}}//======================================================== // 函数名称:数据分离函数// 函数功能:// 入口参数:// 出口参数:// 备注://======================================================== void Bcd1(UINT16 bcd_value){num1[4]=bcd_value/1000;num1[3]=(bcd_value%1000)/100;num1[2]=((bcd_value%1000)%100)/10;num1[1]=((bcd_value%1000)%100)%10;}//////////////////////////////////////////////////////////////void Bcd(UINT16 bcd_value){num[4]=bcd_value/1000;num[3]=(bcd_value%1000)/100;num[2]=((bcd_value%1000)%100)/10;num[1]=((bcd_value%1000)%100)%10;}//======================================================== // 函数名称:键盘扫描函数// 函数功能:// 入口参数:// 出口参数:// 备注://======================================================== void KeyScan(){if(KeyFunction==0) //功能键按下{DelayMs(20);if(KeyFunction==0){while(KeyFunction==0);KeyfunFlag++;}}//////////////if(KeyMove==0) //移位键按下{DelayMs(20);if(KeyMove==0){while(KeyMove==0);MoveFlag++;if(MoveFlag==5){MoveFlag=1;}}}//////////////if(KeyAdd==0) //加一键{DelayMs(20);if(KeyAdd==0){while(KeyAdd==0);AddFlag=1;}}if(KeySub==0) //减一键{DelayMs(20);if(KeySub==0){while(KeySub==0);SubFlag=1;}}}//======================================================== // 函数名称:按键处理// 函数功能:// 入口参数:// 出口参数:// 备注://======================================================== void KeyDeal(){if(KeyfunFlag==1) //功能按下一次{TR0=0; //关闭定时器if((MoveFlag==1)&&(AddFlag==1)) //设置第一位{AddFlag=0;Set1Timer++;if(Set1Timer==10){Set1Timer=0;}}if((MoveFlag==1)&&(SubFlag==1)){SubFlag=0;Set1Timer--;if(Set1Timer==-1){Set1Timer=9;}}if((MoveFlag==2)&&(AddFlag==1)) //设置第二位{AddFlag=0;Set2Timer++;if(Set2Timer==6){Set2Timer=0;}}if((MoveFlag==2)&&(SubFlag==1)){SubFlag=0;Set2Timer--;if(Set2Timer==-1){Set2Timer=5;}}if((MoveFlag==3)&&(AddFlag==1)) //设置第三位{AddFlag=0;Set3Timer++;if(Set4Timer<2){if(Set3Timer==10){Set3Timer=0;}}if((Set4Timer==2)&&(Set3Timer==4)) //时钟十位为2 {Set3Timer=0;}}if((MoveFlag==3)&&(SubFlag==1)){SubFlag=0;Set3Timer--;if(Set3Timer==-1){if(Set4Timer<2){Set3Timer=9;}if(Set4Timer==2){Set3Timer=3;}}}if((MoveFlag==4)&&(AddFlag==1)) //设置第四位{AddFlag=0;Set4Timer++;if(Set3Timer>3){if(Set4Timer==2){Set4Timer=0;}}else if(Set4Timer==3){Set4Timer=0;}}if((MoveFlag==4)&&(SubFlag==1)){SubFlag=0;Set4Timer--;if(Set4Timer==-1){if(Set3Timer>3){Set4Timer=1;}else{Set4Timer=2;}}}}if(KeyfunFlag==2){TR0=1;SetFinish=1; //设置完成MoveFlag=0;}GmsTimer=(Set4Timer)*1000+(Set3Timer)*100+(Set2Timer)*10+(Set1Timer);//必须放在外面}//========================================================// 函数名称:系统初始化// 函数功能:// 入口参数:// 出口参数:// 备注://======================================================== void SystemInit(){TMOD=0X11;TH0=(65536-50000)/256; //50000TL0=(65536-50000)%256; //50000TH1=(65536-50000)/256; //50000TL1=(65536-50000)%256; //50000TR1=1;ET1=1;TR0=0;ET0=1;EA=1;}//======================================================== // 函数名称:计时函数// 函数功能:// 入口参数:// 出口参数:// 备注://======================================================== void Timer0() interrupt 1{UINT8 count;TH0=(65536-50000)/256; //50000TL0=(65536-50000)%256; //50000count++;if(SetFinish==1){Min=Min+Set2Timer*10+Set1Timer;if(Min>=60){Min=Min-60;Hour++;}Hour=Hour+Set4Timer*10+Set3Timer;if(Hour>=24){Hour=Hour-24;}SetFinish=0; //读取完成,清除数据}if(count<=5){SecFlag=1; //秒钟闪烁标志位}else{SecFlag=0;if(count==20){Sec++;count=0;if(Sec==60){Min++;Sec=0;if(Min==60){Hour++;Min=0;if(Hour==24) //24小时制{Hour=0;}}}}}Time=Hour*100+Min;}///////////////////////////void Timer1() interrupt 3{ UINT8 count1;TH1=(65536-50000)/256; //50000TL1=(65536-50000)%256; //50000count1++;if(count1<=5){SecFlag1=1; //秒钟闪烁标志位}else{SecFlag1=0;if(count1==20){count1=0;}}}//======================================================== // 函数名称:主函数// 函数功能:// 入口参数:// 出口参数:// 备注://======================================================== void main(){ UINT16 temp;SCON=0x00;temp=1111;SystemInit();while(1){KeyScan();Disp1(temp);DelayMs(20);if(KeyfunFlag==1){break;}}Bcd1(temp);Set4Timer=num1[4];Set3Timer=num1[3];Set2Timer=num1[2];Set1Timer=num1[1];while(1){KeyScan();KeyDeal();DispSet(GmsTimer);// DispSet(5432);DelayMs(20);if(KeyfunFlag==2){break;}}while(1){Disp(Time);DelayMs(20);}}第五章实验心得在老师耐心的指导下,我顺利完成了这次单片机课程设计课题中的电子时钟设计,通过这次的设计使我认识到本人对单片机方面的知识知道的太少了,对于书本上的很多知识还不能灵活运用,尤其是对程序设计语句的理解和运用,不能够充分理解每个语句的具体含义,导致编程的程序过于复杂,使得需要的存储空间增大。