温度采集及显示控制Word文档下载推荐.docx
《温度采集及显示控制Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《温度采集及显示控制Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
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
outdx,al;
关所有八段管
moval,[bx]
movdx,OUTSEG
outdx,al
moval,ah
outdx,al;
显示一位八段管
pushax
movah,1
callDelay
shrah,1
incbx
deccl
jnzDLoop
DisplayLEDendp
TestKeyprocnear
输出线置为0
movdx,IN_KEY
inal,dx;
读入键状态
notal
andal,0fh;
高四位不用
TestKeyendp
GetKeyprocnear
movch,00100000b
movcl,6
KLoop:
moval,ch;
找出键所在列
outdx,al
shrch,1
inal,dx
andal,0fh
jneGoon_;
该列有键入
jnzKLoop
movcl,0ffh;
没有键按下,返回0ffh
jmpExit1
Goon_:
deccl
shlcl,2;
键值=列X4+行
movch,4
LoopC:
testal,1
jnzExit1
shral,1
inccl
decch
jnzLoopC
Exit1:
movch,0
movbx,offsetKeyTable
addbx,cx
moval,[bx];
取出键码
movbl,al
WaitRelease:
等键释放
movah,10
callTestKey
jneWaitRelease
moval,bl
GetKeyendp
;
===================================
DisplayResultprocnear
moval,CurTemp
testal,80h
jzGE0
movLEDBuf,40h;
'
-'
decal
jmpGoon
GE0:
movLEDBuf,0;
Goon:
movcl,10
movah,0
divcl
movbh,0
addbx,offsetLEDMAP
movLEDBuf+1,al
movbl,ah
movLEDBuf+2,al
movLEDBuf+3,0;
moval,SetTemp
movLEDBuf+4,al
movLEDBuf+5,al
DisplayResultendp
ReadADprocnear
movdx,ADPort
moval,60
rr:
decal;
delay
jnzrr
ReadADendp
ReadTempprocnear
movbx,0
movcl,16
RLoop:
callReadAD
addbx,ax
jnzRLoop
shrbx,4
movax,bx
movcl,HighTemp-LowTemp
mulcl
moval,ah;
/256
addal,LowTemp
movCurTemp,al
ReadTempendp
Startprocnear
movax,data
movds,ax
moval,mode
movdx,CAddr
输出控制字
movSetTemp,20
MLoop:
jneKeyPressed
callDisplayResult
callDisplayLED
callReadTemp
cmpCurTemp,al
jgeGN2
orPortABuf,Heat
andPortABuf,notCool
jmpGN4
GN2:
incal
jleGN3
orPortABuf,Cool
andPortABuf,notHeat
GN3:
andPortABuf,not(Cool+Heat)
GN4:
movdx,PortA
moval,PortABuf
jmpMLoop
KeyPressed:
callGetKey
cmpal,DOWN
jneKey0
cmpSetTemp,LowLimit
jeKey1
decSetTemp
jmpKey1
Key0:
cmpal,UP
jneKey1
cmpSetTemp,HighLimit
incSetTemp
Key1:
startendp
codeends
endstart
五、实施结果
1操作步骤
1).按照电路图链接电路,完成电路链接。
2).打开计算机电源,执行WAVE集成调试程序源代码。
3).执行程序源代码,改变电位器,进行实验并记录实验结果。
2运行结果
调整电位器,LED显示温度范围在-39℃到49℃,分辨率为
2℃。
当采集的温度值超过设定温度时,能点亮发光二极管。
小于设定温度-2℃时显示绿色;
温度超过设定温度+2℃,显示红色灯;
温度在设定温度-/+2℃以内显示灯熄灭,表示温度。
按键盘向上键,LED显示设定温度+1℃,按向下键LED显示设定温度-1℃。
六、改进意见及建议
这次设计基本的完成了课程设计的要求,实现了温度的采集及显控制示。
通过测试表明系统的设计是正确的,可行的。
但是由于设计经验和知识水平有限,系统还存在许多不足和缺陷。
改进意见:
在原有的设计中可以加入了报警,如果所设计的系统是监控某一设备,当设备的温度达到我们所设定的温度值时,系统会产生报警.。
报警时驱动扬声器发出声音,
以便操作员来维护,从而达到报警的目的。
七、设计体会
在此次课程设计过程中,我经历了失败的痛苦,也尝到了成功的喜悦。
同时也检查了自己的知识水平,使我对自己有一个全新的认识。
而且我在巩固了平时所学习的知识的同时,也通过不断查阅相关资料,学习新的知识。
通过此次课设,我明白了很多,理论指导实践,但是理论也需要实践给予证明,凡事都要通过自己的思考推敲,否则自己不会取的大的进步。
而且在平时的学习生活中,应该多和周围的同学相互学习,交流经验。
遇到不会的问题时,切忌焦躁!
首先要经过自己的独立思考,有了一定想法后,可以去查找相关的资料书刊或者找同学讨论。
在遇到问题,解决问题的过程中,不断加强自我的动手,动脑能力,也只有这样,在思路清晰,条理顺畅的时候,再去进行软件编写和硬件操作工作,才有可能起到事半功倍的效果。
这次课程设计,不仅锻炼我的分析问题、处理问题的能力,还提高了自己的动手能力以及沟通协作的能力。
也让我更加明确了日后的学习目标,那就是学东西一定要扎实,绝不能一知半解。
这次课程设计使我受益匪浅,在课程设计中,培养的能力和锻炼对于我今后的学习和生活来说,是很重要的经历与经验,它将积极地影响我。
(注:
可编辑下载,若有不当之处,请指正,谢谢!