电子万年历毕业设计

上传人:lis****211 文档编号:224929851 上传时间:2023-08-02 格式:DOCX 页数:53 大小:294.67KB
返回 下载 相关 举报
电子万年历毕业设计_第1页
第1页 / 共53页
电子万年历毕业设计_第2页
第2页 / 共53页
电子万年历毕业设计_第3页
第3页 / 共53页
点击查看更多>>
资源描述
毕业设计论文论文题目:电子时钟学 院:机电工程学院专业:电气自动化班级:2009级01班学生姓名:贾贯可学 号:0902511005 指导教师: 司新生2011年10月 18 日摘要目录.3绪论 .第 1 章 设计要求与方案论证. .1.1引言71.2 功能要求 . 71.3 方案论证 . 7第 2 章 系统硬件电路设计 .112.1电路设计112.2系统硬件概述152.3主要单元电路的设计15第 3 章 系统的软件设计. 223.1程序设计223.2程序设计流程图22第4章结束语24.27回回At订阅方法:z在菜单中选择 识别二维码单片机,建味电子 DIY,机器人蠡从“单片机“进入智能世界附录一(电路原理图) 附录二(程序清单)摘要随着社会、科技的发展,人类得知时间,从观太阳、摆钟到现在电子 钟,不断研究、创新。为了在观测时间,能够了解与人类密切相关的信息 比如星期、日期等,电子时钟诞生了,它集时间、日期、星期等功能于一 身,具有读取方便、显示直观、功能多样、电路简洁等诸多优点,符合电 子仪器仪表的发展趋势,具有广阔的市场前景。该电子时钟主要采用 STC89C52RC 单片机作为主控核心,由 DS1302 时钟芯片提供时钟、LED动态扫描显示屏显示。STC89C52RC单片机是由 Atmel公司推出的,功耗小,电压可选用46V电压供电;DS1302时钟芯 片是美国 DALLAS 公司推出的具有涓细电流充电功能的低功耗实时时钟 芯片,它可以对年、月、日、星期、时、分、秒进行计时,还具有闰年补 偿等多种功能,而且 DS1302 的使用寿命长,误差小;数字显示是采用的 LED 显示屏来显示,可以同时显示年、月、日、星期、时、分、秒和温度 等信息。此外,该电子时钟还具有时间校准等功能。关键词:时钟电路; 时钟芯片 DS1302; LED 动态扫描; 单片机STC89C52RC;绪论随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高, 精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子时钟,它是近代 世界钟表业界的第三次革命。第一次是摆和摆轮游丝的发明,相对稳定的 机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带 有摆或摆轮游丝的机械钟或表。第二次革命是石英晶体振荡器的应用,发 明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。 第三次革命就是单片机数码计时技术的应用,使计时产品的走时日差从分 级缩小到 1/600 万秒,从原有传统指针计时的方式发展为人们日常更为熟 悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期的显示功 能,它更符合消费者的生活需求!因此,电子时钟的出现带来了钟表计时 业界跨跃性的进步我国生产的电子时钟有很多种,总体上来说以研究多功能电子时钟为 主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报 警等功能。商家生产的电子万年历更从质量,价格,实用上考虑,不断的 改进电子时钟的设计,使其更加的具有市场。本设计为软件,硬件相结合的一组设计。在软件设计过程中,应对硬 件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。 基本的要了解一些主要器件的基本功能和作用。除了采用集成化的时钟芯片外,还有采用 MCU 的方案,利用 STC89 系列单片微机制成电子电路,采用软件和硬件结合的方法,控制 LED 数码 管输出,分别用来显示年、月、日、时、分、秒,其最大特点是:硬件电路 简单,安装方便易于实现,软件设计独特,可靠。STC89C52RC是由ATMEL 公司推出的一种小型单片机。 95 年出现在中国市场。其主要特点为采用 Flash存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容, 可以很快被中国广大用户接受。本文介绍了基于 STC89C52RC 单片机设计的电子时钟。首先我们在绪论中简单介绍了单片机的发展与其在中低端领域中的优 势以及课题的开发意义;接着介绍了 STC89C52RC单片机的硬件结构和本 毕业设计所要外扩的LED显示及其驱动方法,并在此基础上实现了时钟基 本电路的设计;然后使用单片机C语言进行时钟程序的设计,程序采用模 块化结构,使得逻辑关系简单明了,维护方便。第 1 章 设计要求与方案论证1.1 引言本文提出了一种基于STC89C52RC单片机的时钟设计方案,本方 案以STC89C52RC单片机作为主控核心,与时钟芯片DS1302、按键、LED 显示等模块组成硬件系统。在硬件系统中设有独立按键和LED显示器,能 显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间 等,综上所述此电子时钟具有读取方便、显示直观、功能多样、电路简洁 成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前 景。1.2 功能要求本电子时钟能动态显示年、月、日、星期、小时、分钟、秒1.3 方案论证1.3.1 技术可行性随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速 的发展。集成技术的最新发展之一是将 CPU 和外围芯片,如程序存储器、 数据存储器、并行 I/O 口、串行 I/O 口、定时/计数器、中断控制器及其他 控制部件集成在一个芯片之中, 制成单片计算机( Single-Chip Microcomputer)。而近年来推出的一些高档单片机还包括有许多特殊功能 单元,如 A/D、 D/A 转换器、调制解调器、通信控制器、锁相环、 DMA、 浮点运算单元、PWM控制输出单元、PWM输出时的死区可编程控制功能 等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算 机应用系统,如工业流水线控制系统、作为家用电器的主控制器、分布式 控制系统的终端节点或作为其主控制节点起中继的作用、数据采集系统、 自动测试系统等。单片机的出现,并在各技术领域中得到如此迅猛的发展,与单片机构 成计算机应用系统所形成的下述特点有关:1、单片机构成的应用系统有较大的可靠性。这些可靠性的获得除了依 靠单片机芯片本身的高可靠性以及应用有最少的联接外,还可以方便地采 用软、硬件技术。2、系统扩展、系统配置较典型、规范,容易构成各种规模的应用系统, 应用系统有较高的软、硬件利用系数。3、由于构成的应用系统是一个计算机系统,相当多的测、控功能由软 件实现,故具有柔性特征,不须改变硬件系统就能适当地改变系统功能。4、有优异的性能、价格比。1.3.2 单片机的选择方案一:采用传统的 STC89C52RC 作为电机的控制核心。单片机算 术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和 逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其 在各个领域应用广泛。方案二:采用 FTC10F04 单片机,还带有非易失性 Flash 程序存储器。 它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。其主 要特点如下:8KB Flash ROM,可以擦除1000次以上,数据保存10年。由于本系统对 CPU 运算速度要求很高,需要执行很复杂的运算,方 案一成本比较低,适合做设计,方案二运算速度高,性能好,所以两种方 案都有可取之处。选用方案一作为主方案,方案二作为备用方案。1.3.3 显示模块的选择方案一:使用液晶显示屏显示时间数字。 液晶显示屏(LCD)具有 轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等 优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。但由 于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编 程工作量大,控制器的资源占用较多,其成本也偏高。在使用时,不能有 静电干扰,否则易烧坏液晶的显示芯片,不易维护。方案二:使用传统的 LED 数码管显示。 数码管具有:低能耗、低损 耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界 环境要求低,易于维护,同时其精度比较高,称重轻,精确可靠,操作简 单。数码管采用 BCD 编码显示数字,程序编译容易,资源占用较少。根据以上的论述,采用方案二。在本系统中,我们采用了八段四位 一体数码管串口的动态显示。1.3.4 键盘模块的选择在对日期和时间进行切换,对日期和时间进行调节校准过程中,系 统需要产生激励电流,因此需要用按键。方案一:使用独立式键盘。独立式键盘是指直接用 I/O 口线构成的单 个按键电路。独立式按键电路配置灵活,软件结构简单。方案二:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键 位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。其特点 是简单且不增加成本,这种键盘适合按键数量较多的场合。根据以上的论述,因本系统需要的按键不多,日期加 1 键,月数加1 键,年数加 1 键,分数加 1 键,时数加 1 键,时间/日期切换键,要求简 单。所以采用方案一独立式键盘。1.3.5 总体方案论证与选择按照系统设计功能的要求,初步确定系统由主控模块、时控模块、及 显示模块和键盘接口模块共 4 个模块组成。主控芯片使用 51 系列 STC89C52RC 单片机,时钟芯片使用美国 DALLAS 公司推出的一种高性 能、低功耗、带RAM的实时时钟DS1302。采用DS1302作为计时芯片, 可以做到计时准确。更重要的是,DS1302可以在很小电流的后备电源(2.55.5V电源,再2.5V时耗电小于300nA),而且方S1302可以编程 选择多种充电电流来为后备电源进行慢速充电,可以保证后备电源基本不 耗电。显示模块采用普通的共阳极四位一体八段LED数码管。第二章 系统硬件电路设计2.2 系统硬件概述2.2.1 主控制器 STC89C52RCSTC89C52RC 单片机是宏晶科技推出的新一代高速、低功耗、超强抗 干扰的单片机,指令代码完全兼容传统8051 单片机,12 时钟、机器周期 和 6 时钟、机器周期可以任意选择。主要特性如下: 增强型 8051 单片机, 6 时钟、机器周期和 12 时钟、机器周期可 以任意选择,指令代码完全兼容传统 8051单片机。 工作电压: 5.5V3.3V 工作频率范围:044MHz。 用户应用程序空间为 8K 字节 片上集成 512 字节 RAM 通用 I/O 口 32 个,复位后为: P1/P2/P3/P4 是准双向口/ 弱上位,P0 口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作 为 I/O 口用时,需加上拉电阻。 ISP(在系统可编程)/IAP (再应用可编程),无需专用编程器,无需 专用仿真器,可通过串口( RXD/P3.0,TXD/P3.1 )直接下载用户 程序,数秒即可完成一片。 具有 EEPROM 功能 具有看门狗功能 共 3 个 16 位定时器/计数器。及定时器 T0、T1、T2 外部中断 4 路,下降沿中断或低电平触发电路, Power Down 模式 可由外部中断低电平触发中断方式唤醒通用异步串行口(UART),还可用定时器实现多个UART 工作温度范围:-40+85 度(工业级) /075 度(商业级) PDIP 封装2.2.2 时钟电路 DS1302DS1302 的性能特性: 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进 行比较; 用于高速数据暂存的 31*8 位 RAM ; 最少引脚的串行 I/O; 2.55.5V电压工作范围; 2.5V 时耗小于 300nA; 用于时钟或 RAM 数据读/ 写的单字节或多字节(脉冲方式)数据 传送方式; 简单的三线接口;可选的慢速充电(至Vccl)的能力。DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然 后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被访问到。 在开始 8 个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在 读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式 下为 8+8,在多字节方式下为 8+字节数,最大可达 248 字节数。如果在传 送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为 高阻态。上电运行时,在Vcc2.5V之前,RST脚必须保持低电平。只有 在SCLK为低电平时,才能将RST置为高电平。DS1302的控制字如表所示。控制字节的最高有效位(位7)必须是逻 辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表 示存取日历时钟数据;为1则表示存取RAM数据。位51 (A4A0)指 示操作单元的地址。最低有效位(位0)如果为0,则表示药进行写操作; 为1表示进行读操作。控制字节总是从最低位开始输入/输出。为了提高对32个地址寻址能力(地址/命令位15=逻辑1) ,可以把时 钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM, 而位0规定读或写。在时钟/日历寄存器中的地址931或RAM寄存器中 的地址31不能存储数据。在多字节方式下,读或写从地址0的位0开始。 必须按数据传送的次序写最先的 8 个寄存器。但是,当以多字节方式写RAM 时,为了传送数据不必写所有的 31 字节,不管是否谢了全部 31字节 所写的每一字节都将传送至 RAM。表 2.1 DS1302 控制字恥恢泄rwK哑内再7*$斗32oKOHK1H00 r 9CH!QS6CSIC2FIX亠-訓uKJM1N:MIM12 或 LkG- 23Q|LHRH谒市101 -28. 29,3t001O OATEDATE01 L200ii10M 1MONTH周肉亦雄01-07G000AY?CHSDH00w10 YEARYEARDS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的 数据位为BCD码形式。其日历、时间寄存器及其控制字如上表所示,其中 奇数为读操作,偶数为写操作。时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时, DS1302 停止振荡,进入低功耗的备份方式,通常在对 DS1302 进行写操作时(如 进入时钟调整程序),停止振荡。当它为 0 时,时钟将开始启动。AM-PM/12-24小时方式:小时寄存器的位7定义为12或24小时方式 选择位。它为高电平时,选择 12 小时方式。在此方式下,位 5 为第二个 10小时位(2023h)。DS1302的晶振选用32768Hz,电容推荐值为6pF。因为振荡频率较低, 也可以不接电容,对计时精度影响不大。2.3 主要单元电路的设计2.3.1 显示电路显示部分采用普通的共阳数码管显示,采用动态扫描,以减少硬件电 路。年月日、时分秒、报警共需要24位数码显示,用8位数码管以按键切 换的方式来显示。考虑到一次扫描24位数码管显示时会出现闪烁情况,故 采用动态扫描,可将数码管数量减少至8位,显示时采用串行口输出段码。2.3.2 键盘接口键盘在单片机系统中是一个很重要的部件。为了输入数据、查询和控 制系统的工作状态,都要用到键盘,键盘是人工干预计算机的主要手段。键盘可分为编码和非编码键盘两种。编码键盘采用硬件线线路来实现 键盘编码,每按下一个键,键盘能自动生成按键代码,键数较多,而且还 具有去抖动功能。这种键盘使用方便,但硬件较复杂,PC机所用的键盘就 属于这种。非编码键盘仅提供按键开关工作状态,其他工作由软件完成, 这种键盘键数较少,硬件简单,一般在单片机应用系统中广泛使用。此处 主要介绍该类非编码键盘及其与 MCS51 型单片机的接口。2.3.2.1 按键开关去抖动问题按键开关在电路中的连接如图所示。按键未按下时, A 点电位为高电平5V;按键按下时,A点电位为低电平。A点电位就用于向CPU传递按 键的开关状态。但是由于按键的结构为机械弹性开关,在按键按下和断开 时,触点在闭合和断开瞬间还会接触不稳定,引起A点电平不稳定,如图 2-llb所示,键盘的抖动时间一般为51 Oms,抖动现象会引起CPU对一 次键操作进行多次处理,从而可能产生错误。因此必须设法消除抖动的不良后果。图2.3键操作和键抖动消除抖动的不良后果的方法有硬、软件两种。为了节省硬件,通常在单片机系统中,一般不采用硬件方法消除键的 抖动,而是用软件消除抖动的方法。根据抖动特性,在第一次检测到按键 按下后,执行一段延时 510ms 让前延抖动消失后再一次检测键的状态, 如果仍保持闭合状态电平,则确认真正有键按下。当检测到按键释放后, 也要给510ms的延时,待后延抖动消失后才转入该键处理程序。2.3.2.2 查询式按键及其接口按照键盘与 CPU 的连接方式可以分为查询按键和矩阵式键盘。查询式 按键是各按键相互独立,每个按键占用一根 I/O 口线,每根 I/O 口线上的 按键工作状态不会影响其他 I/O 口线上按键的工作状态。查询式按键电路 配置灵活,软件结构简单,但每个按键必须占用一根 I/O 口线,在按键数 量较多时, I/O 口线浪费较大,且电路结构显得繁杂。故这种形式适用于按 键数量较少的场合。2.3.2.3 矩阵式键盘及其接口矩阵式键盘又称行列式键盘,有n个行线和m个列线,经限流电阻接 +5V电源上,按键跨接在行线和列线上,nxm行列结构可构成mn个按键, 组成一个键盘。与独立式按键相比, mn 个按键只占用 m+n 根 I/O 口线, 因此适用于按键较多的场合。当无键闭合时,相应的 I/O 之间开路。当有键闭合时,与闭合键相连 接的两条 I/O 口线之间短路。判断有无键按下的方法是:第一步,置列线 相关I/O 口为输入态,从行线相对应的I/O 口输出低电平,读入列线数据, 若某一列线为低电平,则该列线上有键闭合。第二步,置行线相关 I/O 口 输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。 综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键 功能操作,因此须等待近按键释放后,再进行键功能操作,否则按一次键, 有可能会连续多次进行同样的键操作。2.3.2.4 键盘扫描控制方式在单片机应用系统中,对键盘的处理工作仅是 CPU 工作内容的一部 分, CPU 还要进行数据处理、显示和其他输入输出操作,因此键盘处理工 作既不能占用CPU太多时间,又需要CPU对键盘操作及时作出响应。CPU 对键盘处理控制的工作方式有以下几种:1. 程序控制扫描方式程序控制扫描方式是在 CPU 工作空余,调用键盘扫描子程序,响应键 输入信号要求。2. 定时控制扫描方式定时控制扫描方式是利用定时 /计数器每隔一段时间产生定时中断,CPU响应中断后对键盘进行扫描,并在有键闭合时转入该键的功能子程序。3. 中断控制扫描方式中断控制扫描方式是利用外部中断源,响应输入信号。当无按键按下 时,CPU执行正常工作程序。当有按键按下时,CPU立即产生中断。在中 断服务子程序中扫描键盘,判断是哪一个键被按下,然后执行该键的功能 子程序。这种控制方式克服了前两种控制方式可能产生的空扫描和不能及 时响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效率,但 要占用一个宝贵的中断资源。图即工作于中断方式的矩阵式键盘接口电路。 在初始化时 P1.4P1.7 置输出 0, P1.0P1.3 置为输入态, P1.0P1.3 分别接 至与门各输入端。当有键闭合时INTT =0,CPU中断后,在中断服务子程 序中,再完成键识别和键功能处理。图 2.4 工作于中断方式的矩阵式键盘接口电路2.3.3 时钟电路2.3.3.1 DS1302 工作方式简介及数据操作原理DS1302可以对年、月、日、星期、时、分、秒进行计时,且具有闰年 补偿功能,工作电压宽达2.55.5V。采用三线接口与CPU进行同步通信,并 可采用突发方式一次传送多个字节的时钟信号或RAM数据DS1302内部有 一个33x8的用于临时性存放数据的RAM寄存器。DS1302是的DS1202升级 产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了 对后背电源进行涓细电流充电的能力。DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过 一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、 周、月和年等信息。对于小于31天的月和月末的日期自动进行调整,还包 括闰年校正的功能。时钟的运行可以采用24v小时或带AM/PM的12小 时格式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送 多字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:Vcc1在单电源与电池供电的 系统中提供低电源,并提供低功率的电磁备份;Vcc1在双电池系统中提供 主电源。在这种运行方式中, Vcc1 里连接到后备电源,以便在没有主电源 的情况下能保存时间信息以及数据。DS1302由Vcc1或Vcc2中较打大者 供电。当 Vcc2(Vcc1+0.2V)时,Vcc2 给 DS1302 供电;当 Vcc2VVcc1 时,DS1302由Vcc1供电。图 2.5 DS1302DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然 后把 8 位地址和命令字装入移位寄存器,数据在 SCLK 的上升沿被访问到。 在开始 8 个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式 下为 8+8,在多字节方式下为 8+字节数,最大可达 248 字节数。如果在传 送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为 高阻态。上电运行时,在Vcc2.5V之前,RST脚必须保持低电平。只有 在SCLK为低电平时,才能将RST置为高电平。DS1302 的控制字如图所示。控制字节的最高有效位(位7)必须是逻 辑1,如果它为0则不能把数据写入到DS1302中。位6如果为0,则表 示存取日历时钟数据;为1则表示存取RAM数据。位51 (A4A0)指 示操作单元的地址。最低有效位(位 0)如果为 0,则表示药进行写操作; 为1表示进行读操作。控制字节总是从最低位开始输入/输出。为了提高对32个地址寻址能力(地址/命令位15=逻辑1),可以把时 钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM, 而位0规定读或写。在时钟/日历寄存器中的地址931或RAM寄存器中 的地址31不能存储数据。在多字节方式下,读或写从地址0的位0开始。 必须按数据传送的次序写最先的 8 个寄存器。但是,当以多字节方式写 RAM 时,为了传送数据不必写所有的 31 字节,不管是否谢了全部 31 字节, 所写的每一字节都将传送至 RAM。DS1302共有12个寄存器,其中有7个寄存器与日历、时钟相关,存 放的数据位为BCD码形式。其日历、时间寄存器及其控制字如下表所示, 其中奇数为读操作,偶数为写操作。表 2.3 DS1302 控制字奇石囲就9按作畴作7ti54321D號H00-59CH10SECSECC2II时H00-590LClMEMMINKJHR5H(St -12 威閒*2313TZ-10HRHR轲潜存:ISAbH时01-1&, 29, 30+ 310QIODATE11 Alt月寄石屠m01-1200kOMMONTHMAH阳Hm 7?00C00DAYHCH(XJ-W10 YbAR时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302 停止振荡,进入低功耗的备份方式,通常在对 DS1302 进行写操作时(如 进入时钟调整程序),停止振荡。当它为 0 时,时钟将开始启动。AM-PM/12-24 小时方式:小时寄存器的位 7 定义为 12 或 24 小时方式 选择位。它为高电平时,选择 12 小时方式。在此方式下,位 5 为第二个 10小时位(2023h)。DS1302的晶振选用32768Hz,电容推荐值为6pF。因为振荡频率较低, 也可以不接电容,对计时精度影响不大。第 3 章 系统的软件设计(3.1 程序设计)电子时钟的程序主要包括 3个方面的内容:一是 DS1302 从单片机中读 取数据进行计数,二是利用按键进行时间的调整,三是单片机中读取DS1302中的数据驱动LED数码管显示时间。STC89C52RC单片机主要I/O 口的分配:PIO、Pll、P12分别接时钟芯片的SCLK、I/O、RST引脚,P13、 P14、P15、P16 接四个独立按键。K加1程序K等于0显示时间K等于1显示日期K等于2显示报警时间报警程序 按键程序返回主程序流程图时间调整程序流程图第 4 章 结束语2010年 3月,我开始了我的毕业论文工作,时至今日,论文基本完成。 从最初的茫然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过 程难以用语言来表达。历经了一个多月的奋战,紧张而又充实的毕业设计 终于落下了帷幕。回想这段日子的经历和感受,我感慨万千,在这次毕业 设计的过程中,我拥有了无数难忘的回忆和收获。当我终于完成了所有打 字、绘图、排版、校对的任务后整个人都很累,但同时看着电脑荧屏上的 毕业设计稿件我的心里是甜的,我觉得这一切都值了。这次毕业论文的制 作过程是我的一次再学习,再提高的过程。在论文中我充分地运用了大学 期间所学到的知识。我不会忘记这难忘的几个月的时间。毕业论文的制作给了我难忘的回 忆。在我徜徉书海查找资料的日子里,面对无数书本的罗列,最难忘的是 每次找到资料时的激动和兴奋;亲手用protel 99设计电路图的时间里,记 忆最深的是每一步小小思路实现时那幸福的心情;为了论文我曾赶稿到深 夜,但看着亲手打出的一字一句,心里满满的只有喜悦毫无疲惫。这段旅 程看似荆棘密布,实则蕴藏着无尽的宝藏。我从资料的收集中,掌握了很 多单片机及其接口应用的知识,让我对我所学过的知识有所巩固和提高, 并且让我对当今单片机的最新发展技术有所了解。在整个过程中,我学到 了新知识,增长了见识。在今后的日子里,我仍然要不断地充实自己,争 取在所学领域有所作为。脚踏实地,认真严谨,实事求是的学习态度,不怕困难、坚持不懈、吃 苦耐劳的精神是我在这次设计中最大的收益。我想这是一次意志的磨练, 是对我实际能力的一次提升,也会对我未来的学习和工作有很大的帮助。 在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮助, 有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识, 所以在这里非常感谢帮助我的同学。在此更要感谢我的指导老师和专业老师,是你们的细心指导和关怀,使 我能够顺利的完成毕业论文。在此我要向司老师致以最衷心的感谢和敬意。程序/main.c/#include#define uint unsigned int#includeds1302.h#includekey.h#includebell.hsbit k4二P1八3;char k=0;char shi,fen,miao,nian,yue,ri;charbaojingshi=0x00,baojingfen=0x06,baojingmiao=0x00void sjdisplay();void rqdisplay();void baojingdisplay();void delay(uint ms);void display(char shu,char wei);char table=0xc0,0xf9,0xa4,0xb00x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void main()ds1302_write(0x80,0x55);ds1302_write(0x82,0x45);ds1302_write(0x84,0x00);ds1302_write(0x8c,0x11);ds1302_write(0x88,0x10);ds1302_write(0x86,0x07);while(1)if(k4=0)delay(5);if(k4=0)while(k4=0);k+;if(k=3)k=0;if(k=0)sjdisplay();if(k=1)rqdisplay();if(k=2)baojingdisplay();if(shi=baojingshi)&(fen=baojingfen)&(miao=baojingmiao)didi(10);key();void sjdisplay()shi=ds1302_read(0x85);/hour fen=ds1302_read(0x83);/minites miao=ds1302_read(0x81);/second display(shi4)&0x07,0); display(shi&0x0f,1);display(fen4)&0x07,3);display(fen&0x0f,4);display(miao4)&0x07,6);display(miao&0x0f,7);void rqdisplay()nian=ds1302_read(0x8d);/nianyue=ds1302_read(0x89);/yueri=ds1302_read(0x87);/ridisplay(nian4)&0x07,0);display(nian&0x0f,1);display(yue4)&0x07,3);display(yue&0x0f,4);display(ri4)&0x07,6);/0000 0111display(ri&0x0f,7);void baojingdisplay()display(baojingshi4)&0x07,0);display(baojingshi&0x0f,1);display(baojingfen4)&0x07,3);display(baojingfen&0x0f,4);display(baojingmiao4)&0x07,6);display(baojingmiao&0x0f,7);void delay(uint ms)uint i,j;for(i=ms;i0;i-)for(j=124;j0;j-);void display(char shu,char wei)P0=tableshu;P2=(1wei);delay(3);P2=0xff;/main.c/ Ds1302.c/#include#define uchar unsigned char#define uint unsigned intsbit rst二P1八2;sbit dat=P11;sbit elk二P10;void ds1302_write(char comm,char dat1)char temp,t;rst=0;clk=0;rst=1;temp=comm;for(t=0;t1);clk=0;temp=dat1;for(t=0;t1;clk=0;rst=0;uchar ds1302_read(char comm)char temp,t;rst=0;clk=0;rst=1;temp=comm;for(t=0;t1;clk=0;temp=0;/00000000for(t=0;t1;if(dat=1)temp=temp|0x80;else temp=temp&0x7f;clk=1;clk=0; rst=0;return temp;/Ds1302.c/Key.c/#include#define char signed char#define uint unsigned intsbit mode二P1八4;sbit add二P1八5;sbit sub二P1八6;char mod=0;extern void delay(uint ms);extern char shi,fen,nian,yue,ri;extern char baojingshi,baojingfen;extern char ds1302_read(char);extern void ds1302_write(char,char);void key()shi=ds1302_read(0x85);fen=ds1302_read(0x83);if(mode=0)delay(5);if(mode=0)while(mode=0);mod+;if(mod=8)mod=0;if(add=0)delay(5);if(add=0)while(add=0);if(mod=1)shi=(shi4)&0x03)*10+(shi&0x0f)+1;if(shi=24)shi=0;ds1302_write(0x84,(shi/10)4)&0x07)*10+(fen&0x0f)+1;if(fen=60)fen=0;ds1302_write(0x82,(fen/10)4)&0x0f)*10+(nian&0x0f)+1;if(nian=99)nian=1;ds1302_write(0x8c,(nian/10)4)&0x01)*10+(yue&0x0f)+1;if(yue=13)yue=1;ds1302_write(0x88,(yue/10)4)&0x03)*10+(ri&0x0f)+1;if(ri=32)ri=1;if(yue=4)|(yue=6)|(yue=9)|(yue=11)ri=(ri4)&0x03)*10+(ri&0x0f)+1; if(ri=31) ri=1; if(yue=2)ri=(ri4)&0x03)*10+(ri&0x0f)+1;if(ri=29) ri=1; ds1302_write(0x86,(ri/10)4)&0x01)*10+(baojingshi&0x0f)+1;if(baojingshi=24)baojingshi=0;ds1302_write(0x88,(baojingshi/10)4)&0x01)*10+(baojingfe n&0x0f)+1;if(baojingfen=60)baojingfen=0;ds1302_write(0x88,(baojingfen/10)4)&0x03)*10+(shi&0x0f)-1;if(shi=-1)shi=23;ds1302_write(0x84,(shi/10)4)&0x07)*10+(fen&0x0f)-1;if(fen=-1)fen=59;ds1302_write(0x82,(fen/10)4)&0x0f)*10+(nian&0x0f)-1;if(nian=0)nian=99;ds1302_write(0x8c,(nian/10)4)&0x01)*10+(yue&0x0f)-1;if(yue=0)yue=12;ds1302_write(0x88,(yue/10)4)&0x03)*10+(ri&0x0f)-1;if(ri=0) ri=31;if(yue=4)|(yue=6)|(yue=9)|(yue=11)ri=(ri4)&0x03)*10+(ri&0x0f)-1;if(ri=0) ri=30; if(yue=2)ri=(ri4)&0x03)*10+(ri&0x0f)-1;if(ri=0) ri=28; ds1302_write(0x86,(ri/10)4)&0x01)*10+(baojingshi&0x0f)-1;if(baojingshi=-1)baojingshi=23;ds1302_write(0x88,(baojingshi/10)4)&0x01)*10+(baojingfe n&0x0f)-1;if(baojingfen=-1)baojingfen=59;ds1302_write(0x88,(baojingfen/10)4)+(b aojingfen%10)&0x0f);/Key.c/Bell.c/#include#define uint unsigned intsbit beep二P37;extern void delay(uint);void didi(uint cnt)uint t;for(t=cnt;t0;t-)beep=0;delay(100);beep=1;delay(200);/Bell.c/Ds1302.h/void ds1302_write(char comm,char dat1);char ds1302_read(char comm);/Ds1302.h/Key.h/void key();/key.h/Bell.h/void didi(uint cnt);/Bell.h/
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 图纸设计 > 毕设全套


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

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


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