微机接口课设报告.docx
- 文档编号:8502755
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:14
- 大小:94.96KB
微机接口课设报告.docx
《微机接口课设报告.docx》由会员分享,可在线阅读,更多相关《微机接口课设报告.docx(14页珍藏版)》请在冰豆网上搜索。
微机接口课设报告
江苏大学计算机学院
课程设计报告
课程名称微机原理与接口技术课程设计
实验学期2010至2011学年,第1学期
学生姓名龚科
专业班级计算机0802
学号3080602051
指导教师韩晓茹
开课系计算机科学系
《微机原理与接口技术》课程设计报告
实验题目:
数据采集
设计时间:
2010-01-03至2011-01-08
一、实验目的与要求
1.了解数据采集系统的组成
2.提高综合应用8259、0809、8255等接口芯片的能力
二、实验要求
对一路温度、一路压力信号进行巡回数据采集,并把A/D转换后的结果在实验机的数码管上显示出来。
采集到的数据超过规定的限制时,使发光二极管闪烁报警。
三、实验设备与环境
PD-32温度/压力实验平台;A/D、D/A模块;中断模块(8259A);
8255并行接口模块;74系列模块;TS。
四、设计正文
(1)硬件连线
本程序实现两路数据采集;一路采集温度信号,一路采集压力信号。
对每一路信号要连续采集8次,然后把8次A/D转化后的平均值显示在数码管上。
左边三位显示压力值,右边三位显示温度值。
●拨码开关:
将拨码开关sw2拨上。
表示将GAL20V8的地址输入A-5接至系统地址线A5;A-6接至系统地址线A6;A-7接至系统地址线A7。
●压力实验模块的“压力输出”端接至AD0809的输入端IN0,温度实验模块的“温度输出”端接至AD0809的输入端IN1。
把8255的B1口接至温度实验模块的“占空比输入”端。
●0809的EOC输出端与8259的IRQ0端相连,0809的CS连CS8(3E0H)
●8259的片选CS-1连地址输出CS6(3A0H),8259的INT1连总线输入INYR,8259模块的INT-A连总总线的INTA,8259的SP/1连+5V。
●8255并行模块下方的4个片选信号CS-1、CS-2、CS-3和CS-4分别与地址译码输出模块的对应引脚(实验箱中部的CS-1、CS-2、CS-3和CS-4)链接,最高位8255的B1接占空比输入和led灯,接led灯用于观察占空比是否有效,B7接led灯和蜂鸣器,C0接任意一开关作为启停键。
如按上述连线,则8255的A口、B口、C口和控制口地址分别为200H、204H、208H和20CH;8259的奇地址是3A8H,偶地址是3A0h。
注意:
在温度实验模块的“占空比输入”端如果长期加上高电平,三端稳压管U3和负载电阻长时间通电加热,温度过高容易引起器件烧坏。
(2)软件编程
数据段:
定义max,db类型,用于存放越界值;
定义Ygewei,db类型,用于存放压力值的个位;
定义yshiwei,db类型,用于存放压力值的十位;
定义ybaiwei,db类型,用于存放压力值的百位;
定义wgewei,db类型,用于存放温度值的个位;
定义Wshiwei,db类型,用于存放温度值的十位;
定义Wbaiwei,db类型,用于存放温度值的百位;
定义ybuff缓冲区,db类型,用于存放八次取样的压力值;
定义wbuff缓冲区,db类型,用于存放八次取样的温度值;
定义c,db类型,用于存放取样次数;
定义s8,db类型,除数8;
定义Afg,db类型,用于标志是否越界。
程序段:
●主程序模块
给变量赋初值,max赋0c8h,即最大越界值为200,c赋0h,s8赋8,afg赋00h,表示未出现越界;
对8255、8259初始化,四片8255初值由高到低为81808080h,然后将0ffffffff送入A口B口,使数码管熄灭,且占空比有效,报警器无效,将0c05060ah,使显示压力值的数码管和显示温度值的数码管显示颜色分别为绿色和红色;8259初始化icw1,icw2,icw3分别为13h、08h、05h;
设置中断向量,中断类型号位08h,中断服务程序名为pick;
设置中断屏蔽字为00h;
启动0809in0采集数据;
判断是否采集到有越界的数值;
计算平均值并显示结果;
判断是否继续,关闭则暂停,开启则继续。
●中断程序模块
关中断;
判断是否已采满8次,是直接跳至结束中断部分,否继续执行;
判断是否已采到越界值,是直接跳至结束中断部分,否继续执行;
采入压力值;
判断是否越界,是置afg为0ffh,直接跳至结束中断部分,否继续执行;
将采样值存入ybuff;
启动0809in1;
延时;
采入温度值;
判断是否越界,是置afg为0ffh,直接跳至结束中断部分,否继续执行;
将采样值存入wbuff;
启动0809in0;
发中断结束信号;
开中断;
流程图:
●中断服务程序流程图:
●主程序流程图
主要程序代码:
.486p
datasegmentat0use16
org1000h
maxdb?
ygeweidb?
yshiweidb?
ybaiweidb?
wgeweidb?
wshiweidb?
wbaiweidb?
ybuffdb8dup(?
)
wbuffdb8dup(?
)
cdb?
s8db?
afgdb?
dataends
codesegmentuse16
assumeds:
data,cs:
code
org1600h
beg:
jmpstart
sevencoddb0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,
80h,90h,88h,83h,0c6h,0a1h,86h,8eh
start:
movax,data
movds,ax
cli
movmax,0c8h
movc,0h
movs8,8
movafg,00h
moveax,81808080h;8255初始化
movdx,20ch;控制口方式字左三片80h,右一片81h
outdx,eax
moveax,0ffffffffh
movdx,200h
outdx,eax;a口灭灯
;moveax,0ffffffffh
movdx,204h
outdx,eax;b口熄灭,输出占空比,led灭
moveax,0c05060ah
movdx,208h
outdx,eax
moval,13h;8259初始化icw1
movdx,3a0h
outdx,al
calldelayin1
moval,08h;icw2
movdx,3a8h
outdx,al
calldelayin1
movax,05h;icw4
outdx,al
calldelayin1
movax,offsetpick;中断向量设置,08h号中断
movbx,20h
mov[bx],ax
movax,segpick
mov[bx+2],ax
moval,00h;中断屏蔽字
movdx,3a8H
outdx,al
movdx,3e0h;启动0809in0口开始
outdx,al
next:
sti
calldelayint
cli
cmpafg,0ffh
jewarn1
leabx,ybuff
xorax,ax
movcx,8
addby:
addal,[bx]
adcah,0
incbx
loopaddby
movcl,8
divcl;平均值在al中
movah,0h
movcl,10
divcl
movygewei,ah
movah,0h
divcl
movyshiwei,ah;换码
leabx,sevencod
movybaiwei,al
moval,ygewei
xlat
movygewei,al
moval,yshiwei
xlat
movyshiwei,al
moval,ybaiwei
xlat
movybaiwei,al
leabx,wbuff
xorax,ax
movcx,8
addbw:
addal,[bx]
adcah,0
incbx
loopaddbw
movcl,8
divcl;平均值在al中
movah,0h
movcl,10
divcl
movwgewei,ah
movah,0h
divcl
movwshiwei,ah
movwbaiwei,al
leabx,sevencod
moval,wgewei;换码
xlat
movwgewei,al
moval,wshiwei
xlat
movwshiwei,al
moval,wbaiwei
xlat
movwbaiwei,al
movdx,200h;输出结果
moval,ybaiwei
outdx,al
movdx,201h
moval,ygewei
outdx,al
movdx,202h
moval,wshiwei
outdx,al
movdx,204h
moval,yshiwei
outdx,al
movdx,205h
moval,wbaiwei
outdx,al
movdx,206h
moval,wgewei
outdx,al
moval,0
in55c:
movdx,207h
moval,0f0h;占空比输入无效;灭灯
outdx,al
movdx,20bh
inal,dx
cmpal,00h
jein55c
moval,0ffh;占空比输入有效;灭灯
movdx,207h
outdx,al
movafg,00h
movc,0
jmpnext
warn1:
movdx,207h;输出报警
moval,00h
outdx,al;占空比输入无效;亮灯
movdx,20bh
in55cn:
inal,dx
cmpal,0fh
jein55cn
jmpin55c
pickproc
cli
cmpc,8
jenend
cmpafg,0ffh
jeincc
movdx,3e0h
inal,dx
cmpal,max
jbsavby
movafg,0ffh
jmpincc
savby:
movybuff[bx],al
movdx,3e4h
outdx,al
calldelayin1
inal,dx
cmpal,max
jbsavbw
movafg,0ffh
jmpincc
savbw:
movwbuff[bx],al
incbx
movdx,3e0h
outdx,al
incc:
incc
nend:
moval,20h;发中断结束信号
movdx,3a0h
outdx,al
sti
iret
pickendp
delayin1proc
pushdx
pushax
pushcx
movcx,200h
loop$
popcx
popax
popdx
ret
delayin1endp
delayintproc
pushdx
pushax
pushcx
movcx,0h
loop$
popcx
popax
popdx
ret
delayintendp
codeends
endbeg
(3)测试结果与分析
1.关闭启停键,运行程序,占空比输入等亮起,表示无效,数码管显示为000和000;
2.打开启停键,温度值显示为173,表示此时采集到的温度值为173,随时间的推移,温度值逐渐增大,用手摸一下热敏电阻下方的三端稳压管U3,可以感觉到其温度上升;
3.不久之后,温度上升至199便不再上升,此时两个同时led灯亮起,蜂鸣器鸣叫报警,此时说明检测到温度超过允许的最大值,且自动使占空比输入无效;
4.关闭启停键,报警灯熄灭,蜂鸣器停止鸣叫,占空比输入等亮,表示无效;
5.过几分钟后,启动启停键,占空比输入灯熄灭,表示有效,数码管显示温度值为187并逐渐上升,表明重新加热,温度测试完毕;
6.按压压力感应器,数码管压力显示部分数值随手的按压力度增大而减小;
7.用力按压压力感应器,使其结果超过200,数码管显示数值停留在199,此时报警led灯亮起,蜂鸣器鸣叫报警,此时说明检测到压力超过允许的最大值;
8.松开手,关闭启停键,报警灯熄灭,蜂鸣器停止鸣叫;
9.启动启停键,压力显示数值回到000,继续按压压力感应器,显示数值重新开始变化,压力测试完毕。
结果表明,程序运行正确且满足实验要求。
五、课设小结
报告的最后,我来总结一下我的这次微机原理与接口技术课程设计。
课设最初,我像很多同学一样,想图个简单,寒假也可以早点回去,弄个电子钟得了,反正电脑里有源代码,只要看懂并且自己测试成功便可以了。
可是,强烈的自我责任感告诉我,坚决不能浪费一个这样好的锻炼自我能力的机会,我问自己:
“抄人家的程序有意思么?
!
一点挑战性都没有。
”于是,我毅然决定修改实验题目,做数据采集。
正式课设的前一两天,感觉非常迷茫,看了实验指导书的介绍,以及书上我认为存在一定问题的流程图,脑子里乱七八糟,完全无从下手去编程。
首先最重要的一点是不能抽象的思考出程序运行的整个过程,特别是中断服务程序在何时应该被调入,哪些工作应该由主程序做,哪些由中断服务程序完成。
于是,我根据自己对实验要求的理解,一步一步的画出了我自己的流程图,也就是上面的流程图的雏形。
根据流程图编写出了程序。
在这过程中,遇到了一些问题。
令我印象最为深刻的是决定如何采样。
因为0809采样有两路信号,发中断请求却是一个口,这样要在中断服务无程序中判断采样是那一路数据,以及下次启动0809的那一路数据进行转换,这样就比较麻烦。
在做数据采集的同学之间,,我们也讨论过这个问题,有同学的想法是一次中断程序完成一次所有数据的采集,即16个数据,这样的做法我的想法是已经失去了采用中断的意义了。
于是,我的做法是,一次采两个数据,每一路一个,进八次中断完成一整次采集。
另一个印象比较深刻的问题是如何控制输出报警信息以及占空比输入和控制开关键,即设置启停键。
由于我所用到显示的数码管只需六个,即用到了3片8255,于是我便想到用最后一片来完成以上功能,B下口输出占空比,B上口输出报警,C下口设为启停键输入。
完成编程后的在运行过程中,遇到的第一个问题是在求平均数时出现了除发错误,经过检查时被除数计算错误,数值太大导致除法溢出。
在检查与改正的过程中,我不知不觉中又复习了一遍算数运算过程。
所以说,课设的过程也是是一个学习的过程,更是一个复习的过程。
你说我怎么能放弃这么好的一个过程呢!
之后进行的调试就比较顺利了,由于有了流程图,编写出的程序严格地按照流程图运行,因此运行结果也不会错得太离谱。
这次课设,首先,我感到很欣慰,因为我选择了自己完成课设,并且达到了目的。
其次,我感到很高兴,因为通过这次课设,不管是在理论学习上还是在实践应用上,我的能力都得到了进一步的提高,这些都是以后在职场上拼杀的本钱!
有了这些,我才能在职场中脱颖而出!
最后,感谢老师给我们安排这次机会,让我们得到成长!
计算机0802龚科
2011年1月8日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 接口 报告