《毕业设计(论文)基于单片机的DS12C887的日历时钟显示系统设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于单片机的DS12C887的日历时钟显示系统设计.doc(33页珍藏版)》请在三一办公上搜索。
1、目 录1 绪论12 设计思路22.1 日历时钟芯片的选择22.2 LED显示驱动芯片的选择23 硬件电路设计43.1 结构框图43.2 主要器件43.2.1 单片机43.2.2 日历时钟芯片DS12C88773.2.3 LED显示驱动芯片MAX7219103.2.3 两片MAX7219的连接123.3 电路原理图及说明133.3.1 控制电路133.3.2 日历时钟电路143.3.3 显示电路144 软件设计154.1 时钟部分软件设计154.1.1 DS12C887的内存空间154.1.2程序流程184.2 显示部分软件设计194.2.1 MAX7219的工作时序和寄存器描述194.2.2
2、13位数码管显示软件设计21参考文献23附录24致 谢30摘 要在51单片机应用系统中,常常需要记录实时的时间信息并长期保存。比如,在数据采集时,对某些重要的信息不仅需要记录其内容,还需要记录下该事件发生的准确时间;在银行营业大厅中使用的利率或汇率显示屏,上面除了需要显示利率或汇率等数据以外,还需要显示实时的时间信息,如年、月、日、星期、时间等。本文用51单片机以及DS12C887日历时钟芯片实现日历时钟的设计。论文研究了DS12C887日历时钟芯片的相关功能,两片MAX7219分别与单片机连接实现13位数码管显示以及整个实时日历时钟显示系统的硬件,软件设计。设计结果表明本文设计的基于DS12
3、C887的实时日历时钟显示系统完全能够满足设计要求。关键词:DS12C887;51单片机;MAX7219;数码管显示Abstract51 SCM application systems, often need to record real-time information and long-term preservation. For example, when data collection for some important information not only need to record the content, but also record the exact time of
4、 the incident; the banking hall in the use of interest rate or exchange rate display, shown above in addition to the interest rate or exchange rate such data, it also needs to show real-time information, such as year, month, date, day and time. In this paper, 51 MCU and the calendar clock chip DS12C
5、887 calendar clock design.Thesis of the calendar clock chip DS12C887-related functions, MAX7219 connected respectively to achieve 13-bit single chip digital display and the real time calendar clock display system hardware and software design.Design results show that the DS12C887-based design of real
6、-time calendar clock display system can completely meet the design requirements.Key Words:DS12C887;51 Microcontroller;MAX7219;Digital display1 绪论本次设计的功能是在51单片机系统中设置、获取、记录实时的日历时钟信息并通过数码管显示,要求能够进行长时间的记录,并且存储的时间信息在掉电情况下至少保存10年以上。实时显示可以通过软件编程实现,但这种方法需要编制的程序复杂,代码多且单片机软件开销大,时间信息也不宜长期保存。而采用专用实时时钟芯片可以避免这些问题
7、,并且可以非易失地长期保存时间信息,因此,在设计中选择使用专用芯片来实现日历时钟显示系统。根据功能模块的划分,本系统包括3个部分:1) 51单片机模式块:其作用是和外围的时钟芯片通信,并控制数据传输过程,采集时间信息并予以处理;2) 日历时钟模块:此模块由专用的实时时钟芯片构成,它是本设计的核心模块,由它提供实时的日历时钟信息;3) 数码管显示模块:此模块用于实时日历时钟信息显示;程序部分包括单片机和时钟芯片的接口程序(实现单片机和时钟芯片之间的数据传输过程)以及数码管显示程序。2 设计思路由于系统要实现的功能比较单一(主要就是获取实时时间信息),因此设计思路非常清晰。2.1 日历时钟芯片的选
8、择本次设计题目要求能够进行长时间的记录包括日历、星期在内时间信息,并且存储的时间信息在掉电情况下可以保存10年以上。根据这些要求,本次设计选用达拉斯公司的日历时钟芯片DS12C887作为实时时钟芯片,为系统提供详细的年、月、日、星期和小时、分钟等时间信息。DS12C887实时时钟芯片功能丰富,可以用来直接代替IBM PC上的时钟日历芯片,同时,它的管脚也和MC146818B、DS1287相兼容。由于DS12C887能够自动产生世纪、年、月、日、时、分、秒等时间信息,其内部又增加了世纪寄存器,从而利用硬件电路解决了“千年”问题;DS12C887中自带有锂电池,外部掉电时,其内部时间信息还能够保持
9、10年之久;对于一天内的时间记录,有12小时制和24小时制两种模式。在12小时制模式中,用AM和PM区分上午和下午;时间的表示方法也有两种,一种用二进制数表示,一种是用BCD码表示;DS12C887中带有128字节RAM,其中有11字节RAM用来存储时间信息,4字节RAM用来存储DS12C887的控制信息,称为控制寄存器,113字节通用RAM供用户使用;此外用户还可对DS12C887进行编程以实现多种方波输出,并可对其内部的三路中断通过软件进行屏蔽。12.2 LED显示驱动芯片的选择使用何种LED显示驱动芯片对于本设计的实现至关重要,因此首先必须选取合适的LED显示驱动芯片。目前市面上已有的L
10、ED显示驱动芯片种类繁多,从性价比以及功能实用性的角度考虑,本设计选择MAXIM公司的多功能串行LED显示驱动器MAX7219。MAX7219是一种集成化的串行输入/输出共阴极显示驱动器,它连接微处理器与8位数字的7段数字LED显示,也可以连接条线图显示器或者64个独立的LED。其上包括一个片上的B型BCD编码器、多路扫描回路,段字驱动器,而且还有一个的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。2一个方便的四线串行接口可以联接所有通用的微处理器。每个数据可以寻址在更新时不需要改写所有的显示。MAX7219同样允许用户对每一个数据选择编码或者不编码。整个设备包含
11、一个150A的低功耗关闭模式,模拟和数字亮度控制,一个扫描限制寄存器允许用户显示18位数据,还有一个让所有LED发光的检测模式。总的来说,本设计选用MAX7219是基于以下考虑:1) MAX7219能够驱动8个LED,而两片MAX7219分别与单片机连接之后便能够满足本设计13数码管显示的要求,可方便地对每位LED进行单独控制、刷新,不需重写整个显示器存器。2) 外围电路仅需一个电阻即可设定峰值段电流,可用于亮度调节,同时也支持软件方式调整显示亮度。3) 可设置为低功耗模式,此模式下单片机仍可对其传送数据修改控制方式,而且芯片耗点仅为150。3 硬件电路设计本设计的硬件电路设计主要是围绕日历时
12、钟芯片DS12C887的使用进行的。3.1 结构框图本设计的硬件电路包括单片机电路、日历时钟芯片电路和数码管显示输出电路,其结构框图如图1所示。图1 系统硬件结构框图3.2 主要器件本系统的主要器件是单片机,日历时钟芯片以及LED显示驱动芯片。3.2.1 单片机单片机选用美国ATMEL公司生产的AT89C52单片机。AT89C52是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含8k bytes的可反复擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产
13、品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机适合于许多较为复杂控制应用场合。3主要性能参数:与MCS-51产品指令和引脚完全兼容8k字节可重擦写Flash闪速存储器1000次擦写周期全静态操作:0Hz-24MHz三级加密程序存储器2568字节内部RAM32个可编程I/O口线3个16位定时/计数器8个中断源可编程串行UART通道低功耗空闲和掉电模式4AT89C52单片机引脚分布如图2所示。图2 AT89C52单片机引脚分布图功能特性概述:AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个
14、16位定时/计数器,一个6向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。AT89C52单片机内部结构框图如图3所示。5图3 AT89C52单片机内部结构框图引脚功能说明VCC:电源电压GND:接地脚P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTL逻辑门电路
15、,对端口P0写“1”时,可作为高阻抗输入端用。5在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。Flash编程和程序校验期间,Pl接收低8位地址。P2口:P2是一个带有内部
16、上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口P2写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口输出P2锁存器的内容。Flash编程或校验时,P2亦接收高位地址和一些控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写入“1”时,它们被内部上
17、拉电阻拉高并可作为输入端口。此时,被外部拉低的P3口将用上拉电阻输出电流()。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期问,该引脚还用于输入编程脉冲(PROC)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只
18、有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。Flash存储器编程时,该引脚加上+12V的编程允许电源VPP,当然这必须是该器件是使用12V编程电压VPP。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。63.2.2 日历时钟芯片DS12C88
19、7日历时钟芯片选用DS12C887,其引脚分布如图4所示。图4 DS12C887引脚分布图DS12C887的内部结构框图如图5所示。图5 日历时钟芯片DS12C887内部结构框图由图5可知,DS12C887内部可看成由电源、日历时钟信息、寄存器和存储器,以及总线接口四部分构成,四部分配合工作,共同实现芯片的功能。7DS12C887的具体引脚功能如下:GND、VCC:直流电源,其中VCC接+5V输入,GND接地,当VCC输入为+5V时,用户可以访问DS12C887内RAM中的数据,并可对其进行读、写操作;当VCC的输入小于+4.25V时,禁止用户对内部RAM进行读、写操作,此时用户不能正确获取芯
20、片内的时间信息;当VCC的输入小于+3V时,DS12C887会自动将电源发换到内部自带的锂电池上,以保证内部的电路能够正常工作。MOT:模式选择脚,DS12C887有两种工作模式,即Motorola模式和Intel模式,当 MOT接VCC时,选用的工作模式是Motorola模式,当MOT接GND时,选用的是Intel模式。本设计选用其Intel模式,所以电路图中MOT端接GND。SQW:方波输出脚,当供电电压VCC大于4.25V时,SQW脚可进行方波输出,此时用户可以通过对控制寄存器编程来得到13种方波信号的输出。AD0AD7:复用地址数据总线,该总线采用时分复用技术,在总线周期的前半部分,出
21、现在AD0AD7上的是地址信息,可用以选通DS12C887内的RAM,总线周期的后半部分出现在AD0AD7上的数据信息。AS:地址选通输入脚,在进行读写操作时,AS的上升沿将AD0AD7上出现的地址信息锁存到DS12C887上,而下一个下降沿清除AD0AD7上的地址信息,不论是否有效,DS12C887都将执行该操作。DS/RD:数据选择或读输入脚,该引脚有两种工作模式,当MOT接VCC时,选用Motorola工作模式,在这种工作模式中,每个总线周期的后一部分的DS为高电平,被称为数据选通。在读操作中,DS的上升沿使DS12C887将内部数据送往总线AD0AD7上,以供外部读取。在写操作中,DS
22、的下降沿将使总线 AD0AD7上的数据锁存在DS12C887中;当MOT接GND时,选用Intel工作模式,在该模式中,该引脚是读允许输入脚,即Read Enable。因为本设计选用Intel工作模式,所以该引脚是读允许输入脚。R/W:读/写输入端,该管脚也有2种工作模式,当MOT接VCC时,R/W工作在Motorola模式。此时,该引脚的作用是区分进行的是读操作还是写操作,当R/W为高电平时为读操作,R/W为低电平时为写操作。当MOT接GND时,该脚工作在Intel模式,此时该脚作为写允许输入,即Write Enable。CS:片选输入,低电平有效。IRQ:中断请求输入,低电平有效,该脚有效
23、对DS12C887内的时钟、日历和RAM中的内容没有任何影响,仅对内部的控制寄存器有影响,在典型的应用中,RESET可以直接接到VCC,这样可以保证DS12C887在掉电时,其内部控制寄存器不受影响。在DS12C887内有11字节RAM用来存储时间信息,4字节用来存储控制信息,其具体地址及取值如表1所列。8表1 DS12C887的存储功能地址功能取值范围(十进制)取值范围二进制BCD码0秒059003B00591秒闹铃059003B00592分059003B00593分闹铃059003B0059412小时模式112010C AM818C PM0112 AM8192 PM24小时模式023001
24、700235时闹铃,12小时制112010C AM818C PM0112 AM8192 PM时闹铃,24小时制023001700236星期(星期日=1)17010701077日131011F01318月112010C01129年0990063009910控制寄存器A11控制寄存器B12控制寄存器C13控制寄存器D50世纪099NA19,203.2.3 LED显示驱动芯片MAX7219MAX7219的功能特点如下:10MHz连续串行口独立的LED段控制数字的译码与非译码选择150A的低功耗关闭模式亮度的数字和模拟控制高电压中断显示共阴极LED显示驱动24脚的DIP和SO封装MAX7219的内部结
25、构如图6所示。9图6 MAX7219内部结构框图MAX7219内部主要包括移位寄存器、控制寄存器、译码器、数位驱动器、段驱动器,以及亮度调节和多路扫描电路等。MAX7219采用串行接口方式,只需要LOAD、DIN、CLK三个引脚便可实现数据的串行传送。MAX7219的16位串行数据(D15D0)的作用见表2所示。表2 MAX7219的16位串行数据D15 D14 D13 D12D11 D10 D9 D8D7 D6 D5 D3 D2 D1 D0无关比特地址数据位其中低8位表示显示数据本身,最高的4位D15D12为无关比特,D11D8用于寻址14个内部寄存器。16位中最先接收的是最高有效位D15。
26、MAX7219内部具有14个可寻址数位和控制寄存器。8个数位寄存器由一个片内88双端口SRAM实现。它们可直接寻址,因此可对单个数位进行更新,并且通常只要V+超过2V数据就可保留下去。除8个数位寄存器之外,MAX7219内部还有无操作、译码方式、亮度调整、扫描位数、低功耗模式和显示测试6个控制寄存器,它们的功能如下:无操作寄存器:用于多片MAX7219的级联。译码方式寄存器:用于设置每个数位工作BCD译码方式或是非译码方式。亮度调整寄存器:用于显示亮度的数字化调整。显示器的亮度可以通过模拟与数字两种方式进行调整。模拟方式是在VCC与ISET引脚之间外接一个电阻RSET,调整该电阻的大小即可改变
27、显示器亮度;数字方式是使用亮度调整寄存器,此时芯片内启用一个脉宽调制器,它由亮度调整寄存器低半字节D3D0控制,产生16种占空比不同的输出脉冲,形成16级亮度调整。扫描位数寄存器:设置显示数据位的个数。低功耗模式寄存器:用于节省电源消耗,延长显示器的使用寿命。上电时所有的控制寄存器都复位,显示器都熄灯,芯片进入低功耗模式。显示测试寄存器:用于显示器的测试。测试时以31/32或15/16的占空比扫描全部数位段,使得所有显示器的所有段以最大的亮度点亮。MAX7219,其引脚分布如图7所示。图7 MAX7219引脚分布示意图引脚功能说明如下:DIN(1引脚):串行数据输入端口。在时钟上升沿时数据被载
28、入内部的16位寄存器。DIG07(2、11、6、7、3、10、5、8引脚):八个数据驱动线路置显示器共阴极为低电平。关闭时此管脚输出高电平。GND(4、9引脚):地线(4脚和9脚必须同时接地)。LOAD(12引脚):载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。CLK(13引脚):时钟序列输入端。最大速率为10MHz在时钟的上升沿,数据移入内部移位寄存器。下降沿时,数据从DOUT端输出。SEG AG,SEG DP(14、16、20、23、21、15、17、22引脚):7段和小数点驱动,为显示器提供电流。当一个段驱动关闭时,此端呈低电平。ISET(18引脚):LED段峰值电流提供引脚
29、。通过一个电阻连接到VDD来提高段电流。V+(19引脚):正极电压输入,+5V。DOUT(24引脚):串行数据输出端口,从DIN输入的数据在16.5个时钟周期后在此端有效。当使用多个MAX7219时用此端方便扩展。103.2.3 两片MAX7219的连接因为本设计要实现显示年(4位数字)、月(2位数字)、日(2位数字)、星期(1位数字)、小时(2位数字)、分钟(2位数字),总共需要13位数码管,而一片MAX7219最多只能支持8位数码管的显示,所以,我们需要单片机分别连接两片MAX7219来实现13位数码管显示。113.3 电路原理图及说明3.3.1 控制电路图8所示为本设计的单片机部分的电路
30、原理图。图8 实时日历时钟显示系统单片机部分电路原理图图8中,U1为Atmel公司的单片机芯片AT89C52,它工作11.0592MHz时钟。P0端口用作地址/数据复用总线AD07,和日历时钟芯片相连。P1端口用作数码管的段码接口,由于本设计的显示不会出现小数点,因此只使用了a、b、c、d、e、f、g,而没有使用dp(小数点)段。P2端口的P2.1P2.4作为数码管的位码接口,它们需要通过4-16译码电路以及驱动电路来控制13位数码管的位码选择。P2端口的P2.0在反相之后为日历时钟芯片提供片选信号,需要反相是因为该片选信号为低电平有效。单片机的P3.7(/RD)、P3.6(/WR)引脚和日历
31、时钟芯片的读、写引脚直接相连,它们均为低电平有效。单片机的ALE引脚将和日历时钟芯片的锁存输入引脚直接相连,作为地址锁存,可实现数据和地址线的时分复用。3.3.2 日历时钟电路图9为日历时钟芯片部分的电路图。图9 实时日历时钟显示系统片选及日历时钟芯片部分电路原理图图9中,U2为6反相器74LS04,它将单片机的P2.0反相之后送至DS12C887的片选引脚。U3为日历时钟芯片DS12C887,在本设计中,将其MOT引脚接地,选择Intel总线时序模式。在以Intel总线时序模式工作时,它和51单片机的接口完全兼容,因此将它的地址/数据复用线AD0AD7、锁存输入ALE、读输入DS、写输入和5
32、1单片机的对应引脚直接相连。DS12C887的方波输出SQW和中断申请/IRQ在本设计中不使用。123.3.3 显示电路图10为显示电路的电路图,使用两片MAX7219,实现16位数码管显示。13图10 显示电路电路图4 软件设计软件设计分两部分:时钟部分以及显示部分。4.1 时钟部分软件设计4.1.1 DS12C887的内存空间DS12C887的内存空间共128个字节,其中11个字节专门用于存储时间、星期、日历和闹钟信息;4个字节专门用于控制和存放状态信息;其余113个字节为用户可以使用的普通RAM空间。图11为日历时钟芯片DS12C887的内存空间映射示意图。14图11 日历时钟芯片DS1
33、2C887内存空间映射示意图地址0x00-0x09共10个寄存器分别存放的是秒、秒闹钟、分钟、分闹钟、小时、时闹钟、星期、日、月和年信息,地址0x32为世纪信息寄存器(解决了“两千年问题”)地址0x0A0x0D四个寄存器分别为寄存器A、B、C、D,它们用于控制和存放某些状态信息;其余的113字节地址空间是留给用户使用的普通内存空间。根据此地址映射关系(见图11)和芯片选的设置(由单片机的P2.0端口反相后提供)可以得到每个特定寄存器在程序中的地址,即为0x0100加上图11中的地址偏移。比如,日信息寄存器的地址为0x0107,控制寄存器B的地址为0x010B等。在所有的128字节中,寄存器C和
34、D为只读寄存器,寄存器A的第7位属于只读位,秒字节的高阶位也是只读的,其余字节均为可直接读写字节。时钟、日历信息可以通过读取合适的内存字节获得;时钟、日历和闹钟可以通过写合适的内存字节进行设置或初始化。对应时钟、日历和闹钟的10个寄存器字节可以是二进制形式或者BCD码形式,在写这些寄存器时,寄存器B的SET位必须置1。寄存器A字节的内容如下:MSB LSBUIPDV2DV1DV0RS3RS2RS1RS0UIP:更新(UIP)位用来标志芯片是否即将进行更新。当UIP位为l时,更新即将开始;当它为0时,表示在至少244s内芯片不会更新,此时,时钟、日历和闹钟信息可以通过读写相应的字节获得和设置。U
35、IP位为只读位并且不受复位信号(RESET)的影响。通过把寄存器B中的SET位设置为1可以禁止更新并将UIP位清0。DV0,DV1,DV2:这3位是用来开关晶体振荡器和复位分频器。当DV0 DV1 DV2=010时,晶体振荡器开启并且保持时钟运行;当DV0 DV1 DV2=11X时,晶体振荡器开启,但分频器保持复位状态。RS3、RS2、RS1.、RS0:作用:1)设置周期中断允许位(PIE);2)设置方波输出允许位(SQWE);3)两位同时设置为有效并且设置频率;4)全部禁止。寄存器B字节的内容如下:MSB LSBSETPIEAIEUIESQWEDM24/12DSESET当SET=0,芯片更新
36、正常进行;当SET=1,芯片更新被禁止。SET位可读写,并不会受复位信号的影响。PIE:当PIE=0,禁止周期中断输出到IRQ;当PIE=1,允许周期中断输出到IRQ。AIE:当AIE=0,禁止闹钟中断输出到IRQ;当AIE=1,允许闹钟中断输出到IRQ。UIE:当UIE=0,禁止更新结束中断输出到IRQ;当UIE=1,允许更新结束中断输出到IRQ。此位在复位或设置SET为高时清0。SQWE:当SQWE=0,SQW脚为低;当SQWE=1,SQW输出设定频率的方波。DM:DM=0,二进制;DM=1,BCD。此位不受复位信号影响。24/12:此位为1时,24时制;为0时,12小时制。DSE:夏令时
37、允许标志。在四月的第一个星期日的15959AM,时钟调到30000AM;在十月的最后一个星期日的15959AM,时钟调到10000AM。寄存器C字节的内容如下:MSB LSBIRQFPFAFUF0000IRQF当有以下情况中的一种或几种发生时,中断请求标志位(IRQF)置高:PF=PIE=lAF=AIE=lUF=UIE=1IRQF一旦为高IRQ脚输出低。所有标志位在读寄存器C或复位后清0。PF:周期中断标志。AF:闹钟中断标志。UF:更新中断标志。BIT0BIT3第0位到第3位无用,不能写入,只读,且读出的值恒为0。寄存器D字节的内容如下:MSB LSBVRT0000000VRT当VRT=0时
38、表示内置电池能量耗尽,此时RAM中的数据的正确性就不能保证了。BIT6 BIT0第0位到第6位无用,只读,且读出的值恒为0。芯片DS12C887的113字节普通RAM空间为非易失性RAM空间,它不专门用于某些特别功能,而是可以在微处理器程序中作为非易失性内存空间使用。144.1.2程序流程程序流程如图12所示。图12 系统程序流程图4.2 显示部分软件设计4.2.1 MAX7219的工作时序和寄存器描述MAX7219的数据传送时序如图13所示。图13 MAX7219数据传送时序图前文已经简单介绍过MAX7219的寄存器,在编写软件时需要对这些寄存器操作,因此需要正确的寻址。表3列出了14个可寻
39、址的数据寄存器和控制寄存器。数据寄存器由一个在片上的88的双向SRAM来实现。它们可以直接寻址所以只要在V+大于2V的情况下每个数据都可以独立的修改或保存。控制寄存器包括编码模式、显示亮度、扫描限制、关闭模式以及显示检测五个寄存器。MAX7219的寄存器地址映射如表3所示。表3 MAX7219寄存器地址映射寄存器地址16进制码D15-D12D11D10D9D8无操作寄存器X0000X0数位0寄存器X0001X1数位1寄存器X0010X2数位2寄存器X0011X3数位3寄存器X0100X4数位4寄存器X0101X5数位5寄存器X0110X6数位6寄存器X0111X7数位7寄存器X1000X8译码
40、方式寄存器X1001X9亮度调整寄存器X1010XA扫描位数寄存器X1011XB低功耗模式寄存器X1100XC显示测试寄存器X1111XF低功耗模式控制寄存器制字节中的最低位D0=0时,为低功耗模式;D0=1时,为正常操作模式。译码方式控制寄存器可以设置每个数位工作于BCD译码方式,或者非译码方式。控制字节的8位正好对应8个数位,该位为1表示该数位工作于BCD码方式,为0表示该数位工作非译码方式。当选择非译码方式时,数据位D7D0分别对应于7段LED数码管的DP、AG段,因此数字09对应于数据0x7e、0x30、0x6d、0x79、0x33、0x5b、0x5f、0x70、0x7f、0x7b;字
41、母AF、P、U对应于数据0x77、0x1f、0x4e、0x3d、0x4f、0x47、0x67、0x3e。当选择BCD译码方式时,数码管显示字符、数位寄存器的值和7段LED管点亮段的对应关系如表4所示。表4 BCD译码方式下显示字符与寄存器值的对应关系数码管显示字符数位寄存器的值点亮(1)与暗(0)的段D7D6D4D3D2D1D0DPABCDEFG0X000011111101X000101100002X001011011013X001111110014X010001100115X010110110116X011010111117X011111100008X100011111119X1001111
42、1011-X10100000001EX10111001111HX11000110111LX11010001110PX11101100111空字符X11110000000扫描位数寄存器的低三位D2D0指定要扫描的位数,支持07共8数位的独立扫描显示。用户可根据需要设置需要显示的数位个数。显示测试寄存器的D0位置0为正常模式,置1为测试模式。测试时以31/32或15/16的占空比扫描全部数位段,使得所有显示器的所有段以最大的亮度点亮。154.2.2 13位数码管显示软件设计单片机P1.2,P1.3管脚分别接MAX7219的LOAD管脚,在P1.2上升沿,第一片MAX7219的串行数据的最后16位被锁存,在P1.3上升沿,第二片MAX7219的串行数据的最后16位被锁存。两片MAX7219的CLK和DIN分别连接单片机的P1.1,P1.0。16因为两片8位数码管总共可以显示16位数,而本次设计只需要显示13位,所以,可以让前3位