硬件课程设计模拟温度控制课案Word格式.docx

上传人:b****2 文档编号:1514955 上传时间:2023-04-30 格式:DOCX 页数:33 大小:969.02KB
下载 相关 举报
硬件课程设计模拟温度控制课案Word格式.docx_第1页
第1页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第2页
第2页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第3页
第3页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第4页
第4页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第5页
第5页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第6页
第6页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第7页
第7页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第8页
第8页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第9页
第9页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第10页
第10页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第11页
第11页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第12页
第12页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第13页
第13页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第14页
第14页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第15页
第15页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第16页
第16页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第17页
第17页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第18页
第18页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第19页
第19页 / 共33页
硬件课程设计模拟温度控制课案Word格式.docx_第20页
第20页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

硬件课程设计模拟温度控制课案Word格式.docx

《硬件课程设计模拟温度控制课案Word格式.docx》由会员分享,可在线阅读,更多相关《硬件课程设计模拟温度控制课案Word格式.docx(33页珍藏版)》请在冰点文库上搜索。

硬件课程设计模拟温度控制课案Word格式.docx

4.2系统各模块程序流程图12

4.2.18255初始化模块:

12

4.2.2温度过高报警模块:

13

4.2.3温度过低报警模块:

14

4.2.4温度计算子程序模块:

15

4.2.5显示程序模块:

16

4.2.6lcd_disp子程序模块:

5源程序清单和注释17

6运行结果23

7问题分析与解决方案24

7.1实验设计前的问题与解决方案24

7.2实验设计中的问题与解决方案24

8结论与体会25

结论:

25

体会:

参考文献26

1设计任务与要求

1.1选题报告

这次所选择的实验是温度控制实验,要求利用可编程并行接口元件8255A,模数转换器AD0809,数模转换器DA0832,直流电机,继电器模拟环境温度的自动控制。

1.2提出问题

1)如何实时反映外部温度的变化?

2)如何将模拟量转变成数字量?

3)如何将采集到的数据显示在液晶显示器上?

2需求分析

目前在很多领域的一些特殊地方,对环境的要求非常苛刻,要有严格的控制,例如,在一个大企业的计算机数据中心,它们的温度有严格限制范围,这就需要一个可靠地温度控制系统时刻监管着环境的温度,因此各种各样的温度控制系统孕育而生。

利用微机接口技术实验系统设计制作一个温度控制系统。

由于硬件条件有限,所以只能实现上下限温度的控制,要求是能够利用实验箱中的LCD液晶屏显示实时温度,同时当温度高于上限温度时,启动直流电机模拟散热系。

当温度低于下限温度时,启动继电器模拟加热系统。

实现的功能与流程如下所述:

2.1设计思想

该温度控制系统设计的思想是通过一个模拟温度变化的感应设备,将检测到的模拟温度转换成数据保存起来,然后将保存起来的温度数据与先前设置好的上下限温度进行比较,对应的去执行相应的控制设备,同时还将检测到的温度数据显示在LCD液晶屏上。

2.1.1模拟温度要求

(1)实时反映外部温度的变化;

(2)将采集到的温度数据显示在LCD液晶显示屏上;

(3)当温度高于设置的温度上限时,自动启动直流电机模拟散热;

(4)当温度低于设置的温度下限时,自动启动继电器模拟加热;

(5)当采集到的温度在上下限温度之间时,直流电机,继电器都停止工作。

3硬件方案

3.1设备器材

硬件课程设计实践TPC-ZK实验箱一个

PC电脑一台

3.2硬件的选择以及芯片说明

3.2.1系统所需硬件

设计所需芯片:

8255A、AD0809、DA0832

所需设备:

电位器、LCD液晶显示器、直流电机、继电器;

将8255A的A口与LCD液晶屏的八为数据口相连,对8255A进行初始化编程,控制LCD液晶屏显示,8255A的B口的PB2口作为继电器的控制口。

将AD0809的IN0、IN1与电位器相连,编程启动AD0809实时采集外部温度变化的数据。

将DA0832的Ua口与直流电机相连,编程启动AD0832,对直流电机的控制。

3.2.28255A芯片介绍

图3-18255A引脚图图3-28255A内部电路图

图3-3方式选择控制字格式图

引脚功能:

(只记述用到的引脚)

  CS:

芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;

/CS=1时,8255无法与CPU做数据传输.

  PA0~PA7:

端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。

  PB0~PB7:

端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。

  PC0~PC7:

端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。

端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。

3.2.3AD0809芯片介绍

图3-4AD0809引脚信号图

(1)主要特性

1)8路输入通道,8位A/D转换器,即分辨率为8位。

2)具有转换起停控制端。

3)转换时间为100μs(时钟为640kHz时),130μs(时钟为500kHz时)

 4)单个+5V电源供电 

5)模拟输入电压范围0~+5V,不需零点和满刻度校准。

 

6)工作温度范围为-40~+85摄氏度 

7)低功耗,约15mW。

(2)内部结构

ADC0809是CMOS单片型逐次逼近式A/D转换器,内部结构如图所示,它由8路模拟开关、地址锁存与译码器、比较器、8位开关树型A/D转换器、逐次逼近寄存器、逻辑控制和定时电路组成。

外部特性(引脚功能)

ADC0809芯片有28条引脚,采用双列直插式封装,如图所示。

下面说明各引脚功能。

IN0~IN7:

8路模拟量输入端。

2-1~2-8:

8位数字量输出端。

ADDA、ADDB、ADDC:

3位地址输入线,用于选通8路模拟输入中的一路

ALE:

地址锁存允许信号,输入,高电平有效。

START:

A/D转换启动脉冲输入端,输入一个正脉冲(至少100ns宽)使其启动(脉冲上升沿使0809复位,下降沿启动A/D转换)。

EOC:

A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。

OE:

数据输出允许信号,输入,高电平有效。

当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。

CLK:

时钟脉冲输入端。

要求时钟频率不高于640KHZ。

REF(+)、REF(-):

基准电压。

Vcc:

电源,单一+5V。

GND:

地。

实验连线图

图3-5AD0809引脚及连线图

(3)工作过程

首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。

此地址经译码选通8路模拟输入之一到比较器。

START上升沿将逐次逼近寄存器复位。

下降沿启动 

A/D转换,之后EOC输出信号变低,指示转换正在进行。

直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。

当OE输入高电平 

时,输出三态门打开,转换结果的数字量输出到数据总线上。

转换数据的传送 

A/D转换后得到的数据应及时传送给单片机进行处理。

数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。

为此可采用下述三种方式。

1)定时传送方式 

对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。

例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。

可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。

2)查询方式 

A/D转换芯片有表明转换完成的状态信号,例如ADC0809的EOC端。

因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。

3)中断方式 

把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。

不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。

首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受

3.2.3AD0832芯片介绍

图3-6DA0832引脚信号图

(1)主要特性:

DAC0832是采用CMOS工艺制成的单片直流输出型8位数/模转换器。

如图4-82所示,它由倒T型R-2R电阻网络、模拟开关、运算放大器和参考电压VREF四大部分组成。

运算放大器输出的模拟量V0为:

图3-7DA0832内部运算放大器电路

1)特点:

一个8位D/A转换器有8个输入端(其中每个输入端是8位二进制数的一位),有一个模拟输出端。

输入可有28=256个不同的二进制组态,输出为256个电压之一,即输出电压不是整个电压范围内任意值,而只能是256个可能值。

D0~D7:

数字信号输入端。

ILE:

输入寄存器允许,高电平有效。

CS:

片选信号,低电平有效。

WR1:

写信号1,低电平有效。

XFER:

传送控制信号,低电平有效。

WR2:

写信号2,低电平有效。

IOUT1、IOUT2:

DAC电流输出端。

Rfb:

是集成在片内的外接运放的反馈电阻。

Vref:

基准电压(-10~10V)。

Vcc:

是源电压(+5~+15V)。

AGND:

模拟地NGND:

数字地,可与AGND接在一起使用。

DAC0832输出的是电流,一般要求输出是电压,所以还必须经过一个外接的运算放大器转换成电压。

实验线路如图

图3-8DA0832内部电路

IN0~IN7:

8路模拟信号输入端。

A1、A2、A0:

地址输入端。

ALE地址锁存允许输入信号,在此脚施加正脉冲,上升沿有效,此时锁存地址码,从而选通相应的模拟信号通道,以便进行A/D转换。

启动信号输入端,应在此脚施加正脉冲,当上升沿到达时,内部逐次逼近寄存器复位,在下降沿到达后,开始A/D转换过程。

转换结束输出信号(转换接受标志),高电平有效。

输入允许信号,高电平有效。

CLOCK(CP):

时钟信号输入端,外接时钟频率一般为640kHz。

+5V单电源供电。

Vref(+),Vref(-):

基准电压的正极、负极。

一般Vref(+)接+5V电源,Vref(-)接地。

D7~D0:

数字信号输出端。

由A2、A1、A0三地址输入端选通8路模拟信号中的任何一路进行A/D转换。

3.3硬件电路

图3-9实验硬件电路连接图

3.4实验连线图

图3-10温度控制实验连线图

8255A引脚接线:

CS-288H-28BH

A口:

PA0-PA7-------LCD液晶屏八位数据口

B口:

PB2——继电器

C口:

PC0-液晶屏的D/I口PC1--液晶屏的RW口

PC2--液晶屏的E口

AD0809引脚接线

CS--298HIN0,IN1--电位器

GATE0,GATE1--5V

DA0832引脚接线

CS--290HUa--直流电机

4软件方案

4.1功能模块

图4-1软件功能模块图

4.2系统各模块程序流程图

1>

8255A的初始化:

图4-28255初始化流程图

4.2.2温度过高的报警模块:

1>

启动直流电机

图4-3温度过高流程图

4.2.3温度过低的报警模块:

1>

启动继电器

图4-4温度过低流程图

4.2.4温度计算子程序模块:

数据分解

开始

图4-5温度计算流程图

4.2.5显示程序模块:

液晶屏显示

图4-6显示子程序流程图

4.2.6lcd_disp子程序模块

液晶显示

图4-7lcd_disp子程序显示流程图

5源程序清单和注释

io8255aequ288h

io8255bequ289h

io8255cequ28ah

io8255kzequ28bh

PORT1EQU290H;

DA0832端口

io0809aequ298h;

以上为各个端口

datasegment

hz_tabdw0cec2h,0b6c8h,0a1c3h,0a1a0h,0a1a0h,0a1a0h,0a1e3h,0a3c3h

dw0b5cdh,0cec2h,0c1c1h,0a1a0h,0a1a0h,0b8dfh,0cec2h,0d7aah;

显示屏幕第二行和第三行字符表

hz_adrdb?

;

存放显示起始行端口地址

dis_numdb?

;

定义变量用来存放采集的模拟量

temp0db?

以下模拟量分离产生个位,十位,百位

temp1db?

temp2db?

buf1dw0

temphigdb200d;

为系统设置温度上限

templowdb100d;

设置温度下限

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movdx,io8255kz

moval,80h

outdx,al;

8255初始化

read:

movdx,io0809a

启动0809芯片

calldelay;

调用延时子程序

inal,dx;

采集ADC0809收集的模拟量

movdis_num,al

MOVAL,0ffh;

直流电机停止

MOVDX,300h

OUTDX,AL

callnext1;

调用温度过低警报子程序

callnext2;

调用温度过高警报子程序

callsegret;

调用模拟量分离的子程序

callclear;

LED清屏

leabx,hz_tab

movch,2;

显示第二行信息

calllcd_disp

movch,3;

显示第3行信息

jmpread;

跳转到read标志继续执行

movah,4ch;

退出

int21h

next1proc;

温度过低启动继电器

pushdx;

压栈

pushax

pushcx

movdx,io8255c

moval,00h

outdx,al

movcl,dis_num

movdx,io8255b

cmpcl,templow;

当温度低于已经设置的温度下限

jbn1;

跳转的n1

popcx

popax

popdx

ret;

返回主程序

n1:

movdx,io8255b

moval,08h

pb3输出高电平

loopn1

popcx;

出栈

ret;

next1endp

next2proc;

温度过高启动直流电机

pushdx;

MOVAL,00H

MOVDX,PORT1

movcl,dis_num

cmpcl,temphig;

当温度高于系统设置上限

jan2;

跳转到n2

出栈

ret;

n2:

MOVBUF1,0400H

MOVCX,BUF1

DELAY1:

LOOPDELAY1

MOVAL,0FFH

calldelay

next2endp

segretproc;

将模拟分量分离的子程序

pushax;

将ax压栈

movah,0;

将ax的ah置0

moval,dis_num;

dis_num放入al

movbl,10;

10放入bl

divbl;

ax值除以bl

movtemp0,ah;

将个位数放入temp0

movah,0

movbl,10

divbl

movtemp1,ah;

将十位放入temp1

movtemp2,al;

将百位放入temp2

popax;

moval,temp2

addax,0a3b0h

mov[hz_tab+6],ax;

将百位放入第二行字符显示表

moval,temp1

mov[hz_tab+8],ax;

将十位放入字符显示表

moval,temp0

mov[hz_tab+10],ax;

将个位放入字符显示表

segretendp

clearproc

moval,0ch

movdx,io8255a

outdx,al;

设置清除命令

callcmd_setup;

启动LCD执行命令

clearendp

lcd_dispproc

cmpch,2

jzdisp_sec

movbyteptrhz_adr,88h;

第三行起始端口地址

addbx,16;

指向第二行信息

jmpnext

disp_sec:

movbyteptrhz_adr,90h

next:

movcl,8

continue:

moval,hz_adr

callcmd_setup;

设定DDRAM地址命令

movax,[bx]

moval,ah;

先送汉字编码高位

calldata_setup;

输出汉字编码高字节

输出汉字编码地位字节

incbx

incbx;

修改显示内码缓冲区指针

incbyteptrhz_adr;

修改LCD显示端口地址

deccl

jnzcontinue

ret

lcd_dispendp

cmd_setupproc

movdx,io8255c;

指向8255端口控制端口

nop

moval,00h;

pc1置0,pc0置0(LCDI端=0W端=0)

moval,04h;

pc2置1(LCDE端=1)

pc2置0

cmd_setupendp

data_setupproc

movdx,io8255c;

指向8255端口的控制端口

moval,01h;

pc1置0,pc0置1(LCDI端=1)

moval,05h;

pc2置1(LCDE端=1)

pc2置0(E端=0)

calldelay

ret

data_setupendp

delayproc;

延时子程序

pushdx

movcx,0ffffh

x1:

loopx1

delayendp

codeends

endstart

6运行结果

注:

1)上限温度:

200℃

2)下限温度:

100℃

图6-1152℃时结果图

图6-3212℃时结果图

图6-466℃时结果图

7问题分析与解决方案

7.1实验设计前的问题与解决方案

(1)温度如何用0~5v直流电压模拟?

解决方案:

最后解决方案是依据0809A/D转换器将电压转换为0~255的数值,将其存入数据段的一个存储单元里。

(2)怎样控制直流电机转?

解决方案是用0832控制直流电机的转与停。

7.2实验设计中的问题与解决方案

(1)究竟该怎样将12864的四行与我们设计的显示内容对应起来?

我们是在LCD液晶屏的自定义实验的基础上修改得来,自定义实验只有两行显示,通过对代码的分析,发现四行的端口地址并不是顺序排列的。

经过不断的试验,得到各口地址为:

第一行:

80H;

第二行:

90H;

第三行:

88H;

第四行:

98H。

通过判断需要输出哪一行的信息,输出汉字表中的相应汉字,LED显示屏的每一行能显示八个字符,所以根据汉字在LED屏幕上的位置以计算得出汉字在表中位置。

8结论与体会

本次模拟温度控制实验所设计的芯片有8255A,AD0809,DA0832,及其他的硬件设备,如:

试验箱上的电位器,LCD液晶显示屏,继电器,直流电机,导线若干。

实验的设计思路是通

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2