接口技术课程设计双机串行通讯.doc_第1页
接口技术课程设计双机串行通讯.doc_第2页
接口技术课程设计双机串行通讯.doc_第3页
接口技术课程设计双机串行通讯.doc_第4页
接口技术课程设计双机串行通讯.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一、设计题目双机通过两台试验箱串行通讯二、设计目的1、掌握8088/86实验串行口通信的方法。2、了解实现串行通讯的硬环境、数据格式的协议、数据交换的协议。3、学习串行口通讯程序编写方法。三、设计原理及方案1、8251A的基本性能8251A是可编程的串行通信接口芯片,基本性能有:(1)两种工作方式:同步方式,异步方式。同步方式下,波特率为064K,异步方式下,波特率为019.2K。(2)同步方式下的格式每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。(3)异步方式下的格式每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。1个启动位。并能根据编程为每个数据增加1个、15个或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、程序流程图如下: 主程序是发送子程序发送缓冲为空?发送数据返回否清出错标志是否有无开始设置串口通讯方式及波特率LED显示读入键值检测键盘输入转换成键码串口发送键码收到数据?接收数据送显示缓冲串口发送子程序是接收子程序是否已收到数据?读入数据返回否串口接收子程序2、连线图连线连接孔1连接孔21KEY/LED_CSCS028251_CSCS138251_TxCLK1MHz48251_RxCLK1MHz58251_CLK10MHz6甲方8251_TXD乙方8251_RXD7甲方8251_RXD乙方8251_TXD8甲方GND乙方GND3、8251A操作过程流程图8251A操作过程流程图4、试验程序(见附录)五、实施结果双机串行通信实现了数据的双项收发。在一台小键盘键入字符,在本机的LED数码显示管上显示出来,并由8251A的发送端发送给另一台的 8251A的接收端接收,然后在另一台LED数码显示器上显示出来。同样另一台也可做发送端发送字符。六、改进意见及建议本次课程设计是通过8251的收发功能将两个试验箱实现串行通讯,我们组顺利实现了两台机箱的同时发送和接收数据的双机通讯。而在本次试验中发送的一直都是一个字符而不能发送多位字符,我希望改进的是可以发送任意长短的字符,由用户自己定义。七、个人所做贡献在本次试验中我负责程序的查找、修改和调试,我们在网上查找,在本机实验程序中查找,修改,在一条一条指令的研究后,在询问了别人意见后,最后定下了附录里的这段程序。八、设计体会回顾起此次接口课程设计,至今我仍感慨颇多,的确,从选题到定稿,从理论到实践,在整整一星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说8251A芯片的使用,软件的应用技巧,对汇编语言掌握得不好通过这次课程设计之后,一定把以前所学过的知识重新温故。十、附录试验程序代码如下;/从左向右,第五位LED数码管显示本机的键入按键代码,第六位显示接收到的数据;单机的自发自收模式下,请将8251模块的TXD和RXD用线缆直接连接OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口IN_KEY equ 08001h ; 键盘读入口CS8251D equ 09000h ; 串行通信控制器数据口地址CS8251C equ 09001h ; 串行通信控制器控制口地址data segmentLEDBuf db 6 dup(?) ; 显示缓冲Num db 1 dup(?) ; 显示的数据DelayT db 1 dup(?)RBuf db 0TBuf db 0LEDMAP: ; 八段管显示码 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hKeyTable: ; 键码定义 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, 07hcode segment assume cs:code, ds:dataDelay proc near push ax ; 延时子程序 push cx mov al, 0 mov cx,ax loop $ pop cx pop ax retDelay endpDisplayLED 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 ; 关所有八段管 retDisplayLED endpTestKey proc near mov dx, OUTBIT mov al, 0 out dx, al ; 输出线置为0 mov dx, IN_KEY in al, dx ; 读入键状态 not al and al, 0fh ; 高四位不用 retTestKey endpGetKey proc near mov ch, 00100000b mov cl, 6KLoop: 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 Exit1Goon_: dec cl shl cl, 2 ; 键值 = 列 X 4 + 行 mov ch, 4LoopC: test al, 1 jnz Exit1 shr al, 1 inc cl dec ch jnz LoopCExit1: mov dx, OUTBIT mov al, 0 out dx, al mov ch, 0 mov bx, offset KeyTable add bx, cx mov al, bx ; 取出键码 mov bl, alWaitRelease: mov dx, OUTBIT mov al, 0 out dx, al ; 等键释放 mov ah, 10 call Delay call TestKey jne WaitRelease mov al, bl retGetKey endpIInit proc near ; 8251初始化 mov dx, CS8251C mov al, 01001111b ; 1停止位,无校验,8数据位, x64 out dx, al mov al, 00010101b ; 清出错标志, 允许发送接收 out dx, al retIInit endpSend proc near ; 串口发送 mov dx, CS8251C mov al, 00010101b ; 清出错,允许发送接收 out dx, alWaitTXD: 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 retSend endpReceive proc near ; 串口接收 mov dx, CS8251CWaitRXD: in al, dx test al, 2 ; 是否已收到一个字 je WaitRXD mov dx, CS8251D in al, dx ; 读入 mov RBuf, al retReceive endpstart 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, 0ffh mov LEDBuf+5, 0ffhMLoop: 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 mov al, TBuf and al, 0fh ; 只显示低四位 mov ah, 0 mov bx, offset LEDMAP add bx,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论