数字时钟设计报告.doc

上传人:土8路 文档编号:10397316 上传时间:2021-05-14 格式:DOC 页数:18 大小:725KB
返回 下载 相关 举报
数字时钟设计报告.doc_第1页
第1页 / 共18页
数字时钟设计报告.doc_第2页
第2页 / 共18页
数字时钟设计报告.doc_第3页
第3页 / 共18页
数字时钟设计报告.doc_第4页
第4页 / 共18页
数字时钟设计报告.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《数字时钟设计报告.doc》由会员分享,可在线阅读,更多相关《数字时钟设计报告.doc(18页珍藏版)》请在三一文库上搜索。

1、数字时钟设计报告XX工程学院班级姓名一、设计电路21、设计要求22、设计目的2二、设计原理21、设计模块图22、振荡器(DS18B20)33、单片机AT89C514三、原理图71、核心原理图72、数码管显示模块73、电源模块74、按键模块8四、PCB图8五、程序9六、实物展示151、完成品152、接电展示15七、元器件清单16八、总结16一、设计电路1、 设计要求1)、时间以二十四小时为周期。2)、能够显示时、分。3)、有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间。4)、为了保证计时的稳定及准确须由晶体振荡器提供表针时间基准信号。2、设计目的1)、在学完了电子设计与制作课程的基

2、本理论,基本知识后,能够综合运用所学理论知识、拓宽知识面,系统地进行电子电路的工程实践训练,锻炼动手能力,培养工程师的基本技能,提高分析问题和解决问题的能力。2)、熟悉集成电路的引脚安排,掌握各芯片的逻辑功能及使用方法了解面包板结构及其接线方法,了解数字钟的组成及工作原理3)、培养独立思考、独立准备资料、独立设计规定功能的数字系统的能力。4)、培养书写综合设计实验报告的能力二、设计原理1、 设计模块图2、 振荡器(DS18B20)1)、 DS1302 简介:DS1302是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,附加31字节静态RAM,采用SPI三线接口与CPU进行同步通信,

3、并可采用突发方式一次传送多个字节的时钟信号和RAM数据。实时时钟可提供秒、分、时、日、星期、月和年,一个月小与31天时可以自动调整,且具有闰年补偿功能。工作电压宽达2.55.5V。采用双电源供电(主电源和备用电源),可设置备用电源充电方式,提供了对后背电源进行涓细电流充电的能力。DS1302的外部引脚分配如图2及内部结构如图3所示。DS1302用于数据记录,特别是对某些具有特殊意义的数据点的记录上,能实现数据与出现该数据的时间同时记录,因此广泛应用于测量系统中。 图2 DS1302的外部引脚分配 图3 DS1302的内部结构各引脚的功能为:Vcc1:主电源;Vcc2:备份电源。当Vcc2Vcc

4、1+0.2V时,由Vcc2向DS1302供电,当Vcc2 Vcc1时,由Vcc1向DS1302供电。SCLK:串行时钟,输入,控制数据的输入与输出;I/O:三线接口时的双向数据线;CE:输入信号,在读、写数据期间,必须为高。该引脚有两个功能:第一,CE开始控制字访问移位寄存器的控制逻辑;其次,CE提供结束单字节或多字节数据传输的方法。DS1302有下列几组寄存器: DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h8Dh,写时80h8Ch),存放的数据格式为BCD码形式,小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是24小时模式。当为高时

5、,选择12小时模式。在12小时模式时,位5是,当为1时,表示PM。在24小时模式时,位5是第二个10小时位。秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。在任何的对时钟和RAM的写操作之前,WP位必须为0。当WP位为1时,写保护位防止对任一寄存器的写操作。DS1302有关RAM的地址DS1302的工作模式寄存器所谓突发模式是指一次传送多个字节的时钟信号和RAM数据。突发模式寄存器如图4所示。图4此外,DS1302还有充电

6、寄存器等。读写时序说明:DS1302是SPI总线驱动方式。它不仅要向寄存器写入控制字,还需要读取相应寄存器的数据。要想与DS1302通信,首先要先了解DS1302的控制字。DS1302的控制字如图6。图5 控制字(即地址及命令字节)控制字的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。位6:如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1(A4A0):指示操作单元的地址;位0(最低有效位):如为0,表示要进行写操作,为1表示进行读操作。控制字总是从最低位开始输出。在控制字指令输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输

7、入从最低位(0位)开始。同样,在紧跟8位的控制字指令后的下一个SCLK脉冲的下降沿,读出DS1302的数据,读出的数据也是从最低位到最高位。3、 单片机AT89C51AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4k bytes的可反复擦写的只读程序存储器(PEROM)和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大AT89C51单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。功能特性概述:A

8、T89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个IO 口线,两个16位定时计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。引脚功能说明:1、Vcc:电源电压2、GND:地3、P0 口:P0 口是一组8 位漏极开路型双向IO 口,也即地址数据总线复用口。作为输出口用时,每位能

9、吸收电流的方式驱动8个TTL逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在FIash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。4、P1口:P1是一个带内部上拉电阻的8位双向IO口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。FIash编程和程序校验期间,P1接收低8位地

10、址。5、P2口:P2是一个带有内部上拉电阻的8位双向IO口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8 位地址的外部数据存储器(如执行MOVXRI 指令)时,P2 口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。Flash编程或校验时,P2亦接收高位地址和其它控制信

11、号。6、P3口:P3口是一组带有内部上拉电阻的8 位双向IO 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个TTL逻辑门电路。对P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的P3 口将用上拉电阻输出电流(IIL)。P3口除了作为一般的IO口线外,更重要的用途是它的第二功能,如下表所示:图6P3口还接收一些用于Flash闪速存储器编程和程序校验的控制信号。7、RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。8、ALEPROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位

12、字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的l6 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的DO 位置位,可禁止ALE 操作。该位置位后,只有一条MOVX和MOVC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。9、PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89C51 由外部程序存储器取指令(或数据)时,每个机器周期两

13、次PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。10、EAVPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。11、XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。12、XTAL2:振荡器反相放大器的输出端。图7 AT89C51引脚图三、原

14、理图1、 核心原理图图8 核心原理图2、 数码管显示模块图9 数码管显示模块3、 电源模块图9 电源模块4、 按键模块 图10 按键模块四、PCB图图11 PCB封装图五、程序/* ds1302实时时钟C程序 */*/#include #include #include #include #define uchar unsigned charsbit CLK = P31; /*实时时钟时钟线引脚 */sbit IO = P32; /*实时时钟数据线引脚 */sbit RST = P33; /*实时时钟复位线引脚 */*/sbit hu =P20;sbit hd =P22;sbit mu =P2

15、1;sbit md =P23;sbit com1=P24;sbit com2=P25;sbit com3=P26;sbit com4=P27;uchar flag=0,ss,timecount=0;char a=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void Set_id(unsigned char sel,unsigned char sel_1) ;void id_case1_key(void);uchar min=0,hou=0,sec=0,lastsec=0,mflag=0;inttoBCD(unsigned char t);

16、/*/delay(unsigned int n) unsigned int i=0; for(i=0;in;i+);void Write_DS_Byte(unsigned char DS_Byte) unsigned char i=0; for(i=0;i1); void Write_DS1302(unsigned char DS_Addr,unsigned char DS_Data) RST=0; CLK=0; RST=1; Write_DS_Byte(DS_Addr); Write_DS_Byte(DS_Data); CLK=1; RST=0;unsigned char Read_DS_B

17、yte() /只负责8位数据的位移读取 unsigned char i=0; unsigned char ClockValue=0; IO=1; CLK=0; for(i=0;i1); if(IO=1) ClockValue=(ClockValue|0x80); CLK=1; delay(1); CLK=0; return (ClockValue);unsigned char ReadTimeValue(unsigned char DS_Addr) /读指定地址的寄存器数据 unsigned char Value; RST=0; CLK=0; RST=1; Write_DS_Byte(DS_A

18、ddr); IO=0; Value=Read_DS_Byte(); CLK=1; RST=0; return(Value);BCDtoint(unsigned char t) unsigned char s,h; s=(t&0x70)4; h=t&0x0f; s=s*10+h; return s;/*/ void display(void) sec= BCDtoint(ReadTimeValue(0x81); hou=BCDtoint(ReadTimeValue(0x85); min=BCDtoint(ReadTimeValue(0x83); if(hou=23)&(min=59)&(sec=

19、10) sec=sec+0x04; Write_DS1302(0x8e,0x00); Write_DS1302(0x80,inttoBCD(sec); /调整秒 Write_DS1302(0x8e,0x80); /min=12; if(!flag) com1=1;com2=1;com3=1; com4=1;P0=0x80;delay(80); com1=1;com2=1; com4=0;com3=0;P0=0x7f;delay(80); com1=0;com2=1;com3=1;com4=1;P0=ahou/10|0x80;delay(200); com1=1;com2=0;com3=1;co

20、m4=1;P0=ahou%10|0x80;delay(200); com1=1;com2=1;com3=0;com4=1; P0=amin/10|0x80; delay(200); com1=1;com2=1;com3=1;com4=0; P0=amin%10|0x80; delay(200); /*/inttoBCD(unsigned char t)unsigned char s,g;s=t/10;s=s=t)time=0; else if(time100)&flag)ss=0;flag=0; if(timecount19) timecount=0; flag=flag; /*/main()

21、 EA=1; ET0=1; TMOD=0x01; TH0=(65535-50000)/256; TL0=(65535-50000)%256; TR0=1; Init1302(); while(1) display(); Scan_Key(); 六、实物展示1、 完成品 图12图132、接电展示图14 接电实际展示七、元器件清单八、总结通过对数字时钟的设计和制作,我觉得自己学习到了很多,我对数字时钟的结构与原理有了很好的理解,知道了AT89C51,DS18B20等芯片的基本应用和原理,并能进行一些简单的使用。加深了对数字电路的认识和理解,能将过去学到的理论知识进行运用。再次,加强了对PROTEL 等软件的应用。在导入PCB板时遇到了问题。就是双面布线的时候,元器件会产生错误(元器件变绿)。通过同学和老师的讲解,把PCB设置DesignOptionsSystem中的DRC Errors 选项勾去掉即可。还有一种方法,是ToolsDesign rule checkOn-line 中的Component Clearance勾去掉,然后再次点ToolsReset Error Markers就可以解决这个问题。在焊接电路板过程中,加强了对贴片焊接技术,以及加强我的细心和耐心。电路板焊接要求很高,不能出错。这点很重要。因为贴片焊接查错的话会非常不方便。所以最好是一步到位。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1