基于单片机的定时器的设计与实现毕业设计

上传人:沈*** 文档编号:41241333 上传时间:2021-11-19 格式:DOC 页数:53 大小:1.42MB
返回 下载 相关 举报
基于单片机的定时器的设计与实现毕业设计_第1页
第1页 / 共53页
基于单片机的定时器的设计与实现毕业设计_第2页
第2页 / 共53页
基于单片机的定时器的设计与实现毕业设计_第3页
第3页 / 共53页
点击查看更多>>
资源描述
内蒙古工业大学本科毕业设计说明书学校代码: 10128学 号:200820203066 本科毕业设计说明书(题 目:基于单片机的定时器的设计与实现学生姓名:吴万山学 院:信息工程系 别:电子信息工程专 业:电子信息工程班 级:电子08-1指导教师:纪松波 副教授二 一 二 年 六 月摘 要近年来随着计算机在社会领域的渗透和大规模集成电路的发展,单片机的应用正在不断地走向深入,由于它具有功能强,体积小,功耗低,价格便宜,工作可靠,使用方便等特点,因此特别适合于与控制有关的系统,越来越广泛地应用于自动控制,智能化仪器,仪表,数据采集,军工产品以及家用电器等各个领域,单片机往往是作为一个核心部件来使用,在根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。数子时钟在日常生活中最常见,应用也最广泛。本次做的数子时钟是以单片机(AT89C51)为核心,结合相关的元器件(时钟芯片DS1302、LCD液晶显示器),达到制作简易数字时钟的目的,文章的核心主要是硬件设计和软件编程两个大的方面。硬件电路设计由包括中央处理单元电路、液晶显示电路、人机接口电路等几部分组成,软件用汇编语言来实现。其硬件部分难点在于元器件的选择、布局及焊接。关键词:单片机AT89C51 LCD液晶显示器 时钟芯片DS1302AbstractRecent years , the use of singlechip is moving toward deeply with the filter of computer in the society and the development of the large scale integrated circuit. Singlechip is especially equal to the system relation to the control because of its strong funtion 、samll volume、low power consumption、inexpensive price、credibility work and its handy.it is used in the area of automata、Intelligent instrument、appearance、data acquisition、production of war industry 、domestic appliance and so on.the singlechip is used usually as the centerpiece,It can be perfect bases the specific Hardware infrastructureand aim at the integrated hardware and software device of the specific complexion.Digital clock is the most common and the most widely used in our daily lives.The singlechip is the hardcore in the digital clock made in this timethe digital clock can reach the purpose of facility digital clock with the correlation parts of an apparatus(Real Time Clock chip DS1302, Display-panel LCD an so on) To achieve the purpose of making simple digital clock.The core part of this article incluedes two aspeacts, one is hardware design,the other is software programming. The hardware design circuit consists of the central processing unit circuit、the liquid crystal display circuit、the man-machine interface circuit.The difficulites of the hardware part are choice and layout of components,and the components of welding.Keywords: singlechip AT89C51 real time clock chip DS1302, LCD Monitor目 录引 言1第一章 硬件介绍31.1AT89C51简介31.2AT89C51结构图51.3DS1302时钟芯片简介51.4 LCD1602液晶显示器简介81.4.1 概述81.4.2 LCD16029第二章 硬件设计132.1系统硬件框图132.1.1框图说明:132.2电路原理图142.2.1系统电路说明15第三章 软件设计183.1程序流程图183.2软件仿真图193.2按键功能子程序流程图20总结21参考文献22附录23源程序23致谢49内蒙古工业大学本科毕业设计说明书引 言20世纪末,电子技术获得了飞速的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。 时间对人们来说总是那么宝贵,工作的忙碌性和繁杂性容易使人忘记当前的时间。忘记了要做的事情,当事情不是很重要的时候,这种遗忘无伤大雅。但是,一旦重要事情,一时的耽误可能造成无可挽回的重大损失。所以精确的报时系统显得尤为重要。单片机由于将cpu,内存和一些必要的接口集成到一个芯片上,并且针对面向控制功能将结构做了一定的优化,所以它具备通用芯片不具有的特点。目前,单片机正朝着高性能和多品种方向发展趋势将是进一步向着CMOS化、低功耗、小体积、大容量、高性能、低价格和外围电路内装化等几个方面发展。因此,单片机被广泛应用于测控系统,智能仪表仪器,机电一体化产品,智能接口以及单片机的多系统等领域。 它的应用主要表现在以下几个方面:(1)单片机在智能仪表中的应用 单片机广泛地用于各种仪器仪表,使仪器仪表智能化,并可以提高测量的自动化程度和精度,简化仪器仪表的硬件结构,提高其性能价格比。 (2)单片机在机电一体化中的应用 机电一体化是机械工业发展的方向。机电一体化产品是指集成机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品,例如微机控制的车床、钻床等。单片机作为产品中的控制器,能充分发挥它的体积小、可靠性高、功能强等优点,可大大提高机器的自动化、智能化程度。 (3)单片机在实时控制中的应用 单片机广泛地用于各种实时控制系统中。例如,在工业测控、航空航天、尖端武器、机器人等各种实时控制系统中,都可以用单片机作为控制器。单片机的实时数据处理能力和控制功能,可使系统保持在最佳工作状态,提高系统的工作效率和产品质量。 (4)单片机在分布式多机系统中的应用在比较复杂的系统中,常采用分布式多机系统。多机系统一般由若干台功能各异的单片机组成,各自完成特定的任务,它们通过串行通信相互联系、协调工作。单片机在这种系统中往往作为一个终端机,安装在系统的某些节点上,对现场信息进行实时的测量和控制。单片机的高可靠性和强抗干扰能力,使它可以置于恶劣环境的前端工作。 (5)单片机在人类生活中的应用 自从单片机诞生以后,它就步入了人类生活,如洗衣机、电冰箱、电子玩具、收录机等家用电器配上单片机后,提高了智能化程度,增加了功能,倍受人们喜爱。单片机将使人类生活更加方便、舒适、丰富多彩。 综合所述,单片机已成为计算机发展和应用的一个重要方面。另一方面,单片机应用的重要意义还在于,它从根本上改变了传统的控制系统设计思想和设计方法。从前必须由模拟电路或数字电路实现的大部分功能,现在已能用单片机通过软件方法来实现了。这种软件代替硬件的控制技术也称为微控制技术,是传统控制技术的一次革命。单片机模块中最常见的是数子时钟,数子时钟是一种用数字电路技术实现时、分、秒计时的装置,与机械式时钟相比具有更高的准确性和直观性,且无机械装置,具有更更长的使用寿命,因此得到了广泛的使用。数子时钟是采用数字电路实现对时,分,秒,数字显示的计时装置,广泛用于个人家庭,车站, 码头办公室等公共场所,成为人们日常生活中不可少的必需品,由于数字集成电路的发展和石英晶体振荡器的广泛应用,使得数子时钟的精度,远远超过老式钟表, 钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、自动起闭路灯、定时开关烘箱、通断动力设备、甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数子时钟及扩大其应用,有着非常现实的意义。 49第一章 硬件介绍1.1AT89C51简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图1-1为AT89C51单片机的管脚图图1-1单片机管脚图5.1.1主要管脚说明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 外部中断0P3.3 /INT1 外部中断1P3.4 T0 记时器0外部输入P3.5 T1 记时器1外部输入P3.6 /WR 外部数据存储器写选通P3.7 /RD 外部数据存储器读选通P3口同时为闪烁编程和编程校验接收一些控制信号。1.2AT89C51结构图图1-2AT89C51结构图1.3DS1302时钟芯片简介 DS1302是 DALLAS 公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静 态 RAM,可以通过串行接口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、 星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过 AM/PM 标 志位决定采用24或12小时时间格式。DS1302与单片机之间能简单地采用同步串行的方式进 行通信,仅需三根 I/O 线:复位(RST)、I/O 数据线、串行时钟(SCLK)。时钟/RAM 的读/写数据以一字节或多达31字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。 图1-3DS1302管脚图各引脚的功能为:Vcc1:主电源;Vcc2:备份电源。当 Vcc2Vcc1+0.2V 时, 由 Vcc2向 DS1302供电,当 Vcc2 Vcc1时,由 Vcc1向 DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出;I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期间,必须为高。该引脚有两 个功能:第一,CE 开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法 。时时钟以及 RAM。虽然数据分成两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。图1-4 DS1302的内部结图DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串 入的二极管数目,以调节电池充电电压。不过对我们目前而言,最需要熟悉的是和时钟相关 部分的功能,对于其它参数请参阅数据手册。DS1302的工作原理 DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且 将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK)的上升沿串行输入,前8位指 定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时 输出数据。时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。DS1302的寄存器和控制命令 对 DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7 个寄存器与日历、时钟相关,存放的数据位为 BCD 码形式。此外,DS1302还有年份寄存器、 控制寄存器、充电寄存器、时钟突发寄存器及与 RAM 相关的寄存器等。时钟突发寄存器可 一次性顺序读写除充电寄存器以外的寄存器。日历、时间寄存器及控制字如表1所示:表1-1:日历、时钟寄存器与控制字对照表最后一位 RD/W 为“0”时表示进行写操作,为“1”时表示读操作。DS1302内部寄存器列表如表2所示:表1-2:DS14302内部主要寄存器分布表寄存器名称命令字取值范围各位内容写读765 432 1 0秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/240A HRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-12000-10MMONTH周寄存器8AH8BH01-07000 00DAY年份寄存器8CH8DH00-9910YEARYEAR DS1302内部的 RAM 分为两类,一类是单个 RAM 单元,共31个,每个单元为一个8位 的字节,其命令控制字为 COHFDH,其中奇数为读操作,偶数为写操作;再一类为突发方 式下的 RAM,此方式下可一次性读写所有的 RAM 的31个字节,命令控制字为 FEH(写)、 FFH(读)。 我们现在已经知道了控制寄存器和 RAM 的逻辑地址,接着就需要知道如何通过外部接 口来访问这些资源。单片机是通过简单的同步串行通讯与 DS1302通讯的,每次通讯都必须 由单片机发起,无论是读还是写操作,单片机都必须先向 DS1302写入一个命令帧,这个帧 的格式如表1所示,最高位 BIT7固定为1,BIT6决定操作是针对 RAM 还是时钟寄存器,接 着的5个 BIT 是 RAM 或时钟寄存器在 DS1302的内部地址,最后一个 BIT 表示这次操作是读 操作抑或是写操作。 物理上,DS1302的通讯接口由3个口线组成,即 RST,SCLK,I/O。其中 RST 从低电 平变成高电平启动一次数据传输过程,SCLK 是时钟线,I/O 是数据线。具体的读写时序参 考图5,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且 一般数据写入有效是在上升沿,读出有效是在下降沿(DS1302正是如此的,但是在芯片手 册里没有明确说明),如果不是特别确定,则把程序设计成这样:平时 SCLK 保持低电平, 在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在 SCLK 保持为低电平 的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。图1-5 DS1302的命令字构1.4 LCD1602液晶显示器简介1.4.1 概述液晶(Liquid Crystal)是一种高分子材料,因其特殊的物理、化学、光学特性,广泛应用轻薄显示器上。液晶显示器(Liquid Crystal Display,LCD)的主要原理是以电流刺激液晶分子产生点、线、面并配合背部灯管构成画面。各种型号的液晶通常是按照显示字符的行数或液晶点阵的行、列数来命名。例如,1602表示每行显示16个字符,一共可以显示两行。这类液晶通常称为字符型液晶,只能显示ASCII码字符。12232表示液晶显示画面由122列、32行组成,共有122*32个点来显示各种图形。用户可以通过程序控制这些点中任何一个点显示或不显示,从而构成各种图形画面。因此,12232称为图形型液晶。液晶体积小,功耗低,显示操作简单。但其有致命的弱点,即使用温度范围很窄。通用型液晶工作温度为0到+55摄氏度,存储温度为-20到+60摄氏度。1.4.2 LCD1602 1 1602的外形尺寸(毫米)图1-6LCD1602外形尺寸2 主要技术参数图1-7LCD1602主要技术参数3 接口信号说明表1-3LCD1602接口信号说明4 基本操作时序读状态:输入:RS=L,RW=H,E=H 输出:D0D7=状态字写指令:输入:RS=L,RW=L,D0D7=指令码,E=高脉冲 输出:无读数据:输入:RS=H,RW=H,E=H 输出:D0D7=数据写数据:输入:RS=H,RW=L,D0D7=数据,E=高脉冲 输出:无5 RAM地址映射图控制器内部带有80B的RAM缓冲区。对应关系如下图所示。图1-8缓冲区对应关系图向图中的000F、404F地址中的任意处写入显示数据时,液晶可立即显示出来;当写入到1027或5067地址时,必须通过移屏指令将他们一移入可显示区域方可正常显示。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如下表所示。表1-4 CGROM和CGRAM中字符代码与字符图形对应关系这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。6 状态字说明表1-5状态字说明STA7D7STA6D6STA5D5STA4D4STA3D3STA2D2STA1D1STA0D0STA06当前数据地址指针的数值STA7读写操作使能1: 禁止 0:允许说明:原则上每次对控制器进行读写操作前,都必须进行读写检测,确保STA7为0。实际上,由于单片机的操作速度慢于液晶控制器的反应速度,因此可以不进行检测,或只进行简短的延时即可。7 指令说明 1602液晶模块内部的控制器共有11条控制指令。(1) 显示模式设置表1-6显示模块设置指令码功能00111000设置162显示,57点阵,8位数据接口(2) 显示开/关及光标设置表1-7显示开/关及光标设置指令码功能00001DCBD=1 开显示; D=0 关显示C=1 显示光标;C=0 不显示光标B=1 光标闪烁; B=0 光标不显示000001NSN=1 当读或写一个字符后地址指针加一,且光标加一N=0 当读或写一个字符后地址指针加一,且光标减一S=1 当写一个字符,整幕显示左移(N=1)或右移(N=0)S=0当写一个字符,整屏显示不移动(2) 数据指针设置表1-8数据指针设置指令码功能80H+地址码(027H,4067H)设置数据地址指针(4)其它设置表1-9其它设置指令码功能01H显示清屏:1.数据指针清零 2所有显示清零02H显示回车:1.数据指针清零8.控制接口时序说明:表1-10时序参数第二章 硬件设计2.1系统硬件框图图2.1系统硬件框图2.1.1框图说明:本设计核心部件为AT89C51单片机芯片,配合外部配件如专用日历时钟芯片DS1302,键盘,LCD1602液晶显示器,声光报警器,以及一些外部辅助电路,以实现日期、时间的显示及定时器的功能。很具有实际意义。有广泛的应用性。2.2电路原理图图2-2电路原理图2.2.1系统电路说明:本系统由五个部分组成:按键模块、复位电路模块、晶振电路模块、(注:上图由于只要仿真,所以没有添加复位电路和晶振电路模块,不会影响到仿真结果)发声模块、时间模块。晶振模块负责给单片机提供时钟周期,复位电路模块负责上电后自动复位,或按键后强制复位。上电后,由单片机内部定时器计时,同时通过动态显示函数自动将时、分、秒显示到LCD上。同时,按键扫描函数一直扫描按键引脚状态,一旦扫描到按键被按下,即进入到相应的功能函数。如果检测到定时时间到,则驱动蜂鸣器发声。单片机的晶振电路模块如图2-3所示:图2-3晶振电路模块 石英晶振也连接在引脚的输入和输出之间,等效为一个并联谐振回路,振荡频率应该是石英晶体并联谐振频率,晶体旁边的两个电容接地,实际上就是电容三点式电路的分压电容,接地点就是分压点。以接地点即分压为参考点,振荡引脚的输入和输出是反相的,但从并联谐振回路即石英晶体两端来看,形成一个正反馈以保证电路持续振荡。复位电路如下:图2-4复位电路当AT89C51单片机的复位引脚RST(全称RESET)出现2个机器周期以上的高电平时,复位操作通常有两种基本形式:上电复位和上电或开关复位。上电或开关复位要求电源接通后,单片机自动复位,并且在单片机运行期间,用开关操作也能是单片机复位。常用的上电或开关复位电路如图所示,上电后,由于电容C3的充电和反相门的作用,使RST持续一段时间的高电平。当单片机已在运行当中时,按下复位开关后松开,能使RST为一段时间的高电平,从而实现上电或开关复位的操作。发声模块:图2.5发声模块喇叭由PNP三极管驱动,当Buzzer管脚(P2_4)为高时,三极管be级没电压差,三极管截止;反之,三极管导通,有电流流经喇叭,喇叭发声。按键模块图2-6按键模块在该模块,采用四个按键作为电子时钟的控制输入,通过按键来实现时钟的时间设置置、定时、秒表功能。电路中将四个按键的一端接公共地,而单片机的P1默认为高电平,一旦按键被按下,则该按键对应的管脚被拉低,通过软件扫描按键即可知道用户所要实现的功能调用相应的按键子程序来完成该操作。按键的去抖动有软件来实现。第三章 软件设计3.1程序流程图主程序流程图如下:否否是是开始闹钟响初始化定时器设置时间按键功能子程序显示时间是否有键按下定时时间到图3-1主程序流程图3.2软件仿真图图3-2软件仿真图3.2按键功能子程序流程图图3-2按键功能主程序流程图本次设计中,关键程序采用模块化设计,这样的好处在与程序的修改和编写,还有程序运行的稳定性。主要模块部分有主程序模块,时钟调整子程序模块,显示子程序模块等。总结通过两个月的学习和调试过程,终于完成了基于单片机的数字时钟的工作。并且使字数子时钟的软件部分能够顺利运行,完成了预期的目标。从单片机模块数字时钟的设计过程中也找到了一些单片机开发的规律:先了解所有元件的具体内容,从而画出其电路图,使数字时钟从简易变成多功能的方式,虽没有做出多功能数字时钟,却知晓了其方法。从而让我踏入了单片机应用领域的第一步。参考文献1张毅坤、陈善久、裘雪红 单片机微型计算机原理及应用西安电子科技大学出版社 1998年9月第一版2裴岩、刘利民 单片机系统综合设计与实践 内蒙古大学出版社3张俊谟 单片机中级原理及应用 北京航空航天大学出版社 2002年8月第2版4任为民 电子技术基础课程设计中央广播电视大学大学出版社 1997年5月第1版5闫石 数字电子技术基础高等教育出版社 6童诗白 模拟电子技术基础高等教育出版社7王晓明,曾红 单片机教程东北大学出版社8张毅刚等 MCS-51单片机教程 哈尔滨工业大学出版社9李广弟 单片机基础北京航空航天大学出版社10张洪润,兰清华 单片机应用教程 清华大学出版社 11John.F.WakerlyM DIGITAL DESIGN 北京高等出版社12Intel,Microcontroller HandbookZ,198913TTL Logical Advenced BiCMOS Technology Data Book.Texas Instruments1997.附录 源程序/* 文件名称:main.c版 本:Keil uVision4控 制 器: AT89C51/12MHz说 明:基于单片机的DS1302数字时钟*/*includes-*/ #include #include #include #include #include #include /*defines-*/#define Time0_TH0 0xc6 /定义计数器0计数寄存器装载的高8位值,可自行修改#define Time0_TL0 0x0d /定义计数器0计数寄存器装载的低8位值,可自行修改#define State_Clock 0 /定义空闲状态#define State_AdjustWeek 1 /定义星期调整状态#define State_AdjustYear 2 /定义年份调整状态#define State_AdjustMonth 3 /定义月份调整状态#define State_AdjustDay 4 /定义日份调整状态#define State_AdjustHour 5 /定义时调整状态#define State_AdjustMinute 6 /定义分调整状态#define State_AdjustSecond 7 /定义秒调整状态#define State_AdjustAlarmHour 8 /定义闹钟时调整状态#define State_AdjustAlarmMinute 9 /定义闹钟分调整状态/*variable-*/unsigned char data SetTime = 9,9,9,9,3,1,12;unsigned char data CurrentTime7;static unsigned char Button_Value; /定义按键状态值变量static unsigned char Function_State; /定义功能状态变量static unsigned char Value_AdjustWeek; /定义星期调整变量static unsigned char Value_AdjustYear; /定义年份调整变量static unsigned char Value_AdjustMonth; /定义月份调整变量static unsigned char Value_AdjustDay; /定义日份调整变量static unsigned char Value_AdjustAlarmHour; /定义闹钟时调整变量static unsigned char Value_AdjustAlarmMinute ; /定义闹钟分调整变量static unsigned char Value_AdjustHour; /定义时调整变量static unsigned char Value_AdjustMinute; /定义分调整变量static unsigned char Value_AdjustSecond; /定义秒调整变量static unsigned char AlarmHour = 0x08; /定义闹钟时钟变量static unsigned char AlarmMinute =0x0a; /定义闹钟分钟变量static unsigned char SweepInterval_ShowTime; /定义显示扫描时间变量static unsigned char SweepInterval_Alarm; /定义警告扫描时间变量static unsigned char SweepInterval_Button; /定义按键扫描时间变量static unsigned char State_RealtimeClock; /定义警告扫描时间变量static bit Flag_ShowTime = 0; /定义显示扫描标志变量static bit Flag_Alarm = 0; /定义警报扫描标志变量static bit Flag_Button = 0; /定义按键扫描标志变量static bit Flag_buzzer = 0; /定义蜂鸣器扫描标志变量static bit Flag_ManualOperation = 0; /定义手动控制扫描标志变量/* 函数名称:Time0_Initialization(void)函数功能:定时器0初始化函数备 注:定时器工作于方式1,定时器计数寄存器16位全部用于计数 */ void Time0_Initialization(void)TMOD=0x21; /T0,工作方式1TH0=Time0_TH0; /装载定时器0寄存器高8位值TL0=Time0_TL0; /装载定时器0寄存器低8位值TR0=1; /开启T0定时器ET0=1; /允许T0定时器中断EA=1; /开启总中断允许/*函数名称:UART_Initialization()函数功能:串口初始化函数,定时器1作为波特率时钟发生器备 注:在系统时钟为12MHZ时,设定串口波特率为1200bit/s或2400bit/s备 注:在系统时钟为11.0592MHZ时,设定串口波特率为9600bit/s*/void UART_Initialization(void) SCON = 0x50; /选择串口工作方式1,打开接收允许 TMOD = 0x21; /定时器1工作在方式2,定时器0工作在方式1 TH1 = 0xe6; /实现波特率2400(系统时钟12MHZ)TCON = 0x40; /定时器1开始计数 PCON = 0x80; /波特率倍频RI = 0; /清接收标志TI = 1; /清发送标志 TR1 = 1; /启动定时器T1/*函数名称:UART_SendByte(unsigned char SendByte)入口参数:unsigned char SendByte出口参数:无函数功能:通过串口发送一个8位字节的数据备 注:16进制显示*/void UART_SendByte(unsigned char SendByte) SBUF = SendByte; /输出字符 while(!TI); /判断是否发完 TI=0; /清TI/* 函数名称:RealtimeClock_ShowCurrentTime(void)入口参数:void 出口参数:void 函数功能:实时时钟显示当前时间 */void RealtimeClock_ShowCurrentTime(void)DS1302_ReadTime(CurrentTime);LCD1602_DisplayTwoNumber( 2,0,CurrentTime5);/显示星期LCD1602_DisplayTwoNumber( 8,0,CurrentTime6);/显示年份LCD1602_DisplayTwoNumber(11,0,CurrentTime4);/显示月份LCD1602_DisplayTwoNumber(14,0,CurrentTime3);/显示日份LCD1602_DisplayTwoNumber( 8,1,CurrentTime2);/显示时钟LCD1602_DisplayTwoNumber(11,1,CurrentTime1);/显示分钟LCD1602_DisplayTwoNumber(14,1,CurrentTime0);/显示秒钟LCD1602_SetCursorPosition(16,1);/* 函数名称:KeyHandle_UpAdjust(void)入口参数:void 出口参数:void 函数功能:调整按键有效处理*/void KeyHandle_UpAdjust(void)switch(Function_State)case State_Clock: LCD1602_SetCursorPosition(16,1);Flag_ManualOperation = 1;/置位手动控制标志变量 break;case State_AdjustWeek: DS1302_ReadTime(CurrentTime);/读取当前时间Value_AdjustWeek = CurrentTime5;if(Value_AdjustWeek = 7) Value_AdjustWeek = 7;elseValue_AdjustWeek+;LCD1602_DisplayTwoNumber(2,0,Value_AdjustWeek);/显示星期LCD1602_SetCursorPosition(1,0);/LCD1602光标回到星期调整位闪烁 SetTime5 = Value_AdjustWeek;DS1302_SetTime(SetTime);break;case State_AdjustYear:DS1302_ReadTime(CurrentTime);/读取当前时间Value_AdjustYear = CurrentTime6;if(Value_AdjustYear = 99) Value_AdjustYear= 99;elseValue_AdjustYear+;LCD1602_DisplayTwoNumber(8,0,Value_AdjustYear);/显示年份LCD1602_SetCursorPosition(5,0);/LCD1602光标回到年份调整位闪烁SetTime6 = Value_AdjustYear;DS1302_SetTime(SetTime); break;case State_AdjustMonth: DS1302_ReadTime(CurrentTime);/读取当前时间Value_AdjustMonth = CurrentTime4;if(Value_AdjustMonth = 12) Value_AdjustMonth = 12;elseValue_AdjustMonth+;LCD1602_DisplayTwoNumber(11,0,Value_AdjustMonth);/显示月份LCD1602_SetCursorPosition(10,0);/LCD1602光标回到月份调整位闪烁SetTime4 = Value_AdjustMonth;DS1302_SetTime(SetTime);break;case State_AdjustDay: DS1302_ReadTime(CurrentTime);/读取当前时间Value_AdjustDay = CurrentTime3;switch(State_AdjustMonth)case 0x01:if(Value_AdjustDay = 31) Value_AdjustDay = 31;else Value_AdjustDay+; break;case 0x02:if(Value_AdjustDay = 28) Value_AdjustDay = 28;else Value_AdjustDay+; break;case 0x03:if(Value_AdjustDay = 31) Value_AdjustDay = 31;else Value_AdjustDay+; break;case 0x04:if(Value_AdjustDay = 30) Value_AdjustDay = 30;else Value_AdjustDay+; break;case 0x05:if(Value_AdjustDay = 31) Value_AdjustDay = 31;else Value_AdjustDay+; break;case 0x06:if(Value_AdjustDay = 30) Value_AdjustDay = 30;else Value_AdjustDay+; break;case 0x07:if(Value_AdjustDay = 31) Value_AdjustDay = 31;else Value_AdjustDay+; break;case 0x08:if(Value_AdjustDay = 31) Value_AdjustDay = 31;else Value_AdjustDay+; break;case 0x09:if(Value_AdjustDay = 30) Value_AdjustDay = 30;else Value_AdjustDay+; break;case 0x0a:if(Value_AdjustDay = 31) Value_AdjustDay = 31;else Value_AdjustDay+; break;case 0x0b:if(Value_AdjustDay = 30) Value_AdjustDay = 30;else Value_AdjustDay+; break;case 0
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!