微机原理课程设计报告-双机串行通信

时间:2024.4.21

河北科技大学

课程设计报告

学生姓名:­­­      学 号:   

专业班级:                  

课程名称:   微型计算机原理及应用技术   

学年学期: 2 0 1 2  2 0 1 3 学年第一学期

指导教师:               

2 0 1 3    年 1 月

课程设计成绩评定表

目录

一、设计题目............................................................................................................. 1

二、设计目的............................................................................................................. 1

三、设计原理及方案................................................................................................. 1

1、8251A的基本性能........................................................................................... 1

2、8251A的内部结构........................................................................................... 1

3、8251外部引脚图............................................................................................. 2

4、8251A的编程................................................................................................... 2

5、8251A的初始化............................................................................................... 4

四、实现方法............................................................................................................. 5

1、程序流程图如下:.......................................................................................... 5

2、连线图.............................................................................................................. 6

3、8251A操作过程流程图................................................................................... 7

4、试验程序(见附录)...................................................................................... 7

五、实施结果............................................................................................................. 7

六、改进意见及建议................................................................................................. 8

七、个人所做贡献..................................................................................................... 8

八、设计体会............................................................................................................. 8

九、同组成员名单..................................................................................................... 8

十、附录..................................................................................................................... 9


一、设计题目

双机通过两台试验箱串行通讯

二、设计目的

1、掌握8088/86实验串行口通信的方法。

2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。

3、学习串行口通讯程序编写方法。

三、设计原理及方案

1、8251A的基本性能

8251A是可编程的串行通信接口芯片,基本性能有:

(1).两种工作方式:同步方式,异步方式。同步方式下,波特率为064K,异步方式下,波特率为0~19.2K。

(2).同步方式下的格式

每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。

(3).异步方式下的格式

每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。1个启动位。并能根据编程为每个数据增加1个、1.5个或2个停止位。可以检查假启动位,自动检测和处理终止字符。

(4).全双工的工作方式

(5).提供出错检测

2、8251A的内部结构

发送器由发送缓冲器和发送控制电路两部分组成。接收器由接收缓冲器和接收控制电路两部分组成。数据总线缓冲器,读/写控制电路,调制解调控制电路。

8251A内部结构图

3、8251外部引脚图

8251的外部引脚下图所示,共28个引脚,每个引脚信号的输入输出方式如图中的箭头方向所示。

 8251外部引脚图

4、8251A的编程

编程的内容包括两大方面:

一是由CPU发出的控制字,即方式选择控制字和操作命令控制字;

二是由8251A向CPU送出的状态字。

(1)、方式选择控制字(模式字)


方式选择控制字的格式如图所示。

(2)、操作命令控制字(控制字)

操作命令控制字的格式如下:

(3)、状态字


状态字的格式如下:

5、8251A的初始化  

8251的初始化和操作流程下图所示。

8251初始化流程图

a)芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。

b)如果模式字中规定了8251A工作在同步模式,

c)由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。

四、实现方法

1、程序流程图如下:

串口发送子程序

 

2、连线图

 

3、8251A操作过程流程图

8251A操作过程流程图

4、试验程序(见附录)

五、实施结果

       双机串行通信实现了数据的双项收发。两台试验箱A,B可相互发送、接受数据。在一台小键盘键入字符,由8251A的发送端发送给另一台的 8251A的接收端接收,然后在另一台LED数码显示器上显示出来。同样另一台也可做发送端发送字符。

六、改进意见及建议

       本次课程设计是通过8251的收发功能将两个试验箱实现串行通讯,我们组顺利实现了两台机箱的同时发送和接收数据的双机通讯。而在本次试验中发送的一直都是一个字符而不能发送多位字符,我希望改进的是可以发送任意长短的字符,由用户自己定义。

七、个人所做贡献

       在本次试验中我负责程序的编写、修改和调试,我们在网上查找,在本机实验程序中查找,修改,在一条一条指令的研究后,在询问了别人意见后,最后定下了附录里的这段程序。

八、设计体会

学生学习完理论后就要进行课程设计,因为理论课程学习是让学生学习基本理论知识,对课程内容和原理有比较深刻的理解,只要从理论上理解,不用考虑实际的可行性,而课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程,不仅需要在理论上能实现而且还要考虑实际的可行性,不能纸上谈兵。随着科学技术发展的日新日异,微型计算机已经成为当今计算机应用中空前活跃的领域, 在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握微型计算机的开发技术是十分重要的。尤其是在现在这个金融危机的时刻,找工作越来越难,只有加强自身的能力才能有一席立足之地。   

回顾起此次接口课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说8251A芯片的使用,软件的应用技巧,对汇编语言掌握得不好……通过这次课程设计之后,一定把以前所学过的知识重新温故。

九、同组成员名单

        

十、附录

OUTBIT   equ 08002h  ; 位控制口

OUTSEG   equ 08004h  ; 段控制口

IN_KEY   equ 08001h  ; 键盘读入口

CS8251D  equ 09000h   ; 串行通信控制器数据口地址

CS8251C  equ 09001h   ; 串行通信控制器控制口地址

data   segment

LEDBuf db  6 dup(?)    ; 显示缓冲

Num    db  1 dup(?)    ; 显示的数据

DelayT db  1 dup(?)

RBuf   db  0

TBuf   db  0

LEDMAP:                ; 八段管显示码

       db    3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h

       db    7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h

KeyTable:              ; 键码定义

       db    16h, 15h, 14h, 0ffh

       db    13h, 12h, 11h, 10h

       db    0dh, 0ch, 0bh, 0ah

       db    0eh, 03h, 06h, 09h

       db    0fh, 02h, 05h, 08h

       db    00h, 01h, 04h, 07h

code   segment

       assume cs:code, ds:data

Delay  proc  near

       push  ax            ; 延时子程序

       push  cx

       mov   al, 0

       mov   cx,ax

       loop  $

       pop   cx

       pop   ax

       ret

Delay  endp

DisplayLED proc near

       mov   bx, offset LEDBuf

       mov   cl, 6         ; 共6个八段管

       mov   ah, 00100000b ; 从左边开始显示

DLoop:

       mov   dx, OUTBIT

       mov   al, 0

       out   dx,al         ; 关所有八段管

       mov   al, [bx]

       mov   dx, OUTSEG

       out   dx, al

       mov   dx, OUTBIT

       mov   al, ah

       out   dx, al       ; 显示一位八段管

       push  ax

       mov   ah, 1

       call  Delay

       pop   ax

       shr   ah, 1

       inc   bx

       dec   cl

       jnz   DLoop

       mov   dx, OUTBIT

       mov   al, 0

       out   dx,al        ; 关所有八段管

       ret

DisplayLED endp

TestKey proc near

       mov   dx, OUTBIT

       mov   al, 0

       out   dx, al       ; 输出线置为0

       mov   dx, IN_KEY

       in    al, dx       ; 读入键状态

       not   al

       and  al, 0fh       ; 高四位不用

       ret

TestKey endp

GetKey proc near

       mov   ch, 00100000b

       mov   cl, 6

KLoop:

       mov   dx, OUTBIT

       mov   al, ch           ; 找出键所在列

       not   al

       out   dx, al

       shr   ch, 1

       mov   dx, IN_KEY

       in    al, dx

       not   al

       and   al, 0fh

       jne   Goon_        ; 该列有键入

       dec   cl

       jnz   KLoop

       mov   cl, 0ffh    ; 没有键按下, 返回 0ffh

       jmp   Exit1

Goon_:

       dec   cl

       shl   cl, 2       ; 键值 = 列 X 4 + 行

       mov   ch, 4

LoopC:

       test  al, 1

       jnz   Exit1

       shr   al, 1

       inc   cl

       dec   ch

       jnz   LoopC

Exit1:

       mov   dx, OUTBIT

       mov   al, 0

       out   dx, al

       mov   ch, 0

       mov   bx, offset KeyTable

       add   bx, cx

       mov   al, [bx]          ; 取出键码

       mov   bl, al

WaitRelease:

       mov   dx, OUTBIT

       mov   al, 0

       out   dx, al            ; 等键释放

       mov   ah, 10

       call  Delay

       call  TestKey

       jne   WaitRelease

       mov   al, bl

       ret

GetKey endp

IInit  proc near             ; 8251初始化

       mov   dx, CS8251C

       mov   al, 01001111b   ; 1停止位,无校验,8数据位, x64

       out   dx, al

       mov   al, 00010101b   ; 清出错标志, 允许发送接收

       out   dx, al

       ret

IInit  endp

Send   proc near             ; 串口发送

       mov   dx, CS8251C

       mov   al, 00010101b   ; 清出错,允许发送接收

       out   dx, al

WaitTXD:

       in    al, dx

       test  al, 1           ; 发送缓冲是否为空

       jz    WaitTXD

       mov   al, TBuf        ; 取要发送的字

       mov   dx, CS8251D

       out   dx, al          ; 发送

       push  cx

       mov   cx,0ffffh

       loop  $

       pop   cx

       ret

Send   endp

Receive proc near            ; 串口接收

       mov   dx, CS8251C

WaitRXD:

       in    al, dx

       test  al, 2           ; 是否已收到一个字

       je    WaitRXD

       mov   dx, CS8251D

       in    al, dx          ; 读入

       mov   RBuf, al

       ret

Receive endp

start  proc  near

       mov   ax, data

       mov   ds, ax

       call  IInit

       mov   LEDBuf, 0ffh    ; 显示 8.8.8.8.

       mov   LEDBuf+1, 0ffh

       mov   LEDBuf+2, 0ffh

       mov   LEDBuf+3, 0ffh

       mov   LEDBuf+4, 0

       mov   LEDBuf+5, 0

MLoop:

       call  DisplayLED       ; 显示

       mov   dx, CS8251C

       in    al, dx           ; 是否接收到一个字

       test  al, 2

       jnz   RcvData

       call  TestKey          ; 有键入?

       je    MLoop            ; 无键入, 继续显示

       call  GetKey           ; 读入键码

       and   al, 0fh          ; 显示键码

       mov   TBuf, al

       call  Send

       jmp   MLoop

RcvData:

       call  Receive          ; 读入接收到的字

       mov   al, RBuf

       and   al, 0fh          ; 只显示低四位

       mov   ah, 0

       mov   bx, offset LEDMAP

       add   bx, ax

       mov   al, [bx]         ; 转换成显示码

       mov   LEDBuf+5, al

       jmp   MLoop

Start  endp

code   ends

       end start

更多相关推荐:
微机原理课程设计报告

微机原理课程设计设计报告姓名朱文斋班级学号30905020xx教师张荣标20xx年1月5日微机原理课程设计一目的结合微型计算机原理课程的学习进一步巩固已学的知识同时针对计算机原理知识的具体应用学会对系统中DOS...

微机原理课程设计实验报告

河北科技大学课程设计报告学生姓名学号专业班级课程名称学年学期指导教师年月课程设计成绩评定表目录一课程设计的目的1二设计题目1三设计内容要求2四设计成员及分工2五课程设计的主要步骤2六课程设计原理及方案3七实现方...

数字钟_接口课设报告_8086微机原理与接口技术课程设计

接口技术基础实验报告学院计算机科学与技术学院班级计091学号09130220xx姓名曹恒楼指导老师顾晖时间20xx616接口技术课程设计目录数字钟的设计31设计需求分析与解决方案311设计需求分析3111题目要...

微机原理课程设计报告

微机原理课程设计报告设计名称:LED七段数码管数字钟学院:电子信息学院班级:电科091提交时间:20##年6月15日一:设计内容设计的电路功能是实现时钟的24进制计时并显示在数码管上,通过按键可对时钟的时、分、…

微机原理课程设计总结

南京航空航天大学微机原理课程设计数据采集系统中断法微机原理课程设计数据采集系统中断法南京航空航天大学微机原理课程设计数据采集系统中断法一课设目的进一步掌握微机原理知识了解微机在实时采集数据的应用学习掌握编程和程...

微机原理课程设计报告

课程设计报告纸数据采集系统三中断法一实验目的进一步掌握微机原理知识了解微机在实时采集过程中的应用学习掌握编程和程序调试方法二实验内容1用中断法将ADC0809通道0外接05V电压转换成数字量后在七段LED数码管...

微机原理课程设计报告(电子时钟)

微机原理课程设计报告1设计目的培养和锻炼在学习完本门课后综合应用所学理论知识解决实际工程设计和应用问题的能力通过课程设计要求熟悉和掌握微机系统的软件硬件设计的方法设计步骤得到微机开发应用方面的初步训练掌握825...

微机原理课程设计报告

微机原理课程设计报告时间11月22日至12月3日学院自动化学院专业班级自1103姓名高云峰学号41151092合作者指导教师董洁成绩20xx年12月微机原理课程设计报告高云峰学号41151092摘要通过对霍尔电...

微机原理课程设计报告

大连海事大学课程设计报告课程名称微机原理课程设计成员学号姓名成绩设计时间20年月日至月日微机原理课程设计报告目录设计任务与要求2设计题目2设计目的2要求2组织与实施3设计方案4总体设计4设计原理4采用的新技术5...

微机原理课程设计报告

课程设计报告20xx20xx年度第一学期课程微机原理及应用题目秒表设计院系自动化系班级学号学生姓名指导教师设计周数一周成绩日期20xx年1月10一课程设计目的与要求1通过对微机系统分析和具体设计使学生加深对所学...

微机原理课程设计报告

合肥工业大学计算机与信息学院课程设计课程微机原理与接口技术设计专业班级计算机科学与技术111班学号20xx2446姓名朱明明用8255和8253使发光二极管按一定规律轮流点亮一设计题目及要求发光二极管点亮方式将...

微机原理课程设计报告

中南大学微机原理课程设计报告微机应用系统设计与综合实验课程设计报告学院信息科学与工程学院班级自动化1106学号0909113126姓名张甜甜指导老师李志民瞿年清20xx1230中南大学微机原理课程设计报告目录目...

微机原理课程设计报告(35篇)