单片机课程设计报告-电子时钟(DS1302芯片)

上传人:aa****6 文档编号:29986839 上传时间:2018-01-26 格式:DOC 页数:18 大小:213KB
返回 下载 相关 举报
单片机课程设计报告-电子时钟(DS1302芯片)_第1页
第1页 / 共18页
单片机课程设计报告-电子时钟(DS1302芯片)_第2页
第2页 / 共18页
单片机课程设计报告-电子时钟(DS1302芯片)_第3页
第3页 / 共18页
单片机课程设计报告-电子时钟(DS1302芯片)_第4页
第4页 / 共18页
单片机课程设计报告-电子时钟(DS1302芯片)_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《单片机课程设计报告-电子时钟(DS1302芯片)》由会员分享,可在线阅读,更多相关《单片机课程设计报告-电子时钟(DS1302芯片)(18页珍藏版)》请在金锄头文库上搜索。

1、- 1 -课 程 设 计 报 告课程名称 单片机课程设计 课题名称 电子时钟(DS1302 芯片)专 业 电子信息工程 班 级 学 号 姓 名 指导教师 .- 2 -目 录1、设计题目及要求 .12、设计方案 .12. 1、 DS1302 介绍及其特性 .12. 2、 电路连接 .12. 3、 DS1302 的内部结构 .12. 4、 单字节数据输入 .32. 5、 存储器映射表 .32. 6、 流程图 .33、程序调试 .33. 1、 源程序 .34、总结 .45. 调试仿真图 .5- 3 -1设计题目及要求利用单片机芯片,和 DS1302 芯片,使得数码管 7SEG-MPX8-CA-BLU

2、E 显示年月日和时间,时间和年月日分开显示,屏幕显示时间。2. 设计方案2.1 DS1302 介绍及其特性DS1302 是美国 DALLAS 公司推出的一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V 5.5V。采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。DS1302 内部有一个 318 的用于临时性存放数据的 RAM 寄存器。DS1302 是 DS1202 的升级产品,与 DS1202 兼容,但增加了主电源 /后备电源双电源引脚,同时提供了对后备电源进行涓细

3、电流充电的能力。特性: 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数 用于高速数据暂存的 318 RAM 2 引脚的串行 I/O 2.5-5.5V 满度工作范围 用于时钟或 RAM 数据读写的单字节或多字节数据传送 双电源引脚 可选慢速充电至 VCC12.2 电路连接:1234 5678D S 1 3 0 2V c c 2x 1x 2G n d r s ti/os c lkV c c 1V C CP 1 2P 1 3P 1 43 2 K3 V - 4 -2.3 DS1302 的内部结构2.4 单字节数据输入:2.5 存储器映射表:1时钟/日历存储区(CONTROL)命令字节1

4、 0 00111 1/0I/OSCLKRST0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 1- 5 -无效位1:写保护0:可写入2时钟/日历存储区(时分秒)3时钟/日历存储区(日期、星期)2.6 流程图:- 6 -main clrdis()ds1302 1302_int()get_im display()ON/CY=YNFuncShift()TimeSt()timer050msTimer0_Cnt=0NYTimer0_Cnt=0xaFlashFlag- 7 -3. 程序设计3.1 源程序#include#define uchar unsigned char#define uint

5、 unsigned int/蜂鸣器位定义sbit beep = P33 ;/DS1302 相关操作线定义sbit RST = P11 ;sbit SCK = P12 ;sbit SDA = P13 ; /按键定义,key1 切换键,key2 加,key3 减,key4 闹钟,年月日周sbit key1 = P14 ;sbit key2 = P15 ;sbit key3 = P16 ;sbit key4 = P17 ;uchar i,j,mod,flag,flag1=1 ;/控制定时器动态扫描数码管的第几位,j 是定时读取时间。mod 是对 key1 按下次数计数。flag 切换闹钟,日期,和周

6、.flag1 为闹钟标志位/uchar code write_addr7=0x80,0x82,0x84,0x86,0x88,0x8a,0x8c; /秒分时日月周年 写地址/uchar code read_addr7=0x81,0x83,0x85,0x87,0x89,0x8b,0x8d; /秒分时日月周年 读地址/共阳数码管码表,表示 0-9 和- 。-表示时分秒的间隔.uchar code LED11 =0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,;uchar disbuf8 =0x62,0xa2,0xf7,0x7a,0x28,0xf7,

7、0x7e,0x7e ;/定义时间日期的结构类型struct time uchar second ;uchar minute ;uchar hour ;uchar week ;uchar day ;uchar month ;uchar year ;- 8 -current_time ;#define ctime current_time/定义闹钟的时分秒变量uchar asec,amin,ahour ;void delay(uint ms)uchar i ;while(ms-)for(i=135;i0;i-);/滴一声,用来按键伴音void di()uchar i ;for(i=0;i0; i-

8、)di();delay(140);/DS1302 的写驱动,传入参数为一个地址和数据void write(uchar addr,uchar dat)uchar i ;RST = 0 ;SCK = 0 ;RST = 1 ;for(i=0;i=1 ;SCK = 1 ;- 9 -for(i=0;i= 1 ;SCK = 1 ;RST = 0 ;/DS1302 的读驱动,传入参数为一个地址,返回参数为读到的数据uchar read(uchar addr)uchar i,dat ;RST = 0 ;SCK = 0 ;RST = 1 ;for(i=0;i=1 ;SCK = 1 ;for(i=0;i=1 ;i

9、f(SDA)dat|=0x80 ;SCK=1 ;RST=0 ;dat=(dat/16*10)+(datreturn dat ;/读取 DS1302 的时间和日期void read_time()ctime.second = read(0x81);ctime.minute = read(0x83);ctime.hour = read(0x85);ctime.day = read(0x87);- 10 -ctime.month = read(0x89);ctime.week = read(0x8b);ctime.year = read(0x8d);/设定时间和日期void set_time()if(

10、!flag)write(0x8e,0x00);write(0x80,(ctime.second/10)i);P0=disbufi;i+;/3msx8x20,大约 480ms 从 DS1302 芯片读取一下时间if(j=20)j=0 ;refbuf();if(mod=0)read_time();- 18 -4. 总结:本设计利用单片机 AT89C512 控制串行实时时钟芯 DS1302 构成数字时钟电路,实现计时功能。该电路使用简单的三线接口,为单片机节省大量的接口资源,时钟芯片带有后备电池。该时钟功能强大,性能优越,能为很多领域,特别是对时钟工作的准确性和可靠性有较高要求。5. 调试仿真图上图是显示时分秒图上显示是年月日

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号