微机原理及其应用微型计算机温度控制系统设计课程设计报告.docx
- 文档编号:12864220
- 上传时间:2023-06-08
- 格式:DOCX
- 页数:13
- 大小:43.29KB
微机原理及其应用微型计算机温度控制系统设计课程设计报告.docx
《微机原理及其应用微型计算机温度控制系统设计课程设计报告.docx》由会员分享,可在线阅读,更多相关《微机原理及其应用微型计算机温度控制系统设计课程设计报告.docx(13页珍藏版)》请在冰点文库上搜索。
微机原理及其应用微型计算机温度控制系统设计课程设计报告
《微机原理及其应用》课程设计陈述之马矢奏春创作
2011年3月2日
一、课程设计题目及系统功能介绍
微型计算机温度控制系统设计,假设工业现场温度范围为0~75℃,温度值经传感器检测后,经变送器酿成0~5V范围内的电压信号。
电压信号送A/D转换器ADC0809转换成对应的数字量。
数字量经数字滤波后送入CPU作为本次采样值。
在LED数码显示器上显示温度值(采取十进制显示),并对温度进行测试和控制,当检测温度到达温度上限60℃时红灯亮,蜂鸣器报警,低于下限30℃时黄灯亮,蜂鸣器报警,以达到监控温度的目的。
本设计采取程序控制方式。
系统功能:
连续收集三次取平均值作为本次采样的有效值;判断温度是否高于上限值60℃或低于下限值30℃,如超出该范围则分别用红、黄发光二极管和报警;把收集来的电压值转化成温度值在LED显示器上显示;若键盘输入“R”则返回DOS,结束程序。
二、硬件设计
系统的硬件工作原理:
CPU通过8255查询8253的定时时间是否已到,若到则对8253接口2重新初始化且用ADC0809模/数转换器采样,不到则继续七段数码管显示与LED灯和蜂鸣器的过程,循环以上。
系统框图如下:
地址分配:
8255288h
8253280h
ADC0809298h-29fh
DAC0832290h
重要芯片功能介绍:
1、可编程并行接口8255
采纳工作方式0,输入控制字88h,即A口输出,C口高四位输入,C口低四位输出
PA0—PA6对应接七段数码管abcdefg接口,PC0PC1对应七段数码管的位码接口
PC2PC3对应黄红LED灯,PC4接8253计数器2的OUT2端口
2、可编程定时器/计数器(8253)
分别对8253的计数器1和计数器2初始化采取方式3和方式0,使计数器2发生每隔0.1秒的高电平
3、ADC0809模/数转换器
如图虚线接线即可
3、DAC0832数/模转换器
DAC0832是用于蜂鸣器报警的
三、软件设计
先对硬件82558253进行初始化且用ADC0809第一次采样,通过8255的PC4端口查询8253的定时时间是否已到,若到则对8253接口2重新初始化且用ADC0809模/数转换器采样,不到则继续七段数码管显示与LED灯和蜂鸣器的过程,最后若有键按下则返回DOS,否则返回继续查询PC4端口、循环。
主程序流程图:
七段数码管流程图
红黄灯及蜂鸣器程序如下:
movcl,[shuju]
cmpcl,60;采样得来的数据与30和60进行比较,不在它们之间的红黄灯、蜂鸣器报警
jncli
cmpcl,30
jcxiong
jmpexit
li:
oral,08h
callbeep
jmpexit
xiong:
oral,04h
callbeep
exit:
movdx,io8255a;通过8255C端口输出到LED灯
outdx,al
采样子程序
movbx,0
movcx,3
xun:
movdx,io0809
outdx,al
pushcx
movcx,0FFH;延时
delay1:
loopdelay1
popcx
inal,dx
movah,0
movdl,5;将采样数据转化为0-75之间的温度值
muldl
movdl,17
divdl
movah,0
addbx,ax;循环三次取样
loopxun
movax,bx
movcl,3
divcl;取三次数据后平均值
mov[shuju],al
movah,0
movcl,10
divcl
movdi,offsetbuffer1;将采样三次得出的均值的个位与十位分别存在buffer与buffer+1中
mov[di],ah
mov[di+1],al
四、讨论和感想
首先感受最深的的是汇编的基础一定要扎实,否则很容易出现低级错误,比方说一些死循环之类的东西。
我们这组最开始的时候连硬件检测都没做就直接执行程序,当然做不出什么来的。
后来又入入续续发现了一些低级错误,不过都一步步改正了。
还有就是主程序一定要简洁易读,最好事先画好流程图。
硬件不要频繁初始化,最好是在程序开头就全部初始化完毕,像82558253一类。
为包管程序易读、便于添加和修改,需要的注释是很好的,子程序中最好开头和结尾对子程序中用到的寄存器都进行入出栈操纵,这能有效的防止一些低级错误。
以上是我碰到的问题及其解决方法、心得体会。
五、源程序的清单:
datasegment
ioportequ0c400h-0280h
io8255aequioport+28ah;8255C口地址
io8255bequioport+28bh;8255控制寄存器地址
io8255cequioport+288h;8255A口地址
io0832aequioport+290h
io8253aequioport+283h;8253工作方式控制寄存器地址
io8253bequioport+281h;计数器1
io8253cequioport+282h;计数器2
io0809equioport+298h;蜂鸣器
leddb3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;段码
buffer1db0,0;存放要显示的十位和个位
bzdw?
;位码
data1db80h,0,0,0,0,0,0,0
db0ffh,0,0,0,0,0,0,0
db80h,0,0,0,0,0,0,0
db00h,0,0,0,0,0,0,0;红灯正弦波数据
data2db80h,96h,0aeh,0c5h,0d8h,0e9h,0f5h,0fdh
db0ffh,0fdh,0f5h,0e9h,0d8h,0c5h,0aeh,96h
db80h,66h,4eh,38h,25h,15h,09h,04h
db00h,04h,09h,15h,25h,38h,4eh,66h;黄灯正弦波数据
shujudb0;存放采样三次后的均值
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,io8255b;将8255设为A口输出C高4位输入低四位输出
moval,88h
outdx,al
moval,70h;设8253通道1工作方式0
movdx,io8253a
outdx,al
movax,100;写入计数器初值2000
movdx,io8253b
outdx,al
moval,ah
outdx,al
moval,0b6h;设8253通道2工作方式3
movdx,io8253a
outdx,al
movax,1000;写入计数器初值500
movdx,io8253c
outdx,al
moval,ah
outdx,al
calladcy
panduan:
movdx,io8255a;从8255的c口输入
inal,dx
andal,10h
jzxianshi;Pc4不为1跳到显示
calldelay
calladcy
xianshi:
callqiduan
pushax;LED灯与蜂鸣器程序段
pushcx
pushdx
movcl,[shuju]
cmpcl,60
jncli
cmpcl,30
jcxiong
jmpexit
li:
oral,08h
callbeep
jmpexit
xiong:
oral,04h
callbeep
exit:
movdx,io8255a
outdx,al
popdx
popcx
popax
movdx,0ffh
movah,06
int21h
jepanduan;有按键退出否则循环
movah,4ch;返回
int21h
qiduanprocnear;七段数码管子程序
pushdi
pushsi
pushbx
pushcx
pushdx
movdi,offsetbuffer1;设di为显示缓冲区
loop2:
movbh,02
lll:
movbyteptrbz,bh
pushdi
decdi
adddi,bz
movbl,[di];bl为要显示的数
popdi
moval,0
movdx,io8255a
outdx,al
movbh,0
movsi,offsetled;置led数码表偏移地址为SI
addsi,bx;求出对应的led数码
moval,byteptr[si]
movdx,io8255c;自8255a的口输出
outdx,al
moval,byteptrbz;使相应的数码管亮
movdx,io8255a;位选变更
outdx,al
movcx,3000
delay2:
loopdelay2;延时
movbh,byteptrbz
shrbh,1
jnzlll
popdx
popcx
popbx
popsi
popdi
ret;子程序返回
qiduanendp
adcyprocnear;AD采样子程序
pushax
pushbx
pushcx
pushdx
pushdi
movbx,0
movcx,3
xun:
movdx,io0809
outdx,al
pushcx
movcx,0FFH;延时
delay1:
loopdelay1
popcx
inal,dx
movah,0
movdl,5
muldl
movdl,17
divdl
movah,0
addbx,ax;循环三次取样
loopxun
movax,bx
movcl,3
divcl;取三次数据后平均值
mov[shuju],al
movah,0
movcl,10
divcl
movdi,offsetbuffer1
mov[di],ah
mov[di+1],al
popdi
popdx
popcx
popbx
popax
ret
adcyendp
delayprocnear
pushax;8253初始化
pushdx
moval,70h;设8253通道0工作方式0
movdx,io8253a
outdx,al
movax,500;写入计数器初值500
movdx,io8253b
outdx,al
moval,ah
outdx,al
popdx
popax
ret;子程序返回
delayendp
beepprocnear;蜂鸣器子程序
pushcx
pushax
pushdx
pushsi
movcx,60;取60次32个正弦波数据
dd:
movsi,0
ooo:
moval,data1[si];取正弦波数据
movdx,io0832a
outdx,al;放音
pushcx
movcx,6000
delay6:
loopdelay6;软件延时
popcx
incsi
cmpsi,32;是否取完32个数据
jlooo;若没有,则继续
loopdd;总循环次数60是否完,没有,则继续
popsi
popdx
popax
popcx
ret;子程序返回
beependp
codeends
endstart
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理及其应用 微型计算机温度控制系统设计课程设计报告 微机 原理 及其 应用 微型计算机 温度 控制系统 设计 课程设计 报告