单片机课程设计报告-电子时钟(DS1302芯片).doc_第1页
单片机课程设计报告-电子时钟(DS1302芯片).doc_第2页
单片机课程设计报告-电子时钟(DS1302芯片).doc_第3页
单片机课程设计报告-电子时钟(DS1302芯片).doc_第4页
单片机课程设计报告-电子时钟(DS1302芯片).doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告课程名称 单片机课程设计 课题名称 电子时钟(ds1302芯片)专 业 电子信息工程 班 级 学 号 姓 名 指导教师 .目 录1、设计题目及要求12、设计方案12. 1、 ds1302介绍及其特性12. 2、 电路连接12. 3、 ds1302的内部结构12. 4、 单字节数据输入32. 5、 存储器映射表32. 6、 流程图33、程序调试33. 1、 源程序34、总结45. 调试仿真图5- 18 -1设计题目及要求利用单片机芯片,和ds1302芯片,使得数码管7seg-mpx8-ca-blue显示年月日和时间,时间和年月日分开显示,屏幕显示时间。2. 设计方案 2.1 ds1302介绍及其特性ds1302 是美国dallas公司推出的一种高性能、低功耗、带ram的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5v5.5v。采用三线接口与cpu进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或ram数据。ds1302内部有一个318的用于临时性存放数据的ram寄存器。ds1302是ds1202的升级产品,与ds1202兼容,但增加了主电源/后备电源双电源引脚,同时提供了对后备电源进行涓细电流充电的能力。特性: 实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行计数 用于高速数据暂存的 318 ram 2引脚的串行 i/o 2.5-5.5v满度工作范围 用于时钟或ram数据读写的单字节或 多字节数据传送 双电源引脚 可选慢速充电至vcc12.2电路连接:2.3 ds1302的内部结构2.4单字节数据输入:0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 12.5存储器映射表:1时钟/日历存储区(control)命令字节1 0 00111 1/0无效位1:写保护0:可写入2时钟/日历存储区(时分秒)3时钟/日历存储区(日期、星期)2.6 流程图:3. 程序设计 3.1源程序#include#define uchar unsigned char#define uint 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切换闹钟,日期,和周.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,0x7e,0x7e ;/定义时间日期的结构类型struct time uchar second ; uchar minute ; uchar hour ; uchar week ; uchar day ; uchar month ; uchar year ;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-) 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 ; 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 ; if(sda) dat|=0x80 ; sck=1 ; rst=0 ; dat=(dat/16*10)+(dat&0x0f); return dat ;/读取ds1302的时间和日期void read_time() ctime.second = read(0x81); ctime.minute = read(0x83); ctime.hour = read(0x85); ctime.day = read(0x87); ctime.month = read(0x89); ctime.week = read(0x8b); ctime.year = read(0x8d);/设定时间和日期void set_time() if(!flag) write(0x8e,0x00); write(0x80,(ctime.second/10)4|(ctime.second%10); write(0x82,(ctime.minute/10)4|(ctime.minute%10); write(0x84,(ctime.hour/10)4|(ctime.hour%10); write(0x8e,0x80); else write(0x8e,0x00); write(0x86,(ctime.day/10)4|(ctime.day%10); write(0x88,(ctime.month/10)4|(ctime.month%10); write(0x8a,(ctime.week/10)4|(ctime.week%10); write(0x8c,(ctime.year/10)i); p0=disbufi; i+; /3msx8x20,大约480ms从ds1302芯片读取一下时间 if(j=20) j=0 ; refbuf(); if(mod=0) read_time(); 4. 总结: 本

温馨提示

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

评论

0/150

提交评论