接口课程设计报告(郝俊)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
接口课程设计报告
计算机0202班郝俊
学号;012002013429 一.课程设计的要求与目的
结合一个实际的接口技术问题,设计一个微机应用系统,包括主控机,数个下位机及执行部件,要求该系统综合应用并行接口、串行接口和其他接口,编写对应的上位机和下位机程序,实现主控机与下位机的远距离传送和远程监控功能。
系统结构,如图;
其中;1.系统硬件由一台主控机,数台下位机和执行部件组成,主控机与下位机通过串行通信线连接。
2.主控机:与所有下位机进行数据交换,必要时需建数据库,进行数据处理等。
3.下位机:与主控机通信,控制执行部件。
4.执行部件;将接收的数据送入到下位机或将下位机输出的数据送到执行部件。
5.主控机程序:串行(RS232/RS485)通信程序,数据处理程序等。
6.下位机程序:串行(RS232/RS485)通信程序,执行部件控制程序
二.课程设计的题目
地铁计费系统
1.系统功能;
乘客进站要在执行部件上刷卡,出站也要刷卡,执行部件将接收到的数据通过下位机传送给上位机,上位机根据卡号得出卡上金额。出站时计算费用,并判断乘客是否买足了票,如果费用大于卡上金额,表示票款不足,则发出警报;如果费用小于卡上金额,表示票款足够,则算出余额,最后将数据送到下位机显示出来。
2.开发环境
我们本次课程设计所用的开发环境是实验室提供的MF多功能微机接口实验与开发平台,所用的语言是IBM-PC汇编语言。
3.实验分工
我们组的成员有我,冯茂盛,徐捷和黄林,其中冯茂盛同学担任组长。我们的分工如下;冯茂盛同学负责下位机的程序编写以及整体调试,徐捷同学负责上位机的程序编写,黄林同学和我分别负责上位机和下位机的辅助设计以及硬件设计连接。
三.流程图
上位机的流程图如下
下位机的流程图如下页
四.源程序代码
上位机源代码:
data segment
balance db '4'
quit db0ah,0dh,'The balance in your account is:$'
err db0ah,0dh,'The balance is not adequate!!$'
fee db0ah,0dh,'The fee of this travel is:$'
card db0ah,0dh,'The card number is:$'
carderror db0ah,0dh,'Invalid card number!',0ah,0dh,'$'
data ends
stack segment stack
db200dup(0)
stack ends
code segment
assume cs:code,ds:data,ss:stack
cls macro op1,op2,op3,op4 ;用于清屏,分别是起止的行和列mov ah,6
mov bh,1EH
mov al,0
mov ch,op1
mov cl,op2
mov dh,op3
mov dl,op4
int10H
endm
int51 proc near ;8251A初始化子程序
mov dx,309h;8251A命令口
mov al,0;空操作
out dx,al
mov al,40h;内部复位
out dx,al
mov al,4eh;8251A方式命令
out dx,al
mov al,27h;8251A工作命令
out dx,al
ret
int51 endp
set_bps proc near ;8253-5计数初值计算与装入子程mov dx,307h;8253-5命令口
mov al,0b6h;8253-5初始化命令
out dx,al
mov dx,306h;8253-5计数器2的端口
mov ax,34h;取计数初值
out dx,al;装计数初值低字节
mov al,ah;装计数初值高字节
out dx,al
ret;返回
set_bps endp
begin: mov ax,data
mov ds,ax
cls 0,0,25,80
mov ah,2
mov bh,0
mov dx,0101h
int10h
call int51 ;调用8251A子程序,初始化8251A
lea dx,card ;显示'The card number is :'
mov ah,9
int21h
receiv1: mov dx,309h;准备接收数据
in al,dx
test al,02;接收数据准备好?RXRDY=1?
jz receiv1 ;未准备好,即无数据接收
mov dx,308h;已准备好,即有数据传送过来,则接收卡号
in al,dx
mov dl,al;显示接收的字符
mov ah,02h
int21h
cmp al,30h
jne carderr
mov dx,309h;发送数据
transm1: in al,dx
test al,01;发送准备好?TXRDY=1?
jz transm1 ;未准备好,则等待
mov dx,308h;将卡上的余额发送出去
mov al,balance
out dx,al;发送结束,准备接收下位机传来的车费
lea dx,fee ;显示'The fee of this travel is:'
mov ah,9
int21h
receiv2: mov dx,309h;准备接收数据
in al,dx
test al,02;接收数据准备好?RXRDY=1?
jz receiv2 ;未准备好,即无数据接收
mov dx,308h;已准备好,即有数据传送过来,则接收1个字符卡号
in al,dx
mov dl,al;显示接收的字符
mov ah,02h