




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、电子时钟的设计(DS1302) 基于DS1302的数字时钟设计 、设计目的 1、掌握电子时钟的基本工作方式。 2、进一步熟悉DS1302芯片的特性。 3、通过使用各基本指令,进一步熟练掌握单片机的编程和程序调试。 二、设计思路 利用AT89C52的特点及DS1302的特点,设计一种基于DS1302单片机控制, 再利用数码管静态显示的可调可定时数字钟。本系统硬件利用AT89S52作为CPU 进行总体控制,通过DS1302时钟芯片获取准确详细的时间(年、月、日、周、 日、时、分、秒准确时间),对时钟信号进行控制,同时利用数码管对时间进行 准确显示年、月、日、周、日、时、分、秒。 三、设计过程 3.
2、1系统设计结构图 DS130211411电路 M O U 儆 处 J-ill 控 制 数码管靜态显示模块 系统屯源供电电路设计 3电子与信息工程系 2012年6月 图1系统设计结构图 根据系统设计的要求和设计思路,确定该系统的系统设计结构图。如图 示。硬件电路主要由MCU微处理控制器单元、DS1302时钟电路、储存器、复位 电路、晶振电路、数码管显示模块构成。 3.2 MCU微控制器电路 AT89S52f乍为系统的核心控制元件,只有它能正常工作后才能使其它的元件 进入正常工作状态。因此,下面对 AT89S52进行必要的说明,AT89S52的管脚如 图3所示。 DS13C2 -U9 19 iXT
3、ALI XrAL2 R$T PD.O/ADO PD.VADl PQ.2ZAD2 PD.3yyiD3 PD.4/At P0.SZAD5 PD.0/AB 卩 DEAD? 30 51 PSEN ALE P丄皿 P2.2/A10 P2 3.= 采用74HC595芯片驱动数码管,有关74HC芯片的介绍如下: 8位串行输入/输出或者并行输出移位寄存器,具有高阻关断状态。三态。 Q* Of *八乂 1 回sq 丄 刊DS 535 :3 1 OE 1 ! p ST_CP in sH_cp *0| MR 万ar 1、 特点 位串行输入 位串行或并行输出 存储状态寄存器,三种状态 输出寄存器可以直接清除 100M
4、Hz的移位频率 2、输出能力 并行输出,总线驱动 电子时钟的设计(DS1302) 串行输出;标准 中等规模集成电路 3、应用 串行到并行的数据转换 4、描述 595是告诉的硅结构的CMO器件,兼容低电压TTL电路,遵守JEDEC标准。 595是具有8位移位寄存器和一个存储器,三态输出功能。 移位寄存器和存储器是分别的时钟。 数据在SCHcp勺上升沿输入,在STcp的上升沿进入的存储寄存器中去。如果两 个时钟连在一起,则移位寄存器总是比存储寄存器早一个脉冲。 移位寄存器有一个串行移位输入(Ds),和一个串行输出(Q7 ),和一个异步的 低电平复位,存储寄存器有一个并行 8位的,具备三态的总线输出
5、,当使能 0E 时(为低电平),存储寄存器的数据输出到总线。 6参考数据 符号 参数 条件 TYP 单位 HC HCt tP HL/t PLH 传输延时 16 21 Ns SHcp到 Q7 CL=15pF 17 20 Ns STcp 至U Qn Vcc=5V 14 19 Ns MR到 Q7 fmax STcp 至U SHcp 100 MHz 最大时钟速度 57 CL 输入电容 Notes 1 3.5 3.5 pF CPD Po werdiss ip ati on Notes2 115 130 pF cap acita nee per p ackage. 7、CPD决定动态的能耗, PD= CP
6、DX VCC f1 + 刀(CLX VCC2 in . - il Idc - RS . 图5 74HC595电路 3.4实时时钟电路 本设计使用的实时时钟电路芯片是美国 DALLAS公司生产的一种高性能、低 43电子与信息工程系 2012年6月 功耗、带RAM勺实时时钟电路芯片DS1302 VCc为后备电源,VCc2为主电源。在主 电源关闭的情况下,也能保持时钟的连续运行。 DS1302由Vcc1或 Vcc2两者中的较 大 者供电;当 VCc2大于 VCci + 0.2V 时,VCc2给 DS1302供电;当 VCc2小于 VCci时,DS1302 由Vcc1供电。X1和X2是振荡源,外接32
7、.768kHz晶振。RST非是复位/片选线, 通过把RST非输 入驱动置高电平来启动所有的数据传送。 3.5复位电路 在AT89S52单片机中的振荡器运行时,RST非引脚上保持到少2个机器周期 的高电平输入信号,复位过程即可完成。根据此原理,本设计采用上电复位和按 键复位嵌套在系统中,增强了系统的实用性。 3.6 晶振电路 AT89S52在工作时需要外部提供时钟信号,因此,本设计选择在其18脚19 脚之间接上12MHZ的晶振,为单片机提供1uS勺机器振荡周期。其电路连接图如 图所示。在图中,电容器C3 C4起稳定振荡频率、快速起振的作用,其电容值 一般在2050pF。 四、系统调试与结果 4.
8、1系统调试过程 用Proteus画仿真电路后,将程序烧入芯片中起初出现乱码及按键功能混乱等错 误,之后经过多次调整程序并解决了问题成功仿真。 4.2系统调试结果 日期 时向 擁月 Hpi - - - -:- iiHniNRiiiiP - - imiii训 - IIiirui *暑吋迂秒 III=+ 时 JIJnIII . . Illlilll 二星輛B二醪 .to- ml - HI 屮屮 1甲1111屮 Ilf iinyiiKpi I f【目 f 呷 111 f III IfHEifiiii F - IWIIIIII IIUWIlimi llllbllll HIMU IIHIII llllll
9、l I1HIII Him 图8调试结果 2 3 4 陈明萤编著8051单片机课程设计实训教材 清华大学出版社2004 康华光 编著 模拟电子技术基础(第五版) 高等教育出版社2006 五、主要元器件与设备 Protues软件、AT89C512芯片、DS1302芯片、74HC595芯片及各电路模块 六、课程设计体会 本设计利用单片机 AT89C512控制串行实时时钟芯 DS1302构成数字时钟电 路,实现计时功能。该电路使用简单的三线接口,为单片机节省大量的接口资源, 时钟芯片带有后备电池。该时钟功能强大,性能优越,能为很多领域,特别是对 时钟工作的准确性和可靠性有较高要求。 通过对电子时钟的设
10、计的设计与制作,让我了解了电子时钟模块的编程思 想,也让我明白了电子时钟的基本原理与设计理念, 要设计一个电路必须先编好 程序,用仿真软件测试成功后再得出结论。 通过这次学习,让我对该软件有了更 熟悉的了解,我们应该自己动手,实际操作,才会有更深刻的理解。 经过这次设计我学到很多很多的的东西, 不仅巩固了以前所学过的知识,而 且通过这次课程设计使我懂得了理论与实际相结合的重要性,同时也提高了自己 的实际动手能力和独立思考的能力。最后感谢老师的授课和教导! 七、参考文献 1张义和.例说51单片机M.北京:人民邮电出版社,2010年 阎石编著 数字电子技术基础(第五版)北京高等教育出版社 2006
11、.1 550 蔡明文 冯先成主编单片机课程设计华中科技大学出版社2007.3 (第一版)航空航天大学出版 6 黄智伟 编著 全国大学生电子设计竞赛电路 社 2006.36 附录 源程序代码: #in clude #i ncludevi ntri ns.h / #defi ne uint un sig ned int #defi ne uchar un sig ned char / /*uchar code table=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8, 0 x80,0 x98,0 x88,0 x83,0 xc6,0 xa1,0 x8
12、6,0 x8e;/共阳极数码管代码 */ uchar code xin gqi8=0 x00,0 x07,0 x01,0 x02,0 x03,0 x04,0 x05,0 x06; /星期显示代码 uchar miao,shi,fe n,date,m on th,day,year,year10,set,m un ,set_shi,set_fe n,time _flag;/全局定义 uint year_data,t; / /DS1302通讯线定义 sbit SCLK= P3A5; sbit DI0=P3A6; sbit RST=P3A7; sbit sp eak=卩0八0; / sbit DS=P
13、SO; sbit SH_C P=P 2八1; sbit ST_C P1=P 2八2; sbit ST_C P2=P 2八3; sbit ST_C P3=P2A4; sbit ST_C P4=P 2八5; sbit ST_C P5=P2A6; sbit ST_C P6=P 2八7; sbit ST_C P7=P 39; sbit ST_C P8=P 3八1; 串行数据输入 /移位时钟脉冲端口 /锁存端口 / 并行输出控制位 sbit OE1= PIP; sbit OE2=PIM; sbit 0E3=P 1八2; sbit OE4=P1A3; sbit 0E5=P 1八4; sbit 0E6=P1
14、A5; sbit 0E7=P1A6; sbit 0E8=P1A7; 按键接口定义 sbit K1= P3A2;/ sbit K2=P3A3; sbit K3=P3M; sbit K4=POM; sbit K5=PO 八2; / void write_595(uchar temp) uchar i; /写74HC595-个字节 /移8位输入一个字节 /? for(i=0;i8;i+) SH_C P=O; _nop_();_nop_();_nop_(); if(te mp else DS=0; _nop_();_nop_();_nop_(); SH_CP=1;/产生一个时钟上升沿,使数据移位 te
15、mp0;x-) for(y=112;y0;y-); /Nms 延时 / void dela ynus(uint z) uint x,y; for(x=z;x0;x-) for(y=10;y0;y-); /ums 延时 / void write(uchar date) uchar i; RST=1; SCLK=0; for(i=0;i=1; / 写入DS1302-个字节 / / 读出DS1302-个字节 uchar read() uchar a,te mp; RST=1; for(a=8;a0;a-) temp =1; SCLK=1; _nop_(); _nop_(); _nop_(); _no
16、p_(); _nop_(); _nop_(); _nop_(); SCLK=0; if(DIO) temp=temp| 0 x80; else temp=temp| 0 x00; return (tem p); / 写DS1302数据 void write_1302(uchar add,uchar dat) / RST=0; SCLK=0; RST=1; write(add); write(dat); SCLK=1; RST=0; / / 读 DS1302数据 uchar read_1302(uchar add) uchar temp; RST=0; SCLK=0; RST=1; write(
17、add); temp=read(); SCLK=1; RST=0; return(tem p); / void dis playO miao=read_1302(0 x81); fen=read_1302(0 x83); shi=read_1302(0 x85) date=read_1302(0 x87); mon th=read_1302(0 x89); year=read_1302(0 x8d); day=read_1302(0 x8B); / / / / / / / / 显示子程序 读秒 读分 读时 读日 读月 读年 读星期 write_595(miao); ST_C P1=0; ST_
18、C P1=1; ST_C P1=0; delay nu s(10); 显示秒 / / 数据被传入存储寄存器 write_595(fe n); ST_C P2=0; ST_CP2=1; ST_C P2=0; delay nus(10); / 显示分 write_595(shi); ST_CP 3=0; ST_CP 3=1; ST_CP 3=0; delay nus(10); / 显示时 write_595(date); / 显示日 ST_C P4=0; ST_C P4=1; ST_C P4=0; delay nus(10); write_595(m on th); ST_C P5=0; ST_C
19、P 5=1; ST_C P5=0; delay nu s(10); / 显示月 write_595(year); ST_C P6=0; ST_CP6=1; ST_C P6=0; delay nu s(10); / 显示年 write_595(xi ngqiday); ST_C P7=0; ST_C P7=1; ST_C P7=0; delay nu s(10); / 显示星期 / void ds1302_i nit() RST=0; SCLK=0; /*write_1302(0 x80,0 x00);/ write_1302(0 x82,0 x00);/ write_1302(0 x84,0
20、x00);/ /1302 初始化 设置初始SEC 我就不设初始值了 设置初始 设置初始 MIN HR write_1302(0 x86,0 x00);/ write_1302(0 x88,0 x00);/ write_1302(0 x8A,0 x00);/ write_1302(0 x8C,0 x00);/ / 设置初始 设置初始 设置初始 设置初始值YEAR */ DATE MONTH DAY void P ORT_INIT() P 0=0XFE; / 端口初始化 P 1=0X00; P 2=0X00; P 3=0XFC; void time_i ni t() TMOD=0 x11; TH0
21、=(65536-50000)/256; TL0=(65536-50000)%256; TH1=(65536-10000)/256; TL1=(65536-10000)%256; P T0=1; EA=1 ; ET0=1; ET1=1; TR0=1; TR1=1; / / / / / / / / 定时器初始化 / / 设置定时器01都为工作方式1 装入初值 装入初值 /T0定时器优先级最高 开总中断 开定时器0中断 开定时器1中断 启动定时器0 启动定时器1 void main (void) / 主程序 P ORT_INIT(); ds1302_i nit(); timeni t(); / 初始
22、化 year=read_1302(0 x8d); year_data=0 x2000|year; 年,就这么设计吧 /读年数据 / 取 20 /至少我活不到3000 write_595(year_data8); / ST_C P8=0; ST_C P8=1; ST_C P8=0; 显示年的20字样 set_shi=0 x08; set_fe n=0 x00; time_flag=0; set=0; while(1) / / 闹钟初始值设定 标志位 switch(set) case 0: / 设置秒 /闹钟设定 dis playO;/ 显示 if(shi=set_shi) if(K2=0) ti
23、me_flag=1; delay(10); break; if(fen=set_fe n+1) 一分钟后自动停止闹钟 P0 time_flag=0; / 当不按下闹钟停止按键, /- void time0() interrupt 1 TR0=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; mun+; if(mun=15) mun=0; switch(set) / 定时器0中断 case 1: / 设置秒闪烁 0E1=1; delay(300); OE1=0; break; case 2: OE2=1; delay(300); OE2=0; br
24、eak; / 设置分闪烁 case 3: OE3=1; delay(300); OE3=0; break; / 设置时闪烁 case 4: OE4=1; delay(300); OE4=0; break; / 设置日闪烁 case 5: OE5=1; delay(300); OE5=0; break; / 设置月闪烁 case 6: OE6=1; OE8=1; delay(300); OE6=0; OE8=0; break; / 设置年闪烁 case 7: / 设置星期闪烁 0E7=1; delay(200); OE7=0; break; case 8: OE2=1; OE3=1; delay
25、(200); OE2=0; OE3=0; break; / 设置闹钟闪烁 / TR0=1; / void time1() interrupt 3 TR1=0;/ TH1=(65536-20000)/256; TL1=(65536-20000)%256; / 定时器1中断 先关定时器 if(K1=0) delay(10); if(K1=0) set+; if(set=9) set=0; write_1302(0 x80,miao); / 设置初始值 SEC write_1302(0 x82,fe n); / 设置初始值 MIN write_1302(0 x84,shi); / 设置初始值 HR
26、write_1302(0 x86,date); / 设置初始值 DATE write_1302(0 x88,mo nth); / 设置初始值 MONTH write_1302(0 x8A,day); / 设置初始值 DAY write_1302(0 x8C,year_data); / 设置初始值 YEAR t=50000; while(!K1) if(K2=0) delay(10); if(K2=0) switch(set) case 1: miao+; if(miao mia o if(miao=0 x60) miao=0 x00; write_595(miao); ST_C P1=0; S
27、T_C P1=1; ST_C P1=0; break; case 2: fen+; if(fe n fen if(fen=0 x60) fen=0 x00; write_595(fe n); ST_C P2=0; ST_C P2=1; ST_C P2=0; break; case 3: shi+; if(shi Shi if(shi=0 x24) shi=0 x00; /24 小时制 write_595(shi); ST_C P3=0; ST_C P3=1; ST_C P3=0; break; / 显示时 case 4: date+; if(date date if(date=0 x32) e
28、lse if(date=0 x31) else if(date=0 x29) else if(date=0 x30) write_595(date); ST_C P4=0; ST_C P4=1; ST_C P4=0; break; case 5: mon th+; if(mo nth mon th if(mon th=0 x13) mo nth=OxO1; write_595(m on th); ST_C P5=0; ST_C P5=1; ST_C P5=0; break; case 6: /十进制 year_data+; if(year_data year_data if(year_data
29、 / 前进1 year_data / 面尾数归0 write_595(year_data); ST_C P6=0; ST_C P6=1; ST_C P6=0; write_595(year_data8); ST_C P8=0; ST_C P8=1; ST_C P8=0; break; case 7: day+; if(day write_595(xi ngqiday); ST_C P7=0; ST_C P7=1; ST_C P7=0; break; t=50000; / 0, while(!K2) if(K3=0) delay(10); if(K3=0) switch(set) case 1:
30、 miao-; if(miao /减到0后,再减一次就归 减一次就为59 if(miao=0 xF9) /当全部减到00时,再 miao=0 x59; write_595(miao); ST_C P1=0; ST_C P1=1; ST_C P1=0; break; case 2: fen-; if(fe n if(fen=0 xF9) fen=0 x59; write_595(fe n); ST_C P2=0; ST_C P2=1; ST_C P2=0; break; case 3: shi-; if(shi if(shi=0 xF9) shi=0 x23; /24 小时制 write_595(shi); ST_C P3=0; ST_C P3=1; ST_C P3=0; break; / 显示时 case 4: date-; if(date if(date=0 x00) else if(date=0 x00) else if(date=0 x00) else if(date=0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年xx村集体经济分红会议记录
- 《全面掌握教学》课件
- 内蒙古准格尔旗高中数学 第三章 概率 3.1.4 概率的加法公式教学设计 新人教B版必修3
- 吉林科技职业技术学院《人体机能学》2023-2024学年第二学期期末试卷
- 山西工学院《Programming2》2023-2024学年第二学期期末试卷
- 辽宁机电职业技术学院《伴奏与弹唱》2023-2024学年第一学期期末试卷
- 茅台学院《金工手作基础工艺》2023-2024学年第二学期期末试卷
- 可克达拉职业技术学院《儿童文学素养》2023-2024学年第二学期期末试卷
- 商洛职业技术学院《危重病医学》2023-2024学年第一学期期末试卷
- 江西省赣州市会昌中学2025年高三高考最后一次模拟考试英语试题含解析
- 历代书法名作赏析课件
- 质量整改通知单(样板)
- 装配作业指导书
- 建设工程成本计划与控制课件(原)
- IPC-A-610国际标准中英文对照(doc 17)
- 《陕文投应聘表格》word版
- 建设工程围挡标准化管理图集(2022年版)
- (完整word版)中小学教育质量综合评价指标框架(试行)
- 《新概念英语》第一册单词表
- 半泽直树日语字幕台词(一)
- 拌和站地基承载力及抗倾覆计算书
评论
0/150
提交评论