一、课程设计要求
二、方案印证
2.1数字时钟方案
数字时钟是本设计的最主要的部分。
根据需要,可利用两种方案实现。
方案一:本方案采用Dallas公司的专用时钟芯片DS12887A。
该芯片内部采用石英晶体振荡器,其芯片精度不大于10ms/年,且具有完备的时钟闹钟功能,因此,可直接对其以用于显示或设置,使得软件编程相对简单。
为保证时钟在电网电压不足或突然掉电等突发情况下仍能正常工作,芯片内部包含锂电池。
当电网电压不足或突然掉电时,系统自动转换到内部锂电池供电系统。
而且即使系统不上电,程序不执行时,锂电池也能保证芯片的正常运行,以备随时提供正确的时间。
方案二:本方案完全用软件实现数字时钟。
原理为:在单片机内部存储器设三个字节分别存放时钟的时、分、秒信息。
利用定时器和软件结合实现1秒定时中断,每产生一次中断,存储器内相应的秒值加1;若秒值达到60,则将其清零,并将相应的分字节值加1;若分值达到60,则清零分字节,并将时字节值加1;若时值达到24,则将十字节清零。
该方案具有硬件电路简单的特点。
但由于每次执行程序时,定时器都要重新赋初值,所以该时钟精度不高。
而且,由于是软件实现,当单片机不上电,程序不执行时,时钟将不工作。
基于硬件电路的考虑,本设计采用方案二完成数字时钟的功能。
2.2数码管显示方案
方案一:静态显示。
所谓静态显示,就是当显示器显示某一字符时,相应的发光二极管恒定的导通或截止。
该方式每一位都需要一个8 位输出口控制。
静态显示时较小的电流能获得较高的亮度,且字符不闪烁。
但当所显示的位数较多时,静态显示所需的I/O口太多,造成了资源的浪费。
方案二:动态显示。
所谓动态显示就是一位一位的轮流点亮各个位,对于显示器的每一位来说,每隔一段时间点亮一次。
利用人的视觉暂留功能可以看到整个显示,但必须保证扫描速度足够快,字符才不闪烁。
显示器的亮度既和导通电流有关,也于点亮时间和间隔时间的比例有关。
调整参数可以实现较高稳定度的显示。
动态显示节省了I/O口,降低了能耗。
从节省I/O口和降低能耗出发,本设计采用方案二。
方案一:使用并行接口时钟芯片DS12887设计时钟电路。
该设计方案用AT89S51主控,利用并行时钟芯片DS12887为核心计时芯片,组成数字时钟电路。
该电路能够准确计时,还附加许多其它功能,在掉电时能保存用户设置参数和故障状态参数等重要参数。
设计电路图5如下:
图5 DS12887和CPU接口电路
该设计虽然能完成所要求的任务,综合性能也较好,但其并行接口方式占用大量接口资源,给其它设计带来诸多不便。
方案二:使用串行接口时钟芯片
DS1302设计时钟电路。
该设计方
案以单片机AT89S51为主控芯片,
以串行时钟芯片DS1302为核心
计时芯片,组成数字时钟电路。
该电路不但能准确地计时、附加
其它功能,而且,其三线接口可
以节省接口资源,在断电后不丢
失时间和数据信息。
该设计
方案的接口电路如图6所示:
图6 DS1302和CPU接口
通过以上两种设计方案的比较,我们可以看到,设计方案二接口简单,计时可靠,综合性能良好。
所以选用第二种设计方案。
三、硬件电路设计
(一)、芯片介绍
3.1.1、DS1302简介
DS1302是美国DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、周日、时、分、秒进行计时,且具有闰年补偿功能,工作电压宽达2.5~5.5V。
时钟可工作在24小时格式或12小时(AM/PM)格式。
DS1302和单片机的接口使用同步串行通信,仅用3条线和之相连接。
可采用一次传送一个字节或突发方式一次传送多个字节的时钟信号或RAM数据。
DS1302内部有一个31×8的用于临时性存放数据的RAM寄存器。
DS1302是DS1202的升级产品,和DS1202兼容,但增加了主电源/后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。
3.1.2 DS1302引脚功能和内部结构
DS1302的引脚功能如表1所示,外形及内部结构如图1所示[2]:
表1 DS1302引脚功能表
图1 DS1302管脚图及内部结构图
2.1.2 DS1302的控制字
DS1302的控制字节如图2所示:
7 6 5 4 3 2 1 0
图2 DS1302控制字节的含义
控制字节的最高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入到DS1302中。
位6如果为0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。
2.1.3 DS1302的复位引脚
通过把RST输入驱动置高电平来启动所有的数据传送。
RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节
或多字节数据的传送手段。
当RST 为高电平时,所有的数据传送被初始化,允许对DS1302进行操作。
如果在传送过程中置RST 为低电平,则会终止此次数据传送,并且I/O 引脚变为高阻态。
上电运行时,在Vcc≥2.5V 之前,RST 必须保持低电平。
只有在SCLK 为低电平时,才能将RST 置为高电平。
3.1.4 DS1302的数据输入输出
在控制指令字输入后的下一个SCLK 时钟的上升沿时数据被写入DS1302,数据输入从低位即位0开始。
同样,在紧跟8位的控制指令字后的下一个SCLK 脉冲的下降沿读出DS1302的数据,读出数据时从低位0位至高位7,数据读写时序如图3所示:
图3 数据读写时序
3.1.5 DS1302的寄存器
DS1302共有12个寄存器,其中有7个寄存器和日历、时钟相关,存放的数据位为BCD 码形式。
其日历、时间寄存器及其控制字见表2。
此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及和RAM 相关的寄存器等。
时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器的内容。
DS1302和RAM 相关的寄存器分为两类,一类是单个RAM 单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0H--FDH ,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM 寄存器,此方式下可一次性读写所有的RAM 的31个字节,命令控制字为FEH (写)、FFH (读)。
7
6
5
4
1
7
65
4
3
2
1
1
A4A3A2A1DATA I/O BYTE2
DATA I/O BYTE1
R/C A0R/W I/O
RST
SCLK
3.1.6 DS1302 和微控制器的接口软件及功能使用举例
下面首先给出基本的接口软件然后举例说明各种功能的使用
1、写保护寄存器操作
当写保护寄存器的最高位为0 时允许数据写入寄存器写保护寄存器可以通过命令字节8E 8F 来规定禁止写入/读出写保护位不能在多字节传送模式下写入
Write_Enable:
MOV Command,#8Eh ;命令字节为8E
MOV ByteCnt,#1 ;单字节传送模式
MOV R0,#XmtDat 数据地址覆给R0
MOV XmtDat,#00h 数据内容为0 写入允许
ACALL Send_Byte 调用写入数据子程序
RET 返回调用本子程序处
当写保护寄存器的最高位为1 时禁止数据写入寄存器
Write_Disable:
MOV Command,#8Eh ;命令字节为8E
MOV ByteCnt,#1 ;单字节传送模式
MOV R0,#XmtDat 数据地址覆给R0
MOV XmtDat,#80h 数据内容为80h 禁止写入
ACALL Send_Byte 调用写入数据子程序
RET 返回调用本子程序处
以上程序调用了基本数据发送(Send_Byte)模块及一些内存单元定义,
2、单元电路
3、信号流程
单片机选择及外围电路
五、软件设计
可以把头文件写出来,作为介绍六、小结
七、参考文件。