多路温度采集系统编程设计课程设计报告.docx

上传人:b****5 文档编号:3620309 上传时间:2022-11-24 格式:DOCX 页数:24 大小:98.99KB
下载 相关 举报
多路温度采集系统编程设计课程设计报告.docx_第1页
第1页 / 共24页
多路温度采集系统编程设计课程设计报告.docx_第2页
第2页 / 共24页
多路温度采集系统编程设计课程设计报告.docx_第3页
第3页 / 共24页
多路温度采集系统编程设计课程设计报告.docx_第4页
第4页 / 共24页
多路温度采集系统编程设计课程设计报告.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

多路温度采集系统编程设计课程设计报告.docx

《多路温度采集系统编程设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《多路温度采集系统编程设计课程设计报告.docx(24页珍藏版)》请在冰豆网上搜索。

多路温度采集系统编程设计课程设计报告.docx

多路温度采集系统编程设计课程设计报告

中南大学

微机应用系统设计与

综合实验设计报告

设计题目多路温度采集系统编程设计

指导老师

设计者

学号

专业班级

设计日期

目录

第一章微机应用系统课程设计的目的意义

1.1设计目的

1.2课程在教学计划中的地位和作用

第二章温度采集系统软硬件设计任务

2.1设计内容及要求

2.2实验设备

2.3课程设计的内容及要求

第三章总体设计方案

3.1设计思想

3.2总体设计流程图

第四章硬件设计

4.1硬件设计概要

4.2硬件设计接线图

4.3所用到的芯片及其各自功能说明

4.3.1芯片列表

4.3.28086的功能简介

4.3.38254的功能简介

4.3.4AD0809的功能简介

第五章实验结果

5.1汇编程序结果

5.2C语言程序结果

第六章源程序代码

6.1汇编程序代码

6.2C语言程序代码

第七章系统的调试与使用

第八章收获、体会

参考文献

第一章微机应用系统课程设计的目的意义

1.1设计目的

《微机原理与接口技术》是一门实践性和实用性都很强的课程,学习的目的在于应用。

本课程设计是配合课堂教学的一个重要的实践教学环节,它能起到巩固课堂和书本上的知识,加强综合能力,提高系统设计水平,启发创新思想的效果。

通过本课程设计希望达到以下目地:

培养资料搜集和汇总的能力。

培养总体设计和方案论证的意识。

提高硬件,软件设计与开发的综合能力。

提高软件和硬件联合调试的能力。

熟练掌握相关测量仪器的使用方法。

掌握相关开发软件,仿真软件的使用方法。

1.2课程在教学计划中的地位和作用

现在计算机科学在应用上得到飞速发展,因此,学习这方面的知识必须紧跟实际连接。

掌握这方面的知识更重要强调解决实际问题的能力。

该课程设计给我们提供了一个很好的机会,它要求我们结合课堂上和书本中学到的知识去独立设计一个硬件系统,它是我们迈向实践和应用的桥梁,我们学习书本上的知识是一个不断积累的过程,而该课程设计却使得我们能够尽情发挥他们,让我们更了解计算机的结构,工作原理以及软硬件的结合使用,虽然课程设计的时间比较短,但它却在整个教学计划中占据了及其重要的位置。

 

第二章温度采集系统软硬件设计任务

2.1实验目的

为了实现计算机对生产过程及对象的控制,需要将对象的各种测量参数按照要求转换成数字信号送入计算机。

经计算机运算处理后再再转换成适合于对生产过程进行控制的量。

所以在微机和生产过程之间,必须设置信息的变换和传递通道。

而我们所做的模拟输入通道,主要功能就是随时间变化的模拟输入信号变成数字信号送入计算机,主要有多路转换器,采样保持器和A/D转换器等组成。

本实验通过设计一个微机控制的温度采集系统,旨在使学生能做到以下几点:

1.了解微机控制的温度采集系统软硬件设计原理和方法。

2.进一步掌握定时/计数器、并行接口芯片和中断控制器的工作原理与使用方法。

3.学会利用A/D转换芯片实现信号的A/D转换。

2.2实验设备

l.80X86系列微机一台。

2.微机硬件实验平台。

3.定时/计数器8254

4.ADC0809。

2.3实验内容及要求

(1)、分别用C语言和汇编语言编程完成硬件接口功能设计;

(2)、基于80x86微机接口的控制器硬件电路设计与调试;

(3)、功能要求:

具有报警功能(如:

声、光、电形式),系统可实现6路温度信号的巡回采集检测、各路巡回检测的温度范围0~1020CO(温度信号用电位器可调电压模拟);4、指标要求4CO对应数字量为01H)、每隔2s检测一次,每一路连续检测5次,取其中值,当前温度用4位数显示在计算机显示屏幕上,6路同时显示,每2s刷新一次显示。

显示方式为:

例:

1号炉温度:

0800CO

2号炉温度:

1000CO

3号炉温度:

0700CO

4号炉温度:

0800CO

5号炉温度:

0650CO

6号炉温度:

0870C

 

第三章总体设计方案

3.1设计思想

在许多传统行业中,多路高温度采集系统是不可或缺的。

电厂,石化行业及制药厂等企业生产过程中,普遍存在着需要进行温度测量的场合。

因为温度是生产过程和科学实验中普遍且重要的物理参数。

在工业生产中,为了高效生产,必须对生产过程的主要参数,如温度,压力,速度等进行有效的检测并控制。

其中温度检测在生产过程中占有相当大的比例。

而我们所做的课题正是以8086cpu为核心设计一个温度巡回监测系统(A/D采用ADC0809).系统可实现温度信号的采集,在显示器上显示当前的温度和通道号。

模拟现场六路温度巡回检测,温度范围0-1020摄氏度。

每隔两秒检测一次,每一次检测六路信号,每路信号连续检测五次,并取这五个数据的中值经标度变换后送显示器显示,6路同时显示,每次显示持续两秒。

在采集完某一路信号时,将采集到的信号与给定值比较,如果超出给定范围则进行报警。

该系统主要用于温度检测,是一个状态反馈系统,并非动态控制系统。

他可以利用放大器实现多个点的温度巡回检测,并在屏幕上显示当前的温度值和通道号。

当温度信号改变时,显示的值也随之改变,并且实现当温度超出给定范围时进行报警的功能。

3.2程序设计流程图

 

Y

N

N

Y

N

Y

 

第四章硬件设计

4.1硬件设计概要

系统的主要功能是实现温度信号的采集,在显示器上显示当前的温度和通道号。

模拟现场六路温度的温度巡回检测,温度范围0-1020摄氏度。

每隔两秒检测一次,经标度变换后送显示器显示,六路同时显示,每次显示持续两秒。

实验步骤如下:

(1)确认从PC机引出的两根扁平电缆已经连接在试验平台上。

(2)编写程序然后编译连接。

(3)参考接线图连接试验线路。

(4)运行参考程序,观察显示器上的通道号和温度值。

(5)改变温度的值观察是否实现报警功能。

4.2硬件接线图

 

4.3所用到的芯片及其各自功能说明

4.3.1芯片列表

可编程定时器/计数器8254,ADC0809

4.3.28086的功能简介

Intel8086CPU是16位微处理器,它采用N—沟道,耗尽型负载的硅栈工艺制造,外型为双列直插式,有40个引脚。

8086CPU有16根数据线和20根地址线,直接寻址空间为1MB。

能够完成微型计算机的基本操作数的读取,指令的执行,中断控制等基本功能。

4.3.38254的功能简介

18254的内部结构

8254采用NMOS工艺制成,有24个引脚,所有输入、输出端均TTL电平兼容,单一电源(Vcc=+5V)供电,最高计数速率为2.6MHz。

它包括3个计数器(即计数器0、1、2)、数据总路线缓冲器、读/写逻辑以及控制寄存器等4个部分。

②8254的外部引脚

图3.38254引脚图

A1、A0:

地址输入线,用来址8254内部的4个端口,即3个计数器和1个控制字寄存器与CPU系统地址线相连。

CLK0、CLK1、CLK2:

时钟脉冲输入端,用于输入定时脉冲或计数脉冲信号。

CLK可以是系统的时钟脉冲,也可以由系统时钟分频或者其他脉冲源提供。

当用于定时时,这个脉冲必须是均匀的、连续的、周期精确的,而用于计数时,这个脉冲可以是不均匀的、断续的、周期不定的。

GATE0、GATE1、GATE3:

门控输入端,用于外部控制计数器的启动计数和停止计数的操作。

两个或两个以上计数器连用时,可用此信号同步,也可用于与外部某信号的同步。

OUT0、OUT1、OUT2:

计数输出,当计数器从初值开始完成计数操作进,OUT引脚输出相应的信号。

③8254的工作方式

方式0:

减1计数到0,产生中断请求信号。

方式1:

减1计数到0,产生可重复触发的单稳态负脉冲信号。

方式2:

减1计数到1,分频器(速率信号发生器)。

方式3:

减1计数到初值的1/2,方波发生器。

方式4:

减1计数到0,软件触发产生选通负脉冲信号。

方式5:

减1计数到0,硬件触发产生选通负脉冲信号。

④8254方式控制字格式

D7D6

D5D4

D3D2D1

D0

00选计数器0

01选计数器1

10选计数器2

00计数器锁存

01只读写低8位

10先读写高8位

11先读写低8位

再读写高8位

000方式0

001方式1

X10方式2

X11方式3

100方式4

101方式5

0二进制计数

1BCD计数

4.3.4ADC0809的功能简介

ADC0809包括一个8位的逐次逼近型的ADC部分,并提供一个8通道的模拟多路开关和联合寻址逻辑,用它可直接输入8个单端的模拟信号,分别进行A/D转换,在多点巡回检测、过程控制等应用领域中使用非常广泛,ADC的主要技术指标为

分辨率:

8位单电源:

+5V

总的不可调误差:

1LSB转换时间:

取决于时钟频率

模拟输入范围:

单极性0~5V时钟频率范围:

10KHZ~1280KHZ

ADC0809的外部管脚如下图所示

ADC0809的外部管脚图

 

第五章实验结果

5.1汇编程序结果

1haoluwenduú║1020degree

2haoluwenduú║1020degree

3haoluwenduú║0720degree

4haoluwenduú║0608degree

5haoluwenduú║0248degree

6haoluwenduú║0248degree

六路温度都在指定的温度范围内,不产生报警时的结果显示

1haoluwenduú║1020degree

2haoluwenduú║1020degree

3haoluwenduú║0000degreeThetemperatureisbelowthan60degree

4haoluwenduú║0000degreeThetemperatureisbelowthan60degree

5haoluwenduú║0248degree

6haoluwenduú║0248degree

程序设计为当温度低于60摄氏度时蜂鸣器报警,并且在屏幕上产生相应的提示

3号炉和4号炉温度低于60摄氏度报警

 

5.2C语言程序结果

1haoluwendu:

1020degree

2haoluwendu:

1020degree

3haoluwendu:

688degree

4haoluwendu:

592degree

5haoluwendu:

248degree

6haoluwendu:

248degree

六路温度都在指定的温度范围内,不产生报警时的结果显示

1haoluwendu:

1020degree

2haoluwendu:

1020degree

3haoluwendu:

804degree

4haoluwendu:

676degree

5haoluwendu:

12degreeThetempetureisbelowthan60degree

6haoluwendu:

12degreeThetempetureisbelowthan60degree

程序设计为当温度低于60摄氏度时蜂鸣器报警,并且在屏幕上产生相应的提示

3号炉和4号炉温度低于60摄氏度报警

第六章源程序代码

6.1汇编语言程序

;***************根据CHECK配置信息修改下列符号值*******************

IOY0EQU0E400H;片选IOY0对应的端口始地址

IOY1EQU0E440H;片选IOY1对应的端口始地址

;*****************************************************************

MY8254_COUNT0EQUIOY0+00H*4;8254计数器0端口地址

MY8254_COUNT1EQUIOY0+01H*4;8254计数器1端口地址

MY8254_COUNT2EQUIOY0+02H*4;8254计数器2端口地址

MY8254_MODEEQUIOY0+03H*4;8254控制寄存器端口地址

AD0809EQUIOY1+00H;AD0809的端口地址

AD0809_MODEEQUIOY1+08H*4;AD0809的状态口地址

DATASEGMENT;数据段

DBUFDB100DUP(?

);数据区

STR1DB'haoluwendu:

$';显示的字符串

STR2DB'Thetemperatureisbelowthan60degree$';显示提示信息

STR3DB'degree$'

FREQ_LISTDW556,495,556,624,495,416,416,371,495,0;频率表

TIME_LISTDB6,2,4,4,6,2,4,4,12;时间表

DATAENDS

STACK1SEGMENTSTACK'STACK';堆栈段

ST1DB100DUP(?

STACK1ENDS

CODESEGMENT;代码段

ASSUMECS:

CODE,DS:

DATA,SS:

STACK1

START:

MOVAX,STACK1

MOVSS,AX

MOVAX,DATA

MOVDS,AX;DS指向数据区段址

CLD;清方向标志

 

MOVAX,0000H

MOVES,AX

MOVAL,50H;保存原中断向量入口地址

MOVAH,35H

INT21H

PUSHES

PUSHBX

PUSHDS

MOVAX,SEGADINT;设置中断向量入口地址

MOVDS,AX

MOVDX,OFFSETADINT

MOVAL,50H

MOVAH,25H

INT21H

POPDS

WAIT1:

INT50H;中断调用

PUSHCX;延时

PUSHAX

PUSHDX

PUSHBX

MOVCX,0FFFFH

D1:

MOVAX,0FFFFH

D2:

DECAX

JNZD2

LOOPD1

MOVAH,6:

清屏

MOVAL,0

MOVCX,0

MOVDH,24

MOVDL,79

MOVBH,7

INT10H

MOVAH,2;置光标到页面左上角

MOVDH,0

MOVDL,0

MOVBH,0

INT10H

POPBX

POPDX

POPAX

POPCX

MOVAH,1;判断是否有按键按下

INT16H

JZWAIT1;无按键则跳回继续等待,有则退出

QUIT:

POPDX;退出

POPDS

MOVAL,50H

MOVAH,25H

INT21H

MOVAX,4C00H;返回到DOS

INT21H

;中断服务程序,对每个通道均采集一个数据,存进DBUF

ADINTPROCNEAR;调用子程序

STARTA:

MOVCX,0006H;设置通道计数器初值

MOVDX,AD0809;DX指向ADC通道

TRANS2:

CALLNEXT;调用转换子程序

LOOPTRANS2;循环采集六路信号

IRET;自中断返回

ADINTENDP

DALLY1PROCNEAR;软件延时子程序,用于ADC转换时延时保证转换完成

PUSHCX

PUSHAX

MOVCX,4000H

D5:

MOVAX,0600H

D6:

DECAX

JNZD6

LOOPD5

POPAX

POPCX

RET

DALLY1ENDP

DALLY2PROC;延时子程序,用于8254产生方波时延时,为扬声器发生报警提供信号延时

PUSHCX

PUSHAX

E0:

MOVCX,10H

E1:

MOVAX,0FFFFH

E2:

DECAX

JNZE2

LOOPE1

DECDL

JNZE0

POPAX

POPCX

RET

DALLY2ENDP

ALARMPROC;报警子程序

PUSHDX

MOVDX,OFFSETSTR2;显示温度低于某一值

MOVAH,9

INT21H

POPDX

PUSHDX

PUSHAX

PUSHSI

PUSHDI

MOVDX,MY8254_MODE;初始化8254工作方式

MOVAL,36H;定时器0、方式3

OUTDX,AL

BEGIN:

MOVSI,OFFSETFREQ_LIST;装入频率表起始地址

MOVDI,OFFSETTIME_LIST;装入时间表起始地址

PLAY:

MOVDX,0FH;输入时钟为1.0416667MHz,1.0416667M=0FE502H

MOVAX,0E502H

DIVWORDPTR[SI];取出频率值计算计数初值,0F4240H/输出频率

MOVDX,MY8254_COUNT0

OUTDX,AL;装入计数初值

MOVAL,AH

OUTDX,AL

MOVDL,[DI];取出演奏相对时间,调用延时子程序

CALLDALLY2

ADDSI,2

INCDI

CMPWORDPTR[SI],0;判断是否到曲末?

JNEPLAY

MOVDX,MY8254_MODE;退出时设置8254为方式2,OUT0置0

MOVAL,10H

OUTDX,AL

POPDI

POPSI

POPAX

POPDX

RET

ALARMENDP

NEXTPROC;信号巡回采集子程序

NEXT1:

MOVSI,OFFSETDBUF;SI指向WENDU偏移地址

MOVBL,05H;为采集提供计数依据

NEXT2:

MOVAH,0000H

OUTDX,AL;启动一次转换

CALLDALLY1;延时保证转换完成

INAL,DX;读取结果

TRANS:

MOV[SI],AL将采集的5个数据保存

INCSI

DECBL

JNZNEXT2

PUSHCX;选中值

MOVCL,04H;选出五个数中的最大值

MOVSI,OFFSETDBUF;SI指向WENDU偏移地址

MOVBX,SI

C1:

MOVAL,[BX]

INCSI

CMPAL,[SI]

JAF1

MOVBX,SI

F1:

LOOPC1

MOVAL,00H;将最大值置零

MOV[BX],AL

MOVCX,04H;再一次选择五个数的最大值

MOVSI,OFFSETDBUF;SI指向WENDU偏移地址

MOVBX,SI

C2:

MOVAL,[BX]

INCSI

CMPAL,[SI]

JAF2

MOVBX,SI

F2:

LOOPC2

MOVAL,00H;将新的最大值置零

MOV[BX],AL

MOVCX,04H;第三次选择最大值

MOVSI,OFFSETDBUF;SI指向WENDU偏移地址

MOVBX,SI

C3:

MOVAL,[BX]

INCSI

CMPAL,[SI]

JAF3

MOVBX,SI

F3:

LOOPC3

MOVAL,[BX];第三次选出的最大值即为原数据的中值

POPCX

SUBAH,AH

MOVSI,AX;将中值保存到SI寄存器

PUSHDX;保存通道号

PUSHAX

MOVDL,07H;显示炉号数

SUBDL,CL

ADDDL,30H

MOVAH,02H

INT21H

MOVDX,OFFSETSTR1;显示字符串号炉温度

MOVAH,9

INT21H

POPAX

POPDX

MOVBL,04H;将采集的数据进行数值转换

MULBL

PUSHCX

PUSHDX

SUBDX,DX

MOVCX,1000;分离出千位数并显示

DIVCX

XCHGAX,DX

PUSHAX

ADDDL,30H

MOVAH,02H

INT21H

POPAX

MOVCL,100;分离出百位数并显示

DIVCL

PUSHAX

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

POPAX

XCHGAL,AH

SUBAH,AH

MOVCL,10;分离出十位数并显示

DIVCL

PUSHAX

ADDAL,30H

MOVDL,AL

MOVAH,02H

INT21H

POPAX

ADDAH,30H;显示个位数

MOVDL,AH

MOVAH,02H

INT21H

MOVDX,OFFSETSTR3;显示degree

MOVAH,9

INT21H

CMPSI,0FH;与60摄氏度比较

JAS;若在指定范围内则继续转换

CALLALARM;若不在指定范围则报警

S:

MOVDL,0AH;换行

MOVAH,02H

INT21H

MOVDL,0DH;将光标置行首

MOVAH,02H

INT21H

POPDX

POPCX

 

ADDDL,04H;DX指向下一个通道

RET

NEXTENDP

CODEENDS

ENDSTART

6.2C语言源程序

#include

#include

#include

#include

#include

#include

voidkey(void);//判断是否右键按下,有则退出

voiddelay1(inttime);//延时函数

voidalarm(void);//报警函数

voiddelay2(inttime);//延时函数

 

//****************根据查看配置信息修改下列符号值*******************

#defineIOY00xE400//8254端口地址

#defineIOY10xE440//ADC0809端口地址

//***

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

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1