欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    双机串行通信的设计与实现.docx

    • 资源ID:13755304       资源大小:979.79KB        全文页数:20页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    双机串行通信的设计与实现.docx

    1、双机串行通信的设计与实现双机串行通信的设计与实现一、设计要求1.单机自发自收串行通信。接收键入字符,从8251A的发送端发送,与同一个8251A的接收端接收,然后在屏幕上显示出来。2.双机串行通信,在一台PC机键入字符,从8251A的发送端发送给另一台PC机,另一台PC机的 8251A的接收端接收,然后在屏幕上显示出来。二、所用设备IBM-PC机两台(串行通信接口8251A两片,串行发送器MC1488和串行接收器MC1489各两片,定时器/计数器8253,终端控制器8259等),串口线一根串行直连电缆用于两台台电脑通过串行口直接相连,电缆两端的插头都是9 针的母插头:三、硬件方案1.设计思想计

    2、算机传输数据有并行和串行两种模式。在并行数据传输方式中,使用8条或更多的导线来传送数据,虽然并行传送方式的速度很快,但由于信号的衰减或失真等原因,并行传输的距离不能太长,在串行通信方式中,通信接口每次由CPU得到8位的数据,然后串行的通过一条线路,每次发送一位将该数据放送出去。串行通信采用两种方式:同步方式和异步方式。同步传输数据时,一次传送一个字节,而异步传输数据是一次传送一个数据块。串口是计算机上一种非常通用设备串行通信的协议。大多数计算机包含两个基于RS232的串口。串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接

    3、收数据。典型地,串口用于ASCII码字符的传输。通信使用3根线完成:(1)地线,(2)发送,(3)接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。其他线用于握手,但是不是必须的。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通行的端口,这些参数必须匹配:RS-232(ANSI/EIA-232标准)是IBM-PC及其兼容机上的串行连接标准。可用于许多用途,比如连接鼠标、打印机或者Modem,同时也可以接工业仪器仪表。用于驱动和连线的改进, RS-232只限于PC串口和设备间点对点的通信。IBM PC及其兼容机提供了一种有较强的硬件依赖性,但却

    4、比较灵活的串行口I/O的方法,即通过INT 14调用ROM BIOS串行通信口的例行程序。该例行程序。该例行程序包括将串行口初始化为指定的字节结构和传输速率,检查控制器的状态,读写字符等功能。14号中断的功能总结如下:串行口服务(Serial Port ServiceINT 14H) 00H 初始化通信口 03H 读取通信口状态01H 向通信口输出字符 04H 扩充初始化通信口02H 从通信口读入字符(1)、功能00H:初始化通信口入口参数:AH00HDX初始化通信口号(0COM1,1COM2,)AL初始化参数,参数的说明如下: 波特率奇偶位停止位字的位数76543210000 = 110X0

    5、 = None0 = 1 bit10 = 7 bits001 = 15001 = Odd1 = 2 bits11 = 8 bits010 = 30011 = Even011 = 600100 = 1200101 = 2400110 = 4800111 = 9600 (2)、功能01H :向通信口输出字符入口参数:AH01HAL字符DX初始化通信口号(0COM1,1COM2,)出口参数:AL的值不变AH的位70操作成功,通信口状态,AH的位60是其状态位(3)、功能02H :从通信口读入字符入口参数:AH02HDX初始化通信口号(0COM1,1COM2,)出口参数:AL接受的字符AH的位70操作

    6、成功,通信口状态,AH的位60是其状态位(4)、功能03H 功能描述:读取通信口状态入口参数:AH03HDX初始化通信口号(0COM1,1COM2,)出口参数:AH通信口状态,ALModem状态,参见功能号00H中的说明(5)、功能04H 功能描述:扩充初始化通信口,仅在PS/2中有效本设计正是利用14号配置串口,实现双机的双工通信及单机的自发自收通信。并画出了比较完整的原理图与写出了比较详细的程序2.原理框图3.工作原理IBM PC及其兼容机间经过RS232C口串行通信是在实际系统中用的最广泛的。上述框图只是串口通信的的一个内部的原理图,由于,本次设计是直接配置的PC机中的RS232适配卡,

    7、上述过程并不能看到,不过在,原理图的分析中会做详尽的解释 本次实验的外部来看实际的电路图PC机上的串行口是 9 针公插座,引脚定义为: PinNameDirDescription1CDCarrier Detect2RXDReceive Data3TXDTransmit Data4DTRData Terminal Ready5GNDSystem Ground6DSRData Set Ready7RTSRequest to Send8CTSClear to Send9RIRing Indicator所以本设计所采用的串口为双端母插头。串口为交叉线,2,3号针脚交叉相连,5号针接公共地。EIA RS

    8、-232-C接口(9针)插头连线方法:发送RXD23TXD接收接收TXD32RXD发送信号地GND55GND信号地4.电路原理图4.1顶层的模块图,top.pri此原理图的主要参考资料是protel 99 se中Z80 Microprocessor的例子。整个串行通信系统包括六大部分:CPU部分、复位和时钟电路部分、电源部分、存储器部分、串口通信接口部分和外设部分。下就各部分座简要介绍。4.2 CPU部分。CPU.schCPU部分本来是用8086来做的,但考虑到,8086的寻址比较复杂,数据线分高八位和低八位,所以就改成了8088。IO/M,RD,WR几个控制引脚的译码通过简单的组合逻辑电路来

    9、实现。对RAM存储器、ROM存储器、各IO芯片的寻址译码,是通过一片3-8译码器74LS138来实现的。地址线的低13位代码,在芯片选择的时候,不起作用,只有A13A15三位地址线负责译码。为了便于记忆,可把芯片选择时的低13位地址线设为零,来代表它的片选地址。如本设计中,RAM地址位0x00000来表示,而ROM的地址为0x20000,相应地,55,53,51的地址分别为:0x30000,0x40000,0x50000。低13位地址线只在选择存储器中的某一存储单元时使用。4.3复位和时钟电路。CPU_Clock.sch微机电路在工作中受到干扰后,容易出现CPU程序“跑飞”而盲目运行甚至出现死

    10、机现象。此时复位信号有效,使微机系统重新恢复正常运行。本设计采用的是比较简单的一种手动的复位电路。它是通用的吧,是直接从protel的一个例子中拷过来的。关于处理器的时钟电路确实有研究头8284除了提供频率恒定的时钟信号外,还对准备好(ready)信号,和复位(reset)信号进行同步。外界的准备好信号输入到8284的RDY,同步的准备好信号READY从8284输出。同样,外界的复位信号输入到8284的RES,同步的复位信号RESET从8284输出。这样,从外部来说,可以在任何时候发出这两个信号,但是,8284的内部逻辑电路设计成在时钟下降沿处使READY和RESET有效。 根据不同的振荡器,

    11、8284和振荡器之间,用两种不同的连接方式。通过F/C来实现:此电路图是按同步通信的方式画的,READY信号在以后的设计中,也没有用到,便把它的连接去掉了4.4电源部分。Power Supply.sch4.5存储器部分。serial_memory.sch2764只可读,6264可读可写,由于处理器用的是8088,便无需考虑A0的问题了,这种便利也体现在,后面的设计中,IO芯片的端口地址的设置上。4.6 串口通信接口部分。serial51.sch8253为8251提供波特率,8253只用它的第0个计数器,工作在方式3。下面是一段基于本设计的连接图的通过8251实现自发自收串行通信的程序,内包含了

    12、8253,8251的初始化。STACK SEGMENT PARA STACK STACK DB 128 DUP(?)STACK ENDSCODE SEGMENT PARA PUBLIC CODEASSUME CS:CODE,SS:STACK,DS:CODESTART: JMP MAINSBUF DB 1,2,3,4,5,6,7,8,9,10 ;定义保存“发送信息”RBUF DB 10 DUP(?) ;和“接收信息”的存储器区域OCOMM PROC ;将(AL)写入8251的命令口PUSH CX ;保存所用寄存器PUSH DX MOV DX,209H ;执行端口写入操作 OUT DX,AL MO

    13、V CX,400H ;延时 LOOP $ POP DX ;恢复所用寄存器 POP CX RET ;返回主调程序OCOMM ENDPINIT PROC ;初始化子程序MOV DX,0x40003H ;设置8253的1#通道为方式3、只读写低8位数据和2进制计数方式 MOV AL,56H OUT DX,AL MOV DX, 0x40001H ;设置计数值,此时的通讯速率为1M52161200 bps MOV AL,52 OUT DX,AL MOV AX,300H ;向8251的命令端口写入3个0II1: CALL OCOMM DEC AH JNZ II1 MOV AL,40H ;复位8251 CA

    14、LL OCOMM MOV AL,4EH ;设置1个停止位、8个数据位和16的波特率因子 CALL OCOMM MOV AL,37H ;允许8251发送和接收 CALL OCOMM RET ;返回主调程序INIT ENDPMAIN: MOV AX,CS ;初始化数据段寄存器 MOV DS,AX LEA SI,SBUF ;和发送 LEA DI,RBUF ;与接收指针 call initM01: MOV DX,0x50002H ;等待8251处于允许发送状态M02: IN AL,DX TEST AL,1 JZ M02 MOV AL,SI ;发送1个数据 INC SI MOV DX,0x50001H

    15、OUT DX,AL MOV CX,40H ;延时 LOOP $ MOV DX,0x50002H ;等待8251处于允许接收状态M03: IN AL,DX TEST AL,2 JZ M03 MOV DX,0x50001H ;接收 IN AL,DX MOV DI,AL ;并保存一个数据 INC DI CMP SI,OFFSET SBUF+10 ;判断是否处理完了全部数据? JB M01 ;未完,再处理下一个 HLT ;完了,执行停机动作CODE ENDS END START下面是一段基于本设计的连接图的通过8251实现串行通信的程序。stack segment stackstack endsdat

    16、a segmentdata endscode segmentassume cs:code,ds:data,ss:stackstart: push cspop ds mov dx,0x0003h ;设置8253计数1工作方式3mov al,56hout dx,almov al,52 mov dx,0x0001h 给8253计数器1送初值out dx,almov dx,0x50001h ;初始化8251xor al,almov cx,03 ;向8251控制端口送3个0delay:call out1loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mo

    17、v al,4eh ;设置为1个停止位,8个数据位,波特率因子为16call out1mov al,27h ;向8251送控制字允许其发送和接收call out1 next: mov dx,0x50001h in al,dx test al,02 ;检查接收是否准备好 jz next ;没有,等待 mov dx,0x50000h in al,dx ;准备好,接收 push ax mov cx,40hs51: loop s51 ;延时waiti: mov dx,0x50001hin al,dxtest al,01 ;发送是否准备好jz waitimov dx,0x50000hpop axout d

    18、x,al jmp nextout1 proc near ;向外发送一字节的子程序out dx,alpush cxmov cx,400hgg:loop gg ;延时pop cxretout1 endpcode ends end start4.7 外设部分。key_led.sch其实在PC机中应该是用8279来实现的。四、软件方案1.程序流程图2.程序清单name serialcommunicationdata segmentmessage db Serial Communication,0ah,0dh, db Any key press is sent to other PC,0ah,0dh d

    19、b press any key to exit,$data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov ah,09;显示字符串 mov dx,offset message int 21h;初始化串口 mov ah,0 mov dx,0 ;初始化COM0 mov al,0c3h ;11000011,4800,n,1,8 int 14h ;调用BIOS 14号中断again: mov ah,01 ;获取键盘状态 int 16h ;检查键盘是否按下 jz next ;如果没有则转入到接收模式 mov

    20、ah,0 ;如过有按键按下,读取出来 int 16h ;调用16号BIOS中断 cmp al,1bh ;比较一下是否是ESC键 je exit ;如果是,直接退出通信 mov ah,1 ;如果不是,把按下的字符发送到COM mov dx,0 ;选择COM0 int 14h ;调用BIOS中断;以下这部分代码,检查COM0端口,看看是否有字符接收,如果有,接收,并且把它在终端上显示出来next: mov ah,3 ;把COM口的状态读到AH mov dx,0 ;选择COM0 int 14h ;解释同上 and ah,1 ;屏蔽除D0位的其它位 cmp ah,1 ;检查D0看是否有一个字符等待接收

    21、 jne again ;没有,则转入到监视键盘模块 mov ah,2 ;有的话,从COM0读出 mov dx,0 ; int 14h mov dl,al ;dl中存放要显示的字符 mov ah,2 ;21号中断2号调用,显示字符 int 21h ;调用DOS 21号中断 jmp again ;跳回到监视键盘模块exit: mov ah,4ch :退出DOS int 21hcode ends end start 以上是全双工双机通信的程序代码,自发自收也可以用同样的代码,只需改变连线,把9针插座的2,3引脚用导线交叉互联即可。五、方案论证 按设计题目实现双机通信可有三种方法: 第一种方法:通过配

    22、置PC机中固有的RS232适配卡,通过调用BIOS的14号中断,及DOS中断的16号、21号中断里的功能,实现双机的通信。 第二种方案:在微机中通过配置可编程芯片8250来实现串行通信。 第三种方案:由芯片级做起,查资料,画原理图,版图,制版,调试,实现串口通信。 总地来说,第三种方案不符合现实情况,在时间上,资源上不允许,但毋庸置疑的是,它确实是最吸引我们的一种方案。 第二种方案是最合情合理的,既不像第三种方案那样遥远,也不像第一种方案那样简单。但在实际做的工程中,发现按实验资料所设计的程序并没有实现,可能有一些未知的原因。最后选择了第三种方案,可惜的是,这种程序更加偏向于软件。为弥补这种不

    23、足,只能把实验原理图画得详细一点了。六、调试过程1.首先把软件调试通过,本设计采用的是tasm,tlink,td这一套精巧的汇编开工具发。2.在PC双机上通信必需得把PC双机的串口连起来,但PC机上的插槽都是公的,若要连接,必需是双端都是母插头的串口线,但实验室的串口线都是一公一母的,不能用,后来,无意中发现一位同学买的单片机开发板上的串口线是双母插头的,解决了这个问题。3.第二种方案没有成功,可能是对8250了解的比较少,再一方面,8250里有比较多的寄存器,在通信的过程中,有一些未认识到的错误在里面,就继续选择用第一种方案来做。4.在网上下载了一个串口测试的程序,对调试过程,产生了很大的帮

    24、助。七、运行结果1.在发送端的程序显示结果输入的字符没有显示,因为程序没有回显功能2.在接收端的程序显示结果注:其实“接收端”与“发送端”描述,只是在一次的通信中相对而言的,并没有绝对的接收端与发送端,因为此程序是双工的。八、收获体会1.对微机原理有了更深一步的认识,当时学习时,很多迷惑不解的部分都迎刃而解了,比如说,8259的中断机制,8086的编址方法等。2.巩固了对PROTEL工具使用,虽然还不如当时熟练,但也去掉了不少生疏。3.这次课程设计使我产生了一种很强烈的愿望,就是想把以往只在书纸上大动干戈操作的一些东西,实实在在的做出来,实现掉,因为只有这样它才有意义。 (注:可编辑下载,若有不当之处,请指正,谢谢!)


    注意事项

    本文(双机串行通信的设计与实现.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开