双机通信系统的设计 精品.docx

上传人:b****8 文档编号:10649467 上传时间:2023-02-22 格式:DOCX 页数:16 大小:42.17KB
下载 相关 举报
双机通信系统的设计 精品.docx_第1页
第1页 / 共16页
双机通信系统的设计 精品.docx_第2页
第2页 / 共16页
双机通信系统的设计 精品.docx_第3页
第3页 / 共16页
双机通信系统的设计 精品.docx_第4页
第4页 / 共16页
双机通信系统的设计 精品.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

双机通信系统的设计 精品.docx

《双机通信系统的设计 精品.docx》由会员分享,可在线阅读,更多相关《双机通信系统的设计 精品.docx(16页珍藏版)》请在冰豆网上搜索。

双机通信系统的设计 精品.docx

双机通信系统的设计精品

 

《单片机与接口技术课程设计》

题目名称:

双机通信系统的设计

 

 

一.课程设计的目的与要求

1.教学目的

培养学生利用所学的单片机知识进行独立地设计、开发产品分析问题和解决问题的能力。

2.教学要求

1)在充分理解实验设备的工作原理的基础上,完成各题目的基本功能。

从基本功能的实现中得到感性认识,进一步完成各课题。

2)独立完成电路及程序的设计、调试。

设计结果达到课题技术要求,功能完善,运行稳定。

3)写出设计总结。

要求条理清楚,重点突出,结构合理。

并附有完整原理图及带有注释说明的完整的软件源程序清单。

4)课程设计期间按时作息,遵守纪律,爱护仪器、设备,保持良好、整洁的工作环境。

3.内容及要求

 主要技术指标和要求:

1)基本功能:

利用8031串行口发送和接收数据,并将接收的数据通过扩展I/O口74LS273输出到发光二极管显示,结合延时来模拟一个循环彩灯。

2)双机通信

甲机负责发送,乙机负责接收。

从甲机的键盘上键入数字键0~F,在两个实验箱上的数码管上显示出来。

如果键入的不是数字按键,则显示“Error”错误提示。

二、实验原理

1.8031单片机串行口双机通信电路设计

MCS-51的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。

其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O;工作方式1多用于双机之间或与外设电路的通信;方式2、3除有方式1的功能外,还可以作多机通信,以构成分布式多微机系统。

串行端口有两个控制寄存器SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率[每秒传送的位数]以及作为中断标志等。

串行端口有一个数据寄存器SBUF在特殊功能寄存器中的字节地址为99H,该寄存器为发送和接收所共用。

串行端口的波特率可以用程序来控制。

在不同工作方式中,由时钟振荡的值或由定时器T1的定时溢出时间确定,使用十分方便灵活。

 1、串口控制寄存器

方式1

输入:

在(REN)=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。

只有当8位数据接收完,并检测到高停止位后,只有满足①(R1)=0;②(SM2)=0或接收到的第9位数据为1时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。

所以在方式1接收时,应先用软件清零RI和SM2标志。

方式2

 方式2为固定波特率的11位UART方式。

它比方式1增加了一位可程控为1或0的第9位数据。

 输出:

发送的串行数据由TXD端输出一帧信息为11位,附加的第9位来自SCON寄存器的TB8位,用软件置位或复位。

它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。

当CPU执行一条数据写入SUBF的指令且TI=0时,就启动发送器发送。

发送一帧信息后,置位中断标志TI。

输入:

在(REN)=1时,串行口采样RXD引脚,当采样到1至O的跳变时,确认是串行发送来的一帧数据的开始位0,从而开始接收一帧数据。

在接收到附加的第9位数据后,当满足①(RI):

0;②(SM2)=0或接收到的第9位数据为1时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志Ri;否则信息丢失。

且不置位RI。

工作方式3

方式3为波特率可变的11位UART方式。

除波特率外,其余与方式2相同。

波特率的选择

  如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。

在MCS-51串行口的四种工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可变的,由定时器T1的溢出率控制。

1.方式O:

方式0的波特率固定为主振 的1/12。

2.方式2:

方式2的波特率由PCON中的选择位SMOD来决定,可表示为:

波特率=2sMoD×fosc/64也就是当SMOD=1时,波特率为1/32×fosc,当SMOD=0时,波特率为1/64×fosc。

3.方式1和方式3

 定时器T1作为波特率发生器,其公式如下:

波特率=2SMOD/32×定时器T1溢出率

T1溢出率=T1计数率/产生溢出所需的数

 式中T1计数率取决于它工作在定时器状态还是计数器状态。

当工作于定时器状态时,T1计数率为Fosc/2:

当工作于计数器状态时,T1计数率为外部输入,此频率应小于Fosc/24。

产生溢出所需与定时器T1的工作方式、T1的预置值有关。

定时器T1工作于方式O:

溢出所需数=8192-×

定时器T1工作于方式1:

溢出所需数=65536-X

定时器T1工作于方式2:

溢出所需数=256-X

  因为方式2为自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生器最恰当。

这种方式下,T1的溢出率[次/秒]计算式可以表示为:

T1溢出率=Fsoc/12[256-X]

2.利用8031单片机串行口,实现双机通信。

1.本实验系统中考虑用户可以方便使用串行口实现双机或和上位机通信,系统设计有用户专用串行接口,只要配上用户专用通信电缆线就可以实现和上位机通信,不影响监控系统和上位机的联机工作。

J10就是用户专用串行接口,将J10用用户专用通信线连到上位机的串口上。

注意不要和上位机系统用串行口冲突。

2.实验时需将1号机8031串行接收信号线P3.0(RXD)连到2号机8031串行口发送信号线P3.1(TXD)。

实验线路图:

8031单片机串行口双机通信实验线路接线如图4.3所示,3根连线。

实验步骤:

1.按图连好线路。

2.在两台DVCC实验系统处于"P."状态下。

3.在1号机上运行H516S1.ASM程序或输入四位起始地址0D00后,按EXEC

键连续运行程序,在1号机上显示电压值。

图4.38031单片机串行口双机通信

4.在2号机上H516S2.ASM程序或输入四位起始地址0E30后,按EXEC键连续运行程序,在2号机上显示8031-2。

5.从1号机上的键盘上输入数字键,会显示在2号机的数码管上

3.8031的功能简介

8031单片机是Intel公司生产的MCS-51系列单片机中的一种,除无片内ROM外,其余特性与MCS-51单片机基本一样。

1)主电源引脚VCC和VSS

VCC——(40脚)接+5V电压;

VSS——(20脚)接地;

2)外接晶体引脚XTAL1和XTAL2

XTAL1(19脚)接外部晶体的一个引脚。

在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。

当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CHMOS单片机,此引脚作为驱动端。

XTAL2(18脚)接外晶体的另一端。

在单片机内部,接至上述振荡器的反相放大器的输出端。

采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮。

图4.48031管脚图

3)控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP

①RST/VPD(9脚)当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。

推荐在此引脚与VSS引脚之间连接一个约8.2k的下拉电阻,与VCC引脚之间连接一个约10μF的电容,以保证可靠地复位。

VCC掉电期间,此引脚可接上备用电源,以保证内部RAM的数据不丢失。

当VCC主电源下掉到低于规定的电平,而VPD在其规定的电压范围(5±0.5V)内,VPD就向内部RAM提供备用电源。

②ALE/PROG(30脚):

当访问外部存贮器时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。

即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。

因此,它可用作对外输出的时钟,或用于定时目的。

然而要注意的是,每当访问外部数据存储器时,将跳过一个ALE脉冲。

ALE端可以驱动(吸收或输出电流)8个LS型的TTL输入电路。

对于EPROM单片机(如8751),在EPROM编程期间,此引脚用于输入编程脉冲(PROG)。

③PSEN(29脚):

此脚的输出是外部程序存储器的读选通信号。

在从外部程序存储器取指令(或常数)期间,每个机器周期两次PSEN有效。

但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。

PSEN同样可以驱动(吸收或输出)8个LS型的TTL输入。

④EA/VPP(引脚):

当EA端保持高电平时,访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(对851/8751/80C51)或1FFFH(对8052)时,将自动转向执行外部程序存储器内的程序。

当EA保持低电平时,则只访问外部程序存储器,不管是否有内部程序存储器。

对于常用的8031来说,无内部程序存储器,所以EA脚必须常接地,这样才能只选择外部程序存储器。

对于EPROM型的单片机(如8751),在EPROM编程期间,此引脚也用于施加21V的编程电源(VPP)。

4、输入/输出(I/O)引脚P0、P1、P2、P3(共32根)

①P0口(39脚至32脚):

是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。

②P1口(1脚至8脚):

是准双向8位I/O口。

由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。

P1口能驱动(吸收或输出电流)4个LS型的TTL负载。

对8052、8032,P1.0引脚的第二功能为T2定时/计数器的外部输入,P1.1引脚的第二功能为T2EX捕捉、重装触发,即T2的外部控制端。

对EPROM编程和程序验证时,它接收低8位地址。

③P2口(21脚至28脚):

是准双向8位I/O口。

在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。

在对EPROM编程和程序验证期间,它接收高8位地址。

P2可以驱动(吸收或输出电流)4个LS型的TTL负载。

④P3口(10脚至17脚):

是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。

P3能驱动(吸收或输出电流)4个LS型的TTL负载。

作为第一功能使用时,就作为普通I/O口用,功能和操作方法与P1口相同。

作为第二功能使用时,各引脚的定义如表所示。

值得强调的是,P3口的每一条引脚均可独立定义为第一功能的输入输出或第二功能。

 

表4.2P3各口线的第二功能定义

口线

引脚

第二功能

P3.0

10

RXD(串行输入口)

P3.1

11

TXD(串行输出口)

P3.2

12

INT0(外部中断0)

P3.3

13

INT1(外部中断1)

P3.4

14

T0(定时器0外部输入)

P3.5

15

T1(定时器1外部输入)

P3.6

16

WR(外部数据存储器写脉冲)

P3.7

17

RD(外部数据存储器读脉冲)

三、软件设计

1、流程图及其说明

A机流程图:

B机流程图:

四、课程设计的结果

1、基本功能 

利用8031串行口发送和接收数据,并将接收的数据通过扩展I/O口74LS273输出到发光二极管显示,结合延时来模拟一个循环彩灯。

彩灯变化花样可自行设计。

 

例:

①L1、L2、„L8依次点亮;②L1、L2、„L8依次熄灭;③L1、L2、„L8全亮、全灭。

各时序间隔为0.5秒。

让发光二极管按以上规律循环显示下去。

 

;8031的TXD接RXD;74LS273的CS273接CS0;SO0~SO7接发光二极管的L1~L8; 

CSEG    AT    0000H       

LJMP  START 

CSEG    AT    4100H 

PORT    EQU   0CFA0H 

START:

  MOV   TMOD,#20H  ;

         MOV   TL1,#0F2H  ;

         MOV   TH1,#0F2H

         MOV   87H,#00H   ;

         SETB  TR1        ;

         MOV   SCON,#50H  ;

         MOV   R1,#12H    ;

         MOV   DPTR,#TABLE

         MOV   A,DPL

         MOV   DPTR,#L1

         CLR   C 

        SUBB  A,DPL      ;

         MOV   R5,A       ;

         MOV   R0,A SEND:

   MOV   A,R0 

        MOVC  A,@A+PC    ;

L1:

     MOV   SBUF,A     ;

WAIT:

   JBC   RI,L2      ; 

        SJMP  WAIT 

L2:

     CLR   RI 

           CLR   TI

            MOV   A,SBUF

            MOV   DPTR,#PORT

         MOVX  @DPTR,A

            ACALL DELAY 

INC   R0          

        DJNZ  R1,SEND

           MOV   R1,#12H

         MOV   A,R5 

        MOV   R0,A  

       JMP   SEND 

TABLE:

  DB    01H, 03H, 07H, 0FH, 1FH, 3FH,7FH,0FFH,0FEH

         DB    0FCH,0F8H,0F0H,0E0H,0C0H,80H,00H,0FFH,00H

 DELAY:

  MOV   R4,#05H

 DEL1:

   MOV   R3,#200 

DEL2:

   MOV   R2,#126 

DEL3:

   DJNZ  R2,DEL3

 DJNZ  R3,DEL2

         DJNZ  R4,DEL1

         RET

 END 

2、双机通信系统的设计

发送机 

PORT EQU 0CFA0H

CSEG AT 0000H

LJMP FMT_T_S

CSEG AT 4100H 

FMT_T_S:

MOV TMOD,#20H;

        MOV TH1,#0F3H;

        MOV TL1,#0F3H 

       SETB TR1;

       MOV SCON,#50H; 

       ORL PCON,#80H;

TX_ACK:

MOV A,#06H; 

       MOV SBUF,A

 WAIT1:

JBC TI,RX_YES; 

SJMP WAIT1 

RX_YES:

JBC RI,NEXT1;

        SJMP RX_YES

 NEXT1:

MOV A,SBUF; 

      CJNE A,#00H,TX_ACK; 

FMT_RAM0:

MOV R3,#00H  ;

TX_NEWS:

MOV DPTR,#TABLE;

MOV A,R3 

        MOVC A,@A+DPTR;

         MOV R0,A;

         MOV SBUF,A;

WAIT3:

JBC TI,NEXT2;

 SJMP WAIT3

 NEXT2:

 MOV A,R0;

        MOV P1,A 

       LCALL DELAY 

DELAY:

MOV R1,#7FH;

DEL1:

MOV R4,#200

DEL2:

DJNZ R4,DEL2  

DJNZ R1,DEL1

RX_0FH:

JBC RI,IF_0FH;

        SJMP RX_0FH

IF_0FH:

MOV A,SBUF; 

     CJNE A,#0FH,TX_NEWS 

     INC R3 

 CJNE R3,#21,TX_NEWS;

      SJMP FMT_RAM0; 

TABLE:

DB 0FEH,0FCH,0F8H,0F0H,0E0H,0C0H,80H,00H;

       DB 80H,0C0H,0E0H,0F0H,0F8H,0FCH,0FEH,0FFH;

       DB 00H,0FFH; 

      DB 0F0H,0FH,00H;

            END    

接收机 

PORT EQU 0CFA0H

CSEG AT 0000H

LJMP FMT_T_S

CSEG AT 4100H 

FMT_T_S:

MOV TMOD,#20H;

         MOV TH1,#0F3H;

         MOV TL1,#0F3H

         SETB TR1;

 MOV SCON,#50H;

 MOV PCON,#80H; 

FMT_RAM:

MOV R6,#00H;

RX_ACK:

JBC RI,IF_06H;

 SJMP RX_ACK 

IF_06H:

MOV A,SBUF; 

       CJNE A,#06H,TX_15H

 TX_00H:

MOV A,#00H 

       MOV SBUF,A 

WAIT1:

JBC TI,RX_NEWS;

       SJMP WAIT1

 TX_15H:

MOV A,#15H

        MOV SBUF,A

 WAIT2:

JBC TI,HAVE1;

       SJMP WAIT2

 HAVE1:

LJMP RX_ACK 

RX_NEWS:

JBC RI,HAVE3;

         SJMP RX_NEWS 

HAVE3:

MOV A,SBUF;

       MOV P1,A;

       MOV A,#0FH;

       MOV SBUF,A 

WAIT3:

JBC TI,RX_NEWS;

       SJMP WAIT3 

TX_ERR:

MOV A,#0F0H;

        MOV SBUF,A 

WAIT4:

JBC TI,AGAIN;

SJMP WAIT4 

AGAIN:

LJMP HAVE3  

 END  

现象:

8个LED小灯按表中取出的指令顺序点亮

五、设计过程中遇到的问题及解决方法

1、软件方面的问题

在设计的过程中,软件设计中主要有遇到三大问题:

一、电压值采集不到,或者是采集到了也不稳定;二、发送数据不过去;三、接收程序过程时间太长,造成发送方采样不稳定,时间过短。

电压值采集不到的主要原因是中断子程序并没有用到,在用到子程序之前程序已经返回了,后来通过修改中断程序前面的程序,使之能够顺利运行到中断子程序部分,从而得到了电压值。

接收方没有数值显示或者是出现乱码的问题主要是发送程序过程中,取用到的数值A并不是所采集到的电压值的总个数值,因此才会出现这样的结果,后面我把发送数值放在显示子程序中,在显示采集到的数值之前把数值发送过去,最终在接收方也得到了准确的电压值,并且也没有再出现乱码的情况,显示出了正确的数值。

因为接收发送过去的数值时间过长,而发送方又是等数值发送过去完全才能显示准确的数值的,所以最开始因为延时时间不够,造成了发送方的采集到的八段数码管上显示的电压值闪烁过快,而查看不到准确的数值。

后来我将显示子程序中的延时时间加长以后,不仅接收方,发送方也能够准确且稳定的显示采集到的电压值。

2、硬件方面的问题

另外,在硬件设计方面,最开始根本就采集不到数值,主要是因为硬件板上的-5V的电压值是不准确的,应该另外通过万能表调节电压值到-5V来提供,否则出不来数据。

六、系统调试及使用说明

本次的课程设计必须在软件和硬件共同的作用下才能准确的进行,实现电压的采样和双机通信。

打开俩台计算机,都在DVCC试验系统下的DV51H试验系统中建立一个新的文件夹,在有5G14433的那一方建的文件夹中放入的是发送程序,而在另一台计算机里边则是放入接收子程序,并进行保存。

然后按照电路图连接电路,将硬件中的各支路线都连接好以后,检查好硬件连线后,就可以接通试验箱的电源了,在试验箱上的八段数码管最后一个上边显示闪烁的P后,按键盘上的PCDBG键,然后在DB51H系统中进行联接、编译、调试、运行。

在运行程序过程中有值得非常注意的一点是必须先运行接收方的程序,再运行发送方的程序,否则在接收方会接收不到数据。

本次设计的结果能够在发送方和接收方都得到通过双积分式A/D转换MC14433采样收集到的电压值,并通过旋转W1电位器可以改变电压值,在八段数码管上也会跟着随时变换数值,得到准确的结果,在接收方也能准确的得到发送方电位器改变的电压值。

 

七、课程设计的心得与体会

本次设计老师给了我们足够长的时间,所以我们大家基本上都很好的完成了设计任务。

期间,我学到了很多宝贵的经验和相关的单片机知识,最主要的是在对于硬件的认识和编程方面都得到了很大的提高。

在这次的单片机数据采集与双机通信系统的设计,单片机语言程序的编写以及原理图的设计占了很重要的部分。

对于零散的芯片,通过编程、仿真、硬件电路搭建,才能形成一个完整的系统。

在整个设计过程中,我深深地体会到了我们必须深入到工作的实践中,才能学到更有用的知识,也能记得更长久,因为毕竟是实践出真知。

而且与此同时,在本次课程设计中,我们还必须学会如何将书本中的知识很好的应用到实践中去。

经过本次的课程设计,通过去图书馆和网上查阅很多资料后,我学到了更多关于单片机的汇编编程,了解了单片机串行通信的基本知识,对于以后的学习和工作都有很大的益处。

我也学习到了如何自主的分辨资料的好坏以及是否对本次设计的有用与否。

总的来说,我学会了查阅资料和分辨资料的好坏。

另外,在学习的过程中,也遇到了很多困难,比如开始的时候,由于发送端和接收端的通信协议没有做好,导致数据不能正确的传输和接收,在解决问题的过程中,对于通信协议的实现有了深刻的认识。

通过这次的课程设计我也深刻的认识到了,理论知识和实践相结合是教学环节中相当重要的一个环节,只有这样才能提高自己的实际操作能力,并且从中培养自己独立思考、用于克服困难、团队协作的精神。

 

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

当前位置:首页 > 经管营销 > 销售营销

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

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