欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    基于单片机AT89C52的实时日历时钟系统的设计-.doc

    • 资源ID:30700523       资源大小:1.02MB        全文页数:32页
    • 资源格式: DOC        下载积分:9金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要9金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于单片机AT89C52的实时日历时钟系统的设计-.doc

    毕业设计论文 题 目:基于单片机AT89C52的实时日历时钟系统的设计学生:学 号:所在学院:机械与电子工程学院专业班级:届 别:指导教师:皖西学院本科毕业设计论文创作诚信承诺书1.本人郑重承诺:所提交的毕业设计论文,题目?基于单片机AT89C52的实时日历时钟系统的设计?是本人在指导教师指导下独立完成的,没有弄虚作假,没有抄袭、剽窃别人的内容; 2.毕业设计论文所使用的相关资料、数据、观点等均真实可靠,文中所有引用的他人观点、材料、数据、图表均已标注说明来源; 3. 毕业设计论文中无抄袭、剽窃或不正当引用他人学术观点、思想和学术成果,伪造、篡改数据的情况; 4.本人已被告知并清楚:学校对毕业设计论文中的抄袭、剽窃、弄虚作假等违反学术标准的行为将严肃处理,并可能导致毕业设计论文成绩不合格,无法正常毕业、取消学士学位资格或注销并追回已发放的毕业证书、学士学位证书等严重后果; 5.假设在省教育厅、学校组织的毕业设计论文检查、评比中,被发现有抄袭、剽窃、弄虚作假等违反学术标准的行为,本人愿意接受学校按有关规定给予的处理,并承当相应责任。 学生签名: 日期: 年 月 日目 录1 绪论22 设计思路22.1 硬件的设计思路22.2 软件的设计思路33 硬件电路设计33.1 系统结构框图33.2单片机AT89C52的介绍33.3 时钟芯片DS1302接口设计与性能分析43.5 按键模块设计73.6 复位电路模块的设计74 软件的设计84.1 主程序运行流程图及说明84.2 时钟芯片DS1302的软件设计及流程图94.3 按键控制及流程图114.4 1602LCD操作说明及流程图125 系统的仿真与结果分析145.1 用Proteus仿真及结果145.2 实物的制作155.3 误差分析16总结17参考文献:18致 谢19 仅供学习参考 皖西学院2021届本科毕业设计(论文)基于单片机AT89C52的实时日历时钟系统的设计学生: 指导老师: 皖西学院机械与电子工程学院摘 要:日历时钟是一个常见的用品,它渗透到我们生产、生活、学习中的每一个角落,一个性能精准、功能齐全、外表美观的日历时钟对我们的工作、学习生活起着非常重要的作用。本文设计一种实时日历时钟系统,它以单片机AT89C52为主控制器,以DS1302日历时钟芯片,以1602LCD数码管为显示器件,再配以适当的外围电路,具有显示精准、调节方便、高可靠性、高性价比、低电压、低功耗等优点。关键词:AT89C52单片机;DS1302;1602LCD数码管显示;时钟 Design of real time calendar clock system based on single chip microcomputer AT89C52Student:WangXiang(Guidance teacher:ZhouTongxu)(College of mechanical and electronic engineering of West Anhui University)Abstract:In the 51 single chip microcomputer application system, it is often needed to record real-time information and long-term preservation. For example, at the time of data acquisition, for some important information requires not only record the content, also need the exact time of the records the event; single chip microcomputer for the high reliability, high price, low voltage, low power consumption, and a series of advantages, in recent years get rapid development and promotion of a wide range, is widely used in industrial control systems, communications equipment, daily consumption class products and toys . This design uses the AT89C52 single chip microcomputer as well as the DS1302 calendar clock chip to realize the design of the calendar clock.The design results show that the design of real time clock based on DS1302 through the1602LCD digital tube display system can meet the design requirement.Key Words: 52 Microcontroller;DS1302;1602LCD digital tube display;clock11 绪论时间与人类的生活紧密相连,是一个重要的参数。这个参数无论什么时候都是非常重要的,少了时间这个参数,社会的进步也会随之变得缓慢,足以可见对时间的研究是非常有必要的。本次设计的功能是在51系列单片机系统中设置、获取、记录实时的日历时钟信息并通过数码管显示,要求能够进行长时间的记录,并且在断电的情况下,还能继续保对时间的回去和记录。实时显示可以通过软件编程实现,但这种方法需要编制的程序复杂,代码多且单片机软件开销大,时间信息也不宜长期保存。而采用专用实时时钟芯片可以防止这些问题,并且可以非易失地长期保存时间信息,因此,在设计中选择使用专用芯片来实现日历时钟显示系统。根据功能模块的划分,本系统包括3个局部:1) 51单片机模式块:其作用是和外围的时钟芯片通信,并控制数据传输过程,采集时间信息并予以处理;2) 日历时钟模块:此模块由专用的实时时钟芯片构成,它是本设计的核心模块,由它提供实时的日历时钟信息;3) 数码管显示模块:此模块用于实时日历时钟信息显示;程序局部包括单片机和时钟芯片的接口程序实现单片机和时钟芯片之间的数据传输过程以及数码管显示程序。2 设计思路2.1 硬件的设计思路由于系统要实现的功能比拟简单,主要是采集实时日历时间及闹钟的设置,因此,硬件设计思路非常清晰。采用AT89C52芯片作为硬件核心,具有在线编程可擦除技术,当在对电路进行调试时,由于程序的错误修改或对程序的新增功能需要烧入程序时,不需要对芯片屡次拔插,所以不会对芯片造成损坏。采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、星期、日、周、月、年以及闰年补偿的年进行计数,而且精度高位的RAM作为数据暂存区,工作电压2.5V5.5V范围内,2.5V时耗电小于300nA.故采用DS1302作为时钟芯片。当然,其他的外接电路中显示器及按键等硬件的设计都非常简单了。本设计采用的是1602LCD液晶显示器。它是一种专门用来显示字母、数字、符号等的点阵型液晶模块,能很好地显示出本设计要求的结果对实时日历时钟的显示。2.2 软件的设计思路 整个单片机应用系统是一个整体。在应用系统整体设计时,软件和硬件要统一考虑进来的。其中软件的设计要根据系统要到达的功能要求,将其分为假设干个独立的模块,画出程序流程图。根据系统的特点和考虑实际的情况选择编程语言。一般选择汇编语言和C语言。汇编语言对硬件操作方便,程序代码短;C语言功能较多,表达能力好,使用方便,在应用方面也很广,程序效率高,移植性韧度好,现在很多单片机都是用C语言作为编程语言。软件系统设计时,要分配好系统的资源。一个单片机系统的资源主要是片内和片外资源,前者是指单片机内部的中央处理器、程序储存器、书数据储存器、定时/计数器、串行口、并行口等。所以,在设计的时候要分出各个独立的模块设计软件。本设计应该把单片机分为单片机AT89C52主程序、时钟芯片DS1302的软件设计、1602LCD的设计和其它外接电路模块。这样,对本次的设计又有一定程度的简化。 3 硬件电路设计本设计的硬件电路设计主要是围绕日历时钟芯片DS1302的使用进行的。3.1 系统结构框图本设计的硬件电路包括单片机电路、日历时钟芯片电路和数码管显示输出电路,其结构框图如图1所示。图1系统硬件结构框图3.2单片机AT89C52的介绍单片机选用美国ATMEL公司生产的AT89C52单片机。AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的只读程序存储器PEROM和256 bytes的随机存取数据存储器RAM,器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容,片内置通用8位中央处理器CPU和Flash存储单元,功能强大的AT89C52单片机适合于许多较为复杂控制应用场合。AT89C52单片机引脚分布如图2所示。图2 AT89C52单片机引脚分布图3.3 时钟芯片DS1302接口设计与性能分析DS1302是Dallas公司生产的一种实时时钟芯片。它与单片机连起来,向单片机传送年、月、日、时、分、秒的功能。它还拥有用于主电源和备份电源的双电源引脚,在没有主电源的情况下,也能保持时钟的连续运行。另外,它还能提供31字节的用于高速数据暂存的RAM。表1 DS1302引脚功能X1,X232.768kHz晶振引脚GND地线RST复位端I/O数据输入/输出端口SCLK串行时钟端口VCC1慢速充电引脚 VCC2电源引脚图3 内部链接DS1302时钟芯片内主要包括移位存放器、控制逻辑电路、振荡器。DS1302与单片机系统的数据传送依靠RST,I/O,SCLK三根端线即可完成。其工作过程可概括为:首先系统RST引脚驱动至高电平,然后在SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入地址/命令字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。DS1302的引脚排列如表1及内部结构图如图3所示。3.4 DS1302接口电路设计1、时钟芯片DS1302的接口电路及工作原理: 图4 DS1302的时钟模块图4为DS1302的接口电路,其中Vcc1为后备电源,Vcc2为主电源。VCC1为提供低功率的电池备份。VCC2在双电源系统中提供主电源,在这种运用方式中VCC1连接到备份电源,以便在没有主电源的情况下能保存时间信息以及数据。此外,DS1302由VCC1或VCC2 两者中较大者供。DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0,接着把RST端置“1,最后才给予SCLK脉冲;读/写时序如下列图5所示。表-1为DS1302的控制字,此控制字的位7必须置1,假设为0那么不能对DS1302进行读写数据。对于位6,假设对时间进行读/写时,CK=0,对程序进行读/写时RAM=1。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;进行写操作时,该位为0。控制字节总是从最低位开始输入/输出的。表-2为DS1302的日历、时间存放器内容:“CH是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP是写保护位,在任何的对时钟和RAM的写操作之前,“WP必须为0。当“WP为1时,写保护位防止对任一存放器的写操作。2、DS1302的控制字DS1302的控制字如表2所示。控制字节的高有效位位7必须是逻辑1,如果它为0,那么不能把数据写入DS1302中,位6如果0,那么表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位位0如为1表示进行读操作,为0表示进行写操作。5控制字节总是从最低位开始输出。表2 DS1302的控制字格式1RAM/CKA4A3A2A1A0RD/WR3、数据输入输出I/O在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如图5所示:图5 DS1302读/写时序图4、DS1302的存放器DS1302有12个存放器,其中有7个存放器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间存放器及其控制字见表3。 表3 DS1302的日历、时间存放器写存放器读存放器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit080H81HCH10秒秒82H83H10分分84H85H12/24010时时AM/PM86H87H0010日日8A8B00000星期8C8D10年年8EH8FHWP0000000此外,DS1302 还有年份存放器、控制存放器、充电存放器、时钟突发存放器及与RAM相关的存放器等。时钟突发存放器可一次性顺序读写除充电存放器外的所有存放器内容。 DS1302与RAM相关的存放器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM存放器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3.5 按键模块设计本系统采用了5个按键,其中4个采用独立按键,因为这种方法查询方便,程序简单,可节省CPU资源,按键电路如图6所示,4个独立按键分别与AT89C52的P3.3、P3.4、P3.5、P3.6接口相图6 按键电路对图6中的各个按键做一下说明:set键:按下SET键进入时间校准状态,按一下显示时间的调整,按两下显示年月日的调整;up键:当按下set键后,up进行set选定项如:分钟的加操作;down键:当按下set键后,down进行set选定项如:分钟的减操作;chose键:当按下set键后,chose就会对年月日,时分秒的某一位进行准确的调整;3.6 复位电路模块的设计当AT89C52单片机的复位引脚RST出现2个机器周期以上的高电平时,单片机就执行了复位操作。假设ST持续为高电平,单片机就处于循环复位,从而无法执行程序。而本系统选用的是12MHz的晶振,因此一个机器周期为1s,那么复位脉冲宽度最小应为2s。在实际应用系统中,考虑到电源的稳定时间,参数漂移,晶振稳定时间以及复位的可靠性等因素,必须有足够的余量。如图7位晶振电路所示:本设计采用上电且开关复位电路,如图8所示上电后,由于电容充电,使RST持续一段高电平时间。当单片机已在运行之中时,按下复位键也能使RST持续一段时间的高电平,从而实现上电且开关复位的操作。通常选择C=1030F,本设计采用的电容值为20F的电容和电阻为100欧的电阻。图7 晶振电路图8 复位电路4 软件的设计4.1 主程序运行流程图及说明在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。在单片机控制系统中,大体上可分为数据处理、过程控制两个根本类型。数据处理包括:数据的采集、数字滤波等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制实现想要的结果。为了实现本次设计的任务,在进行软件设计时,通常把整个过程分成假设干个局部,每一局部叫做一个模块。所谓“模块,实质上就是所完成一定功能,相对独立的程序段,这种程序设计方法叫模块程序设计法。模块程序设计法对本设计完成的好处是:单个模块比起一个完整的程序易编写及调试;模块可以共存,一个模块可以被多个任务在不同条件下调用;模块程序分割任务和利用已有程序,来简化的完成设计要求。本系统软件采用模块化结构,主要由主程序DS1302子程序及键盘控制子程序构成。如图9为主程序流程图所示:开始系统初始化调节时分秒欢送界面显示主界面按键调节按键调节调节年月日是否调节显示时间是否是是否否 图9 主程序流程图4.2 时钟芯片DS1302的软件设计及流程图本系统的时间显示来源于DS1302对单片机的执行,二者的连接需要3根线,CLK(7)、I/O(6)、RST(5),具体连接图见系统硬件设计原理图如图10所示:图10 单片机与DS1302的连接进入主程序后,DS1302先进行初始化设置,假设串行口有数据,最后那么调用函数从日历时钟芯片获取日历时钟信息,调用显示函数显示日历时钟信息显示出来,重复进行。这局部包括对DS1302某个单元写、读DS1302某个单元的内容和对DS1302设定时间。在DS1302的时钟日历或RAM进行数据传送时,DS1302必须首先发送命令字节。假设进行单字节传送,8位命令字节传送结束之后,在下2个SCLK周期的上升沿输入数据字节,或在下8个SCLK周期的下降沿输出数据字节。读、写DS1302的数据流程图如图11所示 :开始变量初始化使DS1302不具备写保护复位端产生一个高电平写1302地址延时一段时间地址数据写出地址增加写完地址?复位端产生一个高电平读1302地址延时一段时间将该地址的数据读出地址增加显示数据数据读完?否是是否 图11读写DS1302数据流程图 其中DS1302的读写程序见附录1。4.3 按键控制及流程图当set键按下时,秒位置闪烁。每次按下set键按下时,分别在秒、分、时、日、月、年处闪烁。当set键再次按下时,加一或减一键有效并在相应位置加一或减一。比方选定分位,按下增大键,调整显示分位的增加,当秒增加至满60后,自动清零,同时调节一次送至下一位显示,显示位置重新回到调节处;当按下减小键时,调整显示位秒的减小,当秒减至0后,自动跳转为59,同时调节一次送至下一位显示,显示位置重新回到调节处;年月日时分的调节只需要按chose键进行选择调节的位置,调节方法一样。键盘加一减一流程图如图12所示开始 光标定位分单元 Fen =59 =Fen =0 =Fen =-1? =Fen=60? =Fen -1 =Fen+1 =减小键按down增大键按下up Y 功能键set按下? 写入分 图12 键盘加一减一操作流程图 4.4 1602LCD操作说明及流程图显示主要是通过从芯片中读入程序,分别对秒、分、时、星期、日、月、年以及闹钟进行显示,并且通过键盘的操作,对时间进行加减操作,使时间更新显示。进入主函数后,执行完1602LCD的初始化函数,然后用write_com(0x80)指令,命令先将数据指针定位在第一行第一个字处,然后写入第一行要显示的数据,在每个字之间简短的延时;在第二行重新定位数据指针write_com(0x80+0x40),将数据指针定位在第二行,然后再将第二行所要显示的数据写入,继而显示。1602LCD的写命令操作和写数据操作分别用两个独立的函数来完成,函数内部唯一的区别就是液晶数据命令选择端的电平。写命令函数解释如下:void write_com(uchar com) /向液晶写入命令 rs=0; /选择写命令模式 lcden=0; /使能端置零 P0=com; /将要写的命令送到数据总线上 delay(3); /延时,以待数据稳定 lcden=1; /给使能端一个高脉冲 delay(3); /延时 lcden=0; /将使能端置零,以完成高脉冲写数据函数操作如下:void write_date(uchar date) /向液晶写入数据 rs=1; /选择写数据模式 lcden=0; /使能端置零 P0=date; /将要写的数据送到数据总线上 delay(3); /延时,以待数据稳定 lcden=1; /给使能端一个高脉冲 delay(3); /延时 lcden=0; /将使能端置零,以完成高脉冲1602LCD的初始化如下:write_com(0x38); /1602液晶初始化 write_com(0x0c); /开光标闪烁:0x0f,关光标闪烁:0x0c write_com(0x06); /写一个字符后,地址指针自动加1 write_com(0x01); /显示清0,数据指针清01602LCD的流程图如图13所示。开始 1602初始化 读取数据 第一行显示 读取数据 第二行显示 结束 图13 1602LCD的流程图5 系统的仿真与结果分析5.1 用Proteus仿真及结果 Proteus是是英国Lab Center Electronics公司出版的一个能很好的仿真单片机的软件。所以,仿真软件的选择就是Proteus。 由于在元件库的版本比拟低,没有1602LCD这个元件,所以,采用共阳极和共阴极断码器7SEG-MPX-CA和7SEG-MPX-CC代替1602LCD来仿真。所以,此时总程序见附录2。 当按下set键时,系统进入另一模式,系统最先进入的是时分秒的调整,按下chose进入具体的某一位时或分或秒的调整。继续按set键,进入年月日的调整,按下chose,进入某一位年或月或日的调整。如图14所示为Proteus仿真显示图14 用Proteus仿真的结果显示时间和日期 仿真开始时输入的是电脑的时间,如图15所示: 图15 仿真开始时输入电脑的时间按下set键,调整时间的仿真如图16所示: 图16 仿真调整时间5.2 实物的制作 由于在制作实物的过程中用断码器7SEG-MPX-CA和7SEG-MPX-CC的引脚比拟多,而且显示为闪动的,可能实物和仿真比照误差较大,所以,实物的制作还是采用1602LCD作为显示器。如图17为制作好的日历时钟。 图17 制作好的日历时钟电路板5.3 误差分析 在实际的制作中有很大的影响因素,比方电容的损坏、电源的稳定性、晶振的稳定时间或者复位的可靠性等各方面因素,都可能导致制作实物和用Proteus仿真出来的结果会有一定的差距。并且仿真图就是一个模拟用的,和实际效果是有点差异的,仿真中没有晶振电路和复位电路都是可以工作的,焊接是按照原理图来的而不是仿真.所以,在实际制作过程中要留一些余量。总结本设计硬件电路较简单,所用器件较少,电路中使用AT89C52单片机、DS1302时钟显示芯片等主要器件,实现计时、校时的功能。在整个设计过程中,硬件方面主要设计了AT89C52单片机的最小系统、DS1302接口电路;软件方面借助各个渠道的资料。系统的调试主要是通过一块AT89C52开发板,再借助于Proteus以及少许自己搭建的外围电路实现的;再此过程中,分步调试时显示出了日期、时间及闹钟,集中调试时没有到达预期效果。本次设计的万日历时钟具有读显示直观、电路简洁、本钱低廉等诸多优点,符合电子仪器仪表的开展趋势,具有广阔的市场前景。在对芯片的管脚功能和用法有充分的了解后,根据设计要求设计硬件电路,包括单片机控制电路、时钟电路、显示电路、供电电路、键盘电路、复位电路。然后通过软件编程,实现了对年、月、日、时、分、秒及闹钟自动调整,用按键进行控制,用液晶模块进行显示。在整个设计过程中学到了许多处理事情的方法,在电路焊接时虽然没什么大问题,但是从焊接过程中也知道了焊接在整个作品中的重要性,电路的模块比拟多,焊接比拟复杂,不能心急,慢慢来不能急于求成。反而到达事半功倍的效果。在编写程序代码的时候,因为思路开始比拟模糊,碰到过许多问题,经过静下心来思考,理清了思路,问题就迎刃而解。在此次设计中,知道了做事要有持之以恒的决心和一步一个脚印的耐心,这样才能做好一件事情。实时日历时钟可以正常显示时间并进行时间调整,根本完成了预期要实现的目标。 15参考文献:1陈明荧 8051单片机课程设计实训教程M北京:清华大学出版社,2005:11-13.2苏平.单片机的原理与接口技术M.北京:电子工业出版社,2006:1-113.3王忠民.微型计算机原理M.西安:西安科技大学出版社,2003:15-55.4何立民单片机高级教程M北京:北京航空航天大学出版社,2003:25-125.5纪宗南.单片机外围器件使用手册M.北京:北京航空航天大学出版社,2004:622-655.6周雪.模拟电子技术M西安: 西安电子科技大学出版社,2005:81-95.7左金生.电子与模拟电子技术M.北京:电子工业出版社,2004:105-131.8马忠梅,籍顺心等单片机的C语言应用程序设计M北京航空航天大学出版社, 2001:123-189.9新编单片机原理与应用第二版.西安电子科技大学出版社,2007:126-239.10张萌.单片机应用系统开发综合实例M.北京:清华大学出版社,2007:127-298.11王越明.电子万年历的设计J.黑龙江科技信息,2004:166-135.致 谢首先,在这里感谢学校给我们安排这次课程设计,使我有一个可以自己动手学习的时机。通过动手实践,我学习到了很多课本以外的知识,体会到了自己亲自动手做出成果的喜悦。其次,在这要感谢我们可敬可爱的老师,虽然老师工作繁忙,但还是会时常关注学生的课设进展,并给出很多珍贵的点拨,帮助我们解决了很多技术上难题。老实说,没有老师的悉心指导,就不会有我今天的作品。最后,我还要感谢这次设计中给我帮助的同学,是你们的帮助,我才能顺利的完成毕业设计任务。谢谢你们的帮助!19附录1#ifndef _DS1302_H_#define _DS1302_H_/*ds1302 内部RAM RAM0 1100 000R/W 1读 0写 RAM1 1100 001R/W . RAM30 1111 110R/W */sbit clk = P13; /ds1302时钟线定义sbit io = P14; /数据线sbit rst = P15; /复位线/秒 分 时 日 月 年uchar code write_add=0x80,0x82,0x84,0x86,0x88,0x8c,0x8a; /写地址uchar code read_add =0x81,0x83,0x85,0x87,0x89,0x8d,0x8b; /读地址uchar code init_ds =0x58,0x00,0x00,0x01,0x01,0x13,0x1; uchar miao,fen,shi,ri,yue,week,nian;uchar i;uchar open1;/*写一个数据到对应的地址里*/void write_ds1302(uchar add,uchar dat)rst = 1; /把复位线拿高for(i=0;i<8;i+) /低位在前clk = 0; /时钟线拿低开始写数据io = add & 0x01; add >>= 1; /把地址右移一位clk = 1; /时钟线拿高for(i=0;i<8;i+)clk = 0; /时钟线拿低开始写数据io = dat & 0x01;/*把要的时间 年月日 都读出来*/void read_time()miao = read_ds1302(read_add0);/读秒fen = read_ds1302(read_add1);/读分shi = read_ds1302(read_add2);/读时ri = read_ds1302(read_add3);/读日yue = read_ds1302(read_add4);/读月nian = read_ds1302(read_add5);/读年 /n_nian = year_moon ;/n_yue = month_moon ;/n_ri = day_moon ;/*把要写的时间 年月日 都写入ds1302里*/void write_time() /把时间写进去write_ds1302(0x8e,0x00);/翻开写保护write_ds1302(write_add0,miao);/写秒write_ds1302(write_add1,fen);/写分write_ds1302(write_add2,shi);/写时write_ds1302(write_add3,ri);/写日write_ds1302(write_add4,yue);/写月write_ds1302(write_add6,week);/写年write_ds1302(0x8e,0x80);/关闭写保护/*把数据保存到ds1302 RAM中*0-31*/void write_ds1302ram(uchar add,uchar dat)add <<= 1; /地址是从第二位开始的add &= 0xfe; /把最低位清零 是写的命令add |= 0xc0; /地址最高两位为 1 write_ds1302(0x8e,0x00);write_ds1302(add,dat);write_ds1302(0x8e,0x80);/*把数据从ds1302 RAM读出来*0-31*/uchar read_ds1302ram(uchar add)add <<= 1; /地址是从第二位开始的add |= 0x01; /把最高位置1是读命令add |= 0xc0; /地址最高两位为 1 return(read_ds1302(add);/*初始化ds1302时间*/void init_ds1302()uchar i;rst = 0;/第一次读写数据时要把IO品拿低clk = 0;io = 0;i = read_ds1302ram(30); fen1 = read_ds1302ram(1);shi1 = read_ds1302ram(2);open1 = read_ds1302ram(3);read_time(); /读时间if(miao >= 0x60)write_ds1302(0x8e,0x00); /翻

    注意事项

    本文(基于单片机AT89C52的实时日历时钟系统的设计-.doc)为本站会员(可****阿)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开