基于单片机和DS1302电子万年历的方案设计书

上传人:新** 文档编号:432048141 上传时间:2023-12-03 格式:DOC 页数:26 大小:547.04KB
返回 下载 相关 举报
基于单片机和DS1302电子万年历的方案设计书_第1页
第1页 / 共26页
基于单片机和DS1302电子万年历的方案设计书_第2页
第2页 / 共26页
基于单片机和DS1302电子万年历的方案设计书_第3页
第3页 / 共26页
基于单片机和DS1302电子万年历的方案设计书_第4页
第4页 / 共26页
基于单片机和DS1302电子万年历的方案设计书_第5页
第5页 / 共26页
点击查看更多>>
资源描述

《基于单片机和DS1302电子万年历的方案设计书》由会员分享,可在线阅读,更多相关《基于单片机和DS1302电子万年历的方案设计书(26页珍藏版)》请在金锄头文库上搜索。

1、基于单片机和DS1302电子万年历的方案设计书(1) 时钟芯片DS1302的工作原理: DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图所示。为DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。表6为DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位

2、,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP为1时,写保护位防止对任一寄存器的写操作。(2) DS1302的控制字节DS1302的控制字如表-1所示。控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中,位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出表-1 DS1302的控制字格式 RAM RD 1 A4 A3

3、A2 A1 A0 / CK /WR(3) 数据输入输出(I/O) 在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始.同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图1所示 图1 DS1302读/写时序图(4) DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表-2。表-2 DS1302的日历、时间寄存器 写寄存器读寄存器Bit7Bit6Bit5Bit4Bit3Bit2Bit1Bit08

4、0H81HCH10秒秒82H83H10分分84H85H12/010时时/PM86H87H0010日日88H89H00010月月8AH8BH00000星期8CH8DH10 年年8EH8FHWP0000000此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等.时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的

5、31个字节,命令控制字为FEH(写)、FFH(读). 2 方案论证与设计2.1控制器部分方案设计硬件控制电路主要用了AT89C52芯片处理器、1602LCD显示器、DS1302实时时钟、DB18B20温度传感器。根据各自芯片的功能互相连接成电子万年历的控制电路。软件控制程序主要有主控程序、电子万年历的时间控制程序、时间显示及温度显示程序等组成.设计框图如图2。1所示AT89C52主控模块1602液晶显示DS1302时钟电路独立键盘电路DS18B20实时环境温度采集电路蜂鸣器图2.1 框图设计2。2 显示部分的方案论证方案一:采用8段数码管虽经济实惠,但操作比液晶显示来说略显繁琐。方案二:液晶显

6、示方式。液晶显示效果出众,可以运用菜单项来方便操作,比较简单,所以,最后选择液晶显示方案。显示电路图如图2.2所示.图2。2 液晶显示电路2。3 实时时钟电路设计 图2。3是 DS1302与单片机的连接,其中Vcc1为后备电源,Vcc2为主电源.在主电源关闭的情况下,也能保持时钟的连续运行。DS1302由Vcc1或Vcc2两者中的较大者供电。当Vcc2大于Vcc1+0。2V时,Vcc2给DS1302供电.当Vcc2小于Vcc1时,DS1302由Vcc1供电.X1和X2是振荡源,外接32。768KHz晶振。图2.3 DS1302时钟电路2。4 温度采集模块设计如图2。4所示,采用数字式温度传感器

7、DS18B20,它是数字式温度传感器,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,使用P3。7与DS18B20的I/O口连接加一个上拉电阻,Vcc接电源,Vss接地。图2.4 DS18B20温度采集模块2.5 功能按钮设计当按钮被按下时,该按钮对应的I/O口被拉为低电平,松开时按钮对应的I/O口由内部的上拉电阻将该I/O拉为高电平,如图2.5所示:图2.5 键盘电路设计2。6 总体电路图3 软件设计流程3.1 系统总流程图 系统总体流程图如图3.1所示,系统流程图设计分析如下:首系统初始化,系统运行,当有设置键按下时进入时间修改模式,无按键按下时读取时间温度等数据

8、送入显示器显示。在时间修改模式下设置时间完成后再将时间送入显示器显示。图3。1 系统流程图3.2 温度程序流程图 温度读取程序流程图如图3。2所示。流程图分析:开始进入初始化DS18B20,就是通过主机拉低单线产生复位脉冲然后释放总线,如果有应答就发起ROM命令,当成功执行操作命令后,就使用温度转换,当温度转换完成后又初始化DS18B20是否有应答脉冲,若有就发起读暂存器和CRC命令,同时读出第一第二字节即温度数据。 图3。2 温度读取程序流程图3。3 DS1302时钟程序流程图 时钟流程图如图3。3所示,流程图分析:DS1302开始计时时,首先进行初始化,当有中断信号时,读取时钟芯片的时间数

9、据送入液晶显示。这时若有设置键按下,进行时间修改,完成后将时间数据送入1302芯片,若没有按键按下,直接送入EPROM中,送入液晶显示.图3.3 时钟程序流程图DS1302时钟部分子程序void write_byte(uchar dat)/写一个字节ACC=dat。RST=1。for(a=8。a0。a-) IO=ACC0。 SCLK=0。 /产生上升沿写入数据,从低位写入 SCLK=1。 ACC=ACC1.uchar read_byte()/读一个字节RST=1。for(a=8.a0。a-) ACC7=IO。 SCLK=1。 /产生下降沿输出数据,先输出低位,保存到ACC中 SCLK=0. A

10、CC=ACC1。return (ACC).void write_1302(uchar add,uchar dat)/向1302芯片写函数,指定写入地址,数据RST=0.SCLK=0。RST=1.write_byte(add)。write_byte(dat)。SCLK=1。RST=0。uchar read_1302(uchar add)/从1302读数据函数,指定读取数据来源地址uchar temp。RST=0。SCLK=0。RST=1。write_byte(add).temp=read_byte()。SCLK=1。RST=0。return(temp)。uchar BCD_Decimal(uch

11、ar bcd)/BCD码转十进制函数,输入BCD,返回十进制uchar Decimal。Decimal=bcd4。return(Decimal=Decimal10+(bcd=0x0F))。void ds1302_init() /1302芯片初始化子函数(2012-06-18,12:00:00,week7)RST=0。SCLK=0.write_1302(0x8e,0x00)。 /允许写,禁止写保护 write_1302(0x80,0x00)。 /向DS1302内写秒寄存器80H写入初始秒数据00write_1302(0x82,0x00)。/向DS1302内写分寄存器82H写入初始分数据00wri

12、te_1302(0x84,0x12)。/向DS1302内写小时寄存器84H写入初始小时数据12write_1302(0x8a,0x07)./向DS1302内写周寄存器8aH写入初始周数据4write_1302(0x86,0x17)。/向DS1302内写日期寄存器86H写入初始日期数据18write_1302(0x88,0x06)。/向DS1302内写月份寄存器88H写入初始月份数据06write_1302(0x8c,0x12)。/向DS1302内写年份寄存器8cH写入初始年份数据12write_1302(0x8e,0x80)。 /打开写保护3。4 LCD显示程序流程图显示流程图如图3。4所示,

13、流程图分析如下:首先对1602显示屏进行初始化(初始化大约持续10ms),然后检查忙信号,若BF=0,则获得显示RAM地址,写入相应的数据显示.若BF=1,则代表模块正在进行内部操作,不接受任何外部指令和数据,直到BF=0为止。图3.4 LCD显示程序流程图4 万年历的仿真与调试结果上电后的显示 秒调节 功能按键,自上而下功能依次为调节按键、加按键、减按键5 心得体会本次设计是我们遇到过的较大的设计,所以遇到的问题也比较的多,尤其是以前没有接触过如此复杂的硬件电路以及软件编程,在软、硬件设计和调试中遇到了不少的困难,在同学的帮助才逐一克服了难题,学习到了不少的专业知识。在整个设计过程之前,我已经在网上找了相关方面的资料,万事开始难,一开始不知道从哪里下手。后来慢慢学会分析系统,将系统模块化,各个模块可以在软件或者硬件上实现。在确保各个模块的硬件电路和与之相搭配的程序能够正常工作后在把它们组成一个系统.在今后的日子里,我会进一步加强自己的动手能力,丰富自己的知识面。参考文献1 李朝青。单片机原理及接口技术M,北京:北京航天航空大学出版社,20052 李广弟.单片机基础M,北京:北京航空航天大学出版社,20003 万光毅.单片机实验与实践教程M,北京:北京航空航天大学出版社,20034 唐亚平、李移伦。单片机原理实训与学习指导M,长沙:

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

当前位置:首页 > 建筑/环境 > 施工组织

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