自动浇水系统设计 联系客服

发布时间 : 星期一 文章自动浇水系统设计更新完毕开始阅读8bf2accb03d8ce2f01662341

陕西理工学院毕业论文

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

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

(2) 数据存储器

AT89C51单片机出厂时片内已带有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 振荡电路和时钟

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

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

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

图1.4 AT89C51振荡器的连接方式

第 5 页 共 32 页

陕西理工学院毕业论文

1.7 AT89C51的中断系统

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

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

AT89C51有六个固定的可屏蔽中断源,分别是三个片内定时器/计数器溢出中断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 页 共 32 页

陕西理工学院毕业论文

TF1:定时器/计数器1溢出中断请求标志位。当定时器/计数器1计数产生溢出时,由内部硬件置位TF1,向CPU响应中断并转向该中断服务程序执行时,由硬件内部自动TF1清0。

TR1:定时器/计数器1启动/停止位。由软件置位/复位控制位/计数器1的启动或停止计数。

TF0:定时器/计数器0溢出中断请求标志位。当定时器/计数器0计数产生溢出时,由内部硬件置位TF0,向CPU响应中断并转向该中断服务程序执行时,由硬件内部自动TF1清0. TR0:定时器/计数器0启动/停止位。由软件置位/复位控制定时器/计数器0的启动或停止计数。

IE1:外部中断请求标志位。当CPU检测到INT0低电平或下降沿且IT1=1时,由内部硬件置位IE1标志位(IE=1)向CPU请求中断,当CPU响应中断并转向该中断服务程序执行时,由硬件内部将IE1清0。

IE0:外部中断请求标志位。当CPU检测到INT0低电平或下降沿且IT0=1时,由内部硬件置位IE0标志位(IE0=1)向CPU请求中断,当CPU响应中断并转向该中断服务程序执行时,由硬件内部将TE0清0。

IT1:用软件置位/复位IT1来选择外部中断INT1是下降沿触发还是电平触发中断请求。当IT1置1时,则外部中断INT1为下降沿触发中断请求,即INT1端口由前一个机器周期的高电平跳变为下一个机器周期的低电平,则触发中断请求;当IT1复位清0,则INT1的低电平触发中断请求。

IT0:由软件置位/复位IT0来选择外部中断INT0是下降沿触发还是低电平触发中断请求,其控制原理同IT1。 (1) 中断允许控制寄存器

中断允许控制寄存器IE的格式如下: D7 EA D6 D5 ET2 D4 ES D3 ET1 D2 EX1 D1 ET0 D0 EX0 各控制定义如下:

EA:中断总控制位,EA=1。CPU开中断,它是CPU是否响应中断的前提,在此前提下,如果某中断源的中断允许置位1,才能响应应该中断源的中断请求。如果EA=0,无论哪个中断源有请求,CPU都不予回应。

第 7 页 共 32 页

陕西理工学院毕业论文

ET2:定时器/计数器T2中断控制位,ET2=1,允许T2计数溢出中断;ET=2,禁止T2中断。 ES:串行口中断控制位,ES=1,允许串行口发送/接受中断;ES=0禁止串行口中断。 ET1:定时器/计数器T1中断控制位,ET1=1,允许T1计数溢出中断;ET1=0,禁止T1中断。

EX1:外部中断1控制位,EX1=1,允许中断;EX=0,禁止外部中断1中断。

ET0:定时器/计数器T0中断控制位,ET0=1,允许T0计数溢出中断;ET0=0,禁止T0中断。

EX0:外部中断0控制位,EX0=1,允许中断;EX0=0,禁止外部中断0中断。

1.7.2 中断响应过程

CPU中断处理从响应中断、控制程序转向对应的中断矢量地址入口处执行中断服务程序,到执行返回(RET1)指令为止。中断响应可分为以下几个步骤:

(1)保护断点,即保存下一个将要执行的指令的地址,把这个地址送入堆栈。

(2)寻找中断入口,根据6个不同的中断源所产生的中断,中断系统必须能够正确地识别中断源,查找6个不同的入口地址。以上工作是由单片机自动完成的,与编程者无关。在6个入口地址处存放有中断处理程序。 (2) 执行中断处理程序。

(4)中断返回:执行完中断指令后,从中断处返回到朱程序,继续执行。

1.8 定时器/计数器

AT89C51单片机内部设有两个16位可编程定时器/计数器,即定时器/计数器0和定时器/计数器1。除此之外还有一个可编程定时器/计数器2。

1.8.1 定时器/计数器0和1简介

定时器/计数器0和1内部有一个计数寄存器(THx和TLx),它实际上是一个累加寄存器加1计数。定时器和计数器共用这个寄存器,但定时器/计数器同一时刻只能工作在其中一种方式下,不可能既工作在定时器方式,同时又工作在计数器方式。这两个工作方式的根本区别是在于计数脉冲的来源不同。工作在定时器方式时,对振荡器12分频的脉冲计数,即每过一个机器周期(1个机器周期在时间上和12个振荡周期的时间相等),计数寄存器中的值就加1。

第 8 页 共 32 页