基于51单片机的太阳能热水器智能控制器的设计毕业设计论文 联系客服

发布时间 : 星期日 文章基于51单片机的太阳能热水器智能控制器的设计毕业设计论文更新完毕开始阅读1814a73bae1ffc4ffe4733687e21af45b307fe2c

复位。

3.DS12887/ DS12C887 内部寄存器的功能

因DS12887 和DS12C887 结构功能上类似,现以DS12887 为例说明如下:CPU通过读DS12887的内部时标寄存器得到当前的时间和日历,也可通过选择二进制码或BCD码初始化芯片的10个时标寄存器。其114bit非易失性静态RAM 可供用户使用,对于没有RAM的单片机应用系统,可在主机掉电时来保存一些重要的数据。DS12887 的4个状态寄存器用来控制和指DS12887模块的当前工作状态,除数据更新周期外,程序可随时读写这4个寄存器,各寄存器的功能和作用如下。

寄存器A各位不受复位的影响,UIP 位为只读位,其它各位均可读写。寄存器的控制字的格式如下表2所列:

表2 DS12887 控制寄存器A 各布尔位定义: IT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0

1.IP 位:更新周期标志位。该位为“1”时,表示芯片正处于或即将开始更新周期,此时程序不准读写时标寄存器;该位为“0”时,表示至少在244μs 后才开始更新周期,此时程序可读芯片内时标寄存器。该位是只读位。

2. DV0 、DV1 、DV2 :芯片内部振荡器RTC 控制位。当芯片解除复位状态,并将010写入DV0、DV1、DV2后,另一个更新周期将在500ms后开始。因此,在程序初始化时可用这三位精确地使芯片在设定的时间开始工作。这与MC146818 不同的是,DS12887固定使用32 768Hz 的内部晶体,所以,DV0 =“0”,DV1 =“1”,DV2 =“0”,即只有一种010的组合选择即可启动RTC。

3. RS3、RS2、RS1、RS0:周期中断可编程方波输出速率选择位。各种不同的组合可以产生不同的输出。程序可以通过设置寄存器B的SQWF 和PIE 位控制是否允许周期中断和方波输出。其寄存器A输出速率选择位如表3所列。 表3 DS12887 控制寄存器A 输出速率选择位定义

寄存器A 输出速率选择位 32 768Hz 时基

RS3 RS2 RS1 RS0 中断周期 SQWF输出频 0 0 0 0 无 无

0 0 0 1 3.90625ms 256Hz 0 0 1 0 7. 8125ms 128Hz 0 0 1 1 122.0μs 8.192kHz 0 1 0 0 244.141μs 4.096kHz 0 1 0 1 488.281μs 2.048kHz 0 1 1 0 976.5625μs 1.024kHz 0 1 1 1 1.953125ms 512Hz 1 0 0 0 3.90625ms 256Hz 1 0 0 1 7.812ms 128Hz 1 0 1 0 15.625ms 64Hz 1 0 1 1 31.25ms 32Hz 1 1 0 0 62.5ms 16Hz 1 1 0 1 125ms 8Hz 1 1 1 0 250ms 4Hz 1 1 1 1 500ms 2Hz

寄存器B允许读写,主要用于控制芯片的工作状态。寄存器B的控制字的格式如表4所列。

表4 DS12887 控制寄存器B各布尔位定义

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 SET PIE AIE UIE SQWE DM 24/12 DSE

(1) SET 位:当该位为“0”时,芯片处于正常工作状态,每秒产生一个更新周期来更新时标寄存器为“1”时,芯片停止工作,程序在此期间可初始化芯片的各个时标寄存器。

(2)PIE、AIE、UIE 位:分别为周期中断、报警中断、更新周期结束中断允许位。各位为“1”时,允许芯片发相应的中断。

(3)SQWE 位:方波输出允许位。SQWE“1”,按寄存器A 输出速率选择位所确定的频率输出方波;SQWE =“0”,脚SQW保持低电平。

(4) DM 位:时标寄存器用十进制BCD 码表示或用二进制表示格式选择位。DM =“0”时,为十进制BCD码;DM =“1”时,为二进制码。

(5) 24/ 12 位: 24/ 12 小时模式设置位。24/12位=“1”时,为24 小时工作模式;24/ 12 位=“0”时,为12 小时工作模式。

(6)DSE位:夏令时服务位。DSE=“1”,夏时制设置有效,夏时制结束可自动刷新恢复时间;DSE=“0”,无效。

寄存器C的控制字的格式如表4所列。该寄存器的特点是程序访问读该寄存器后,该寄存器的内容将自动清零,从而使IRQF 标志位变为高电平, 否则,芯片将无法向CPU 申请下一次中断。 表5 DS12887 控制寄存器C各布尔位定义

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 IRQF PF AF UF 0 0 0 0

(1) IRQF位:中断申请标志位。该位逻辑表达式为:IRQF = PF·PIE +AF·AIE+UF·UIE。当IRQF位变“1”时,引脚将变低电平引发中断申请。

(2) PF、AF、UF 位:这三位分别为周期中断、报警中断、更新周期结束中断标志位。只要满足各中断的条件,相应的中断标志位将置“1”。

(3) BIT3~BIT0 :未定义的保留位。读出值始终为0 。 寄存器D为只读寄存器。寄存器D的控制字的格式如表6所示。 表6 DS12887 控制寄存器D 各布尔位定义 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 VRT 0 0 0 0 0 0 0

(1) VRT 位:芯片内部RAM 与寄存器内容有效标志位。该位为“1”时,指芯片内部RAM 和寄存器内容有效。读该寄存器后,该位将自动置“1”。

(2) BIT6~BIT0 位:保留位。读出的数值始终为0。 4. DS12887/DS12C887 的中断和更新周期

DS12887/DS12C887 处于正常工作状态时,每秒钟将产生一个更新周期,芯片处于更新周期的标志是寄存器A中的UIP位为“1”。在更新周期内,芯片内部时标寄存器数据处于更新阶段,故在该周期内,微处理器不能读芯片时标寄存器的内容,否则将得到不确定数据。更新周期的基本功能主要是刷新各个时标寄存器中的内容,同时秒时标寄存器内容加1,并检查其他时标寄存器内容是否有溢出,如有溢出则相应进位日、月、年。另外一个功能是检查三个时、分、秒报警

时标寄存器的内容是否与对应时标寄存器的内容相符,如果相符则寄存器C中的AF 位置“1”。如果报警时标寄存器的内容为C0H至FFH之间的数据,则为不关心状态。

为了采样时标寄存器中的数据,DS12887/DS12C887 提供了两种避开更新周期内访问时标寄存器的方案:第一种是利用更新周期结束发出的中断。它可以编程允许在每次更新周期结束后发生中断申请,提醒CPU将有998ms左右的时间去获取有效的数据,在中断之后的998ms时间内,程序可先将时标数据读到芯片内部的不掉电静态RAM中。因为芯片内部的静态RAM 和状态寄存器是可随时读写的,在离开中断服务子程序前应清除寄存器C中的IRQF 位。另一种是:利用寄存器A中的UIP位来指示芯片是否处于更新周期。在UIP位从低变高244μs后,芯片将开始其更新周期,所以检测到UIP位为低电平时,则利用244μs 的间隔时间去读取时标信息。如检测到UIP 位为“1”,则可暂缓读数据,等到UIP 变成低电平后再去读数据。

2.3.2 80C51单片机结构特点

微型计算机的出现与发展已广泛应用到各行各业中,使人们的日常生活工作都发生了重大变化,如果没有微型计算机,人们的工作生活的质量都受到很大的损失。单片微型计算机是微型计算机发展中的一个重要分支,其独特的结构与性能,越来越普及地应用于国民经济的各个领域,以下主要介绍80C51单片机,它与微型计算机的区别是什么,单片机发展概况;它的特点和应用,通过对本节的学习,使大家对单片微型计算机有个初步的认识和了解。 一、单片机的组成

单片微型计算机简称单片机,它在一块芯片上集成了各种功能部件:中央处理器(CPU)、随机存取存储器(RAM)、只读存储器(ROM)、定时器/计数器、和各种输入/输出(I/O)接口(如并行I/O口、串行I/O口和A/D转换器)等。他们之间相互连接图如2-6图,构成一个完整的微型计算机。

图2-6 单片机结构框图

二、 80C51单片机的引脚描述及片外总线结构

1.芯片的引脚描述

CHMOS制造工艺的80C51单片机采用40引脚的双列直插封装(DIP方式),在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制与其它电源复用的引脚,32条输入/输出(I/O)引脚。 下面按其引脚功能为四部分叙述这40条引脚功能。

(1) 电源引脚VCC和VSS。其中:VCC(40脚)接+5V电压。

VSS(20脚)接地。

(2) 接晶体引脚XTAL1和XTAL2。

XTAL1(19脚)接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对CHMOS单片机,此引脚作为驱动端。XTAL2(18脚)接外部晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对CHMOS单片机,该引脚悬浮。

(3) 控制或与其他电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP。 ST/VPD(9脚):当振荡器运行时,在此引脚上出现两个机器周期的高电平将使单片机复位。推荐在此引脚与VSS引脚接一个约8.2K的下拉电阻,与VCC引脚之间连接一个约10uf的电容,以保证可靠地复位。

(4)VCC掉电期间,此引脚可接上备用电源,以保持内部RAM的数据不丢失。当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围内,VPD就向内部RAM提供备用电源。 (5)ALE/PROG(30脚):当访问外部存储器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。对于EPROM型的单片机,在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。 (6)RSEN(29脚):此脚的输出是外部程序存储器的读写选通信号。在从外部程序存储器取令(或常数)期间,每个机器周期两次PESN有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现,PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。

(7)EA/VPP:当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH时,将自动转向执行外部程序存储器内的程序,当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器,对于常用的80C51来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。对于EPROM型单片机,在EPROM编程期间,此引脚也用于施加21伏的编程电源(VPP)。输入/输出I/O引脚P0、P1、P2、P3共32根。

a)P0口(39脚~32脚):是双向8位三态I/O口,外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LSTTL负载。

b)P1口(1脚~8脚):是8位准双向I/O口由于这种接口输出没有高阻状态,输入也不能琐存,故不是 真正的I/O口。门口能驱动(吸收或输出电流)4个LSTTL负载,对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。对EPROM编程和程序验证时,它的接收低8位地址。

c)P2口(21脚~28脚):是8位准双向I/O口。在访问外部存储器时,它