ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:396.54KB ,
资源ID:25286003      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/25286003.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(电子日历时钟.docx)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

电子日历时钟.docx

1、电子日历时钟课程设计任务书学 院信息科学与工程学院专 业计算机科学与技术学生姓名朱伟杰班级学号1203050116课程设计题目电子日历时钟显示器设计实践教学要求与任务:1学习Proteus仿真系统下的原理图设计方法和系统仿真调试方法;2掌握简单的51单片机应用系统的软硬件设计方法;3学习Keil C51集成开发环境的使用和程序调试方法。具体任务如下:(1)通过检索、查资料和研究学习,设计单片机应用系统原理图;(2)在Keil 51集成开发环境下编写应用系统程序;(3)在Proteus仿真环境下进行软硬件系统调试,实现应用系统设计目标;(4)写出课程设计报告。 工作计划与进度安排:第1619周:

2、布置课程设计任务;查阅资料;分组设计原理图;编写程序代码。第20周:系统仿真调试,验收,答辩,编写课程设计报告。指导教师:马秀丽 刘猛 2014年12月7日专业负责人: 2014年12月8日学院教学副院长: 2014年12月8日成绩评定表学生姓名朱伟杰班级学号1203050116专业计算机科学与技术课程设计题目电子日历时钟显示器设计评语组长签字:成绩日期 年 月 日1.设计目的与要求1.1课程设计目的1.培养学生文献检索的能力,如何利用Internet检索需要的文献资料。2.培养学生综合分析问题、发现问题和解决问题的能力。3.培养学生综合运用知识的能力和工程设计的能力。4.培养学生理论联系实际

3、的能力。5.提高学生课程设计报告撰写水平。1.2设计内容、技术条件和要求1.2.1设计内容电子日历时钟系统主要功能为实时时间的显示,以AT89C51单片机为核心芯片,通过DS1302时钟芯片的功能扩展;在共阴极LED数码管上或LM1602液晶显示屏上显示出来。(1)时钟芯片选用DS1302;(2)数码管选用4位共阴极动态显示的数码管;(3)能实时显示年、月、日和时、分、秒,用数码管显示时,要求年、月、日与时、分、秒交替显示,间隔1秒;(4)可通过按键调节、设置当前时间。1.2.2 设计要求DS1302时钟芯片的控制设计。时间调节按键的电路设计。绘制实现本设计内容的硬件电路(原理图),系统的组成

4、框图。相应的控制状态表;编写本课程设计内容的软件设计(包含程序流程图和对程序注释)。硬件实验部分可选用实验箱测试或Proteus仿真软件实现。2.系统的组成与工作原理2.1系统组成 图2.1系统组成原理图2.2 工作原理设计的题目是电子时钟。根据设计要求显示正常的年、月、日、时、分、秒。要想实现上述功能,就必须将硬件系统和软件系统有机的结合在一起,方可实现我们设计任务中的各项要求。硬件系统主要有单片机AT89C51、DS1302、74LS154 等。AT89C51 主要功能是存储程序、根据程序的内容对各个端口进行判断并做出相应的处理。DS1302主要的功能是控制年、月、日、时、分、秒的显示效果

5、。根据设计要求,电子日历要显示年、月、日、时、分、秒就需要16个显示数码管,由于数码管的数量较多,必须采用动态显示扫描的方法。例如07-12-01,首先日分为个位和十位,个位显示到09时,应向日的十位自动进位,即个位清0,十位置1,显示为10,继续累计;当显示为31时,日的十位就应自动向月的个位进位,显示为01,当月显示到09时,月的个位自动向月的十位进位,个位清0,十位置1,即为10,当月至12时,月向年的个位进位,即显示08,同时月、日开始从01月01日继续显示,依次周而复始的循环运行。根据按键电路可实现年、月、日、时、分、秒的调整,当K1键按下时,可以调整时间,K2、K3键分别对时间进行

6、加或减,K4键可以切换正常模式与省电模式。利用单片机将RC复位电路、动态显示电路、电源电路、去抖电路等正确的连接在一起,并通过单片机的编程来实现本次设计任务中的要求。2.3 Protues简介Protues软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机与外围器件。它是目前最好的仿真单片机与外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真

7、,一键切换到PCB设计,真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即将增加Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译2.4 Keil C51简介Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有

8、明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。3器件的功能和作用3.1 AT89C51简介AT89C51各引脚结构如图3.1所示:图3.1AT89C51引脚图VCC:电源电压 GND:接地 P0口:P0口是一组8位漏极开路双向I/O

9、口,即地址/数据总线复用口。作为输出口时,每一个管脚都能够驱动8个TTL电路。当“1”被写入P0口时,每个管脚都能够作为高阻抗输入端。P0口还能够在访问外部数据存储器或程序存储器时,转换地址和数据总线复用,并在这时激活内部的上拉电阻。P0口在闪烁编程时,P0口接收指令,在程序校验时,输出指令,需要接电阻。 P1口:P1口一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时输出一个电流。闪烁编程时和程序校验时,P1口接收低8位地址。 P2口:P2口是一个内部带有上拉电

10、阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL电路。对端口写“1”,通过内部的电阻把端口拉到高电平,此时,可作为输入口。因为内部有电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容在整个运行期间不变。闪烁编程或校验时,P2口接收高位地址和其它控制信号。 P3口:P3口是一组带有内部电阻的8位双向I/O口,P3口输出缓冲故可驱动4个TTL电路。对P3口写如“1”时,它们被内部电阻拉到高电平并可作为输入端时,被外部拉低的P3口将用电阻输出电流。P3口除了作为一般的I/

11、O口外,更重要的用途是它的第二功能,具体如下:P3.0-RXD,P3.1-TXD,P3.2-INT0,P3.3-INT1,P3.4-T0,P3.5-T1,P3.6-WR,P3.7-RD。P3口还接收一些用于闪烁存储器编程和程序校验的控制信号。 RST:复位输入。当震荡器工作时,RET引脚出现两个机器周期以上的高电平将使单片机复位。 ALE/ :当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE以时钟震荡频率的1/16输出固定的正脉冲信号,因此它可对输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲时,闪烁存储器

12、编程时,这个引脚还用于输入编程脉冲。如果必要,可对特殊寄存器区中的8EH单元的D0位置禁止ALE操作。这个位置后只有一条MOVX和MOVC指令ALE才会被应用。此外,这个引脚会微弱拉高,单片机执行外部程序时,应设置ALE无效。 PSEN:程序储存允许输出是外部程序存储器的读选通信号,当AT89C51由外部程序存储器读取指令时,每个机器周期两次PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器时,这两次有效的PSEN 信号不出现。 EA/VPP:外部访问允许。欲使中央处理器仅访问外部程序存储器,EA端必须保持低电平。需要注意的是:如果加密位LBI被编程,复位时内部会锁存EA端状态。如

13、EA端为高电平,CPU则执行内部程序存储器中的指令。闪烁存储器编程时,该引脚加上+12V的编程允许电压VPP,当然这必须是该器件是使用12V编程电压VPP。 XTAL1:片内振荡器反相放大器和时钟发生线路的输入端。使用片内振荡器时,连接外部石英晶体和微调电容。XTAL2:片内振荡器反相放大器的输出端。当使用片内振荡器时,外接石英晶体和微调电容。3.2DS1302简介DS1302 是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V。结构如图3.2所示:图3.2 DS1302引脚图采用三

14、线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。DS1302 的管脚排列与描述如下图与表所示X1、X2:32.768KHZ晶振接入引脚。GND:地。RST:复位引脚,低电平有效。IO:数据输入输出引脚,具有三态功能。SCLK:串行时钟输入引脚。VCC1:工作电源引脚。VCC2:备用电源引脚。3.3 LM016L简介1602采用标准的16脚接口,结构如图3.3所

15、示:图3.3 LMO16L其中:VSS:为电源地VDD:接5V电源正极VEE:为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会 产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。RS:为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。RW:为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。E(或EN):为使能(enable)端,高电平(1)时读取信息,负跳变时执行指令。D0D7:为8位双向数据端。表3.1指令集表指令码功能指令RSR/WD7D6D5D4D3D2D1D0清除显示0000000001将DDRAM填满20H

16、,并且设定DDRAM的地址计数器(AC)到00H地址归位000000001X设定DDRAM的地址计数器(AC)到00H,并且将游标移到开头原点位置;显示状态开/关0000001DCBD=1: 整体显示 ONC=1: 游标ONB=1:游标位置反白允许进入点设定00000001I/DS指定在数据的读取与写入时,设定游标的移动方向与指定显示的移位游标或显示移位控制000001S/CR/LXX设定游标的移动与显示的移位控制位;这个指令不改变DDRAM 的内容功能设定00001DLXREXXDL=0/1:4/8位数据RE=0/1:基本指令操作 / 扩充指令操作设定CGRAM地址0001AC5AC4AC3

17、AC2AC1AC0设定CGRAM 地址设定DDRAM地址0010AC5AC4AC3AC2AC1AC0设定DDRAM 地址(显示位址)第一行:80HA7H第二行:C0HE7H读取忙标志和地址01BFAC6AC5AC4AC3AC2AC1AC0读取忙标志(BF)可以确认内部动作是否完成,同时可以读出地址计数器(AC)的值写数据到RAM10数据将数据D7D0写入到内部的RAM 读出RAM的值11数据从内部RAM读取数据D7D04系统硬件设计电子日历时钟系统主要功能为实时时间的显示,以AT89C51单片机为核心芯片,通过DS1302时钟芯片的功能扩展;在共阴极LED数码管上或LM1602液晶显示屏上显示

18、出来。原理图如图4.1所示: 图4.1 系统原理图5.系统软件设计5.1程序流程图软件设计分为:动态扫描、主程序、系统资源分配和软件模块几部分,在此设计中采用定时器来完成动态扫描显示。用定时器T0定20ms的时间间隔,每次定时时间到时就输出一个LED信号,即显示一位。主程序初始化后,就开始进行对DS1302的读时间;读完后送显示缓冲区,同时并对定时时间进行判断比较。DS1302的地址由114字节的用户RAM存放。10字节的存放实时时钟时间日历和定闹RAM与用于控制和状态的4字节特殊寄存器组成,几乎所有的128个字节直接读写。设计程序有:主程序、读取时间的子程序和显示刷新程序。 图5.1程序流程

19、图5.2 程序清单与程序功能注释#include /包含单片机寄存器的头文件#include /包含_nop_()函数定义的头文件/*以下是DS1302芯片的操作程序*/unsigned char code digit10=0123456789; /定义字符数组显示数字sbit DATA=P17; /位定义1302芯片的接口,数据输出端定义在P1.7引脚sbit RST=P15; /位定义1302芯片的接口,复位端口定义在P1.5引脚sbit SCLK=P16; /位定义1302芯片的接口,时钟输出端口定义在P1.6引脚/*函数功能:延时若干微秒入口参数:n*/ voiddelaynus(un

20、signed char n)unsigned char i;for(i=0;in;i+);/*函数功能:向1302写一个字节数据入口参数:x*/ void Write1302(unsigned char dat)unsigned char i; SCLK=0; /拉低SCLK,为脉冲上升沿写入数据做好准备delaynus(2); /稍微等待,使硬件做好准备for(i=0;i=1; /将dat的各数据位右移1位,准备写入下一个数据位/*函数功能:根据命令字,向1302写一个字节数据入口参数:Cmd,储存命令字;dat,储存待写的数据*/ void WriteSet1302(unsigned ch

21、ar Cmd,unsigned char dat)RST=0; /禁止数据传递SCLK=0; /确保写数居前SCLK被拉低RST=1; /启动数据传输delaynus(2); /稍微等待,使硬件做好准备Write1302(Cmd); /写入命令字Write1302(dat); /写数据SCLK=1; /将时钟电平置于已知状态RST=0; /禁止数据传递/*函数功能:从1302读一个字节数据入口参数:x*/ unsigned char Read1302(void)unsigned char i,dat;delaynus(2); /稍微等待,使硬件做好准备for(i=0;i=1; /将dat的各数

22、据位右移1位,因为先读出的是字节的最低位if(DATA=1) /如果读出的数据是1dat|=0x80; /将1取出,写在dat的最高位SCLK=1; /将SCLK置于高电平,为下降沿读出delaynus(2); /稍微等待SCLK=0; /拉低SCLK,形成脉冲下降沿delaynus(2); /稍微等待 return dat; /将读出的数据返回 /*函数功能:根据命令字,从1302读取一个字节数据入口参数:Cmd*/ unsigned char ReadSet1302(unsigned char Cmd)unsigned char dat;RST=0; /拉低RSTSCLK=0; /确保写数

23、居前SCLK被拉低RST=1; /启动数据传输Write1302(Cmd); /写入命令字dat=Read1302(); /读出数据SCLK=1; /将时钟电平置于已知状态RST=0; /禁止数据传递return dat; /将读出的数据返回/*以下是对液晶模块的操作程序*/sbit RS=P20; /寄存器选择位,将RS位定义为P2.0引脚sbit RW=P21; /读写选择位,将RW位定义为P2.1引脚sbit E=P22; /使能信号位,将E位定义为P2.2引脚sbit BF=P07; /忙碌标志位,将BF位定义为P0.7引脚/*函数功能:延时1ms(3j+2)*i=(333+2)10=

24、1010(微秒),可以认为是1毫秒*/void delay1ms()unsigned char i,j; for(i=0;i10;i+)for(j=0;j33;j+); /*函数功能:延时若干毫秒入口参数:n*/voiddelaynms(unsigned char n)unsigned char i;for(i=0;in;i+)delay1ms();/*函数功能:判断液晶模块的忙碌状态返回值:result。result=1,忙碌;result=0,不忙*/bitBusyTest(void)bit result;RS=0; /根据规定,RS为低电平,RW为高电平时,可以读状态RW=1;E=1;

25、/E=1,才允许读写_nop_(); /空操作_nop_();_nop_(); _nop_(); /空操作四个机器周期,给硬件反应时间result=BF; /将忙碌标志电平赋给resultE=0; /将E恢复低电平return result;/*函数功能:将模式设置指令或显示地址写入液晶模块入口参数:dictate*/voidWriteInstruction (unsigned char dictate) while(BusyTest()=1); /如果忙就等待RS=0; /根据规定,RS和R/W同时为低电平时,可以写入指令RW=0; E=0; /E置低电平/ 就是让E从0到1发生正跳变,所以应先置0_nop_();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1