当前位置:首页 > 行业资料 > 酒店餐饮 > DS1302定时闹钟课程设计
课程设计报告课程设计名称:单片机课程设计课程设计题目:DS1302实时时钟(3)专业班级:*****姓名:*****学号:*********实验室号:信息楼205/220实验组号:实验时间:(11.7.4-11.7.15)批阅时间:指导教师:成绩:沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日1/221.题目名称DS1302实时时钟(3)2.课设目的1.掌握KEILuV下汇编语言的调试方法2.练习利用单片机小系统板编程实现一些简单功能的方法。3.课设内容1.掌握KEILuV下汇编语言的调试方法2.编写软件(或借鉴网络共享的汇编语言程序)实现功能:由键盘切换显示年,月,日,时,分,秒由键盘设置年,月,日,时,分,秒3.由键盘设置定时时间,当时钟的时间和定时时间相同时,蜂鸣器响5声,数码管闪烁3次沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日2/224.课设方案1、DS1302的结构及工作原理DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V。采用三线接口与CPU进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。DS1302是DS1202的升级产品,与DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。1.1引脚功能及结构图1示出DS1302的引脚排列,其中Vcc1为后备电源,VCC2为主电源。在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0.2V时,Vcc2给DS1302供电。当Vcc2小于Vcc1时,DS1302由Vcc1供电。X1和X2是振荡源,外接32.768kHz晶振。RST是复位/片选线,通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供终止单字节或多字节数据的传送手段。当RST为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。如果在传送过程中RST置为低电平,则会终止此次数据传送,I/O引脚变为高阻态。上电运行时,在Vcc≥2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。I/O为串行数据输入输出端(双向),后面有详细说明。SCLK始终是输入端。1.2DS1302的控制字节DS1302的控制字如图2所示。控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。1.3数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日3/221.4DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表1。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H~FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日4/222、程序设计流程图noyes设置数码管显示和键盘扫描DS1302实时时钟显示While(key==n)n=2n=1n=3显示闹钟时间调节闹钟时间显示日期调节日期闹钟时间到?报警、闪烁调节当前时间沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日5/223、m2t1原理图板号NO.19DS1302接线图沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日6/225.课设总结1、程序清单及注释主函数/***********************************************************************************程序功能:实现DS1302功能并具有整点报时,闹钟功能。CPU:STC12C5608AD晶振:22.1184MHz调用文件:主函数时间:2011年7月10日20:13:41************************************************************************************/#includereg52.h#includeintrins.h#includedelay.h#includeDS1302.h#includeCH451.h#defineucharunsignedchar#defineuintunsignedintvoidmain(){initCH451();iniDS1302();//initimer0();while(1){mode();Timer_approach();Time_adjustment();}}子程序1/*********************************************************************************程序功能:数码管显示和键盘扫描的程序CPU:STC12C5608AD晶振:22.1184MHz调用文件:delay.h函数接口:voidinitCH451(void)//初始化CH451voidCH451_wr(uintadd,uchardat)//写到数码管add位dat数据voidP_Key(void)//检测键盘按键沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日7/22ucharIf_Key_Press(void)//检测后是否已经按下ucharWhich_Key_Press(void)//检测后按了那个键uintaddress(ucharAD)//将地址翻译机器码ucharTrans_Num(uchard8)//将显示位翻译机器码Author:时间:2011年7月11日11:41:************************************************************************************/#includereg52.h#includeintrins.h#includedelay.h#defineucharunsignedchar#defineuintunsignedintsbitCLK=P3^4;sbitDIN=P3^3;sbitLOAD=P2^3;sbitDOUT=P2^2;ucharcodesmg[]={0xBE,0x24,0xEA,0xE6,0x74,0xD6,0xDE,0xA4,0xFE,0xF4,0xFC,0x5E,0x9A,0x6E,0xDA,0xD8,0x01};uintcodeaddr[]={0x0A00,0x0900,0x0B00,0x0800,0x0C00,0x0D00,0x0E00,0x0F00};ucharWKP=0,kp=0;voidclock(void){delay();CLK=0;delay();CLK=1;delay();}voidsetCH451(uintCTRL){uchari;for(i=0;i12;i++){DIN=CTRL&0x01;clock();//判断最低位CTRL=1;//右移之后再判断}DIN=1;LOAD=0;delay();LOAD=1;沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日8/22}voidinitCH451(void){uintini=0x0201,sys=0x0403,CTRL=0x0500;//ini芯片内部复位;sys初始化系统参数;uintss=0x0628;DIN=0;//0x580数码管显示BCD,010110000000B数码管BCD显示代码delay();DIN=1;delay();//初始化,令DIN先置低再置高。setCH451(ini);setCH451(sys);setCH451(CTRL);setCH451(ss);}voidCH451_wr(uintadd,uchardat){uchari;add+=dat;for(i=0;i12;i++){DIN=add&0x01;clock();DIN=1;add=1;}LOAD=0;delay();LOAD=1;}voidP_Key(void){unsignedchari;unsignedcharcommand;//定义命令字,和数据存储器command=0x07;//输入读451命令字LOAD=0;for(i=0;i4;i++){DIN=command&1;//送入最低位CLK=0;command=1;//往右移一位CLK=1;//产生时钟上升沿锁通知CH451输入位数据}LOAD=1;//产生加载上升沿通知CH451处理命令数据沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日9/22kp=0;//清除keycodefor(i=0;i7;i++){kp=1;//数据移入keycode,高位在前,低位在后kp|=DOUT;//从高到低读入451的数据CLK=0;//产生时钟下升沿通知CH451输出下一位CLK=1;}WKP=kp&0x40;WKP=6;kp&=0xBF;}ucharIf_Key_Press(void){returnWKP;}ucharWhich_Key_Press(void){returnkp;}uintaddress(ucharAD){uintret;ret=addr[AD];returnret;}ucharTrans_Num(uchard8){ucharret;ret=smg[d8];returnret;}voidclrD(void)//清屏{uchari;for(i=0;i8;i++)CH451_wr(addr[i],0x00);}沈阳工业大学课程设计报告专业班级:***学号:***姓名:***年月日10/22子程序2:C51COMPILERV9.00DELAY07/12/201111:15:03PAGE1///////////////////////////////////////////////////////////////////////////////////////////////////////////////函数作用:延时函数////晶振:22.1184MHz////接口程序:voidDelay_Ms(unsignedintT)//毫秒延时程序////voiddelayu(unsignedintT)//作者:pandawbp////时间:2011年7月4日13:53:45//////////////////////////////////////////////////////////////////////////////////////////
本文标题:DS1302定时闹钟课程设计
链接地址:https://www.777doc.com/doc-6037820 .html