温度采集系统软硬件设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章:温度采集系统课程设计的目的意义我们所做的课题是以8088cpu为核心设计一个温度检测系统。
通过该实验使我们对微机系统有一个全面的了解,并掌握常规芯片的使用方法,以及掌握简单微型计算机应用系统软硬件设计的方法。
该实验让我们学习A/D转换器的原理及接口方法,8255在微机系统中的作用,电路结构及其他接口电路的综合使用,并掌握ADC0809与cpu 的电路连接,并行接口8255与cpu及外部器件的连接方法,编程及应用,同时熟悉信号的采样和保持过程。
为了实现计算机对生产过程及对象的控制,需要将对象的各种测量参数按照要求转换成数字信号送入计算机。
经计算机运算处理后再再转换成适合于对生产过程进行控制的量。
而我们所做的模拟输入通道就是随时间变化的模拟输入信号变成数字信号送入计算机。
在许多行业中,温度采集系统是不可或缺的,我们所做的系统以8088cpu为核心设计的温度监测系统(A/D采用ADC0809)。
系统可实现温度信号的采集在3位LED显示器上显示当前的温度。
第二章温度采集系统软硬件设计任务
一:设计目的
通过本课程设计,综合应用所学过的知识,设计一个数字温度计,有利于我们更好的复习所学过的知识,了解8255A和ADC0809AD转换器的工作原理,同时能培养我们编程的能力。
通过编写综合性的的程序,进行一次较全面的汇编编程训练,提
高分析问题和解决问题的能力,提高调试程序的能力。
熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,加强综合能力,提高系统设计水平。
二:设计内容
以8088CPU 为核心设计一个温度采集系统,系统可以实现一路温度的采集,在3位LED显示器上显示当前温度。
三:设计要求
画出电路原理图,说明工作原理,给出流程图及源代码并加注释。
分以下几个模块:8088主控模块、A/D转换模块、并行接口模块、显示模块、温度传感器采集模块、时钟信号发生器模块。
四:所用元器件
1)温度传感器 LM355
3)A/D转换器 ADC0809
4)可编程并行接口 8255A
5)CPU8088
6)数字显示器LED
7) 8284时钟发生器
8)电阻若干
9)电容若干
10)三极管
第三章总体设计方案
一:设计思想
本设计所用器件主要有传感器,A/D转换器,8088CPU,可编程并行接口8255,LED显示器等。
首先传感器把所测的温度转换为电压,输入A/D转换器中进行转换,然后再把得到的二进制数经过CPU在LED上显示出来。
图3.1 系统设计.总体流程图
二:小组具体分工:
图3.2 系统框图
第四章硬件设计
一.温度计电路原理图如下页图所示,控制器用8088CPU,温度传感器用LM335 系列电压输出型传感器,用3位共阴LED数码管以动态扫描法实现温度显示。
图4.1温度采集系统设计原理图
二.温度传感器的工作原理
本设计所选的温度传感器为LM335系列电压输出集成温度传感器,此传感器的工作温度范围为-10~100摄氏度,作为一个电压源,当工作电流在0.4~5mA范围内变化时,并不影响传感器的性能,因为它的动态电阻小于1欧姆,如果在25摄氏度下标定,在100度宽的温度范围内误差小于1摄氏度,具有良好的输出线性。
它的工作原理图如下:
图4.2 电压型集成温度传感器采集模块原理图
三.A/D转换器的工作原理
实验所选的AD0809所转换的电压范围不大,这样一来,当所采集的温度是0℃时,所转换的电压量是0V,通过A/D转换后所对应的数字量是00000000。
当采集的温度是255℃时,所转换的电压量是10V, 通过A/D转换后所对应的数字量是11111111。
这样看来,从A/D输出的数字量和显示的温度是一一对应的。
假如数字量是00000011时,通过
8255A编程就可在显示器上显示3℃。
图 4.3 ADC0809管脚图
ADC0809芯片介绍:
ADC0809是CMOS材料的8位单片A/D转换器件。
8通道(8路)输入、8位字长、转换时间100μs、内置三态输出缓冲器片内有8路模拟开关、模拟开关的地址锁存与译码电路、比较器、256R电阻T
型网络、树状电子开关、逐次逼近寄存器SAR、三态输出锁存缓冲器、控制与时序电路等。
逐次逼近式A/D转换器的主要原理为:将一个待转换的模拟输入信号VIN与一个“推测”信号V1相比较,根据推测信号是大于还是小于输入信号来决定减小还是增大该推测信号,以便模拟输入信号逼近。
推测信号由D/A变换器的输出获得,当推测信号与模拟输入信号“相等”时,向D/A转换器输入的数字即为对应的模拟输入的数字。
其“推测”的算法是这样的,它使二进制计数器的二进制数的每一位从最高位起依次置1。
每接一位时,都要进行测试。
若模拟输入信号VIN小于推测信号V1,则比较器的输出为零,并使
该位置零;否则比较器的输出为1,并使该位保持1。
无论哪种情况,均应继续比较下一位,直到最末位为止。
此时在D/A变换器的数字输入即为对应于模拟输入信号的数字量,将此数字输出,即完成其A/D 转换过程。
ADC0809通过引脚IN0、IN1、……IN7可输入8路单片模拟输入电压。
ALE将三位地址线ADDA、ADDB、ADDC进行锁存,然后由译码器选通8路中的一路进行A/D转换。
三态输出锁存器输出对应于数字量最高位的D7,对应于最低位D0。
OE端为输出允许信号,当OE端为最高电平时,将三态输出锁存器中的数字量放在数据总线上,以供CPU读入。
START和EOC分别为启动信号和转换结束信号,EOC用来申请中断。
ADC0809的主要技术指标为:
·分辨率:8位
·单电源:+5V
·总的不可调误差:±1LSB
·转换时间:取决于时钟频率
·模拟输入范围:单极性0~5V
·时钟频率范围:10KHZ~1280KHZ主要引脚功能
ADC0809的主要管脚:
·D7~D0:输出数据线(三态)
·IN0~IN7:8通道(路)模拟输入
·ADDA、ADDB、ADDC:通道地址
·ALE:通道地址锁存
·START:启动转换
·EOC:转换结束状态输出
·OE:输出允许(打开输出三态门)
·CLK:时钟输入(10KHz~1.2MHz)
四.8088CPU的工作原理
8088CPU采用DIP 40 (双列直插40脚)封装
图4.4 8088CPU引脚图
8088部分引脚采用分时复用方式,即在不同时间传送不同的信息;还有一些引脚的功能因CPU的工作方式(最小方式/最大方式)的不同而不同。
8088芯片的地址和数据分时使用引脚,共占20根引脚。
20根地址总线,用于输出CPU要访问的内存单元(或I/O端口)
的地址,为三态输出信号;(与数据和状态线复用),直接寻址空间为1MB。
能够完成微型计算机的基本操作数的读取,指令的执行,中断控制等基本功能。
8根外部数据总线,用来在CPU与内存(或I/O端口)之间传送数据,为三态双向信号。
(与低16位地址线复用)
AD15~AD0——地址/数据总线
A19/S6~A16/S3——地址/状态线
控制总线:
MN/MX——工作方式选择控制线,用来控制8088的工作方式。
MN/MX接+5V,最小方式,由8088提供系统所需要的全部控制信号,用来构成单处理机系统;MN/MX接地,最大方式,系统部分总线控制信号由专用的总线控制器8288提供,该方式用于多处理机系统。
与工作方式无关的常用控制线
RD——读控制信号
READY——准备好信号
RESET——复位信号
INTR——可屏蔽中断请求
NMI——不可屏蔽中断请求
TEST——测试信号
BHE/S7——数据总线高8位允许/状态S7信号
MN/MX——工作方式选择
ALE——地址锁存允许
DEN——数据传送允许
DT/R——数据发送/接收信号
M/IO——存储器/输入输出选择信号
WR——写控制信号
INTA——中断响应信号
HOLD——总线请求信号
HLDA——总线响应信号
LOCK——总线锁定信号
RQ/GT1和RQ/GT0——总线请求响应
CLK——时钟信号
Vcc——电源(输入)接+5V电源。
GND——地线
五.可编程8255并行接口
8255的工作原理8255A有3个8位数据端口,即A口、B口及C口,它们都可以分别作为输入口或输出口使用;A组控制与B组控制;读/写控制逻辑;数据总路线缓冲器。
8255内部有4个寄存器:分别为寄存器A、B、C和控制寄存器。
A、B、C寄存器的数据就是引脚PA7~PA0、PB7~PB0、PC7~PC0上输入或输出的数据。
而控制寄存器的数据则表明PA、PB、PC的工作方式。
通过CS、A0、A1、RD和WR对4个寄存器进行操作。
8255引脚功能图和引脚功能:
图4.5 8255A引脚图
RESET:复位输入线。
CS:片选信号线, CS为低电平时选通8255。
WR:写入信号。
D0~D7:三态双向数据总线。
PA0~PA7:端口A输入输出线,。
PB0~PB7:端口B输入输出线。
PC0~PC7:端口C输入输出线。
A0A1:口地址选择信号线。
用于选择8255A的3个数据端口和一个控制口。
当A1A0=00时,选择端口A;为01时,选择端口B;为10,选择端口C;为11时,选择控制口。
8255的工作方式:
8255A有三种工作方式,用户可以通过编程来设置。
方式0:基本的输入/输出方式。
A口、B口、C口都可以工作在此方式下。
方式1:选通输入/输出方式。
A口、B口工作在此方式下。
方式2:双向传输方式。
只有A口可以工作在此方式下。
方式0:(最为常用)
为一种简单的输入/输出方式,没有规定固定的应答联络信号,可用A,B,C三个口的任一位充当查询信号,其余I/O口仍可作为独立的端口和外设相连。
即:PA0—PA7,PB0—PB7,PC0—PC7均可作为I/O线使用,没有限制一定传送什么信号;口A、口B、口C高4位和口C低4位可以分别设定为输入口或输出口。
方式0的应用场合有两种:一种是同步传送;一种是查询传送。
表4.1 8255方式控制字:
方式控制字决定了8255的工作方式。
8255工作之前软件上必须初始化,即将方式控制字写入控制字寄存器中,以指定端口的工作方式。
C口的按位置/复位控制字
只有C口才有,它是通过向控制口写入按指定位置位/复位的控制字来实现的。
C口的这个功能可用于设置方式1的中断允许,可以设置外设的启/停等
图4.5 数据采集模数转换原理图
六. 共阴极LED数字显示器
由于输出的电压量范围是0~5V即转换为数字量后为0~FF之间。
所以,要使温度表示范围为0~255℃。
经过CPU未经处理过的数值是以ASCII码的方式显示,还需将ASCII码转换成十进制显示。
为了便于读数。
在LED灯上的显示将设计为8421码的方式显示。
显示电路温度信号经8255输出后有控制端口控制LED显示器,将温度在显示器显示出来,显示电路如图4-6:
图4.6 与8255芯片连接的温度显示电路
七.时钟发生器
电路过程为了所有芯片都同步进行运行,我们采用独立8284信号发生器来驱动芯片工作,指令运行。
图4.7 8284时钟信号发生器
第五章软件设计
程序的主要功能是负责温度的转化,读出处理并实现在LED上实时显示。
各程序流程图如下:
一.总流程图:
二.数据采集系统流程图
三.温度显示子程序流程图
四.设计程度如下:
DATA SEGMENT ;定义数据段
BUF1 DB ?
BUF2 DW ?
LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;共阴极数码管,0到9的字模表
DATA ENDS ;数据段结束
STACK SEGMENGT ;定义堆栈段
STA1 DW ?
STACK ENDS
CODE SEGMENT ;定义代码段
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
EN_8255 PROC NEAR ;以下是数据采集部分
MOV DX,0F8E3H ;输入8255控制口地址 MOV AL,91H ;A,B,C均为方式0,A入B出,CL入 OUT DX,AL ;8255初始化
RET
EN_8255 ENDP
START: MOV AX,DATA
MOV DS,AX ;寄存器初始化
MOV ES,AX
MOV AX,STACK
MOV SS,AX
LEA SI,BUF1 ;取BUF1的有效地址
CALL EN_8255 ;调用初始化8255程序
MOV BL,0 ;通道号,初始指向第0路
MOV CX,1 ;共采集1次
AGAIN: MOV AL,BL
MOV DX,0F8E1H ;送通道地址,B口地址
OUT DX,AL ;选通0通道采集数据
OR AL,10H
OUT DX,AL ;送ALE信号(上升沿)PB4口 AND AL,0EFH
OUT DX,AL ;输出START信号(下降沿),启动A/D转换 PB4口
NOP ;空操作等待转换
MOV DX,0F8E2H ;8255C口地址
WAIT1: IN AL,DX ;读EOC状态
AND AL,02H ;观察PC1的信号
JZ WAIT1 ;若EOC为地电平则等待
MOV DX,0F8E1H ;B口地址
MOV AL,BL
OR AL,20H ;设置PB5的信号
OUT DX,AL ;EOC端为高电平则输出读允许信
号OE=1
MOV DX,0F8E0H ;A口地址
IN AL,DX ;读入转换结果
MOV [SI],AL ;把转换的数字量送存储器
MOV DX,0F8E1H ;B口地址
MOV AL,0 ;AL清零
OUT DX,AL ;若完成数据采集则回到初始状态START2: MOV AX,[SI] ;以下是数据处理转化成对应的数码管值二进制十位数
LEA DI,BUF2
XOR DX,DX ;清零DX
MOV CL,OAH ;基数10
DIV CL ;AX除以CX。
AL放商,AH放余数 CMP AL,0 ;商=0?
JNZ NEXT1 ;商不等于零则跳到NEXT1
MOV [DI],AH ;等于就存余数结果个位数据NEXT1: MOV [DI],AH ;余数放到
MOV AH,0 ;
DIV CL
CMP AL,0
JNZ NEXT2 ;商不等于零则跳到NEXT2
INC DI
MOV [DI],AH ;存放十位数据
NEXT2: INC DI
MOV [DI],AL ;存放百位数据
REPEAT: CALL DISP1 ;调用显示子程序
JMP REPEAT
MAIN ENDP
DISP1 PROC NEAR ;这段是显示子程序
MOV DX,E343H ;初始化显示部分子程序
MOV AL,90H
OUT DX,AL
MOV CL,3 ;3位计数器
LEA DI,BUF2 ;
DISP2: MOV DX,E341H ;B口地址
MOV AL,[DI] ;取显示字符
LEA BX,LED ;换码,取LED码
XLAT ;查表转换
OUT DX,AL ;LED码输出到B口
MOV DX,E342H ;C口地址
MOV AH,0FEH ;LED阴极低电平
OUT DX,AH ;数位控制端输出到C口 INC DI
ROL AH,1 ;调整数位控制循环左移
CALL DELAY ;调用延时子程序
DEC CL,1
JNZ DISP2 ;没显示完,跳至DISP2 DISP1 ENDP
EXIT: MOV AH,4CH
INT 21H
DELAY: PROC NEAR ;延时子程序
MOV CX, 150000
DELAY1:LOOP DELAY1
REP
CODE ENDS
END START
第六章:收获体会
这次的课程设计收获是很大的,熟悉了设计的过程,通过这次课程设计进一步熟悉了课本知识提高运用理论知识去分析,解决实际问题的能力。
设计过程中,我们共同努力,虽然分工不同,但我们取长补短,发挥各自的优势,共同突破难关,完成任务。
通过本次实验掌握了微机系统的开发步骤,掌握了汇编,程序的设计。
本次设计需要熟练掌握汇编语言,熟悉可编程并行接口接口芯片8255A,ADC0809的内部结构、外部引脚和功能,熟悉LED显示器的结构及译码方式。
通过本次课程设计我也获得了许多收益,首先,让我更好的掌握了ADC0809, 8255A,芯片的工作原理、方式及其应用。
其次,让我学会了如何设计一个简单的微机系统,以及设计一个简单微机系统所需要的步骤和设计中需要注意的地方。
在设计中遇到很多困难,大都是对和芯片的应用还不是很熟练,还需更加努力更加深入的了解微机系统和芯片功能。
在整个设计过程中,我们三个成员的精诚配合,查阅了一些相关的资料,得到了老师和同学们的帮助,无论在理论和实践能力都得到了很大锻炼。
由于我们的能力和时间的限制,没有通过硬件的验证实验,只是通过查找一些资料和大脑抽象来设计本次课程设计,设计的温度检测系统还存在一些问题有待改进。
最后感谢老师在此次课程设计中对我们的指导
参考文献
1.冯博琴,《微型计算机原理与接口技术》,清华大学出版社
2.孟立凡、郑宾《传感器原理及技术》,国防工业出版社
3.周耿烈,《微机原理与接口技术实验指导书》,兰州工专计算机工程系,2001年3月
4.雷丽文,《微机原理与接口技术》,电子工业出版社,1999年第一版
5.沈美明,《IBM PC机汇编语言程序设计》,清华大学出版社,1991年第一版。