基于DS12C887的实时日历时钟的设计课程设计任务书 推荐.docx
《基于DS12C887的实时日历时钟的设计课程设计任务书 推荐.docx》由会员分享,可在线阅读,更多相关《基于DS12C887的实时日历时钟的设计课程设计任务书 推荐.docx(39页珍藏版)》请在冰点文库上搜索。
基于DS12C887的实时日历时钟的设计课程设计任务书推荐
中北大学信息商务学院
课程设计任务书
学生姓名:
高升学号:
10050644X20
学院:
信息与通信工程学院
专业:
电子信息工程
题目:
专业综合实践之单片机系统部分:
基于DS12C887的实时日历时钟的设计
王浩全
指导教师:
职称:
教授
2014年1月10日
中北大学信息商务学院
课程设计任务书
2013/2014学年第1学期
学院:
信息与通信工程学院
专业:
电子信息工程
学生姓名:
高升学号:
10050644X20
学生姓名:
穆志森学号:
10050644X26
学生姓名:
康文忠学号:
10050644X46
课程设计题目:
专业综合实践之单片机系统部分
基于DS12C887的实时日历时钟的设计
起迄日期:
2013年12月30日~2014年1月10日
课程设计地点:
5院楼201,510实验室
指导教师:
王浩全
下达任务书日期:
2013年12月30日
课程设计任务书
1.设计目的:
巩固掌握单片机工作原理及应用
提高编程能力
2.设计内容和要求(包括原始数据、技术参数、条件、设计要求等):
掌握单片机89C51的工作原理
掌握用汇编、C或其他语言实现编程
掌握DS12C887时钟芯片
3.设计工作任务及工作量的要求〔包括课程设计计算说明书(论文)、图纸、实物样品等〕:
(1)提供核心器件的工作原理与应用介绍;
(2)提供用Protel设计的电路原理图,印刷板电路图;
(3)提供用Multisim、MaxPlus、Proteus、Medwin、KeilC等软件对电路的仿真、编程与分析;
(4)提供符合规定要求的课程设计说明书;
(5)提供参考文献不少于15篇,且必须是相关的参考文献;
课程设计任务书
4.主要参考文献:
●要求按国标GB7714—87《文后参考文献著录规则》书写,例:
1傅承义,陈运泰,祁贵中.地球物理学基础.北京:
科学出版社,1985
5.设计成果形式及要求:
说明书一份
6.工作计划及进度:
1月7日~1月9日:
查资料;
1月10日~1月14日:
在指导教师指导下设计方案;
1月15日~1月17日:
在指导教师辅导下完成实验;撰写课程设计说明书;
1月18日:
答辩
系主任审查意见:
签字:
年月日
一系统设计的主要内容和设计思路
1.1主要内容
本次的设计题目是电子万年历设计,要求实现年、月、日、时、分、秒的正常显示,需要硬件和软件的结合来实现。
本次设计利用时钟日历芯片DS12887的特性和AT89C51单片机的功能利用实现的。
时钟芯片在电源的作用下向通过P2口向AT89C51单片机输入时间信号,AT89C51单片机在接受到时间信号后通过P0将信号送到单片机另一扩展芯片ULN2003,驱动LED数码管显示,同时将信号通过P1口送往单片机的扩展芯片74LS154,当送出第一个段码时,单片机输出的位码是0001,而经过4-16译码器74LS154后就是1111111111111110,这时就选中了第一个数码管显示;……当送出第十六个段码时,单片机输出的位码是1111,4-16译码器输出0111111111111111,这时就选中了第十六个数码管显示,从而74LS154将接收到的地址信号译码后动态驱动相应的LED,由于LED数码管的公共端由74LS154分时选通,这样,这样任何一个时刻,都只有一位LED在点亮,也即动态扫描显示方式。
根据设计的要求万年历要显示年、月、日、时、分、秒的显示就需要16个显示数码管。
根据设计要求,用按键来实现省电和正常显示的切换,当按键按下时进入省电模式,否则正常显示。
在明确本次设计思路之后,画出设计框图,总体框图如图所示。
图1.1设计总体框图
1.2设计思路
由于系统要实现的功能比较单一(主要就是获取实时时间信息),因此设计思路非常清晰。
1.2.1日历时钟芯片的选择
根据本次题目要求,本次设计选用达拉斯公司的日历时钟芯片DS12C887作为实时时钟芯片,为系统提供详细的年、月、日、星期和小时、分钟等时间信息。
DS12C887实时时钟芯片功能丰富,可以用来直接代替IBMPC上的时钟日历芯片,同时,它的管脚也和MC146818B、DS1287相兼容。
由于DS12C887能够自动产生星期、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决了“千年”问题;对于一天内的时间记录,有12小时制和24小时制两种模式。
在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM供用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。
1.2.2LED简介
LED数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。
图图1.2.1(a)是共阴和共阳极数码管的内部电路图,它们的发光原理是一样的,只是它们的电源极性不同而已。
将多只LED的阴极连在一起即为共阴式,而将多只LED的阳极连在一起即为共阳式。
以共阴式为例,如把阴极接地,在相应段的阳极接上正电源,该段即会发光。
当然,LED的电流通常较小,一般均需在回路中接上限流电阻。
假如我们将"b"和"c"段接上正电源,其它端接地或悬空,那么"b"和"c"段发光,此时,数码管显示将显示数字“1”。
而将"a"、"b"、"d"、"e"和"g"段都接上正电源,其它引脚悬空,此时数码管将显示“2”。
其它数字的显示原理与此类同。
LED的7段数码管利用单只LED组合排列成“8”字型的数码管,分别引出它们的电极,点亮相应的点划来显示出0-9的数字。
在这次的设计中采用的均是共阴极的LED显示,当I/O口输出为高电平的时候,对应段就被点亮。
LED数码管的结构图如图1.2.1(b)所示。
(a)
(b)
图1.2.1LED分类结构图和结构图
这次设计的显示部分采用AT89C51单片机动态扫描完成, 在多数的应用场合中,我们并不希望使用多I/O端口的单片机,原则上是使用尽量少引脚的器件。
在没有富余端口的情况下,应通过优化设计程序和扩展电路达到预期的目的。
动态扫描的频率有一定的要求,频率太低,LED将出现闪烁现象。
如频率太高,由于每个LED点亮的时间太短,LED的亮度太低,肉眼无法看清,所以一般均取几个ms左右为宜,这就要求在编写程序时,选通某一位LED使其点亮并保持一定的时间,程序上常采用的是调用延时子程序。
LED显示电路
(1) 静态显示电路
LDE显示器工作在静态显示时,其公共阳极(或阴极)接VCC(或GND),一直处于显示有效状态,所以每一位的显示内容必须由锁存器加以锁存,显示各位相互独立。
(2)动态显示电路
将所有位的段选线的同名端联在一起,由一个8位I/O口控制,形成段选线的多位复用。
而各位的公共阳极或公共阴极则分别由相应的I/O口线控制,实现各位的分时选通,即同一时刻只有被选通位是能显示相应的字符,而其他所有位都是熄灭的。
由于人眼有视觉暂留现象,只要每位显示间隔足够短,则会造成多位同时点亮的假象。
这就需要单片机不断地对显示进行控制,CPU需要不断地进行显示刷新,动态显示电路参见图1.2.2,图1.2.2中是扩展了五位的LED数码管显示,用一个74LS154作为五个LED的段选输入,采用动态显示的方式连接。
类似地,16位的LED数码管显示也可以用这种方法来实现。
图1.2.2五位LED数码管的动态显示
二硬件电路设计
本设计的硬件电路设计主要是围绕日历时钟芯片DS12C887的使用进行的。
2.1结构框图
本设计的硬件电路包括单片机电路、日历时钟芯片电路和数码管显示输出电路,其结构框图如图1所示。
图2.1系统硬件结构框图
2.2主要器件
本系统的主要器件是单片机,日历时钟芯片以及LED显示驱动芯片。
2.2.1单片机
单片机选用AT89C51单片机。
AT89C51是低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的只读程序存储器(PEROM)和256bytes的随机存取数据存储器(RAM),器件采用高密度、非易失性存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C51单片机适合于许多较为复杂控制应用场合。
AT89C51单片机性能及特点:
(1)与MCS-51微控制器产品系列兼容。
(2)片内有4KB可在线重复编程的快闪擦写存储器(FlashMemory)。
(3)存储器可循环写入/擦除1000次。
(4)存储数据保存时间为10年。
(5)工作电压范围:
Vcc可为2.7V~6V。
(6)全静态工作:
可从0HZ到16MHZ。
(7)程序存储器具有3级加密保护。
(8)128﹡8位内部RAM。
(9)32条可编程I/O线。
(10)两个16位定时器/计数器。
(11)中断结构具有5个中断源和2个优先级。
(12)可编程全双工串行通道。
(13)空闲状态维持低功耗和掉电状态保存存储内容。
逻辑框图及引脚图分别如图2.2(a)(b)所示
(a)(b)
图2.2AT89C51单片机逻辑框图及引脚图
功能特性概述:
AT89C51提供以下标准功能:
8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
AT89C51单片机内部结构框图如图2.3所示。
图2.3AT89C51单片机内部结构框图
引脚功能说明
(1)VCC:
供电电压
(2)GND:
接地
(3)时钟电路
XTAL1(19脚)——芯片内部振荡电路(单级反相放大器)输入端。
XTAL2(18脚)——芯片内部振荡电路(单级反相放大器)输出端。
(4)控制信号
RST(9脚)复位信号:
时钟电路工作后,在此引脚上将出现两个机器周期的高电平,芯片内部进行初始复位,P0口~P3口输出高电平,将初值07H写入堆栈指针。
ALE(30脚)地址锁存信号:
当访问外部存储器时,P0口输出的低8位地址由ALE输出的控制信号锁存到片外地址锁存器,P0口输出地址低8位后,又能与片外存储器之间传送信息。
另外,ALE可驱动4个TTL门。
(29脚)片外程序存储器读选通:
低电平有效,
作为程序存储器的读信号,输出负脉冲,将相应的存储单元的指令读出并送到P0口,
可驱动8个TTL门。
/Vpp(30脚):
当
为高电平且PC值小于0FFFH时,CPU执行内部程序存储器程序;当
为低电平时,CPU仅执行外部程序存储器程序。
(5)I/O接口
P0口(P0.0~P0.7,39~32脚)三态双向口:
P0口结构包括一个输出锁存器、两个三态缓冲器、一个输出驱动电路和一个输出控制端。
P0口做地址/数据复用总线使用。
若从P0口输出地址数据信息,此时控制端为高电平,若从P0口输入数据指令信息时,引脚信号应从输入三态缓冲器进入地址总线,它可驱动8个TTL门。
P0~P3口上的“读-修改-写”功能,其操作是先将字节的全部8位数读入,再通过指令修改某些位,然后将新的数据写回到口锁存器中。
P1口(P1.0~P1.7,1~8脚)准双向口:
P1口做通用I/O接口使用,P1口的每一位口线能独立地作用于输入线,P1口可驱动4个TTL门。
P2口(P2.0~P2.7,21~28脚)通用I/O接口:
它做通用I/O接口使用时,是一个准双向口,此时转换开关MUX倒向左边,输出极与锁存器相连,引脚可作为用户I/O口线使用,输入/输出操作与P1口完全相同,P2口做地址总线使用。
当系统中接有外部存储器时,P2口用于输出高8位地址A8~A15,这时在CPU控制下,转换开关MUX倒向右边,接通内部地址总线。
P2口的口线状态取决于片内输出的地址信息,这些信息来源于PC、DPTR等。
在外接程序存储器中,由于访问外部存储器操作连续不断,P2口不断送出地址高8位。
AT89C51单片机的P2口一般只做地址总线使用,不做I/O接口直接连外部设备使用。
P3口(P3.0~P3.7,10~17脚)双功能口:
P3口做通用I/O接口使用,输出功能控制线为高电平,与非门的输出取决于锁存器的状态,此时锁存器Q端的状态与其引脚状态是一致的。
在这种情况下,P3口的结构和操作与P1口相同。
P3口第二功能是可作为系统具有控制功能的控制线,另外P3口可驱动4个LSTTL门电路。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流,这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口使用如:
P3.0RXD(串行输入口);
P3.1TXD(串行输出口);
P3.2/INT0(外部中断0);
P3.3/INT1(外部中断1);
P3.4T0(记时器0外部输入);
P3.5T1(记时器1外部输入);
P3.6/WR(外部数据存储器写选通);
P3.7/RD(外部数据存储器读选通);
2.2.2日历时钟芯片DS12C887
日历时钟芯片选用DS12C887,其引脚分布如图2.4所示。
图2.4DS12C887引脚分布图
DS12C887的内部结构框图如图2.5所示。
图2.5日历时钟芯片DS12C887内部结构框图
由图2.5可知,DS12C887内部可看成由电源、日历时钟信息、寄存器和存储器,以及总线接口四部分构成,四部分配合工作,共同实现芯片的功能。
DS12C887的具体引脚功能如下:
DS12887内部由振荡电路,分频电路,周期中断/方波选择电路,14字节时钟和控制单元,114字节用户非易失RAM,十进制/二进制累加器,总线接口电路,电源开关写保护单元和内部锂电池等部分组成。
DS12887引脚分配如图2.6所示,各管脚说明如下:
VCC:
直流电源+5V电压。
当5V电压在正常范围内时,数据可读写;当Vcc低于4.25V,读写被禁止,计时功能仍继续;当Vcc下降到3V以下时,RAM和计时器供电被切换到内部锂电池。
MOT(模式选择):
MOT引脚接到Vcc时,选择MOTOROLA时序,当接到GND时,选择Intel时序。
SQW(方波信号输出):
SQW引脚能从实时钟内部15级分频器的13个抽头中选择一个作为输出信号,其输出频率可通过对寄存器A编程改变。
AD0-AD7(双向地址/数据复用线):
总线接口,可与Motorola微机系列和Intel微机系列接口。
AS(地址选通输入):
用于实现信号分离,在AD/ALE的下降沿把地址锁入DS12887。
DS(数据选通或读输入):
DS/RD引脚有两种操作模式,取决于MOT引脚的电平,当使用Motorola时序时,DS是一正脉冲,出现在总线周期的后段,称为数据选通;在读周期,DS指示DS12887驱动双向总线的时刻;在写周期,DS的后沿使DS12887锁存写数据。
选择Intel时序时,DS称作(RD),RD与典型存贮器的允许信号(OE)的定义相同。
R/W(读/写输入):
R/W引脚也有两种操作模式。
选Motorola时序时,R/W是低电平信号时,指示当前周期是读或写周期,DS为高电平时,R/W高电平指示读周期,R/W信号一低电平信号,称为WR。
在此模式下,R/W引脚与通用RAM的写允许信号(WE)的含义相同。
CS(片选输入):
在访问DS12887的总线周期内,片选信号必须保持为低。
IRQ(中断申请输入):
低电平有效,可作微处理的中断输入。
没有中断的条件满足时,IRQ处于高阻态。
IRQ线是漏极开路输入,要求外接上接电阻。
RESET(复位输出):
当该脚保持低电平时间大于200ms,DS12887有效复位。
时间和日历单元
时间和日历信息通过读相应的内存字节来获取,时间和日历通过写相应的内存字节设置或初始化,其字节内容可以是二进制或BCD形式。
时间可选择12小时制或24小时制,当选择12小时制时,小时字节的高门为逻辑“1”代表PM。
时间和日历字节是双缓冲的,总是可访问的。
非易失RAM
在DS1288中,114字节通用非易失RAM不专用一任何特殊功能,它们可被处理器程序用作非易失内存,在更新周期也可访问。
中断
RTC实时时钟加RAM向处理器提供三个独立的,自动的中断源。
定闹中断的发生率可编程,从每秒一次到每天一次,周期性中断的发生率可从500ms到122s选择。
更新结束中断用于向程序指示一个更新周期完成。
中断控制和状态位在寄存器B和C中,本文的其它部分将详细描述每个中断发生条件。
晶振控制位
DS12887出厂时,其内部晶振被关掉,以防止锂电池在芯片装入系统前被消耗,寄存器A的BIT4-BIT6的其它组合都是使用晶振关闭。
更新周期
DS12887每一秒执行一次更新周期,保证时间、日历的准确。
·在DS12C887内有11字节RAM用来存储时间信息,4字节用来存储控制信息,其具体地址及取值如表2.1所列。
表2.1DS12C887的存储功能
地址
功能
取值范围(十进制)
取值范围
二进制
BCD码
0
秒
0~59
00~3B
00~59
1
秒闹铃
0~59
00~3B
00~59
2
分
0~59
00~3B
00~59
3
分闹铃
0~59
00~3B
00~59
4
12小时模式
1~12
01~0CAM
81~8CPM
01~12AM
81~92PM
24小时模式
0~23
00~17
00~23
5
时闹铃,12小时制
1~12
01~0CAM
81~8CPM
01~12AM
81~92PM
时闹铃,24小时制
0~23
00~17
00~23
6
星期(星期日=1)
1~7
01~07
01~07
7
日
1~31
01~1F
01~31
8
月
1~12
01~0C
01~12
9
年
0~99
00~63
00~99
10
控制寄存器A
11
控制寄存器B
12
控制寄存器C
13
控制寄存器D
50
世纪
0~99
NA
19,20
2.2.31602液晶显示屏
下面是1602字符型LCD引脚接口介绍:
图2.61602字符型LCD显示器正反面
1602字符型LCD引脚说明:
第1脚:
VSS为电源地,接GND。
第2脚:
VDD接5V正电源。
第3脚:
VO为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。
第4脚:
RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:
RW为读写信号线,高电平时进行读操作,低电平时进行写操作。
当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:
EN端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:
D0~D7为8位双向数据线。
第15脚:
BLA背光电源正极(+5V)输入引脚。
第16脚:
BLK背光电源负极,接GND。
1602字符型LCD与单片机的连接接口说明如下:
(1)液晶1、2端为电源;15、16端为背光电源。
(2)液晶3端为液晶对比度调节端,通过一个10K电位器接地来调节液晶显示对比度。
首次使用时,在液晶的上电状态下,调节至液晶上面一行显示出黑色小格为止。
(3)液晶4端为向液晶控制器写数据/写命令选择端,接单片机的P2.2口。
(4)液晶5端为读/写选择端只向其写入命令和显示数据。
(5)液晶6端为使能信号,是操作时必须的信号,接单片机的P2.1口。
图2.71602LCD电路图
2.3电路原理图及说明
2.3.1控制电路
图2.8所示为本设计的单片机部分的电路原理图。
图2.8实时日历时钟显示系统单片机部分电路原理图
图2.8中,U1为单片机芯片AT89C51,它工作11.0592MHz时钟。
P0端口用作地址/数据复用总线AD[0~7],和日历时钟芯片相连。
P1端口用作数码管的段码接口,由于本设计的显示不会出现小数点,因此只使用了a、b、c、d、e、f、g,而没有使用dp(小数点)段。
P2端口的P2.7在反相之后为日历时钟芯片提供片选信号,需要反相是因为该片选信号为低电平有效。
单片机的P3.7(/RD)、P3.6(/WR)引脚和日历时钟芯片的读、写引脚直接相连,它们均为低电平有效。
单片机的ALE引脚将和日历时钟芯片的锁存输入引脚直接相连,作为地址锁存,可实现数据和地址线的时分复用。
2.3.2日历时钟电路
日历时钟芯片部分的电路图。
图2.9实时日历时钟显示系统片选及日历时钟芯片部分电路原理图
图2.9中,日历时钟芯片DS12C887,在本设计中,将其MOT引脚接地,选择Intel总线时序模式。
在以Intel总线时序模式工作时,它和51单片机的接口完全兼容,因此将它的地址/数据复用线AD0~AD7、锁存输入ALE、读输入DS、写输入
和51单片机的对应引脚直接相连。
DS12C887的方波输出SQW和中断申请/IRQ在本设计中不使用。
三软件设计
软件设计分两部分:
时钟部分以及显示部分。
3.1时钟部分软件设计
3.1.1DS12C887的内存空间
DS12C887的内存空间共128个字节,其中11个字节专门用于存储时间、星期、日历和闹钟信息;4个字节专门用于控制和存放状态信息;其余113个字节为用户可以使用的普通RAM空间。
图3.1为日历时钟芯片DS12C887的内存空间映射示意图。
图3.1日历时钟芯片DS12C887内存空间映射示意图
地址0x00-0x09共10个寄存器分别存放的是秒、秒闹钟、分钟、分闹钟、小时、时闹钟、星期、日、月和年信息,地址0x32为世纪信息寄存器(解决了“两千年问题”)地址0x0A~0x0D四个寄存器分别为寄存器A、B、C、D,它们用于控制和存放某些状