王晶晶Word文档下载推荐.docx

上传人:b****6 文档编号:18609491 上传时间:2022-12-29 格式:DOCX 页数:12 大小:50.95KB
下载 相关 举报
王晶晶Word文档下载推荐.docx_第1页
第1页 / 共12页
王晶晶Word文档下载推荐.docx_第2页
第2页 / 共12页
王晶晶Word文档下载推荐.docx_第3页
第3页 / 共12页
王晶晶Word文档下载推荐.docx_第4页
第4页 / 共12页
王晶晶Word文档下载推荐.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

王晶晶Word文档下载推荐.docx

《王晶晶Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《王晶晶Word文档下载推荐.docx(12页珍藏版)》请在冰豆网上搜索。

王晶晶Word文档下载推荐.docx

串行(RS232/RS485)通信程序,数据处理程序等。

6.下位机程序:

串行(RS232/RS485)通信程序,执行部件控制程序。

a>

绪论,概述

我们选做的题目是“病人监控系统”,下位机负责实时采集病人的心率,并发送给主机。

主机对接受的数据处理:

判断是否正常(50-80),若出现不正常,就会有警报声,且警报灯会闪烁。

并且,显示屏上有“normal”、“abnormal”的显示。

实验用到双工串行通信,A/D转换,并行通信。

实验用到的接口芯片有:

8251、8253、8255、ADC0809

b>

实施计划及分工

我们把任务大体分成四个部分:

界面、串行通信、声光报警、AD转换。

每个人对负责的模块承担主要任务,同时我们也探讨疑难问题。

C>

按照功能模块编程调试

1、界面调试程序:

playmacroA,B;

定义宏,该宏的功能是在指定光标处显示输出设定属性的字符

movdx,A;

运用宏可以简化代码

movah,2

int10h

movah,15

moval,03h

movbl,0ch

movcx,B

movah,9

endm

datasegment

h1db0ah,0dh

db0ah,0dh,'

PATIENTMONITORSYSTEM'

Thisisapatientmonitorsystem,monitoring'

03h,03h,03h,03h

Iftherateismorethen120orlessthen50,'

display"

abnormal"

andalarm.'

Elsedisplay"

normal"

.'

db0ah,0dh

MadebyPengFangWangJingjingHuHuanLeiLiuYing.'

'

01h,01h,01h,01h,'

2005.9.5HUSTCS0203$'

h2db0ah,0dh

db0ah,0dh,11h,'

pressanykeytostart'

pressESCtoquit$'

dataends

codesegment

assumecs:

code,ds:

data

start:

movax,data

movds,ax

movah,0

moval,3

int10h;

设置成80×

25彩色文本方式

play0000h,80;

输出第一行边框

movdx,0314h;

设置光标位置

int21h

leadx,h1;

输出提示信息

movah,9

int21h

play0307h,3;

输出用红心符号排列组成的红十字标志

play0407h,3

play0505h,7

play0605h,7

play0707h,3

play0807h,3

play0b00h,80

leadx,h2;

提示用户输入信息

movah,8;

8号中断调用,停住界面

movah,6;

清屏

moval,0

movbh,10

movcx,0

movdh,24

movdl,79

movah,15;

设置光标位置

movdx,0

movax,4c00h;

程序退出

codeends

endstart

2、二进制转换成十进制显示

功能分析:

下位机采集的数据在机器内是二进制表示的,为能及时给用户反映信息,必须在显示器上显示出来。

而屏幕上是以字符串的方式显示的。

因此,必须把二进制值转换成十进制字符串所对应的ASCII码。

调试程序:

输出bufb中的值

stacksegment

db200dup(0)

stackends

pdb10

bufadb8dup(0)

bufbdb20,30,139,134,60

resultdb?

assumecs:

code,ss:

stack,ds:

data

start:

movcx,5;

送要转换的个数

leadi,bufb;

待转换的二进制的存储区首址给di

lopa:

moval,[di];

待转换字符送al

leasi,bufa;

转换后字符区首地址给si

callf2t10;

调用f2t10进行二十进制转换

mov[si],byteptr0dh;

在末尾加回车换行

mov[si+1],byteptr0ah

mov[si+2],byteptr'

$'

leadx,bufa;

显示转换后的十进制数

incdi;

指向下一个待转换的二进制数

looplopa;

若cx不为0,则转lopa继续转换

movah,1

movah,4ch

;

*********f2t10子程序********************

f2t10proc

pushcx

pushdx

lop1:

movah,0;

除以10,所得的商存al,余数入栈,并记录余数的个数

divp

movresult,al

moval,ah

movah,0

pushax

inccx

moval,result

oral,al;

若商不为0则转lop1继续循环

jnelop1

lop2:

popax;

从栈中弹出一位十进制

addal,30h;

转换成对应的ASCII码

mov[si],al;

存入转换后字符存储区

incsi;

指针后移

deccx

jnelop2;

未转换完则继续循环

popdx;

恢复现场

popcx

ret

f2t10endp

3、AD转换

芯片ADC0809引脚功能介绍:

D0-D7:

数字量输出信号线

IN0-IN7:

8路模拟量输入信号线

ALE:

地址锁存允许信号,用于锁存通道号。

START:

启动转换信号,正脉冲有效。

EOC:

转换结束状态信号,高电平有效,转换结束时为高电平。

OE:

允许输出信号,高电平有效。

部分代码:

input:

movtemp,al;

保存通道号

jmpbegin

begin:

movdx,30eh;

送通道号

moval,temp

outdx,al

movcx,0f00h

lop:

looplop

movdx,30ch;

启动A/D转换

moval,00

movcx,0f00h;

delay

looplop1

movah,0ch;

检测是否有ESC键按下

incal

jnzwait1;

若无键按下,则查转换结束

movah,8;

若有ESC键按下,则程序退出

cmpal,1bh

jzquit

wait1:

查转换结束EOC(EOC=D7)

inal,dx

andal,80h

jzwait1;

若未结束(D7=0),则等待

read:

若已结束,则读数据

pushax;

存数据

4、双工通信:

下位机与主机间的通信

主机的接收代码:

receiv:

movdx,ctr151;

接收数据

testal,02;

接收数据准备好?

RXRDY=1?

jzreceiv;

未准备好,即无数据接收,则转按键发送

movdx,data51;

已准备好,即有数据传送过来,则接收1个字符

movc,al

calltranslate

callcomp

calldelay

movah,0bh

cmpal,0

jzreceiv

movah,08h

cmpal,1bh;

是ESC?

jeover;

是,则退出,返回DOS

jmpreceiv;

不是,则接收1个字符后,再转按键发送

over:

moval,0ch;

置PC6=0,关闭8253-5的GATE2,停止输出方波

movdx,303h

下位机的发送代码:

transm:

movdx,ctrl151;

testal,01

jztransm

calladpo

movdx,data51

moval,a

movdl,al

cmpal,00h

jetransm

jeover

jmptransm

体会:

此次接口实验是每4人完成一道题,在此次实验中我感受最深的是团结合作的精神。

首先,我们讨论出了‘病人监控系统’的功能。

然后,进行分工。

分给我的模块是界面部分,我当时想着一定要把界面部分做好点。

因为界面还是挺重要的。

开发一个系统,用户不必要了解内部如何实现的,用户只要知道如何去用,界面的信息是什么意思就可以了。

所以界面部分还是挺重要的。

可等待我做的时候,我才发现用汇编编写界面的程序太难了。

不是编程很难,而是要做出漂亮的界面实在太难。

我只能尽量做好点了。

我们做的是“病人监控系统”,我联想到“红十字会”。

因此,我在界面上用红心排出了一个红十字的标志。

当然,我很快就完成了。

然后,我没有闲着。

我去给partner当打杂的了。

下位机采集的数据在机内是二进制的,主机接收到的数据也是二进制的,为显示出来,必须进行转换。

我编写了二十进制转换的程序。

由于上个学期我们做过双工通信的实验,这次在通信上遇到的问题还不是太大。

因此,很快我们的实验基本功能都已经完成。

可老师检查不通过。

原因是我们没有用到AD转换。

啊,看来我们要返工了。

因为我们原来采取的方法是从键盘输入数据,现在要改成AD转换,那么通信部分就要改动了。

这个时候已经是星期三了,时间紧迫。

唉,后悔当初没有好好听讲,这就要付出代价了。

于是,我们集中力量攻AD转换的程序,真是“团结就是力量”。

虽然以前也没有用过ADC0809芯片,但通过我们自己的琢磨,从零开始,我们还是把它拿下了。

这就是团结的力量。

当然,我从这次的实验中也看出自己存在的不足:

实践能力太差,还很需要努力。

同时,我也在此处感谢同组成员给我的帮助,从她们哪儿我学到了很多。

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

当前位置:首页 > 解决方案 > 学习计划

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

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