利用825382558259及ADC0809设计大棚环境监测器.docx
- 文档编号:5679863
- 上传时间:2022-12-31
- 格式:DOCX
- 页数:16
- 大小:429.64KB
利用825382558259及ADC0809设计大棚环境监测器.docx
《利用825382558259及ADC0809设计大棚环境监测器.docx》由会员分享,可在线阅读,更多相关《利用825382558259及ADC0809设计大棚环境监测器.docx(16页珍藏版)》请在冰豆网上搜索。
利用825382558259及ADC0809设计大棚环境监测器
利用8253、8255、8259及ADC0809设计大棚环境监测器
摘要:
在微型计算机及应用中Intel系列的8253、8259、8255以及ADC0809在现实生活中都有很广泛的应用。
我们运用它们可以设计大棚环境监测系统,使其在农业大棚生产中发挥意想不到的作用。
当温度或者湿度超限时,进行光提示;两者同时超限时,进行光声提示,并采取提前设置的相应的措施(可根据季节进行调整)。
同时,为了实现当大棚内工作人员发现条件异常时,能够通过手动方式向监测室工作人员提供相应提示,系统设置手动提示按钮和接触提示按钮也是必要的。
关键字:
Intel8253;Intel8255;Intel8259;ADC0809;大棚环境指标;监测系统
0.引言:
农业是我国经济、社会发展的基础。
农业大棚生产是一种应经被广泛应用的一种特殊的生产方式,这种生产方式打破时间与地域的差距,但是大棚的环境指标要求比较严格,其中湿度、温度是影响作物产量的最重要的因素。
我们可以用已学的微机原理与接口技术课程中介绍的芯片设计一种大棚内的环境检测器。
Intel系列的8253是常用的可编程定时/计数器,它通过编程来控制电路的定时值及定时的范围,功能强,使用灵活。
在计算机系统中,定时中断、定时检测、定时扫描等等都是用可编程定时器来完成定时控制的。
Intel8259A时被广泛使用的可编程中断控制器,它用来管理CPU的可屏蔽中断请求。
Intel8255A是微机配套的通用可编程并行接口芯片,具有三个可编程端口(A端口、B端口、C端口)。
ADC0809时NSC公司生产的8路模拟输入逐次逼近型A/D转换器,它采用CMOS工艺,另外,还有8通道多路转换器和3位地址锁存和译码器,以实现对8路输入模拟量IN0~IN7的选择。
运用以上芯片可以实现对农业中大棚中某些环境指标的监测,并且可以设计完整的监测系统根据实际情况采取相对合理的措施。
在实现电气化与农业的结合的过程中,数字化走进农业生产便是一种表现形式。
在我国,电子产品在农业生产中的开发与应用能力还在初级阶段。
我们大学生应该倡导电子产品在农业生产方面的应用,为祖国的信息化农业做出自己的贡献。
1.基础理论知识
1.18253的功能
Intel8253—PIT,即可编程间隔计数器有3个独立的16位计数器每个计数器都可以按照二进制或者BCD码进行计数,计数速率可达2MHz,每个计数器有6种工作方式,可编程设置和改变。
Intel8253可以广泛应用在方波发生器、分频器、实时时钟、事件计数等方面。
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。
顺便提一下,CR、CE和OL都是16位寄存器,但是也可以作8位寄存器来用。
8253内部结构
图18253内部结构图
1.1.1.方式0计数结束后输出由低变高,即产生中断
8253用作计数器时一般工作在方式0。
所谓计数结束产生中断,是指在计数值减到0时,输出端(OUT)产生的输出信号可作为中断申请信号,要求CPU进行相应的处理。
方式0有如下特点:
①当控制字写进控制字寄存器确定了方式0时,计数器的输出(OUT端口)保持低电平。
当写入计数初值时,计数器开始减一计数。
在计数过程中OUT保持低电平。
当计数器减到0时输出端OUT才由低变高。
适应于向CPU发送中断请求。
②计数器只记一遍数。
当计数到0时,不回复计数值,不重复开始计数,且输出一直保持高电平。
只有在写入新的数值时,OUT才变低电平,并开始新的计数。
③GATE为计数控制门,方式0的计数过程可由GATE控制暂停,即GATE=1时,允许计数;GATE=0时,停止计数。
GATE信号的变化不影响输出OUT端口的状态。
④计数过程中,可重新装入计数初值。
如果在计数过程中,重新写入某一计数初值,若是8位计数,则在写完新计数值后,计数器将从该值重新开始作减1计数;若是16位计数,在写入第一个字节后,计数器将停止计数,在写入第二个字节后,计数器按照新的计数值开始计数。
1.1.2.方式1可编程的单拍脉冲
可编程的单拍负脉冲又称为单稳态输出方式,简称单稳定时。
方式1的特点是:
①写入控制字后,计数器输出OUT端为高电平作为起始电平,在写入计数值后计数器并不开始计数,而要由外部门控GATE脉冲上升沿启动,并在上升沿之后的下一个CLK输入脉冲的下降沿开始计数。
GATE上升沿启动计数的同时,使输出OUT变低,每来一个计数脉冲,计数器作减一计数,直到计数减为0时,OUT输出端再变为高电平。
假设计数初值为N,则OUT端输出的单拍脉冲宽度为N个CLK时钟脉冲周期。
②如果在计数器未减到0时,不用送计数值,可再次由GATE脉冲启动。
由下一个时钟脉冲开始,计数器将从初始值重新作减1计数。
当减至0时,输出端又变为高电平,输出脉冲宽度的单拍脉冲。
③在计数过程中,可改变计数初值,此时计数过程不受影响。
如果再次触发启动,计数器将按新的输入的计数值计数。
④在计数器未到0时,如果GATE再次启动,则计数初值将重新装入计数器,并重新开始计数。
1.1.3.方式2分频脉冲发生器
方式2是一种具有自动予置计数初值N的脉冲发生器。
从OUT端可以输出连续脉冲信号,脉冲宽度等于时钟脉冲周期,而计数初值N决定了输出端两个负脉冲之间的宽度即输出脉冲周期。
方式2也叫N分频器,因为输出脉冲为输入脉冲的N分频,即出现N个输入脉冲才输出一个脉冲。
方式2有如下特点:
①当写入控制字后OUT端输出为高电平作为起始电平,在写入计数值N后将立即自动开始对输入脉冲CLK计数,输出端仍一直为高;当计数器减到1时,输出变低,计数器减到0时又变为高,计数器重新按已写入的计数值N继续计数,周而复始,在OUT端输出一个N分频脉冲,其正脉冲宽度为(N-1)个输入脉冲时钟周期(是N个CLK时钟脉冲周期之和),而负脉冲输出宽度(持续时间)是一个CLK脉冲周期。
(在方式2下,不但高电平的门控信号有效,上升跳变的门信号也是有效的。
)
②N分频计数器,这种方式是输出对输入脉冲按计数器计数初值N分频后的连续脉冲信号。
③GATE用于控制计数,GATE=1,允许计数;GATE=0,停止计数。
因此,可以用GATE来使计数器同步。
④在计数过程中可以改变计数值,这对正在进行的计数没有影响。
但在计数到1时输出变低,经过一个CLK周期后又变高,计数器将按照新的计数值计数。
1.1.4.方式3分频方波发生器
方式3的特点是:
①方式3常用于波特率发生器。
输出为方波或近似方波的矩形波,若计数为N,则输出方波的周期为N个CLK脉冲的宽度。
②写入方式3控制字后输出为高电平。
写入计数值后计数器自动开始对输入CLK脉冲计数,输出OUT仍保持为高;在计数完成一半时,输出OUT变为低电平,直到计数为0时,输出OUT又变为高电平,并重复上述计数过程。
③若计数值N为偶数时,OUT方波的占空比为1:
1;若N为奇数,其占空比为:
(N+1)/2:
(N-1)/2[即输出分频波高电平宽度为(N+1)/2CLK周期,低电平周期为(N-1)/2CLK周期]。
④GATE信号能使计数过程重新开始。
GATE=1允许计数,GATE=0禁止计数。
停止后OUT将立即变为高点平,当GATE再次变为高后,计数器将自动装入计数值,重新开始计数。
1.1.5.方式4软件触发选通
方式4是类似于方式0的工作方式,计数器是靠置入新的计数初值这个软件操作来触发计数器工作的,故称为软件触发。
方式4有如下特点:
①方式4是靠写入计数值来进行软件触发的“一次性有效”的选通脉冲发生器。
写入控制字后输出端OUT变为高,并一直保持。
在写入计数初值之后开始计数,当计数到0时输出端OUT变为低,维持一个CLK周期后又恢复为高,并一直保持为高,直到再次写入计数来进行“软件触发”才能再次开始。
②若GATE=1,允许计数;GATE=0,停止计数。
③在计数过程中,如果改变计数值,则按新计数值从新开始计数。
如果计数值是16位,则在设置第一个字节时停止,在设置第二个字节后,按新的计数值开始计数。
1.1.6.方式5硬件触发选通脉冲发生器
方式5有如下特点:
①方式5类似于方式4,所不同的是GATE端输入信号的作用不同。
方式5是硬
件触发,是在外部硬件发出门控信号后才发生的。
②方式5是靠门控脉冲GATE的上升沿来进行触发的选通脉冲发生器。
写入控制字后输出端OUT为高,这是初始电平;写入计数值后计数器并不开始计数,而要由门控脉冲GATE上升沿触发后才开始计数,计数到0输出由高变低,一个CLK时钟周期后又恢复为高,并一直保持,直到下次门控脉冲触发再次开始计数。
③在此方式中,计数器可重新触发,在任何时候,当GATE信号的上升沿到来,将把计数初值重新送入计数器,然后开始计数过程。
1.28255功能
Intel8255A是微机配套的通用可编程并行接口芯片,具有三个可编程端口(A端口、B端口、C端口)。
,每个端口8条线,共24条I/O引脚,也可分2组工作,每组12线,并有三种工作方式。
芯片的主要技术性能如下:
1输入、输出电平与TTL电平完全兼容。
2时序特性好。
3部分位可以直接置“1”/置“0”,便于实现控制接口使用。
4单一的+5V电源
8255A的内部结构:
图28255内部结构图
1.2.18255A的工作方式
8255A有三种工作方式:
基本输入/输出方式、单向选通输入/输出方式和双向选通输入/输出方式。
(1)方式0:
基本输入/输出方式
在方式0下,A端口、B端口和C端口都可提供简单的输入输出操作,对每个端口不需要固定的应答联络信号。
工作在方式0时,在程序中可以直接使用输入命令(IN)和输出命令(OUT)指令对个端口进行读写。
方式0的基本定义是2个8位的端口和2个4位端口。
任何一个端口都可以作为输入或输出,输出的数据可以被锁存,输入的数据不能锁存。
方式0常用于与外设无条件数据传送或查询方式数据传送。
(2)方式1:
单向选通输入/输出方式
方式1是一种带选通信号的单方向输入/输出工作方式,其特点是:
与外设传送数据时,需要联络信号进行协调,允许用查询或中断方式传送数据。
由于C端口的PC0,PC1和PC2定义为B端口工作在方式1的联络信号线,PC3,PC4和PC5定义为A端口工作方式1的联络信号线,因此只允许A端口和B端口工作在方式1。
为了能实现用中断方式传送数据,在8255A内部设有一个中断允许触发器INTE,当触发器为“1”时允许中断,为“0”时禁止中断。
(3)方式2:
双向选通输入/输出方式
在双向的传输中,8255A可以向外设发送数据,同时CPU通过这8位数据线有接收外设的数据是方式1输入和输出的组合,即同一端口的信号线既可以输入又可以输出。
方式2的基本定义是,只能适用于A端口,一个8位的双向端口(A端口)和1个5位的控制端口(C端口)。
A端口的输入和输出都可以被锁存。
5位的控制端口用来传送8位双向端口的控制和状态信息。
当A端口工作方式2时,由PC7~PC0作为8位数据线,因为要由C端口对A端口进行控制,所以称为带选通的双向传输方式。
在此方式下,C端口中有5位PC7~PC3作为控制信号和状态信息使用,剩下的3位PC2~PC0仍可以作为基本I/O线,工作在方式0。
当控制字的D0位为1时,PC2~PC0作输入;当控制字的D0位为0时,PC2~PC0作输出。
需要注意的是:
输入和输出公用一个中断请求线PC3,但中断允许触发器有两个,即输入中断允许触发器为INTE2,由PC4写入设置,输出中断允许触发器为INTE1,由PC6写入设置。
1.3ADC0809功能
ADC0809是采样频率为8位的、以逐次逼近原理进行模—数转换的器件。
其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。
1.48259功能
Intel8259A时被广泛使用的可编程中断控制器,它用来管理CPU的可屏蔽中断请求。
8259A的主要功能如下:
①一片8259A可以直接接受并管理8级可屏蔽中断请求,即可以直接管理8个中断源,级联方式下不用附加电路就可以管理64级可屏蔽中断元源,并具有优先权判决优先控制。
②能为中断源提供中断向量码。
③对每一级中断进行屏蔽控制。
④具有多种工作方式,并可通过编程来加以选择。
8259内部结构图如下:
图38259内部结构图
2.系统设计
2.1系统原理
该系统设计主要是围绕对Intel8255、8253、8259以及ADC0809应用展开的。
首先,通过传感器采集外界信号,将湿度和温度等非电学量信号转化成电信号。
只将温度传感器所检测到的模拟信线号通过ADC0809的IN0~IN7的8路模拟输入通道输入到ADC0809,然后通过D0~D7将转换后的8位数字量输出到8255的PA0~PA7,即将数字信息输入8255进行锁存。
同时,8255通过B组控制电路部分通道向ADC0809的ADDC~ADDA引脚输入信号,控制8路模拟开关的3位地址选通端,以选择对应的输入通道。
8255的C端口、ADC0809的OE受到EOC的作用(转化结束信号控制输出允许信号,并将此信号输入到8255中)。
8255的C端口的一低位输入缓冲器需要接收度传感器的信号,C端口的高位需要作为数据输出器作为环境调节器的启动信号,并控制8253的计数器0和计数器2的门控信号。
另外,A1、A0配合其他引脚进行对8255进行端口操作,即实现对寄存器选择和操作。
8253的通道0、通道1和通道2均工作在工作方式3,即方波发生器。
通道0和通道2所接受的计数脉冲输入设为1MHz。
通道0的脉冲输出作为通道1的输入脉冲,同时,始终保持通道1的门控信号为高电平,使其一直工作,以此达到对单一指标(温度或湿度信号)的监测目的,实现光信号提示。
输入端口2主要作用是对湿度和温度同时满足条件时进行声音提示。
另外,A1、A0配合其他引脚进行对8253进行端口操作,即实现对寄存器选择和操作。
系统的另外一部分是实现手动调节部分主要是由Intel8259完成,因为它是具有可编程功能的中断控制器。
8259拥有8个中断申请器IR0~IR7,因此可以通过手动开关对中断控制器的中断请求锁存器进行控制。
电路连接图可见附录1。
8255的端口地址范围:
80H~83H
8253的端口地址范围:
40H~43H
8259的端口地址范围:
20H~21H
下图是我所设计系统的原理框图:
图4系统框图
2.2芯片的初始化
2.2.18255初始化
8255A的三个独立端口A端口、B端口、C端口,它们彼此独立,都是8位的数据口,用来完成和外设之间的信息交换。
A端口对应一个8位的数据输入锁存器和一个8位的数据输出锁存器和缓冲器。
因此,A端口适合用在双向的数据传输场合,用A端口传送数据,不管是输入还是输出,都可以锁存。
B端口、C端口分别是由一个8位的数据输入缓冲器和一个8位的数据输出锁存器和缓冲器组成。
一次用B端口和C端口传输数据作输出端口时,数据信息可以实现锁存功能;而用作输入端口时,则不能对数据实现锁存。
A端口和B端口常用作独立的输入口和输出口,而C端口常用来配合A端口和B端口的工作使用。
C分成两个4位的端口,这两个4位的端口分别作为A端口和B端口的控制信号和输入状态信号使用。
控制电路分为A组控制电路和B组控制电路。
A组控制电路控制A端口和C端口的高4位(PC4~PC7)。
B组控制电路控制B端口和C端口的低4(PC0~PC7)由它们内部的控制寄存器接收CPU输出的方式控制命令字,还接受来自读/写控制逻辑电路读/写命令,根据控制命令决定A组合B组的工作方式和读/写操作。
8255A的A,B,C三个端口的工作方式是在初始化编程时,通过向8255A的控制端口写入控制字来设定的。
8255A由编程写入的控制字有两个:
方式控制字和C端口置位/复位控制字。
方式控制字用于设置端口A,B,C的工作方式和数据传送方向;置位/复位控制字用于设置C口的PC7~PC0中某一条口线PCi(i=0~7)的电平。
两个控制字公用一个端口地址,由控制字的最高位作为区分这两个控制字的标志位。
(1)8255A工作方式控制字的格式
D0:
设置PC3~PC0的数据传送方向。
D0=1为输入;D0=0为输出。
D1:
设置B口的数据传送方向。
D1=1为输入;D1=0为输出.
D2:
设置B口的工作方式。
D2=1为方式1;D2=0为方式0。
D3:
设置PC7~PC4的数据传送方向。
D3=1为输入;D3=0为输出。
D4:
设置A口的数据传送方向。
D4=1为输入;D4=0为输出。
D6D5:
设置A口的工作方式。
D6D5=00为方式0,D6D5=01为方式1,D6D5=10或11为方式2。
D7:
方式控制字的标志位,恒为1。
(2)C端口口置位/复位控制字的格式
8255AC口置位/复位控制字用于设置C口某一位口线PCi(i=0~7)输出为高电平(置位)或低电平(复位),对各端口的工作方式没有影响。
D3~D1:
8种状态组合000~111对应表示PC0~PC7。
D0:
用来设定指定口线PCi为高电平还是低电平。
当D0=1时,指定口线PCi输出高电平;当D0=0时,指定口线PCi输出低电平。
D6~D4没有定义,状态可以任意,通常设置为0。
D7位作为标志位,恒为0。
例如,若把PC2口线输出状态设置为高电平,则置位/复位控制字为00000101B。
(3)8255A初始化编程
8255A的初始化编程比较简单,只需要将工作方式控制字写入控制端口即可。
另外,C口置位/复位控制字的写入只是对C口指定位输出状态起作用,对A口和B口的工作方式没有影响,因此只有需要在初始化时指定C口某一位的输出电平时,才写入C口置位/复位控制字。
初始化思路为:
①地址确定
②控制字确定
③初始化程序
按照系统要求对8255进行初始化,具体程序如下:
MOVAL,91H;设置8255工作方式,输出方式0
OUT83H,AL
MOVAL,00H;C端口初始化
OUT82H,AL
2.2.28259初始化
8259A时可编程控制器,它通过对控制字的编程控制,来初始化来控制初始
化和控制8259A工作方式,使其完成规定的功能。
CPU对8259A的控制命令分为
两类:
初始化控制字(ICW),从工作命令字(OCW)。
8259A共有7个控制字,
其中4个是初始化控制字,3个是操作控制字。
8259A的编程分为两部分:
一是初始化程序,它是通过初始化控制字来完成对
8259A初始状态的设定,在计算机加电初始化时有BIOS完成的:
而是操作方式的
编程,它是通过操作命令字控制8259A的工作方式,操作命令字可在8259A初始
化后的任何时间写入。
按照系统要求,8259A的初始化程序为:
MOVAL,13H;初始化8259ICW1
OUT20H,AL
MOVAL,08H;送中断类型码基值
OUT21H,AL
MOVAL,0DH;一般中断结束方式
OUT21H,AL
2.2.32583的初始化
按照系统需求8253需是通道0、通道1、通道2,工作在方式三,即方波发生器。
要使用8253,必须首先对其进行初始化,初始化主要有两种方法:
①对每个计数器分别进行初始化,先写控制字,后写数值。
如果是16位的,则先写地8位再写高8位。
②先写所有计数器的方式字,再写各个计数器的计数值。
如果是16位的,则先写地8位再写高8位。
8253加电后的工作方式不确定,必须经初始化编程后,才能正常工作。
初始化编程:
①先写入控制字
②写入计数初值
③工作后,可随时读取计数值:
④一般先将计数值锁存在通道内的锁存器中然后可分两次读取16位的计数
根据系统要求,应将计数器0,计数器1和计数器2设置为方式3,即方波发生器。
计数器2需输出频率为2KHz的方波,由于输入为1MHz,计数器取自时钟发生器的输出的2MHz的时钟脉冲,其重复周期为T=1/2MHz=0.5μs,而输出方波周期为T0=1/2KHz=0.5ms,因此计数器2初值设置为你=fi/fo=2MHz/1KHz=2000。
而且由系统获得的信息有8253的端口地址范围是40H~43H;
在方波的产生之前对8253进行初始化的程序如下:
MOVDX,43H
MOVAL,36H;设置控制字00110110(计数器0、方式3,写两个字节)
OUTDX,AL;输出计数器0的控制字,计数器0以二进制工作在方式3
MOVAX,00H;设置计数初值
OUT40H,AL
MOVAL,10H
OUT40H,AL
MOVAL,77H;设置8253计数器1方式控制字
OUT43H,AL
MOVAL,00H;8253设置计数初值
OUT41H,AL
MOVAL,10H
OUT41H,AL
MOVAL,0B7H;设置8253计数器2方式控制字
OUT43H,AL
MOVAL,00H;设置8253计数器计数初值
OUT42H,AL
MOVAL,05H
OUT42H,AL
2.3系统功能的实现
根据系统需要,对各芯片进行编程操作,以实现系统的实际功能。
主要包括:
中断设置、数据采集、中断服务操作。
具体程序如下:
2.3.1中断设置
MOVAH,25H;置中断向量
MOVAL,08H;中断类型号为入口参数
MOVBX,SEGKEYBINT;DS:
DX指向4字节地址
MOVDS,BX
MOVDX,OFFSETKEYBINT
INT21H
MOVAH,25H
MOVAL,09H
MOVBX,SEGKEYAINT
MOVDS,BX
MOVDX,OFFSETKEYAINT
INT21H
STI
2.3.2数据采集
MOVAL,00L;选ADC0809模拟量输入通道号
OUT81H,AL
LOP:
MOVAL,09H;置PC4=1,锁存模拟量通道选择号
OUT83H,AL
NOP
MOVAL,08H;置PC=0,启动A/D转换
OUT83H,AL
LOP1:
INAL,82H;读8255C端口,查询EOC
TESTAL,01H
JZLOP1
INAL,80H;读A/D转换结果
CMPAL,7AH;判断是否高于上限
JAABOVE
INAL,82H;判断湿度传感器是否产生提示信号
TESTAL,02H
JNZTS
MOVAL,0EH
OUT83H,AL
JMPLOP
ABOVE:
I
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 825382558259 ADC0809 设计 大棚 环境 监测器