多功能数字万年历课程设计报告(编辑修改稿)内容摘要:

单片机与 MCS51 完全兼容  看门狗( WDT): WDT是一种需要软件控制的复位方式。 WDT 由 13位计数器和特殊功能寄存器中的看门狗定时器复位存储器( WDTRST)构成。 WDT 在默认情况下无法工作;为了激活 WDT,用户必须往 WDTRST 寄存器(地址: 0A6H)中依次写入 01EH 和 0E1H。 当 WDT激活后,晶振工作, WDT在每个机器周期都会增加。 WDT计时周期依赖于外部时钟频率。 除了复位(硬件复位或 WDT溢出复位),没有办法停止 WDT工作。 当 WDT溢出,它将驱动 RSR引脚输出一个高电平。  可编程串口( UART) 在 AT89C51中, UART 的操作与 AT89C51 和 AT89C52 一样。 AT89C51系列单片机的串行通信口可以工作于同步和异步通信方式。 当工作于异步方式时,它具有全双工的操作功能,也就是说,它可以同时进行数据的发送和接收。 串行口内的接收器采用的是双缓冲结构,能够在接收到的第一个字节从 接收寄存器读走之前就开始接收第二个字节(当然,如果第二个字节接收完毕,而第一个字节仍然没有被读走,那将会丢掉一个字节)。 串行口的发送和接收操作都是通过特殊功能寄存器中的数据缓冲寄存器SBUF进行的,但在 SBUF的内部,接收寄存器和发送寄存器在物理结构上是完全独立的。 如果将数据写入 SBUF,数据会被送入发送寄存器准备发送。 如果执行 SBUF指令,则读出的数据一定来自接收缓存器。 因此, CPU对 SBUF的读写,实际上是分别访问 2个不同的寄存器。 山东交通学院课程设计报告 7 这 2个寄存器的功能决不能混淆。  振荡电路: AT89C51系列单片机的内部 振荡器,由一个单极反相器组成。 XTAL1反相器的输入, XTAL2为反相器的输出。 可以利用它内部的振荡器产生时钟,只要 XTAL1和XTAL2引脚上一个晶体及电容组成的并联谐振电路,便构成一个完整的振荡信号发生器,此方式称为内部方式。 另一种方式由外部时钟源提供一个时钟信号到 XTAL1端输入,而XTAL2端浮空。 在组成一个单片机应用系统时,多数采用这种方式,这种方式结构紧凑,成本低廉,可靠性高。 在电路中,对电容 C1和 C2的值要求不是很严格,如果使用高质的晶振,则不管频率为多少, C C2通常都选择 30pF。  定时 /计数器: AT89C51单片机内含有 2个 16位的定时器 /计数器。 当用于定时器方式时,定时器的输入来自内部时钟发生电路,每过一个机器周期,定时器加 1,而一个机器周期包含有 12个振荡周期,所以,定时器的技术频率为晶振频率的 1/12,而计数频率最高为晶振频率的 1/24。 为了实现定时和计数功能,定时器中含有 3种基本的寄存器:控制寄存器、方式寄存器和定时器 /计数器。 控制寄存器是一个 8位的寄存器,用于控制定时器的工作状态,方式寄存器是一个 8位的寄存器,用于确定定时器的工作方式,定时器 /计数器是 16位的计数器,分为高字节 和低字节两部分。  RAM:高于 7FH内部数据存储器的地址是 8位的,也就是说其地址空间只有 256字节,但内部 RAM的寻址方式实际上可提供 384字节。 的直接地址访问同一个存储空间,高于 7FH的间接地址访问另一个存储空间。 这样,虽然高 128字节区分与专用寄器 ,即特殊功能寄存器区的地址是重合的,但实际上它们是分开的。 究竟访问哪一区,存是通过不同的寻址方式加以区分的。  SFR: SFR是具有特殊功能的所有寄存器的集合,共含有 22个不同寄存器,它们的地址分配在 80H~ FFH中。 虽然如此,不是所有的单元都被特殊功能寄存器 占用,未被占用的单元,其内容是不确定的。 如对这些单元进行读操作,得到的是一些随机数,而写入则无效,所以在编程时不应该将数据写入这些未确定的地址单元中,特殊功能寄存器主要有累加器 ACC、 B寄存器、程序状态字寄存器 PSW、堆栈指针 SP、数据指针 DPTR、 I/O端口、串行口数据缓冲器 SBUF、定时器寄存器、捕捉寄存器、控制寄存器。  中断系统: AT89C51 单片机有 6 个中断源,中断系统主要由中断允许寄存器 IE、中断优先级寄存器 IP、优先级结构和一些逻辑门组成。 IE 寄存器用于允许或禁止中断;IP寄存器用于确定中断源的 优先级别;优先级结构用于执行中断源的优先排序;有关逻辑门用于输入中断请求信号。 在整个中断响应过程中 CPU 所执行的操作步骤如下: ( 1)完成当前指令的操作 ( 2)将 PC内容压入堆栈 ( 3)保存当前的中断状态 ( 4)阻止同级的中断请求 ( 5)将中断程序入口地址送 PC寄存器 ( 6)执行中断服务程序 8 ( 7)返回 8 位移位寄存器 74LS164(串行输入,并行输出) 74LS164 为 8位移位寄存器 ,其主要电特性的典型值如表 32: 表 32 74LS164主要电特性典型值 型号 fm Pn 54/74164 36MHz 185mW 54/74LS164 36 MHz 80mW 当清除端( CLEAR)为低电平时,输出端( QA- QH)均为低电平。 串行数据输入端( A, B)可控制数据。 当 A、 B任意一个为低电平时停止新数据输入,在时钟端( CLOCK)脉冲上升沿作用下 Q0 为低电平。 当有一个为高电平,则另一个就允许输入数据,并在 CLOCK 上升沿作用 Q0的状态。 引出端符号 CLOCK 时钟输入端 CLEAR 同步清除输入端(低电平有效) A, B 串行数据输入端 QA- QH 输出端 fmax最大时钟频率。 tPLH 输出由低电平到高电平传输延迟时间 tPHL 输出由高电平到低电平传输延迟时间 ds1302 现在流行的串行时钟电路很多,如 DS130 DS130 PCF8485 等。 这些电路的接口简单、价格低廉、使用方便,被广泛地采用。 本文介绍的实时时钟电路 DS1302 是 DALLAS公司的一种具有涓细电流充电能力的电路,主要特点是采用串行数据传输,可为掉电保护电源提供可编程的充电功能,并且可以关闭充电功能。 采用普通 晶振。 DS1302 是美国 DALLAS 公司推出的 一种高性能、低功耗、带 RAM 的实时时钟电路,它可以对年、月、日、周日、时、分、秒进行计时,具有闰年补偿功能,工作电压为 ~。 采用三线接口与 CPU 进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或 RAM 数据。 DS1302 内部有一个 318 的用于临时性存放数据的 RAM 寄存器。 DS1302是 DS1202 的升级产品,与 DS1202 兼容,但增加了主电源 /后背电源双电源引脚,同时提供了对后背电源进行涓细电流充电的能力。 DS1302 的引脚排列 ,其中 Vcc1 为后备电源, Vcc2为主电源。 在主电源关 闭的情况下,也能保持时钟的连续运行。 DS1302 由 Vcc1 或 Vcc2 两者中的较大者供电。 当 Vcc2 大于 Vcc1 山东交通学院课程设计报告 9 + 时, Vcc2 给 DS1302 供电。 当 Vcc2 小于 Vcc1 时, DS1302 由 Vcc1 供电。 X1 和 X2是振荡源,外接 晶振。 RST 是复位 /片选线,通过把 RST 输入驱动置高电平来启动所有的数据传送。 RST 输入有两种功能:首先, RST 接通控制逻辑,允许地址 /命令序列送入移位寄存器;其次, RST 提供终止单字节或多字节数据的传送手段。 当 RST 为高电平时,所有的数据传送被初始化,允许对 DS1302 进行操作。 如果在传送过程中 RST 置为低电平,则会终止此次数据传送, I/O 引脚变为高阻态。 上电运行时,在 Vcc≥ 之前,RST 必须保持低电平。 只有在 SCLK 为低电平时,才能将 RST 置为高电平。 I/O 为串行数据输入输出端 (双向 ),后面有详细说明。 SCLK 始终是输入端。 DS1302 的控制字节的最高有效位 (位 7)必须是逻辑 1,如果它为 0,则不能把数据写入 DS1302 中,位 6如果为 0,则表示存取日历时钟数据,为 1表示存取 RAM 数据。 位 5至位 1 指示操作单元的地址。 最低有效位 (位 0)如为 0表示 要进行写操作,为 1 表示进行读操作,控制字节总是从最低位开始输出。 在控制指令字输入后的下一个 SCLK 时钟的上升沿时,数据被写入 DS1902,数据输入从低位即位 0 开始。 同样,在紧跟 8 位的控制指令字后的下一个 SCLK 脉冲的下降沿读出DS1302的数据,读出数据时从低位 0 位到高位 7。 DS1302 有 12 个寄存器,其中有 7 个寄存器与日历、时钟相关,存放的数据位为 BCD码形式 ,其日历、时间寄存器及其控制字见表 1。 此外, DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及 与 RAM相关的寄存器等。 时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302 与 RAM 相关的寄存器分为两类:一类是单个 RAM 单元,共 31 个,每个单元组态为一个 8位的字节,其命令控制字为 C0H~ FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的 RAM 寄存器,此方式下可一次性读写所有的 RAM 的 31 个字节, 命令控制字为 FEH(写 )、 FFH(读 )。 DS1302与 CPU 的连接需要三条线,即 SCLK(7)、 I/O(6)、 RST(5)。 DS1902与 89C2051的连接图,其中 ,时钟的显示用 LED。 DS1302与 CPU 的连接 , 实际上,在调试程序时可以不加电容器,只加一个 的晶振即可。 只是选择晶振时,不同的晶振,误差也较大。 另外,还可以在上面的电路中加入 DS18B20,同时显示实时温度。 只要占用 CPU 一个口线即可。 LED 还可以换成 LCD,还可以使用北京卫信杰科技发展有限公司生产的 10 位多功能 8 段液晶显示模块 LCM101,内含看门狗 (WDT)/时钟发生器及两种频率的蜂鸣器驱动电路,并有内置显示 RAM,可显示任意字段笔划,具有 3- 4 线串行接口,可与任何单 片机、 IC 接口。 功耗低,显示状态时电流为 2μA ( 典型值 ),省电模式时小于 1μA ,工作电压为 ~ ,显示清晰。 DS1302 的实时时间流程。 根据流程框图,不难采集实时时间。 下面对 DS1302 的基本操作进行编程: 根据本人在调试中遇到的问题,特作如下说明: DS1302 与微处理器进行数据交换时,首先由微处理器向电路发送命令字节,命令字 10 节最高位 MSB(D7)必须为逻辑 1,如果 D7=0,则禁止写 DS1302,即写保护; D6=0,指定时钟数据, D6=1,指定 RAM数据; D5~ D1指定输入或 输出的特定寄存器;最低位 LSB(D0)为逻辑 0,指定写操作 (输入 ), D0=1,指定读操作 (输出 )。 在 DS1302 的时钟日历或 RAM 进行数据传送时, DS13。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。