温度采集及显示控制.docx
- 文档编号:5840841
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:16
- 大小:274.30KB
温度采集及显示控制.docx
《温度采集及显示控制.docx》由会员分享,可在线阅读,更多相关《温度采集及显示控制.docx(16页珍藏版)》请在冰豆网上搜索。
温度采集及显示控制
河北科技大学
课程设计报告
学生姓名:
学号:
专业班级:
软件工程
课程名称:
接口技术课程设计
学年学期:
20—20学年第学期
指导教师:
20年月
一、设计题目
温度采集及显示控制
二、设计目的:
1.了解闭环控制的基本原理。
2.进一步熟悉A/D变换原理和编程方法。
3.进一步了键盘扫描和LED显示原理和编程方法。
三、设计原理及方案:
1原理及方案
利用实验仪上显示电路,键盘电路,A/D变换电路,完成温度显示,可以利用实验仪上的电位器模仿温度变化,加热和致冷可以用发光管代替。
用键盘可以设定恒温温度,当温度超过设定温度+/-2℃时,就要启动加热或致冷。
利用AD0809芯片将模拟量的温度转换为数字量,然后将AD采样到的结果进行制式的转换并将结果显示在数码管上。
采样的结果与设定的温度限值进行比较,若超温了则让超温指示灯亮。
根据需要,需选择的芯片有AD0809A/D变换芯片,8255可编程并行接口。
通过应用模数转换器AD0809将从模拟电阻上采集的数据通过端口IN0输入,在A/D的转换下,获得8位二进制的数字量(D7—D0),然后输入到8088系统总线上,进而输入到可编程并行接口8255上,选择工作方式0方式,把数据输入到七段数码管上,然后显示出数字信息。
同时应用比较程序,设定温度值。
温度显示范围-39~49度
如果在小于键盘设定温度-2℃时则使8255C输出00FH值信号让显示灯始终,显示绿色,表示温度过低。
如果温度超过键盘设定温度+2℃则使8255C口输出0F0H值信号让显示灯提示,显示红色灯,表示温度过高。
如果温度在键盘设定温度-/+2℃以内则使8255C口无输出信号让显示灯熄灭,表示温度在正常范围内
8255简介
8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A、B、C三个并行接口,并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。
CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。
用+5V单电源供电,能在以下三种方式下工作:
方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。
8255的内部结构及引脚如图6-4所示:
图3.18255内部结构及引脚
ADC0809主要功能
AD0809具有8个通道的模拟输入线(IN0~IN7),可在程序控制下对任意通道进行A/D转换,获得8位二进制数字量(D7~D0)。
模拟输入部分有8路多路开关,可由3位地址输入ADDA、ADDB、ADDC的不同组合来选择,ALE为地址锁存信号,高电平有效,锁存这三条地址输入信号。
主体部分是采用逐次逼近式的
A/D转换电路,由CLK控制的内部电路的工作,START为启动命令,高电平有效,启动ADC0809内部的A/D转换,当转换完成,输出信号EOC有效,OE为输出允许信号,高电平有效,打开输出三态缓冲器,把转换后的结果送DB。
ADC0809的内部结构和引脚如图3.3所示:
图3.3内部结构和引脚
七段LED显示器及其接口
七段LED显示器:
由七个发光段构成,每段均为1个LED二极管。
通过控制不同段的点亮和熄灭,显示出16进制数字或字符。
七段LED显示器有共阳极和共阴极两种结构,如图6-3所示的七段LED实际上包含8个LED(7段字形加上小数点DP)。
1位LED显示器有1根位选线和8根段选线,段选线控制字符的选择,位选线控制显示位的亮和暗。
图3.4七段LED显示
2.实验电路及连接
LED显示电路和键盘电路实验仪上已接好。
原理图见图1。
A/D变换电路只要接上模拟量输入和地址选择信号即可。
图1
连接孔1
连接孔2
1
AD_CS
CS2
2
IN0
电位器输出
3
8255_CS
CS0
4
PA0
L0
5
PA1
L1
6
KEY/LED_CS
CS1
四、实现方法
1.实验程序框图
A/D采样子程序框图
2.程序源代码
modeequ082h;方式0,PA,PC输出,PB输入
PortAequ8000h;PortA
PortBequ8001h;PortB
PortCequ8002h;PortC
CAddrequ8003h;控制字地址
ADPortequ0a000h;AD采样输入片选
CS273equ0a000h;控制输出片选
UPequ16h;Next
DOWNequ15h;Last
LowLimitequ10
HighLimitequ30
LowTempequ-45;A/D0
HighTempequ55;A/D255
Heatequ1;加热控制
Coolequ2;致冷控制
OUTBITequ09002h;位控制口
OUTSEGequ09004h;段控制口
IN_KEYequ09001h;键盘读入口
datasegment
LEDBufdb6dup(?
);显示缓冲
Numdb1dup(?
);显示的数据
DelayTdb1dup(?
)
CurTempdb1dup(?
)
SetTempdb1dup(?
)
PortABufdb1dup(?
)
LEDMAP:
;八段管显示码
db3fh,06h,5bh,4fh,66h,6dh,7dh,07h
db7fh,6fh,77h,7ch,39h,5eh,79h,71h
KeyTable:
;键码定义
db16h,15h,14h,0ffh
db13h,12h,11h,10h
db0dh,0ch,0bh,0ah
db0eh,03h,06h,09h
db0fh,02h,05h,08h
db00h,01h,04h,07h
dataends
codesegment
assumecs:
code,ds:
data
Delayprocnear
pushax;延时子程序
pushcx
moval,0
movcx,ax
loop$
popcx
popax
ret
Delayendp
DisplayLEDprocnear
movbx,offsetLEDBuf
movcl,6;共6个八段管
movah,00100000b;从左边开始显示
DLoop:
movdx,OUTBIT
moval,0
outdx,al;关所有八段管
moval,[bx]
movdx,OUTSEG
outdx,al
movdx,OUTBIT
moval,ah
outdx,al;显示一位八段管
pushax
movah,1
callDelay
popax
shrah,1
incbx
deccl
jnzDLoop
movdx,OUTBIT
moval,0
outdx,al;关所有八段管
ret
DisplayLEDendp
TestKeyprocnear
movdx,OUTBIT
moval,0
outdx,al;输出线置为0
movdx,IN_KEY
inal,dx;读入键状态
notal
andal,0fh;高四位不用
ret
TestKeyendp
GetKeyprocnear
movch,00100000b
movcl,6
KLoop:
movdx,OUTBIT
moval,ch;找出键所在列
notal
outdx,al
shrch,1
movdx,IN_KEY
inal,dx
notal
andal,0fh
jneGoon_;该列有键入
deccl
jnzKLoop
movcl,0ffh;没有键按下,返回0ffh
jmpExit1
Goon_:
deccl
shlcl,2;键值=列X4+行
movch,4
LoopC:
testal,1
jnzExit1
shral,1
inccl
decch
jnzLoopC
Exit1:
movdx,OUTBIT
moval,0
outdx,al
movch,0
movbx,offsetKeyTable
addbx,cx
moval,[bx];取出键码
movbl,al
WaitRelease:
movdx,OUTBIT
moval,0
outdx,al;等键释放
movah,10
callDelay
callTestKey
jneWaitRelease
moval,bl
ret
GetKeyendp
;===================================
DisplayResultprocnear
moval,CurTemp
testal,80h
jzGE0
movLEDBuf,40h;'-'
decal
notal
jmpGoon
GE0:
movLEDBuf,0;''
Goon:
movcl,10
movah,0
divcl
movbl,al
movbh,0
addbx,offsetLEDMAP
moval,[bx]
movLEDBuf+1,al
movbl,ah
movbh,0
addbx,offsetLEDMAP
moval,[bx]
movLEDBuf+2,al
movLEDBuf+3,0;''
moval,SetTemp
movah,0
movcl,10
divcl
movbl,al
movbh,0
addbx,offsetLEDMAP
moval,[bx]
movLEDBuf+4,al
movbl,ah
movbh,0
addbx,offsetLEDMAP
moval,[bx]
movLEDBuf+5,al
ret
DisplayResultendp
ReadADprocnear
movdx,ADPort
moval,0
outdx,al
moval,60
rr:
decal;delay
jnzrr
movdx,ADPort
inal,dx
ret
ReadADendp
ReadTempprocnear
movbx,0
movcl,16
RLoop:
callReadAD
movah,0
addbx,ax
deccl
jnzRLoop
shrbx,4
movax,bx
movcl,HighTemp-LowTemp
mulcl
moval,ah;/256
addal,LowTemp
movCurTemp,al
ret
ReadTempendp
Startprocnear
movax,data
movds,ax
moval,mode
movdx,CAddr
outdx,al;输出控制字
movSetTemp,20
MLoop:
callTestKey
jneKeyPressed
callDisplayResult
callDisplayLED
callReadTemp
moval,SetTemp
decal
decal
cmpCurTemp,al
jgeGN2
orPortABuf,Heat
andPortABuf,notCool
jmpGN4
GN2:
moval,SetTemp
incal
incal
cmpCurTemp,al
jleGN3
orPortABuf,Cool
andPortABuf,notHeat
jmpGN4
GN3:
andPortABuf,not(Cool+Heat)
GN4:
movdx,PortA
moval,PortABuf
outdx,al
jmpMLoop
KeyPressed:
callGetKey
cmpal,DOWN
jneKey0
cmpSetTemp,LowLimit
jeKey1
decSetTemp
jmpKey1
Key0:
cmpal,UP
jneKey1
cmpSetTemp,HighLimit
jeKey1
incSetTemp
Key1:
jmpMLoop
startendp
codeends
endstart
五、实施结果
1操作步骤
1).按照电路图链接电路,完成电路链接。
2).打开计算机电源,执行WAVE集成调试程序源代码。
3).执行程序源代码,改变电位器,进行实验并记录实验结果。
2运行结果
调整电位器,LED显示温度范围在-39℃到49℃,分辨率为
2℃。
当采集的温度值超过设定温度时,能点亮发光二极管。
小于设定温度-2℃时显示绿色;温度超过设定温度+2℃,显示红色灯;温度在设定温度-/+2℃以内显示灯熄灭,表示温度。
按键盘向上键,LED显示设定温度+1℃,按向下键LED显示设定温度-1℃。
六、改进意见及建议
这次设计基本的完成了课程设计的要求,实现了温度的采集及显控制示。
通过测试表明系统的设计是正确的,可行的。
但是由于设计经验和知识水平有限,系统还存在许多不足和缺陷。
改进意见:
在原有的设计中可以加入了报警,如果所设计的系统是监控某一设备,当设备的温度达到我们所设定的温度值时,系统会产生报警.。
报警时驱动扬声器发出声音,
以便操作员来维护,从而达到报警的目的。
七、设计体会
在此次课程设计过程中,我经历了失败的痛苦,也尝到了成功的喜悦。
同时也检查了自己的知识水平,使我对自己有一个全新的认识。
而且我在巩固了平时所学习的知识的同时,也通过不断查阅相关资料,学习新的知识。
通过此次课设,我明白了很多,理论指导实践,但是理论也需要实践给予证明,凡事都要通过自己的思考推敲,否则自己不会取的大的进步。
而且在平时的学习生活中,应该多和周围的同学相互学习,交流经验。
遇到不会的问题时,切忌焦躁!
首先要经过自己的独立思考,有了一定想法后,可以去查找相关的资料书刊或者找同学讨论。
在遇到问题,解决问题的过程中,不断加强自我的动手,动脑能力,也只有这样,在思路清晰,条理顺畅的时候,再去进行软件编写和硬件操作工作,才有可能起到事半功倍的效果。
这次课程设计,不仅锻炼我的分析问题、处理问题的能力,还提高了自己的动手能力以及沟通协作的能力。
也让我更加明确了日后的学习目标,那就是学东西一定要扎实,绝不能一知半解。
这次课程设计使我受益匪浅,在课程设计中,培养的能力和锻炼对于我今后的学习和生活来说,是很重要的经历与经验,它将积极地影响我。
(注:
可编辑下载,若有不当之处,请指正,谢谢!
)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 温度 采集 显示 控制
![提示](https://static.bdocx.com/images/bang_tan.gif)