毕业论文
题 目:基于单片机的电子时钟设计作者姓名:学 号:专 业:电子信息科学与技术指导教师:
2016年4月
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作 者 签 名: 日 期: 指导教师签名: 日 期:
使用授权说明
本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名: 日 期:
学位论文原创性声明
本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。
作者签名: 日期: 年 月 日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日
注 意 事 项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作) 2)原创性声明
3)中文摘要(300字左右)、关键词 4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:引言(或绪论)、正文、结论 7)参考文献 8)致谢
9)附录(对论文支持必要时) 2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。 4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印 4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档 5.装订顺序
1)设计(论文)
2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
指导教师评阅书
指导教师评价: 一、撰写(设计)过程 1、学生在论文(设计)过程中的治学态度、工作精神 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、学生掌握专业知识、技能的扎实程度 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生综合运用所学知识和专业技能分析和解决问题的能力 □ 优 □ 良 □ 中 □ 及格 □ 不及格 4、研究方法的科学性;技术线路的可行性;设计方案的合理性 □ 优 □ 良 □ 中 □ 及格 □ 不及格 5、完成毕业论文(设计)期间的出勤情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 指导教师: (签名) 单位: (盖章) 年 月 日
评阅教师评阅书
评阅教师评价: 一、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 建议成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 (在所选等级前的□内画“√”) 评阅教师: (签名) 单位: (盖章) 年 月 日
单片机电子时钟设计
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价: 一、答辩过程 1、毕业论文(设计)的基本要点和见解的叙述情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、对答辩问题的反应、理解、表达情况 □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、学生答辩过程中的精神状态 □ 优 □ 良 □ 中 □ 及格 □ 不及格 二、论文(设计)质量 1、论文(设计)的整体结构是否符合撰写规范? □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、是否完成指定的论文(设计)任务(包括装订及附件)? □ 优 □ 良 □ 中 □ 及格 □ 不及格 三、论文(设计)水平 1、论文(设计)的理论意义或对解决实际问题的指导意义 □ 优 □ 良 □ 中 □ 及格 □ 不及格 2、论文的观念是否有新意?设计是否有创意? □ 优 □ 良 □ 中 □ 及格 □ 不及格 3、论文(设计说明书)所体现的整体水平 □ 优 □ 良 □ 中 □ 及格 □ 不及格 评定成绩:□ 优 □ 良 □ 中 □ 及格 □ 不及格 教研室主任(或答辩小组组长): (签名) 年 月 日 教学系意见: 系主任: (签名) 年 月 日
7
单片机电子时钟设计
摘 要
传统的数字电子时钟采用了较多的分立元器件,不仅占用了很大的空间而且利用率也比很低,随着系统设计复杂度的不断提高,用传统时钟系统设计方法很难满足设计需求。
单片机是集CPU、RAM、ROM、定时器/计数器和多种接口于一体的微控制器。它体积小、成本低、功能强,广泛应用于智能产品和工业自动化上。而51系列的单片机是各单片机中最为典型和最有代表性的一种。本文设计的电子时钟是基于51单片机,同时使用c语言为程序设计语言,从而克服传统电子时钟的弊端。
本设计拟实现的基本功能为单片机计时显示功能。能够体现单片机电子时钟的可扩展优越性,加入时间调整程序,使用按钮,调整年月日及时间;加入阴历显示功能。
关键词:单片机,电子时钟,c语言
8
单片机电子时钟设计
ABSTRACT
Traditional digital electronic clock with a greater amount of discrete components, not only takes up a lot of space and utilization than low, as the system design complexity continues to improve, the clock system design using traditional methods are difficult to meet the design requirements .
Microcontroller is a CPU, RAM, ROM, timer / counter and a variety of interfaces in one of the micro-controller. Its small size, low cost, powerful, widely used in smart products and industrial automation. And 51 of the microcontroller MCU is the most typical and most representative one. This design is based on 51 single-chip electronic clock, using both assembly language for the programming language, to overcome the drawbacks of conventional electronic clock.
The design of the basic functions to be achieved for the microcontroller timer display. SCM can reflect the scalability advantages of electronic clock, add time to adjust, the use of buttons, adjust the date and time of year, month; to join the lunar calendar display.
Keywords: microcontroller, electronic clock, assembly language
9
单片机电子时钟设计
目录 4
第 一 章 绪 论 5 1.1单片机的定义
5
1.2 单片机分类 5 1.3 单片机的特点 6 1.4单片机的应用领域 6 1.5电子时钟的特点及应用领域 7 第二章 AT89C51单片机简介
7
2.1管脚说明 8 2.2 单片机的存储器
10
第三章 数码管的简介 3.1 数码管的分类 3.2 数码管的应用 第四章 电子时钟的设计
4.1 可实现的功能 4.2 软件设计流程 4.3 电子时钟设计的部分主要流程 第五章 电子时钟的仿真 5.1 单片机调试仿真软件
5.2 电子时钟的仿真
5.3 整机的仿真及调试 结束语 致 谢 参考文献
10
单片机电子时钟设计
第一章 绪论
1.1单片机的定义
单片机是指一个集成在一块芯片上的完整计算机系统。尽管他的大部分功能集成在一
个小芯片上,但是它具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分单片机还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外围设备。而现在最强大的单片机系统甚至可以将声音、图像、网络、复杂的输入输出系统集成在一块芯片上。单片机也被称为微控制器(Microcontroller),是因为它最早被用在工业控制领域。单片机由芯片内仅有CPU的专用处理器发展而来,最早的设计理念是通过将大量外围设备和CPU集成在一个芯片中,使计算机系统更小、更容易集成于复杂的而对体积要求严格的控制设备当中。INTEL的Z80是最早按照这种思想设计出的处理器,从此以后,单片机和专用处理器的发展便分道扬镳。
单片机技术是现代电子工程领域一门迅速发展的技术,它的应用已经渗透到各种嵌入式系统中。可以毫不夸张地说:掌握单片机技术是电子信息类专业学生就业的一个重要条件。同时单片机技术又是一门实践性很强的学科。只有我们不断地通过实践研究才能学习好单片机课程。
[1]
1.2 单片机分类
按照单片机的类型,单片机有:(1)51系列单片机,为首推系列单片机。其中首推Intel公司的单片机 4K字节的一次性程序存储器(OTP)。(2)具有ISP功能的单片机,ISP功能能够实现在系统可编程,可以省去通用的编程器,单片机在用户板上即可下载和烧录用户程序,而无需将单片机从生产好的产品上取下。(3)PIC系列单片机,PIC单片机系列是美国微芯公司(Microship)的产品,CPU采用RISC结构,具有精简的指令集。PIC系列单片机的I/O口是双向的,其输出电路为CMOS互补推挽输出电路。具有在线调试及编程(ISP)功能。(4)AVR单片机:AVR单片机是Atmel公司推出的较为新颖的单片机)其显著的特点为高性能、高速度、低功耗。AVR型号的管脚,与对应的51系列兼容。(5) AT89S52 单片机: AT89S52是一种低功耗、性能高具有8K 在系统可编程Flash存储器,向下完全兼容51子系列。
1.3 单片机的特点
单片机是以工业测控对象、环境、接口特点出发向着增强控制功能,提高工业环境下的
11
单片机电子时钟设计
可靠性方向发展。主要特点如下:
·种类多,型号全
·提高性能,扩大容量,性能价格比高
·增加控制功能,向真正意义上的“单片”机发展 ·低功耗
1.4单片机的应用领域
目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。
单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴: ·在智能仪器仪表上的应用
·在工业控制中的应用 ·在家用电器中的应用
·在计算机网络和通信领域中的应用 ·单片机在医用设备领域中的应用 ·在各种大型电器中的模块化应用
此外,单片机在金融,科研、教育航空航天等领域都有着十分广泛的用途。 采用以上方案具有以下优势:从经济性、可移植性、可推广性角度讲,建立这样的课程设计平台是非常有意义的;利用仿真系统,可以节约开发时间和开发成本,同时具有很大的灵活性和可扩展性。
为了更好地学习单片机,我们采用Proteus软件与Keil软件整合构建单片机虚拟实验平台。首先我们要在PC上利用Proteus软件自己搭建硬件电路,并利用系统提供的功能完成电路分析、系统调试和输出显示的硬件设计部分;同时在Keil软件中编制程序,进行相应的编译和仿真,完成系统的软件设计部分。当系统的设计工作完成后,就可以在PC上看到最终的运行效果。最后再通过proteus设计PCB,再完成真正硬件的调试。
12
[2]
单片机电子时钟设计
1.5电子时钟的特点及应用领域
时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机的应用系统中,时钟有两方面的含义:一方面是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;另一方面是指系统的标准定时时钟,即定时时间,它通常有两种实现方法:一是用软件实现,即用单片机内部的可编程定时/计数器来实现,一是用专门的时钟芯片实现。
数字钟能长期、连续、可靠、稳定地下作;同时还具有体积小,功耗低等特点,便于携带,使用方便。同时由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数字钟的精度远远超过老式钟表.钟表的数字化给人们生产生话带来了极大的方便,而且大大地扩展了钟表原先的报时功能,数字钟是采用数字电路实现对‘时、分、秒”数字显示的计时装置。使得电子时钟广泛应用于个人家庭、车站、码头、办公室等场所的各个角落,已成为人们口常生话中不可缺少的必需品。
[3]
第二章 AT89C51单片机简介
AT89C51是一种带4K字节FLASH存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼
容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图所示。 现在AT89S51/52已经取代了AT89C51/52。
封装形式:
13
单片机电子时钟设计
图一51系列单片机DIP封装图图一
图一系列单片机DIP封装图给出了双列直插式封装(DIP. Dualln-line Package), DIP封装与MCS一51系列单片机的引脚完全兼容,可互换使用。
CMOS 工艺制造的低功耗芯片也采用塑封方型扁平式封装(PQFP, Plastic Quad Flat Package)和塑封有引线芯片载体封簇(PLCC, Plastic Leaded Chip Carrier)形式.这两种封装采用44个引脚,其中4个引脚不用,其引脚排列如图二51系列单片机PQFP和PLCC封装图。
2.1管脚说明
VCC:供电电压。 GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P0口的管脚第
一次写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)这是由于上拉的缘故。
14
单片机电子时钟设计
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禁止,置位无效。
/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次
/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否
有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
2.2 单片机的存储器
15
单片机电子时钟设计
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。INTEL的MCS-51系列单片机采用的是哈佛结构的形式。
2.2.1 程序存储空间
程序存储空间可以被映射为内部程序存储器或者外部程序存储器。AT89C51单片机内部具有的4KB程序存储器被映射到程序存储空间的0000H~0FFFH区间。这部分程序存储空间也可以被映射为外部程序存储器,它具体被映射为哪一种程序存储器取决于引脚 (引脚31)所接的电平。当引脚为高电平,内部程序存储器被映射到这部分程序存储空间;当引脚为低电平,外部程序存储器被映射到这部分程序存储空间。高于0FFFH的程序存储空间只能被映射为外部程序存储器。
2.2.2 数据存储空间
AT89C51的内部数据存储器有256字节,它们被分为两部分:高128字节和低128字节。低128字节的内部数据存储器是真正的RAM区,可以被用来写入或读出数据。这一部分存储容量不是很大,但有很大的作用。它可以进一步被分为3部分,如图2.4所示。
通过程序状态字 PSW 中的位RS1和RS0进行选择111001007FH30H2FH20H18H10H08H00H1FH17H0FH07H通用数据存储器位寻址空间图2.4 内部数据存储器低128字节 在内部数据存储器低128字节中,地址从00H~1FH的最低32个字节组成4组工作寄存器,每组有8个工作寄存器。每组中的8个工作寄存器都被命名为从R0到R7。在一个具体时刻,CPU只能使用其中的一组工作寄存器。当前正在使用的工作寄存器组由位于高128字节的程序状态字寄存器(PSW)中第3位(RS0)和第4位(RS1)的数据决定。程序状态字寄存器中的数据可以通过编程来改变,这种功能为保护工作寄存器的内容提供了很大的方便。如果用户程序中不需要全部使用4组工作寄存器,那么剩下的工作寄存器所对应的内部数据存储器也可以作为通用数据存储器使用。工作寄存器在内部数据存储器中的地址映射如表1.1所示。
表1.1 工作寄存器地址映射表
0组(RS1=0,RS0=0) 1组(RS1=0,RS0=1) 2组(RS1=1,RS0=0) 3组(RS1=1,RS0=1) 地址 00H 01H 02H 03H
寄存器 R0 R1 R2 R3 }}}}4组工作寄存器
地址 08H 09H 0AH 0BH 寄存器 R0 R1 R2 R3 16
地址 10H 11H 12H 13H 寄存器 R0 R1 R2 R3 地址 18H 19H 1AH 1BH 寄存器 R0 R1 R2 R3
单片机电子时钟设计
04H 05H 06H 07H
R4 R5 R6 R7 0CH 0DH 0EH 0FH R4 R5 R6 R7 14H 15H 16H 17H R4 R5 R6 R7 1CH 1DH 1EH 1FH R4 R5 R6 R7 在工作寄存器区上面,内部数据存储器的地址从20H~2FH的16个字节范围内,既可以通过字节寻址的方式进入,也可以通过位寻址的方式进入,位地址范围从00H到7FH[5]。字节地址与位地址的对应关系。
内部数据存储器地址从30H~7FH部分仅可以用作通用数据存储器。内部数据存储器的高128字节被称为特殊功能寄存器(SFR)区。特殊功能寄存器被用作CPU和在片外围器件之间的接口,它们之间的联系方框图如图2.5所示。
程序存储器并行和串行接口MCS51核特殊功能寄存器定时/计数器中断管理监视定时器等其他外围器件
图2.5 殊功能寄存器(SFR)工作框图
CPU通过向相应的特殊功能存储器写入数据实现控制对应的在片外围器件的工作,从相应的特殊功能存储器读出数据实现读取对应的在片外围器件的工作结果。
在AT89C51单片机中,包括前面提到的程序状态字寄存器(PSW)的特殊功能存储器共有26个,它们离散地分布在80H~FFH的内部数据存储器地址空间范围内[7],对于没有定义的存储单元用户不能使用。如果向这些存储单元写入数据将产生不确定的效果,从它们读取数据将得到一个随机数。
对于字节地址低位为8H或者FH的特殊功能存储器,既可以进行字节操作,也可以进行位操作。例如前面提到的用来确定当前工作寄存器组的程序状态字寄存器(PSW),它的地址为00H,因此对它可以进行字节操作,也可以进行位操作。采用位操作可以直接控制程序状态字寄存器中的第3位(RS0)或第4位(RS1)数据而不影响其他位的数据。低位地址不为8H或FH的特殊功能存储器只可以进行字节操作,当需要修改这些特殊功能存储器中的某些位时,对其他的位应注意保护。
片外数据存储空间可以被映射为数据存储器、扩展的输入/输出接口、模拟/数字转换器和数字/模拟转换器等。这些外围器件统一编址,所有外围器件的地址都占用数据存储空间的地址资源,因此CPU与片外外围器件进行数据交换时可以使用与访问外部数据存储器相同的指令。CPU通过向相应的外部数据存储器地址单元写入数据实现控制对应的片外外围器件的工作,从相应的外部数据存储器地址单元读出数据实现读取对应的片外外围器件的工作结果。
17
单片机电子时钟设计
数字时钟的硬件设计
最小系统设计:
单片机最小系统结构图
电路原理图:
从原理图中可知用到的元器件只要有AT89C51单片机一块、按键若干、电源模块、电阻电容若干、数码管、扬声器一个。
第三章 数码管的简介 3.1 数码管的分类
18
单片机电子时钟设计
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳极数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴极数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴极数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。 七段数码管的结构:
八段数码管的结构:
3.1.1 数码管驱动方式的分类
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显示出我们要的数字,
19
单片机电子时钟设计
因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
数码管的静态显示:所谓静态显示,就是当显示某一字符时,相应段的发光二极管恒
定地寻能可截止。这种显示方法为每一们都需要有一个8位输出口控制。对于51单片机,可以在并行口上扩展多片锁存74LS573作为静态显示器接口。静态显示器的优点是显示稳定,在发光二极管导通电注一定的情况下显示器的亮度高,控制系统在运行过程中,仅仅在需要更新显示内容时,CPU才执行一次显示更新子程序,这样大大节省了CPU的时间,提高了CPU的工作效率;缺点是位数较多时,所需I/O口太多,硬件开销太大,因此常采用另外一种显示方式——动态显示。
数码管的动态显示:所谓动态显示就是一位一位地轮流点亮各位显示器(扫描)
,对于显示器的每一位而言,每隔一段时间点亮一次。虽然在同一时刻只有一位显示器在工作(点亮),但利用人眼的视觉暂留效应和发光二极管熄灭时的余辉效应,看到的却是多个字符“同时”显示。显示器亮度既与点亮时的导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参烽,可实现亮度较高较稳定的显示。若显示器的位数不大于8位,则控制显示器公共极电位只需一个8位I/O口(称为扫描口或字位口),控制各位LED显示器所显示的字形也需要一个8位口(称为数据口或字形口)。
动态显示器的优点是节省硬件资源,成本较低,但在控制系统运行过程中,要保证显示器正常显示,CPU必须每隔一段时间执行一次显示子程序,这占用了CPU的大量时间,降低了CPU 工作效率,同时显示亮度较静态显示器低。综合以上考虑,由于温度显示为精确到小数点后两位,故只需4个数码管,又考虑到CPU工作效率与电源效率,本毕业设计采用静态显示。为共阳极显示。
3.1.2 静态显示驱动
静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
3.1.3 动态显示驱动
数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\"a,b,c,d,e,f,g,dp\"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现
20
单片机电子时钟设计
象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
3.2 数码管的应用
数码管是一类显示屏 通过对其不同的管脚输入相对的电流会使其发亮从而显示出数字。 可以显示、时间、日期、温度等所有可以用数字代替的参数。 由于它的价格便宜使用简单,所以在电器特别是家电领域应用极为广泛,如:空调、热水器、冰箱等等。绝大多数热水器用的都是数码管其他家电也用液晶屏与荧光屏。
3.2.1 数码管使用的电流与电压
电流:静态时,推荐使用10-15mA;动态时,16/1动态扫描时,平均电流为4-5mA,峰值电流50-60mA。
电压:当选择红色时,使用1.9V;当选择绿色时,使用2.1V。
第四章 电子时钟的设计 4.1 可实现的功能
1.采用六位数码管显示小时、分钟、秒,并且可以任意设定时间。 2.可以查看并且设定日期,日期采用年、月、日的显示方式。
3.可以查看并设定闹钟,闹钟的显示方式采用与时间相同的显示方式。
4.可以查看并设定星期,数码管的最后一位显示星期,用数字8表示星期日。 5.系统设定详细说明:
系统的初始状态为显示时钟状态,此时显示小时、分钟、秒。初始状态下,按K0键进入时间调整程序,按K1键查看闹钟,按K2键查看日期,按K3键查看星期。
进入时间调整状态后,首先调整分钟,此时分钟闪烁显示,按K1键加一,按K2键减一。按K0键开始调整小时,此时小时闪烁显示,按K1键加一,按K2键减一,再按K0键后系统返回到显示时间状态。
在调整时间状态下按下K3键进入调整闹钟状态,此时显示原先的闹钟时间,并且闹钟分钟闪烁显示,此时按K1键加一,按K2键减一;调整后按K0键转换到闹钟小时调整单元,此时按K1键加一,按K2键减一。闹钟调整完毕后按K0键回到调整时间状态,按K3键转到调整日期状态。
在调整日期状态下,日单元闪烁显示,此时按K1键加一,按K2键减一;按下K0键进入调整月,此时按K1键加一,按K2键减一;按下K0键进入调整年,此时按K1键加一,按K2键减一。此时按下K0键返回到调整时间状态,按下K3键进入调整星期状态。
在调整星期状态下,星期闪烁显示,此时按K1键加一,按K2键减一。按下K0键返回到调
21
单片机电子时钟设计
整时间状态。此时分钟闪烁显示,按K0键开始调整小时,此时小时闪烁显示,再按K0键后系统返回到显示时间状态。
4.2 软件设计流程
秒计数器的计数时钟信号为1Hz的标准信号,可以由CPLD板上提供的20MHZ的信号通过分频得到。秒计数器的进位输出信号作为分钟计数器的计数信号,分钟计数器的进位输出信号又作为小时计数器的计数信号。设计一个同时显示时、分、秒6个数字的数字钟,则需要6个七段显示器。若同时点亮这6个七段显示器,则电路中会产生一个比较大的电流,很容易造成电路烧坏,我们通过扫描电路来解决这一问题,通过产生一个扫描信号LT(0)一LT(5)来控制6个七段显示器,依次点亮6个七段显示器,也就是每次只点亮一个七段显示器。只要扫描信号的频率超过人的眼睛视觉暂留频率24Hz以上,就可以达到尽管每次点亮单个七段显示器,却能具有6个同时显示的视觉效果,而目显示也不致闪烁抖动。其中6位扫描信号一方面控制七段显示器依次点亮,一方面控制6选1选择器输出相应显示数字。控制电路用来将控制时钟的一些功能加入到整个正常计数的显示电路中,通过最终的显示来验证控制电路的正确性。
主程序流程图
22
单片机电子时钟设计
计时中断服务程序流程图
4.3 电子时钟设计的部分主要流程
C语言是计算机提供给用户的最快最有效的语言,也是能够利用计算机的所有硬件特性并能够直接控制硬件的唯一语言。对于对电子时钟的设计这样的程序来说,用c语言是最快最有效的语言,下面是用c语言进行编写的基于单片机的电子时钟的设计的部分主要流程程序
程序:#include \"main.h\"
#include \"ds1302.h\"
code uint8
Ledcode[13]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf,0x86}; uint8 Time[7]={55,59,11,22,2,2,11};//秒分时日月周年10-08-15 11:59:55 uint8 Led_buf[6];
23
单片机电子时钟设计
uint8 Num, Led_n=0, T_n=0;
void delay(uint16 n) { while (n--);
} /*
* 初始化系统定时器 */
void systimer_init(void) {
TMOD = 0x01; TH0 = 0xF8; TL0 = 0xCC; TR0 = 0; ET0 = 1; TMOD &= 0x0F;
TMOD |= 0x10; TH1 = 0xDC; // 定时10ms TL1 = 0x00; TR1 = 0; ET1 = 0; EA = 1;
} /*
* 判断键值 */
24
单片机电子时钟设计
uint8 scan_key(void) {
uint8 val=0;
KeyOut1 = 0; KeyOut2 = 1; KeyOut3 = 1; KeyOut4 = 1; if (KeyIn4 == 0) { }
while ((KeyIn1 == 0)||(KeyIn2 == 0)||(KeyIn3 == 0)||(KeyIn4 == 0));
delay(KEY_DELAY); if (KeyIn4 == 0)
val = K_ADD;
KeyOut1 = 1; KeyOut2 = 0; KeyOut3 = 1; KeyOut4 = 1; if (KeyIn4 == 0) { }
while ((KeyIn1 == 0)||(KeyIn2 == 0)||(KeyIn3 == 0)||(KeyIn4 == 0));
delay(KEY_DELAY); if (KeyIn4 == 0)
val = K_LEFT;
KeyOut1 = 1; KeyOut2 = 1;
25
单片机电子时钟设计
KeyOut3 = 0; KeyOut4 = 1; if (KeyIn4 == 0) { }
while ((KeyIn1 == 0)||(KeyIn2 == 0)||(KeyIn3 == 0)||(KeyIn4 == 0));
delay(KEY_DELAY); if (KeyIn4 == 0)
val = K_SUB;
KeyOut1 = 1; KeyOut2 = 1; KeyOut3 = 1; KeyOut4 = 0; if (KeyIn2 == 0) { }
if (KeyIn3 == 0) { }
if (KeyIn4 == 0) {
delay(KEY_DELAY); if (KeyIn4 == 0)
26
delay(KEY_DELAY); if (KeyIn2 == 0)
val = K_SET;
delay(KEY_DELAY); if (KeyIn3 == 0)
val = K_ENTER;
单片机电子时钟设计
} /*
}
val = K_RIGHT;
while ((KeyIn1 == 0)||(KeyIn2 == 0)||(KeyIn3 == 0)||(KeyIn4 == 0));
return val;
* 制作数码管数据 */
void make_led_number(void) { } /*
* 启动clock数字闪烁 */
void start_flash(void) {
ET0 = 0;
Led_buf[0] = 0x7F & Ledcode[Time[0]%10]; Led_buf[1] = Ledcode[Time[0]/10]; Led_buf[2] = 0x7F & Ledcode[Time[1]%10]; Led_buf[3] = Ledcode[Time[1]/10]; Led_buf[4] = 0x7F & Ledcode[Time[2]%10]; Led_buf[5] = Ledcode[Time[2]/10]; ET0 = 1;
T_n = 0;
Led_buf[2*Num] = 0x7F & Ledcode[Time[Num]%10];
27
单片机电子时钟设计
Led_buf[2*Num+1] = Ledcode[Time[Num]/10];
TH1 = 0xDC; // 定时10ms TL1 = 0x00; TR1 = 1; } /*
* 停止clock数字闪烁 */
void stop_flash(void) {
ET1 = 0; ET1 = 1;
TR1 = 0; } /*
* 时钟设置 */
void set_clock(void) {
Led_buf[2*Num] = 0x7F & Ledcode[Time[Num]%10]; Led_buf[2*Num+1] = Ledcode[Time[Num]/10];
uint8 k_val, flag=0; Num = 0;
while (1)
28
单片机电子时钟设计
{
k_val = scan_key();
if (k_val == 0) { }
flag = 0; stop_flash();
if (k_val == K_ENTER) { }
switch (k_val) {
case K_ADD:
if (Num == 2) {
if (Time[Num] >= 23)
Time[Num] = 0;
set_time(Time); break; if (flag == 0) { } continue;
start_flash(); flag = 1;
else
29
单片机电子时钟设计
}
Time[Num]++;
else { } break;
if (Time[Num] >= 59)
Time[Num] = 0;
else
Time[Num]++;
case K_SUB:
if (Num == 2) { } else { } break;
if (Time[Num] == 0)
Time[Num] = 59; if (Time[Num] == 0)
Time[Num] = 23;
else
Time[Num]--;
else
Time[Num]--;
case K_LEFT:
if (Num >= 2)
Num = 0;
else
30
单片机电子时钟设计
Num++;
break;
case K_RIGHT: if (Num == 0)
Num = 2;
else
Num--;
break;
default: break;
}
make_led_number();
}
} /*
* 数码管显示 */
void show_num(uint8 *buf) { ENLED = 1; switch (Led_n) { case 0: ADDR0 = 0; ADDR1 = 0; ADDR2 = 0; P0 = buf[0];
break;
case 1:
31
单片机电子时钟设计
ADDR0 = 1; ADDR1 = 0; ADDR2 = 0; P0 = buf[1];
break;
case 2: ADDR0 = 0; ADDR1 = 1; ADDR2 = 0; P0 = buf[2];
break;
case 3: ADDR0 = 1; ADDR1 = 1; ADDR2 = 0; P0 = buf[3];
break;
case 4: ADDR0 = 0; ADDR1 = 0; ADDR2 = 1; P0 = buf[4];
break;
case 5: ADDR0 = 1; ADDR1 = 0; ADDR2 = 1; P0 = buf[5];
break;
}
32
单片机电子时钟设计
ENLED = 0;
if (Led_n >= 5)
Led_n = 0;
else
Led_n++;
}
main() { uint8 k_val;
ADDR3 = 1; ENLED = 0;
systimer_init();
set_time(Time); //初始时间设定 TR0 = 1; while (1) { read_time(Time); make_led_number(); k_val = scan_key(); if (k_val == K_SET)
set_clock();
}
}
33
单片机电子时钟设计
void time0_isr() interrupt 1 { }
void time1_isr() interrupt 3 {
ET1 = 0; ET0 = 1;
show_num(Led_buf); ET0 = 0; TH0 = 0xF8; TL0 = 0xCC;
TH1 = 0xDC; // 定时10ms TL1 = 0x00;
34
T_n++;
if (T_n == 50) // 0.5s { }
else if (T_n >= 100) // 1s { }
T_n = 0;
Led_buf[2*Num] = 0x7F & Ledcode[Time[Num]%10]; Led_buf[2*Num+1] = Ledcode[Time[Num]/10]; Led_buf[2*Num] = 0x7F & Ledcode[10]; Led_buf[2*Num+1] = Ledcode[10];
单片机电子时钟设计
}
ET1 = 1;
第五章 电子时钟的仿真
5.1 单片机调试仿真软件
源文件的输入:
Keil单片机模拟调试软件内集成了一个文本编辑器,用该文本编辑器可以编辑源程序。打开”FILE”“NEW”就打开的此编辑器。在图5.1中已经完成了汇编语言源文件的输入,并且完成了源程序向当前工程的添加。然后再创建工程的步骤如下:打开”project”“new uvision project”然后显示一个对话框,在对话框里选择ATMEL,在ATMEL的下拉框中找AT89C51选择后点击“OK”就创建了一个工程,注意:创建时把此工程保存在熟悉的文件夹里,以便于后面的查找使用。
图5.1 Keil单片机模拟调试软件的集成开发环境
完成c语言源文件的输入后,接着需要把c语言源文件加入工程之中。选择图5.1中的工程管理器窗口的子目录Source Group 1,再单击鼠标右键打开快捷菜单。在快捷菜单中选择“Add File to Group“Source Group 1”,加入文件对话框被打开。在这个对话框的“查找范围”下拉列表框中选择存储汇编语言源文件的文件夹,在“文件类型”下拉列表框中选择Asm Source file(*.a*;*.src),这时存储的d语言源文件将显示出来。双击要加入的文件名,或者选择要加入的文件名再单击Add按钮即可完成把d语言源文件加入工程。这时工程管理窗口的文件选项卡中子目录Source Group 1下出现一个c语言源文件,如图5.1所示。 Proteus软件:
Proteus 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作
35
单片机电子时钟设计
系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路,该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大。PROTEUS软件由Labcenter公司开发,是目前世界上最先进、最完整的嵌入式系统设计与仿真平台,可以实现数字电路、模拟电路及微控制器系统与外设的混合电路系统的电路仿真、软件仿真、系统协同仿真和PCB设计等功能,是目前唯一能够对各种处理器进行实时仿真、调试与测试的EDA工具。微控制器系统相关的仿真需建立编译和调试环境,可选择Keil C51uVision2 软件。该软件支持众多不同公司的芯片,集编辑、编译和程序仿真等于一体,同时还支持PLM、汇编和C语言的程序设计。它的界面友好易学,在调试程序、软件仿真方面有很强大的功能。 其革命性的功能是:将电路仿真和微处理器仿真进行协同,直接在基于原理图的虚拟原型上进行处理器编程调试,并进行功能验证,通过动态器件如电机、LED、LCD、开关等,实时看到运行后的输入、输出的效果,配合系统配置的虚拟仪器如示波器、逻辑分析仪等, Proteus为我们建立了完备的电子设计开发环境。
5.2 电子时钟的仿真
选择仿真元器件
在进行仿真之前对所需的仿真的元器件的选择也是很重要的,所需仿真元器件的好坏直接影响到仿真的效果,如果选择的元器件比较不太合理可能使仿真的结果不理想,甚至会导致仿真的失败。下表列出本次设计中用到的元器件
【14】
:
36
单片机电子时钟设计
在进行元器件的选择后,并且在keil上完成程序的编写测试后我们就可以着手进行电子时钟的仿真了。在数字电子时钟程序初步编完之后,利用单片机硬件仿真软件进行仿真和调试,同时对程序进行适当的修改
[11]
。该设计在仿真及调试过程中应注意以下几点:
1.单片机时间基准振荡电路中振荡晶体频率的选择必须要和程序中的时间基准相一致。 2.由于单片机处理数据过程中要响应中断等原因,而中断服务程序所花费的时间必须在中断返回后在计时单元中扣除掉,否则精确度会变差。
3.在仿真调试中调试数码管的发光时间时,需要反复修改程序中的给定的时间,直到整体上的显示效果较好,不会有闪烁的现象产生
[12]
。
在proteus软件中进行电子时钟电路原理图的绘制,绘制结果如5.2所示,在
电子时钟仿真的原理图
此图中的核心部分是左边的89c51单片机中部有显示驱动芯片MAX7219,右上部分是一个八段的数码管显示屏,数码管下面为四个按键,图中的左下部的那个芯片为时钟芯片DS1302,时钟芯片右部为蜂鸣器,原理图中还有单片机的晶振电路和单片机的复位电路。
DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202
的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
MAX7219是MAXIM公司生产的串行输入/输出共阴极数码管显示驱动芯片,一片MAX7219可驱动8个7段(包括小数点共8段)数字LED、LED条线图形显示器、或64个分立的LED发光二级管。该芯片具有10MHz传输率的三线串行接口可与任何微
37
单片机电子时钟设计
处理器相连,只需一个外接电阻即可设置所有LED的段电流。。它的操作很简单,MCU只需通过模拟SPI三线接口就可以将相关的指令写入MAX7219的内部指令和数据寄存器,同时它还允许用户选择多种译码方式和译码位。此外它还支持多片7219串联方式,这样MCU就可以通过3根线(即串行数据线、串行时钟线和芯片选
通线)控制更多的数码管显示。
各器件的作用:89c51单片机是总体的控制器(整个电子时钟的CPU),源程序的加载、电路的控制、数据的加载、传送等都在单片机这一部分。显示驱动芯片MAX7219是连接单片机和数码管的芯片。数码管显示屏其显示作用,是信号的显示,是本设计中唯一的显示设备。按键是对时间、日期等的调整或输入,其具体操作方法下节有具体介绍。时钟芯片DS1302是系统中的计时芯片,它对年、月、日、时、分、秒等的计时,它采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号。蜂鸣器起闹钟扬声功能。另外单片机的晶振电路和复位电路属于电路部分,是信号数据的传输。
5.3 整机的仿真及调试
调试:
把编写完的源程序放在KEIL软件中,先自行检查下程序是否有误,更改有误的部分,再创建工程进行程序一个一个地调试,把调试结果显示有误的部分找出,检查错误的原因然后再进行更改,更改后再进行调试,再找出错误进行更改,依次循环进行,至到程序调试成功为止。调试结果如图5.2:
38
单片机电子时钟设计
调试结果图5.2
仿真:
仿真是把KEIL中生成的源程序找出,并加载到单片机内,检查原理图的设计是否有误,更改有误的部分,然后进行仿真,看仿真结果是否正确,如果不正确或者不显示结果,就再此检查原理图进行更改直到能顺利地仿真出结果。
39
单片机电子时钟设计
如上图5.3为电子时钟整机仿真图:
该设计在仿真及调试过程中应注意以下几点:
1.单片机时间基准振荡电路中振荡晶体频率的选择必须要和程序中的时间基准相一致。
2.由于单片机处理数据过程中要响应中断等原因,而中断服务程序所花费的时间必须在中断返回后在计时单元中扣除掉,否则精确度会变差。
3.在仿真调试中调试数码管的发光时间时,需要反复修改程序中的给定的时间,直到整体上的显示效果较好,不会有闪烁的现象产生。 此仿真结果的主要实现
(1)将其电源键打开,按下电源开关即开始常工作,8个数码管显示依次是时、分、秒、温度,各占两位。
(2)按键说明:①复位键,当发现系统运行不正常,进入死循环,显示数值。严重失真时,按复位键,其内部功能为使用单片机复位。强行使单片机从头开始运行,跳出错误区。②日期显示键,该键接外部中断零(1NT0引脚)。通过中断服务子程序来达到显示的年、月、日、星期的目的。其中每项占两位,年份只显示后两位,如06 06 06 03表示06年06月06号星期三。中断程序只进行一秒,后返回主程序,显示时、分、秒、温度。③调时键(TS)按下此键进入调时子程序,按一下调分钟,两下调时,三下调星期,四下调日期,五下调月
40
单片机电子时钟设计
份,六下调年份的低两位,七下调年份的高两位。ADD键表示增加,每按一下增加一,DWC键表示减少,每按一下减少一,三个键组合在一起完成调时功能。
具体的按键使用:当进入调整功能时,按第一个键K1进行减运算,按第二个键K2进行加运算。按下第三个键K3,实现日期\\时间调整及\\定时功能,等数字闪烁后,按一二键进行加减,从而可以进行具体日期时间调整。当定时设定后,到预定时间后,时钟会发出连续的蜂鸣声。按下第四个键K4,可以进行时间\\日期切换,8位LED数码管将显示时间或日期,采用24小时制。
结束语
本文通过对电子时钟的设计仿真,使自己对单片机和c语言有了进一步的温故掌握。在设计过程中,吸收了前辈的一些先进的理论成果。我在设计中总结出了一个重要的经验:一切问题都要结合实际进行设计。因为不同的设计技术或者设计思想都有自身的优点和局限性,只有根据具体的设计要求,才能顺利地进行设计仿真,也才能对己有的设计方法进行创新。本装置所实现的功能为时钟功能。由于时间和日期都是通过特定的芯片来获得的,单片机只起到控制和转换的作用,在精度方面不受单片机性能和程序的限制,故容易保障其精度和效率。本次设计有较大的进展,取得了较好的效果,对单片机软硬件资源和接日扩展都有深入的学习。也学习了时钟芯片12887的基本原理和使用方法。本设计是学习单片机的较佳选择。但是设计还有诸多功能没有完善,以后有机会会继续完善其相应的功能。设计不足:本系统所采用的显示模块LED较多,占用了不少资源,包括线路板、 单片机端口等,同时使得电路稳定性下降; 由于时间比较紧迫,未能开发出更多的功能以体现单片机电子时钟的优越性。
本系统上可实现的功能:1.实现秒表功能; 2.实现闹铃功能,当所定的时间到时,产生断续的蜂鸣声;3.具有天数倒计时功能。
报告结束,请老师和同学们批评指正!
致 谢
本课题的研究和论文的完成是在袁鹏飞袁老师的悉心指导和热情关怀下完成的。老师严谨的治学态度、丰富的实践经验、兢兢业业的工作精神使我受益匪浅。老师豁达的胸怀对我
41
单片机电子时钟设计
树立正确的人生观和价值观产生了积极的影响。在老师的指导和帮助下,我的专业知识水平和学习能力都得到了很大的提高。我在人生道路上的每一个脚印都凝聚着老师的心血。跟随老师学习这两年所获得的知识将是我一生中最宝贵的财富。在此谨向曾老师表示崇高的敬意和衷心的感谢!
感谢袁老师在研究工作中对我进行的悉心指导,并为我的学习提供了良好的条件,使我的论文的撰写得以顺利进行。感谢袁老师在我的学习和生活中给予的教诲和帮助。
最后感谢生我育我的父母!感谢你们一直以来对我的无私关爱和默默奉献。
参考文献
[1]周昌七,电大理工,2006年11月,总第225期,《桌面电子时钟制作》 [2],彭小军,新余高专学报,2006年4月,第9卷第2期《用单片机实现电子时钟》 [3]陈同洲,郭华帅,中国传媒大学学报,2009年3月,第16卷第1期,《电子时钟仿真及FPGA实现》
[4]吴镇宇,2005年9月,《片上时钟系统的研究与的设计》
[5] 李建忠,2004年,西安电子科技大学出版社,《单片机原理及应用》
[6]孙彩兰 蒋海琳,计算机与信息技术,软件纵横,《基于C语言为内核的电子时钟设计》
[7]彭小军,新余高专学报,2006年4月,第9卷第2期,《用单片机实现电子时钟》
[8]颜学超,2006年5月,《一种实时时钟芯片的设计》
[9]翟玉文 徐宏亮 赵岩,吉林化工学院学报,2007年1月,《实用多功能电子时钟设计》 [10]陈同洲,郭华帅,中国传媒大学学报,2009年3月第16卷第1期,《电子时钟仿真及FPGA实现》
[11]吴镇宇,2005年9月,《片上时钟系统的研究与的设计》 [12]简宁,企业科技与发展,2010年第16期,《电子时钟仿真实现》
[13]徐得波,葛广英,2004年9月,自然科学,《单片机动态可调电子时钟系统》 [14]戴勇,刘斌儒,《国外电子元器件》2008年第7期,《基于AVR单片机Mega16的电子时钟的设计》
[15] 何翠萍,刘晓刚,周功海,煤矿现代化,2007年1月第1期,《单片机控电子时钟
42
单片机电子时钟设计
的设计》
43
因篇幅问题不能全部显示,请点此查看更多更全内容