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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(单片机原理课程设计new.doc)为本站会员(dzzj200808)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

单片机原理课程设计new.doc

1、课题名称_实时钟的设计_所在院系_机械电子工程学院_班 级_自动化 2 班_学 号_200910320232_姓 名_祝少华_指导老师_曹利钢_时 间_景德镇陶瓷学院单片机原理课程设计任务书班级:自动化 07 姓名: 指导教师:曹利钢 2010 年 6 月 7 日设计题目:实时钟的设计设计任务和要求1 显示时、分、秒,要求用 6 个 LED 显示。2 可通过键盘设置目前时间。3 具有闹铃功能,即可通过键盘设置闹铃时间。当时间到,则通过蜂鸣器提示时间到。设计成果设计说明书一份电路图一份参考资料1.胡汉才.单片机原理及接口技术(第 2 版)M.北京:机械工业出版社,20042.陈光东,赵性初.单片

2、机微型计算机原理与接口技术(第 2 版)M.武汉:华中科技大学出版社,1999教研室主任签字: 年 月 日设计说明本设计主要包括两个模块的设计:一、时钟电路 DS1302 芯片的设计;二、液晶显示电路的设计。硬件图DS1302 的结构及工作原理DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 2.5V5.5V 。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。 DS1302 内部有一个 318 的用于临时性存放数据的 RAM 寄

3、存器。 DS1302 是 DS1202 的升级产品,与 DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。引脚功能及结构图 1 示出 DS1302 的引脚排列,其中 Vcc1 为后备电源, VCC2 为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。当 Vcc2 大于Vcc1 0.2V 时,Vcc2 给 DS1302 供电。当 Vcc2 小于 Vcc1 时,DS1302 由 Vcc1 供电。X1 和 X2 是振荡源,外接 32.768kHz 晶振。RST 是复位/ 片选线,通过把

4、 RST 输入驱动置高电平来启动所有的数据传送。RST 输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST 提供终止单字节或多字节数据的传送手段。当 RST 为高电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。如果在传送过程中 RST 置为低电平,则会终止此次数据传送,I/O 引脚变为高阻态。上电运行时,在 Vcc2.5V 之前,RST 必须保持低电平。只有在 SCLK 为低电平时,才能将 RST 置为高电平。I/O 为串行数据输入输出端(双向) ,SCLK 始终是输入端。DS1302 的控制字节DS1302 的控制字如图 2 所示。控制

5、字节的最高有效位(位 7)必须是逻辑 1,如果它为 0,则不能把数据写入 DS1302 中,位 6 如果为 0,则表示存取日历时钟数据,为 1 表示存取 RAM 数据 ;位 5 至位 1 指示操作单元的地址; 最低有效位(位 0)如为 0 表示要进行写操作,为 1 表示进行读操作,控制字节总是从最低位开始输出。 数据输入输出(I/O)在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入 DS1302,数据输入从低位即位 0 开始。同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出 DS1302 的数据,读出数据时从低位 0 位到高位 7。 DS1302 的寄存器

6、DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD 码形式,其日历、时间寄存器及其控制字见表1。此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与 RAM 相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态为一个 8 位的字节,其命令控制字为 C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所有的 RAM 的 31 个字节,命令控制字为FE

7、H(写)、FFH(读)。开始 变量初始化使 DS1302 不具备写保护复位端产生 1 个高电平写 1302 地址延时一段时间向该地址写数据地址增加数据写完了吗?复位端产生 1 个高电平写 1302 地址延时一段时间将该地址的数据读出地址增加数据读完了吗?显示数据DS1302 实时时间流程图 4 示出 DS1302 的实时时间流程。根据此流程框图,不难采集实时时间。下面结合流程图对 DS1302 的基本操作进行编程:# include”intrins.h”sbit DS1302_CLK = P16; /实时时钟时钟线引脚 sbit DS1302_IO = P17; /实时时钟数据线引脚 sbit

8、 DS1302_RST = P15; /实时时钟复位线引脚sbit ACC0 = ACC0;sbit ACC7 = ACC7;void DS1302InputByte(unsigned char d) /实时时钟写入一字节( 内部函数) unsigned char i;ACC = d;DS1302_RST =1; /启动数据传送for(i=8; i0; i-)DS1302_IO = ACC0; /相当于汇编中的 RRCDS1302_CLK = 1; DS1302_CLK = 0; /时钟下降沿写入 1位数据ACC = ACC 1; unsigned char DS1302OutputByte(

9、void) /实时时钟读取一字节( 内部函数) unsigned char i;for(i=8; i0; i-)ACC = ACC 1; /相当于汇编中的 RRC ACC7 = DS1302_IO;DS1302_CLK = 1;DS1302_CLK = 0; /时钟下降沿输出 1 位数据 return(ACC); void Write1302(unsigned char ucAddr, unsigned char ucDa)/ucAddr: DS1302 地址, ucData: 要写的数据DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302In

10、putByte(ucAddr); / 地址,命令 DS1302InputByte(ucDa); / 写 1Byte 数据DS1302_CLK = 1;DS1302_RST = 0; nsigned char Read1302(unsigned char ucAddr) /读取 DS1302 某地址的数据unsigned char ucData;DS1302_RST = 0;DS1302_CLK = 0;DS1302_RST = 1;DS1302InputByte(ucAddr|0x01); / 地址,命令 ucData = DS1302OutputByte(); / 读 1Byte 数据DS1

11、302_CLK = 1;DS1302_RST = 0;return(ucData);void set1302(unsigned char*pda) /设置时间初值unsigned char i;unsigned char add=0x80;wr_1302(0x8e,0x00); /将控制寄存器值设为 零,最高为 WP=0 允许写for(i=7;i0;i-) /将七个时间初值写入对应寄存器wr_1302(add,*pda);pda+;add+=2;wr_1302(0x8e,0x80); /写保护void get_1302(unsigned char curtime )/读取当前时间unsigned char i,j;unsigned char add=0x81;bdata unsigned char sec;for(i=0;i4; /将 BCD 码转化成对应十进制数j*=10;sec=secsec+=j;curtimei=sec;add+=2;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报