毕业设计(论文)基于AT89C51单片机万年历设计

上传人:仙*** 文档编号:34005674 上传时间:2021-10-20 格式:DOC 页数:34 大小:1.15MB
收藏 版权申诉 举报 下载
毕业设计(论文)基于AT89C51单片机万年历设计_第1页
第1页 / 共34页
毕业设计(论文)基于AT89C51单片机万年历设计_第2页
第2页 / 共34页
毕业设计(论文)基于AT89C51单片机万年历设计_第3页
第3页 / 共34页
资源描述:

《毕业设计(论文)基于AT89C51单片机万年历设计》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于AT89C51单片机万年历设计(34页珍藏版)》请在装配图网上搜索。

1、本科生毕业设计基于AT89C51单片机万年历设计院 系电气信息工程学院 专 业电气工程及其自动化班 级 07级本科四班 学 号 学 生 姓 名 联 系 方 式 指 导 教 师职称:助理实验师2011年5月独 创 性 声 明本人郑重声明:所呈交的毕业论文是本人在指导老师指导下取得的研究成果。除了文中特别加以注释和致谢的地方外,论文中不包含其他人已经发表或撰写的研究成果。与本研究成果相关的所有人所做出的任何贡献均已在论文中作了明确的说明并表示了谢意。签名: 年月日授 权 声 明本人完全了解许昌学院有关保留、使用本科生毕业论文的规定,即:有权保留并向国家有关部门或机构送交毕业论文的复印件和磁盘,允许

2、毕业论文被查阅和借阅。本人授权许昌学院可以将毕业论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编论文。本人论文中有原创性数据需要保密的部分为(如没有,请填写“无”): 签名: 年 月 日指导教师签名: 年 月 摘 要该电子万年历主要采用AT89C51单片机作为主控核心,由DS1302时钟芯片提供时钟、LCD液晶显示屏显示。AT89C51单片机是由ATMEL公司推出的,功耗小,电压可选用46V电压供电;DS1302时钟芯片是美国DALLAS公司推出的具有涓细电流充电功能的低功耗实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,而且DS1302的使

3、用寿命长,误差小;数字显示是采用的LCD液晶显示屏来显示,可以同时显示年、月、日、星期、时、分、秒等信息。关键词:时钟电路;时钟芯片DS1302;LCD;AT89C51ABSTRACTThe electronic calendar using AT89C51 microcontroller as the master key core clock from the clock chip DS1302, LCD liquid crystal screen display. Atmel AT89C51 microcontroller is introduced, the power consump

4、tion, voltage can be selected 4 6V supply voltage; DS1302 clock chip introduced in the United States with Juan DALLAS small low-power charging current real time clock chip, which can in , Month, day, week, hour,minute, seconds time, and the DS1302s long life, small error; digital LCD display is used

5、 to display the LCD screen can be displayed simultaneously on ,Month, day,week, hours, minutes, seconds and other information. In addition, the electronic calendar is also a time for calibration and other functions.Keywords:clock circuit;clock chip DS1302;LCD;AT89C51目 录绪 论11 设计要求与方案论证21.1 引言21.2功能要求

6、21.3方案论证21.3.1 技术可行性21.3.2 单片机的选择31.3.3 显示模块的选择31.3.4 时钟芯片的选择方案与论证41.3.5键盘模块的选择41.3.6总体方案论证与选择52 系统硬件电路的设计52.1电路设计52.2系统硬件概述62.2.1 主控制器AT89C5162.2.2 时钟电路DS130272.3主要单元电路的设计72.3.1显示电路72.3.2键盘接口82.3.3时钟电路113 系统的软件设计133.1 程序设计133.2 程序流程图133.3时间控制流程图144 proteus软件仿真144.1 Proteus ISIS简介144.2 Proteus运行流程15

7、4.3 Proteus功能仿真16结束语19参考文献20附 录21致 谢28绪 论随着人们生活水平的提高和生活节奏的加快,对时间的要求越来越高,精准数字计时的消费需求也是越来越多。二十一世纪的今天,最具代表性的计时产品就是电子万年历,它是近代世界钟表业界的新突破。第一次是摆和摆轮游丝的发明,相对稳定的机械振荡频率源使钟表的走时差从分级缩小到秒级,代表性的产品就是带有摆或摆轮游丝的机械钟或表。第二次是石英晶体振荡器的应用,发明了走时精度更高的石英电子钟表,使钟表的走时月差从分级缩小到秒级。第三次就是单片机数码计时技术的应用(电子万年历),使计时产品的走时日差从分级缩小到1/600万秒,从原有传统

8、指针计时的方式发展为人们日常更为熟悉的夜光数字显示方式,直观明了,并增加了全自动日期、星期、温度以及其他日常附属信息的显示功能,它更符合消费者的生活需求!因此,电子万年历的出现带来了钟表计时业界跨跃性的进步。我国生产的电子万年历有很多种,总体上来说以研究多功能电子万年历为主,使万年历除了原有的显示时间,日期等基本功能外,还具有闹铃,报警等功能。商家生产的电子万年历更从质量,价格,实用上考虑,不断的改进电子万年历的设计,使其更加的具有市场。本设计为软件,硬件相结合的一组设计。在软件设计过程中,应对硬件部分有相关了解,这样有助于对设计题目的更深了解,有助于软件设计。基本的要了解一些主要器件的基本功

9、能和作用。除了采用集成化的时钟芯片外,还采用MCU的方案,利用AT89系列单片微机制成万年历电路,采用软件和硬件结合的方法,控制LCD液晶显示屏输出,分别用来显示年、月、日、星期、时、分、秒,其最大特点是:硬件电路简单,安装方便易于实现,软件设计独特,可靠。AT89C51是由ATMEL公司推出的一种小型单片机。95年出现在中国市场。其主要特点为采用FLASH存贮器技术,降低了制造成本,其软件、硬件与MCS-51完全兼容,所以很快被中国广大的用户接受。本文介绍了基于AT89C51单片机设计的电子万年历。在绪论中简单介绍了单片机的发展与其在中低端领域中的优势以及课题的开发意义;接着介绍了AT89C

10、51单片机的硬件结构和本毕业设计所要外扩的LCD显示及其驱动方法,并在此基础上实现了万年历基本电路的设计;然后使用单片机高级C语言进行万年历程序的设计,程序采用模块化结构,使得逻辑关系简单明了,维护方便。 1 设计要求与方案论证1.1 引言随着电子技术的发展,人类不断研究,不断创新纪录。目前万年历已经不再局限于以书本形式出现。以电脑软件或者电子产品形式出现的万年历被称为电子万年历。与传统书本形式的万年历相比,电子万年历得到了越来越广泛的应用,采用电子时钟作为时间显示已经成为一种时尚。目前市场上各式各样的电子时钟数不胜数,但多数是只针对时间显示,功能单一不能满足人们日常生活需求。 本文提出了一种

11、基于AT89C51单片机的万年历设计方案,本方案以AT89C51单片机作为主控核心,与时钟芯片DS1302、按键、LCD显示等模块组成硬件系统。在硬件系统中设有独立按键和LCD显示器,能显示丰富的信息,根据使用者的需要可以随时对时间进行校准、选择时间等,综上所述此万年历具有读取方便、显示直观、功能多样、电路简洁、成本低廉等诸多优点,符合电子仪器仪表的发展趋势,具有广阔的市场前景。1.2功能要求本设计准备实现的功能: (1) 显示公历日期功能(年、月、日、时、分、秒以及星期) (2) 可通过按键切换年、月、日及时、分、秒的显示状态(3) 可随时调校年、月、日或时、分、秒(4) 可每次增、减1进行

12、时间调节(5) 可动态完整显示年份,实现真正的万年历显示1.3方案论证1.3.1 技术可行性 随着国内超大规模集成电路的出现,微处理器及其外围芯片有了迅速的发展。集成技术的最新发展之一是将CPU和外围芯片,如程序存储器、数据存储器、并行I/O口、串行I/O口、定时/计数器、中断控制器及其他控制部件集成在一个芯片之中,制成单片计算机。而近年来推出的一些高档单片机还包括有许多特殊功能单元,如A/D、D/A转换器、调制解调器、通信控制器、锁相环、DMA、浮点运算单元、PWM控制输出单元、PWM输出时的死区可编程控制功能等。因此,只要外加一些扩展电路及必要的通道接口就可以构成各种计算机应用系统,如工业

13、流水线控制系统、作为家用电器的主控制器、分布式控制系统的终端节点或作为其主控制节点起中继的作用、数据采集系统、自动测试系统等。单片机的出现,并在各技术领域中得到如此迅猛的发展,与单片机构成计算机应用系统所形成的下述特点有关:1、单片机构成的应用系统有较大的可靠性。这些可靠性的获得除了依靠单片机芯片本身的高可靠性以及应用有最少的联接外,还可以方便地采用软、硬件技术。2、系统配置、系统扩展较典型、规范,容易构成各种规模的应用系统,应用系统有较高的软、硬件利用系数。3、由于构成的应用系统是一个计算机系统,相当多的测、控功能由软件实现,故具有柔性特征,不须改变硬件系统就能适当地改变系统功能。4、具有优

14、异的性能、价格比。1.3.2 单片机的选择方案一:采用传统的AT89C51作为万年历的控制核心。单片机算术运算功能强,软件编程灵活、自由度比较大,可用软件编程实现各种算法和逻辑控制,并且由于其体积小、功耗低、技术成熟和成本低等优点,使其在各个领域应用广泛。方案二:采用FTC10F04单片机,还带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。其主要特点如下:8KB FLASH ROM,可以擦除1000次以上,数据保存10年。由于本系统对CPU运算速度要求很高,需要执行很复杂的运算,方案一成本比较低,适合做设计,方案二运算速度高、性能好,所以两种方案

15、都有可取之处。选用方案一作为主方案,方案二作为备用方案。1.3.3 显示模块的选择 方案一:使用传统的LED数码管显示。 数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比较高,称重轻,精确可靠,操作简单。数码管采用BCD编码显示数字,程序编译容易,资源占用较少。方案二: 使用液晶显示屏显示时间数字。 液晶显示屏(LCD)具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。但由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量

16、大,控制器的资源占用较多,其成本稍微偏高。在使用时,不能有静电干扰,否则易烧坏液晶的显示芯片,不易维护。方案三:采用点阵式数码管显示,点阵式数码管是由八行八列的发光二极管组成,对于显示文字比较适合,如采用在显示数字显得太浪费,且价格也相对较高,所以也不用此种作为显示。 根据以上的论述,采用方案二。在本系统中,我们采用了LM016L液晶显示,由于显示位数较多,故应使用排阻RESPACK-8驱动,排阻一般有九个脚,一个脚接VCC,其他脚接单片机I/O口。1.3.4 时钟芯片的选择方案与论证方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少

17、芯片的使用,节约成本,但是,实现的时间误差较大,所以不采用此方案。方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周、时、分、秒进行计时,具有闰年补偿功能,而且精度高,工作电压为2.5V5.5V,2.5V时电流小于300nA。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。根据以上的论述,采用方案二。在本系统中,我采用了DS1302时钟芯片。1.3.5键盘模块的选择在对日期和时间进行切换,对日期和时间进行调节校准过程中,系统需要产生激励电流,因此需要用

18、按键。 方案一:使用独立式键盘。独立式键盘是指直接用I/O口线构成的单个按键电路。独立式按键电路配置灵活,软件结构简单。 方案二:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按键数量较多的场合。 根据以上的论述,因本系统需要的按键不多,日期加1键,月数加1键,年数加1键,秒数加1键,分数加1键,时数加1键,时间/日期切换键,要求简单。所以采用方案一独立式键盘。1.3.6总体方案论证与选择按照系统设计功能的要求,初步确定系统由主控模块、时控模块、显示驱动及显示模块和键盘接口模块共4个模块组成,电

19、路系统构成框图如图1-1所示。图1-1电子万年历电路系统构成框图煮控芯片使用51系列AT89C51单片机,时钟芯片使用美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟DS1302。采用DS1302作为计时芯片,可以做到计时准确。更重要的是,DS1302可以在很小电流的后备电源(2.55.5V电源,在2.5V时耗电小于300nA),而且DS1302可以编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。显示驱动采用排阻RESPACK-8驱动和LM016L液晶显示 、图条/柱图显示或64 点阵显示接口的小型串行输入/输出芯片。片内包括BCD 译码器、多路扫描控

20、制器、字和位驱动器和8*8 静态RAM。RESPACK-8需九导线连接,每位显示数字有一个地址由微处理器写入。允许使用者选择每位是BCD 译码或不译码。使用者还可选择停机模式、数字亮度控制、从18 选择扫描位数和对所有LCD显示器的测试模式。显示模块采用普通的LCD显示屏。2 系统硬件电路的设计2.1电路设计如图2-1示为电子万年历电路设计原理图,系统由主控制器AT89C51、时钟电路DS1302、显示驱动RESPACK-8电路,LM016L液晶显示电路及键扫描电路组成。图2-1 电子万年历电路原理图2.2系统硬件概述2.2.1 主控制器AT89C51ATMEL公司生产的AT89C51单片机采

21、用高性能的静态80C51设计,并采用先进工艺制造,还带有非易失性Flash程序存储器。它是一种高性能、低功耗的8位CMOS微处理芯片,市场应用最多。其主要特点如下:8KB Flash ROM,可以擦除1000次以上,数据保存10年。 256字节内部RAM; 电源控制模式; 时钟可停止和恢复; 空闲模式; 掉电模式; 6个中断源; 4个中断优先级; 4个8位I/O口; 全双工增强型TUAR; 3个16位定时/计数器:T0、T1(标准80C51)和增加的T2(捕获和比较) 全静态工作方式:024MHZ2.2.2 时钟电路DS1302 DS1302的性能特性: 实时时钟,可对秒、分、时、日、周、月以

22、及带闰年补偿的年进行比较; 用于高速数据暂存的31*8位RAM; 最少引脚的串行I/O; 2.55.5V电压工作范围; 2.5V时电流小于300nA; 用于时钟或RAM数据读/写的单字节或多字节(脉冲方式)数据传送方式; 简单的三线接口; 可选的慢速充电(至VCC1)的能力。DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被访问到。在开始8个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8+8,在多字节方式下为8+字节数,最大可达248字节数。

23、如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在VCC2.5V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。2.3主要单元电路的设计2.3.1显示电路显示部分采用普通的LM016L液晶显示,如图2-2,以减少硬件电路。LM016L液晶模块采用hd 44780控制器,hd44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LM016L与单片机MCU通讯可采用8位或4位并行传输两种方式,hd44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRA

24、M),字符发生器ROM(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDRAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种8位字符编码和字符的对应关系。图2-2 LCD液晶显示屏显示模块2.3.2键盘接口键盘在单片机系统中是一个很重要的部件。为了输入数据、查询和控制系统的工作状态,都要用到键盘

25、,键盘是人工干预计算机的主要手段。键盘可分为编码和非编码键盘两种。编码键盘采用硬件线线路来实现键盘编码,每按下一个键,键盘能自动生成按键代码,键数较多,而且还具有去抖动功能。这种键盘使用方便,但硬件较复杂,PC机所用的键盘就属于这种。非编码键盘仅提供按键开关工作状态,其他工作由软件完成,这种键盘键数较少,硬件简单,一般在单片机应用系统中广泛使用。此处主要介绍该类非编码键盘及其与MCS51型单片机的接口。2.3.3.1按键开关去抖动问题按键开关在电路中的连接如图2-3 a)所示。按键未按下时,A点电位为高电平5V;按键按下时,A点电位为低电平。A点电位就用于向CPU传递按键的开关状态。但是由于按

26、键的结构为机械弹性开关,在按键按下和断开时,触点在闭合和断开瞬间还会接触不稳定,引起A点电平不稳定,如图2-3 b)所示,键盘的抖动时间一般为510ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。因此必须设法消除抖动的不良后果。图2-3 键操作和键抖动消除抖动的不良后果的方法有硬件、软件两种。为了节省硬件,通常在单片机系统中,一般不采用硬件方法消除键的抖动,而是用软件消除抖动的方法。根据抖动特性,在第一次检测到按键按下后,执行一段延时510ms让前延抖动消失后再一次检测键的状态,如果仍保持闭合状态电平,则确认真正有键按下。当检测到按键释放后,也要给510ms的延时,待后延

27、抖动消失后才转入该键处理程序。2.3.2.2查询式按键及其接口按照键盘与CPU的连接方式可以分为查询按键和矩阵式键盘。查询式按键是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上按键的工作状态。查询式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大,且电路结构显得繁杂。故这种形式适用于按键数量较少的场合。2.3.2.3矩阵式键盘及其接口矩阵式键盘又称行列式键盘,有n个行线和m个列线,经限流电阻接+5V电源上,按键跨接在行线和列线上,n*m行列结构可构成mn个按键,组成一个键盘。与独立式按键相

28、比,mn个按键只占用m+n根I/O口线,因此适用于按键较多的场合。当无键闭合时,相应的I/O之间开路。当有键闭合时,与闭合键相连接的两条I/O口线之间短路。判断有无键按下的方法是:第一步,置列线相关I/O口为输入态,从行线相对应的I/O口输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,置行线相关I/O口输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等待近按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。2.3.2.4键盘扫描控制方式在单片机应

29、用系统中,对键盘的处理工作仅是CPU工作内容的一部分,CPU还要进行数据处理、显示和其他输入输出操作,因此键盘处理工作既不能占用CPU太多时间,又需要CPU对键盘操作及时作出响应。CPU对键盘处理控制的工作方式有以下几种:1 程序控制扫描方式程序控制扫描方式是在CPU工作空余,调用键盘扫描子程序,响应键输入信号要求。2 定时控制扫描方式定时控制扫描方式是利用定时/计数器每隔一段时间生成定时中断,CPU响应中断后对键盘进行扫描,并在有键闭合时转入该键的功能子程序。3 中断控制扫描方式中断控制扫描方式是利用外部中断源,响应输入信号。当无按键按下时,CPU执行正常工作程序。当有按键按下时,CPU立即

30、产生中断。在中断服务子程序中扫描键盘,判断是哪一个键被按下,然后执行该键的功能子程序。这种控制方式克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效率,但要占用一个宝贵的中断资源。图2-4即工作于中断方式的矩阵式键盘接口电路。在初始化时P1.4P1.7置输出0,P1.0P1.3置为输入态,P1.0P1.3分别接至与门各输入端。当有键闭合时=0,CPU中断后,在中断服务子程序中,再完成键识别和键功能处理。在有键按下后,有一定的延时,防止键盘抖动。 图2-4 工作于中断方式的矩阵式键盘接口电路2.3.3时钟电路2.3.3.1 DS1302工作方

31、式简介及数据操作原理DS1302可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.55.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个33*8的用于临时性存放数据的RAM寄存器。DS1302是的DS1202升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。DS1302时钟芯片包括实时时钟/日历和31字节的静态RAM。它经过一个简单的串行接口与微处理器通信。实时时钟/日历提供秒、分、时、日、周、月和年等信息。对于小于31天的月和月末的日

32、期自动进行调整,还包括闰年校正的功能。时钟的运行可以采用24小时或带AM/PM的12小时格式。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多字节的时钟信号或RAM数据。DS1302有主电源/后备电源双电源引脚:VCC1在单电源与电池供电的系统中提供低电源,并提供低功率的电磁备份;VCC1在双电池系统中提供主电源。在这种运行方式中,VCC1里连接到后备电源,以便在没有主电源的情况下能保存时间信息以及数据。DS1302由VCC1或VCC2中较大者供电。当VCC2(VCC1+02V)时,VCC2给DS1302供电;当VCC2VCC1时,DS1302由VCC1供电。如图2-5为DS130

33、2的引脚图。图2-5 DS1302的引脚图DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被访问到。在开始8个时钟周期,把命令字节装入移位寄存器后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。时钟脉冲的个数在单字节方式下为8+8,在多字节方式下为8+字节数,最大可达248字节数。如果在传送过程中置RST脚为低电平,则会终止本次数据传送,并且I/O引脚变为高阻态。上电运行时,在VCC25V之前,RST脚必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。DS1302的控制字如表2.1所示。控制字节

34、的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6如果为0,则表示存取日历时钟数据;为1则表示存取RAM数据。位51(A4A0)指示操作单元的地址。最低有效位(位0)如果为0,则表示要进行写操作;位1表示进行读操作。控制字节总是从最低位开始输入/输出。表2-1 DS1302控制字寄存器名 命令字取值范围各位内容写操作读操作76543210秒寄存器80H81H0059CH10SECSEC分寄存器82H83H0059010MINMIN时寄存器84H85H0112或002312/24010HRHR日寄存器86H87H0128,29,30,310010DATEDATE

35、月寄存器88H89H011200010MMONTH周寄存器8AH8BH010700000DAY年寄存器8CH8DH009910 YEARYEAR为了提高对32个地址寻址能力(地址/命令位15=逻辑1),可以把时钟/日历或RAM寄存器规定为多字节(burst)方式。位6规定时钟或RAM,而位0规定读或写。在时钟/日历寄存器中的地址931或RAM寄存器中的地址31不能存储数据。在多字节方式下,读或写从地址0的位0开始。必须按数据传送的次序写最先的8个寄存器。但是,当以多字节方式写RAM时,为了传送数据不必写所有的31字节,不管是否写了全部31字节,所写的每一字节都将传送至RAM。DS1302共有1

36、2个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。其日历、时间寄存器及其控制字如表2.1所示,其中奇数为读操作,偶数为写操作。时钟暂停:秒寄存器的位7定义位时钟暂停位。当它为1时,DS1302停止振荡,进入低功耗的备份方式,通常在对DS1302进行写操作时(如进入时钟调整程序),停止振荡。当它为0时,时钟将开始启动。AM-PM/12-24小时方式:小时寄存器的位7定义为12或24小时方式选择位。它为高电平时,选择12小时方式。DS1302的晶振选用32768Hz,电容推荐值为6pF。因为振荡频率较低,也可以不接电容,对计时精度影响不大。3 系统的软件设计3.1 程序设计

37、电子万年历的程序主要包括3个方面的内容:一是DS1302从单片机中读取数据进行计数,二是利用按键进行时间的调整,三是LM016L显示时间。AT89C51单片机主要I/O口的分配,P2.0P2.2分别接LM0L16的RS,RW,E三个功能端,P3接查询式按键,P1.0P1.2分别接DS1302的IO,SCLK,RST端。3.2 程序流程图图3-1程序流程图3.3时间控制流程图图3-2 DS1302时控流程图4 proteus软件仿真4.1 Proteus ISIS简介Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析

38、(SPICE)各种模拟器件和集成电路。该软件的特点是:(1)全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。(2)具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。(3)目前支持的单片机类型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。(4)支持大量的存储器和外围芯片。总之,该软件是一款集单片机和SPICE分析于一身的仿真

39、软件,功能极其强大 ,可仿真ARM、51、AVR、PIC。Proteus启动画面如图4-1:图4-1 proteus启动画面4.2 Proteus运行流程Proteus ISIS的工作界面是一种标准的Windows界面,如图4-2所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。运行Proteus程序后,进入软件的主界面。通过左侧工具栏中的P(从库中选择元件命令)命令,在Pick Devices 左侧窗口中选择所需元件的关键字,然后放置元件并调整方向和位置以及参数设置,最后进行连线。Prot

40、eus ISIS的工作界面如图4-2:图4-2 Proteus ISIS的工作界面4.3 Proteus功能仿真Proteus仿真效果:最后载入hex文件后可以进行模拟仿真,可以全速运行也可以单步调试运行(如图4-3为运行按键)。 图4-3运行按键上电后后LCD显示如图4-4:图4-4调节年份如图4-5:图4-5调节月份如图4-6:图4-6调节日期如图4-7:图4-7调节时钟如图4-8:图4-8调节分钟如图4-9:图4-9按键功能如图4-10,自上而下依次为:选择修改项键K1、加键K2、减键K3、确定键K4。图4-10结束语在三月份,我开始了我的毕业论文工作,时至今日,论文基本完成。从最初的茫

41、然,到慢慢的进入状态,再到对思路逐渐的清晰,整个写作过程难以用语言来表达。历经了一个多月的努力,紧张而又充实的毕业设计终于落下了帷幕。回想这段日子的经历和感受,在这次毕业设计的过程中,我拥有了无数难忘的回忆和收获。在设计过程中,充分发挥人的主观能动性,自主学习,学到了许多没学到的知识。较好的完成了设计,达到了预期的目的,完了最初的设想。对电路的设计、布局要先有一个好的构思,才显得电路板美观、大方。程序编写中,由于思路不清晰,开始时遇到了很多的问题,经过静下心来思考,和同学讨论,理清了思路,反而得心应手。在此次设计中,知道了做凡事要有一颗平常的心,不要想着走捷径,一步一脚印。也练就了我的耐心,做

42、什么事都在有耐心。此次毕业设计中学到了很多很多东西,这是最重要的。总之,这次毕业设计使我的能力得到了全方位的提高,使得我的操作能力和专业技能都有了很大的提高。这次毕业设计的制作过程是我的一次再学习,再提高的过程。在论文中我充分地运用了大学期间所学到的知识。参考文献1 刘建辉,翼常鹏等.单片机智能控制技术M.国防工业大学出版社,2007.4 2 李朝青单片机&DSP外围数字IC技术手册M北京航空航天大学出版社,2005.103 关德新,冯文全单片机外围器件实用手册 电源分册M北京航空航天大学出版社,1998.6 4 蔡美琴等.MCS-51单片机系统及其应用M.高等教育出版社,1992.35 He

43、llDale Chip Weems Mark Headington M.PROGRAMMING IN CFF 6 陈明荧.8051单片机课程设计实训教程M清华大学出版社7 郁慧娣.微机系统及其接口技术M.东南大学出版社,1999 8 何立民.单片机高级教程M.北京航空航天大学出版社,2003 9 王毓银.数字电路逻辑设计M.高等教育出版社10 陈志旺.51系列单片机系统设计与实践M.电子工业出版社,20100111 李广弟.单片机原理及应用M.北京航空航天大学出版社,2004 12 谢嘉奎.电子线路M.高等教育出版社,199913 谭浩强.C程序设计M.清华大学出版社 2004.614 关德新

44、,冯文全.单片机外围器件实用手册 电源分册M.北京航空航天大学出版社,1998.6 15 顾筠,钱琦,林小宁.单片微型计算机原理与应用M.东南大学出版社,2003.1216 李华.MCS-51系列单片机实用接口技术M北京航空航天大学出版社,1993.317 何立民.MCS-51系列单片机应用系统设计系统配置与接口技术M北京航空航天大学出版社,199018 孙涵芳.MCS-51/96系列单片机原理及应用M.北京航空航天大学出版社,199621附 录附录1:电路原理图附图1 电子万年历原理图附录2:电路仿真图附图2 电子万年历仿真图附录3:电子万年历程序#include #include #def

45、ine uchar unsigned char#define uint unsigned intsbit SDA=P10; /DS1302数据线sbit CLK = P11; /DS1302时钟线sbit RST = P12; /DS1302复位线sbit RS = P20; /LCD寄存器选择sbit RW = P21; /LCD读/写控制sbit EN = P22; /LCD启用sbit K1 = P34; /按键选择sbit K2 = P35; /按键加sbit K3 = P36; /按键减 sbit K4 = P37; /按键确定uchar tCount =0;/一年中的每个月的天数,

46、2月的天数有年份决定uchar MonthsDays = 0,31,0,31,30,31,30,31,31,30,31,30,31;/周日,周一到周六(0,1-6)读取DS1302时分别是1-7uchar *WEEK = SUN,MON,TUS,WEN,THU,FRI,SAT;/LCD显示缓冲uchar LCD_DSY_BUFFER1 = DATE 00-00-00 ;uchar LCD_DSY_BUFFER2 = TIME 00-00-00 ;uchar DateTime7; /所读取的日期时间char Adjust_Index = -1; /当前调节的时间对象:秒,分,时,日,月,年(0,

47、1,2,3,4,5,6)uchar Change_Flag = -MHDM-Y; /(分,时,日,月,年) void Write_A_Byte_TO_DS1302(uchar x) /向DS1302写入一字节uchar i;for ( i = 0; i =1;void Write_DS1302 (uchar addr,uchar dat) /向DS1302某地址写入数据 CLK = 0;RST = 1;Write_A_Byte_TO_DS1302(addr);Write_A_Byte_TO_DS1302(dat);CLK = 0;RST =0 ;/设置时间void SET_DS1302 ()

48、uchar i;/写控制字,取消写保护Write_DS1302 (0x8E,0x00);/分时日月年依次写入for(i = 1; i 7; i+)/分的起始地址10000010(0x82),后面依次是时,日,月,周,年,写入地址每次递减2Write_DS1302(0x80 + 2*i,(DateTimei/104) | (DateTimei%10);Write_DS1302(0x8E,0x80); /加保护uchar Get_A_Byte_FROM_DS1302() /从DS1302读取一字节uchar i,b,t;for (i = 0;i =1;t=SDA;b|=t7;CLK=1;CLK=0

49、;return b/16*10+b%16;unchar Read_Data (uchar addr) /从DS1302指定位置读数据uchar dat;RST = 0;CLK = 0;RST = 1;Write_A_Byte_TO_DS1302(addr);dat = Get_A_Byte_FROM_DS1302();CLK=1;RST=0;return dat;/读取当前日期时间void GetTime()uchar i;for (i = 0; i 7; i+)DateTimei = Read_Date(0x81 + 2*i);/在LCD上显示字符串viod Display_LCD_Stri

50、ng(uchar p,uchar *s)uchar i;Set_LCD_POS(p);for (i = 0;i 16;i+)Write_LCD_Data(si); DelayMS(1);/日期与时间值转换成为数字字符void Format_DateTime(uchar d, uchar *a)a0 = d/10+0; a1 = d%10 + 0;/判断是否为闰年uchar isLeapYear(uint y)return (y % 4 = =&y % 100!=0)|(y%400 = = 0);/求自2000.1.1开始的任何一天是星期几/函数没有通过,求出总天数后再求星期几/因为求总天数可能

51、会越出uint的范围viod RefreshWeekDay()uint i,d,w=5; /1999.12.31是星期五for (i = 2000; i 2000+DateTime6;i+)d = isLeapYear(i) ? 366 :365;w = (w + d) % 7;d = 0;for (i = 1; i DateTime4 ; i+ ) d += MonthsDaysi;d += DateTime3;/保存星期,06表示星期日,星期一,二,六,为了与DS1302的星期格式匹配,返回值需加1DateTime5 = (w + d) % 7 + 1;/年月日时分+/-void Date

52、Time_Adjust(char x)switch ( Adjust_Index )case 6: if (x = =1 & DateTime6 0) DateTime6-;/获取2月天数 MonthsDays2 = isLeapYear(2000 + DateTime6) ? 29 : 28; /如果年份变化后当前月份的天数大于上限则设为上限 if ( DateTime3 MonthsDaysDateTime4 ) DateTime3 = MonthsDaysDateTime4; RefreshWeekDay(); /刷新星期 break;case 4: if (x = =1 & DateT

53、ime4 1) DateTime4-; /获取2月天数 MonthsDays2 = isLeapYear(2000 + DateTime6) ? 29 : 28; /如果年份变化后当前月份的天数大于上限则设为上限 if ( DateTime3 MonthsDaysDateTime4 ) DateTime3 = MonthsDaysDateTime4; RefreshWeekDay(); /刷新星期 break;case 3: /日00-28/29/30/31;调节之前首先根据年份得出该年中2月份的天数 MonthsDays2 = isLeapYear(2000 + DateTime6) ? 2

54、9 : 28; /如果年份变化后当前月份的天数大于上限则设为上限 if (x = =1 & DateTime3 0) DateTime3-; RefreshWeekDay(); /刷新星期 break;case 2: /时 if (x = =1 & DateTime2 0) DateTime2-; break;case 1: /分 if (x = =1 & DateTime1 0) DateTime1-; break;/定时器0每秒刷新LCD显示void T0_INT() interrupt 1TH0 = -50000 / 256;TL0 = -50000 % 256;if (+tCount

55、!= 2) return;tCount = 0;Format_DateTime(DateTime6,LCD_DSY_BUFFR1 + 5);Format_DateTime(DateTime4,LCD_DSY_BUFFR1 + 8);Format_DateTime(DateTime3,LCD_DSY_BUFFR1 + 11);strcpy(LCD_DSY_BUFFER1 + 13,WEEKDateTime5 - 1 );Format_DateTime(DateTime2,LCD_DSY_BUFFR1 + 5);Format_DateTime(DateTime1,LCD_DSY_BUFFR1 +

56、8);Format_DateTime(DateTime0,LCD_DSY_BUFFR1 + 11);Display_LCD-String(0x00, LCD-DSY_BUFFER1);Display_LCD-String(0x40, LCD-DSY_BUFFER2);/键盘中断(INT0)void EX_INT0 () interrupt 0 if (K1 = =0) /选择调整对象 while (K1 = = 0); if (Adjust_Index = = -1 | Adjust_Index = =1) Adjust_Index = 7;0 Adjust_Index-; if (Adjust_Index = = 5 ) Adjust_Index = 4; LCD_DSY_BUFFER213 = ; LCD_DSY_BUFFER214 = Change_FlagAdjust_Index; LCD_DSY_BUFFER215 = ; else if (K2 = = 0) /加 while (K2 = =0); DateTim

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

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

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


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