基于单片机的湿度控制系统 下载本文

P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为STC89C52的一些特殊功能口,如下所示: 各口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)

P3口同时为闪烁编程和编程校验接收一些控制信号。

RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

第 3 页 共 33 页

/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。

图1.2 STC89C52的引脚图

1.5 STC89C52单片机的存储器

在单片机中,存储器分为程序存储器ROM和数据存储器RAM,并且两个存储器是独立编址的。

STC89C52单片机芯片内配置有8KB(0000H-1FFFH)的Flash程序存储器和256字(00H-FFH)的数据存储器RAM,根据需要可外扩到最大64KB的程序存储器和64KB的数据存储器,因此STC89C52的存储器结构可分为4个部分:片内程序存储器、片外程序存储器、片内数据存储器和片外程序存储器。如果以最小系统使用单片机,即不扩展,则STC89C52的存储器结构就较简单:只有单片机自身提供的8Flash程序存储器和256字节数据存储器RAM。

图1.3给出了STC89C52单片机的存储器分布空间。左侧框中为单片机自身提供的8KBFlash程序存储器和256字节数据存储器RAM。右侧为可扩展的64KB的程序存储器ROM和64KB的数据存储器RAM。

第 4 页 共 33 页

图1.3存储器空间分布 (1) 程序存储器

STC89C52单片机出厂时片内已带有8KB的Flash程序存储器,使用时,引脚/EA要按高电平(5V),这时,复位后CPU从片内ROM区0000H单元开始读取指令代码,一直运行到1FFFH单元,如果外部扩展有程序存储器ROM,则CPU会自动转移到片外ROM空间2000H-FFFH读取指令代码。

(2) 数据存储器

STC89C52单片机出厂时片内已带有256字节的数据存储器RAM,如果不够用,可以在片外扩展,最多可扩展64KB RAM.

单片机自带的数据存储器RAM结构如图2-4所示,此字节单元(00H-FFH)的低128字节(00H-7FH)单元为用户使用区,高128字节(80H-FFH)单元为特殊功能寄存器SFR区。 片内数据存储器的00H-7FH单元又划分为3块:00H-1FH块是工作寄存器所用;20-2FH块是位寻址功能的单元区;30H-3FH是普通RAM区。工作寄存器又分为4组,在当前的运行程序中只有一组是被激活的,谁被激活有程序状态寄存器PEW的RS1,RS0两位决定。

1.6 振荡电路和时钟

在STC89C52芯片内部,有一个振荡电路和时钟发生器,引脚XTAL1和XTAL2之间接入晶体振荡器和电容后构成内部时钟方式。也可以使用外部振荡器,由外部振荡器产生的信号直接加载到振荡器的输入端,作为CPU的时钟源,称为外部时钟方式。采用外部时钟方式时,外部振荡器的输出信号接至XTAL1,XTAL2悬空。两种方式的电路连接图1.6所示。大多数的单片机采用内部时钟方式,本次设计亦然。

在STC89C52单片机内部,引脚XTAL2和引脚XTAL1连接着一个高增益反相放大器,XTAL1引脚是反相放大器的输入端,XTAL2引脚是反相放大器的输出端。

芯片内部的时钟发生器是一个二分频触发器,振荡器的输出fosc为其输入,输出为两相时钟信号(状态时钟信号),频率为振荡器输出信号频率fosc的二分之一。状态时钟经三分频后为低字节地址锁存信号ALE,频率为振荡器输出信号频率fosc的六分之一,经六分频后为机器周期信号,频率为fosc/12。C1,C2一般取20-30pF的陶瓷电容器。

图1.4 STC89C52振荡器的连接方式

第 5 页 共 33 页

1.7 STC89C52的中断系统

为了提高系统的工作效率,STC89C52单片机设置了中断系统,采用中断方式与外设进行数据传送。所谓“中断”,是指单片机在执行某一段程序的过程中,由于某种原因(如异常情况或特殊请求),单片机暂时中止正在执行的程序,而去执行相应的处理程序,待处理结束后,再返回到被打断的程序除,继续执行原程序的过程。

1.7.1 中断系统结构和中断控制

STC89C52有六个固定的可屏蔽中断源,分别是三个片内定时器/计数器溢出中断TF0、TF1和TF2,两个外部中断/INT0(P3.2)和/INT1(P3.3),一个片内串行口中断T1或RI。6个中断源有两个中断优先级,可形成中断嵌套。它们在程序存储器中各有固定的中断入口地址,由此进入相应的中断服务程序。

引起6个中断源的符号、名称及产生的条件如下:

/INT0:外部中断0,由P3.2端口线引入,低电平或下降沿引起; /INT1:外部中断1,由P3.3端口线引入,低电平或下降沿引起; T0:定时器/计数器0中断,由T0记满回零引起; T1 :定时器/计数器1中断,由T1记满回零引起;

T1/RI:串行口I/O中断,串行口完成一帧字符发送/接收后引起中断; T2:定时器/计数器2中断,由T2记满回零引起。

在本次设计中采用了定时器/计数器0中断,它的中断控制寄存器包括定时器/计数器0、1控制寄存器TCON和中断允许控制寄存器IE。 (1) 定时器控制寄存器TCON

TCON是定时器/计数器和外部中断两者合用的一个可寻址的特殊功能寄存器,它的格式如下: D7 TF1 D6 TR1 D5 TF0 D4 TR0 D3 IE1 D2 IT1 D1 IE0 D0 IT0 各控制位定义如下:

第 6 页 共 33 页