单片机双机通信课程设计报告.docx

上传人:b****7 文档编号:24981872 上传时间:2023-06-03 格式:DOCX 页数:17 大小:250.67KB
下载 相关 举报
单片机双机通信课程设计报告.docx_第1页
第1页 / 共17页
单片机双机通信课程设计报告.docx_第2页
第2页 / 共17页
单片机双机通信课程设计报告.docx_第3页
第3页 / 共17页
单片机双机通信课程设计报告.docx_第4页
第4页 / 共17页
单片机双机通信课程设计报告.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

单片机双机通信课程设计报告.docx

《单片机双机通信课程设计报告.docx》由会员分享,可在线阅读,更多相关《单片机双机通信课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。

单片机双机通信课程设计报告.docx

单片机双机通信课程设计报告

1.题目设计要求...........................................4

2.系统的组成及工作原理...................................4

2.1系统组成…………………………………………………………4

2.1工作原理………………………………………………………..4

2.3双机通讯的方案选择…………………………………………..5

3.器件的功能及作用.......................................6

3.1硬件设计…………………………………………………………6

3.2电气设置…………………………………………………………8

3.3DB-9连接器……………………………………………………..8

4.系统硬件设计..........................................10

5.软件设计..............................................11

6.系统仿真调试..........................................18

7.设计体会和收获........................................18

8.參考资料..............................................19

 

1.题目设计要求:

甲乙两机串口双向通信设计

要求:

利用51单片机,RS232芯片,LED灯,数码管进行双机通信设计。

甲机可按键控制乙机的LED显示;乙机可按键控制甲机的数码管显示。

完成以下设计环节:

1)使用AltiumDesinger开发工具,设计电路原理图。

2)使用Uvision2开发平台,采用C语言或汇编语言设计软件程序。

3)使用PROTEUS仿真软件,设计仿真原理图并运行软件程序,完成系统仿真。

2.系统的组成及工作原理

2.1系统组成

图2.1总体框图

2.2工作原理

双机通信系统通过甲乙单片机的串行口来实现数据的收发。

甲单片机通过开关电路来启动发送程序,甲机当开关按下时向乙机发送一个数据,乙机上蜂咛器发出声音提示有数据发送过来,乙机通过接收中断来接收和开关判断是否接收甲机发送过来的数据,并通过编写好的数据代码在8个发光二极管上显示主机发送过来的数据。

乙单片机通过开关电路来启动发送程序,乙机给甲机发送一数据,甲机上蜂咛器发出声音提示有数据发送过来,甲机通过接收中断来接收和开关判断是否接收乙机发送过来的数据,并通过编写好的数据代码在8个发光二极管上显示乙机发送过来的数据。

2.3双机通讯的方案选择

设计方案:

该系统采用主从共两片AT89C52单片机来实现上位机对下位机的控制,由于是近距离的双机通信,我们采用单片机直接交叉连接的方式,上位机发送的数据由串行口TXD端输出,直接由下位机的串行口数据接收端RXD接收。

需要注意的是一定要保证主从机相同的数据传输速率,即要求设置相同的波特率。

电路分为数码管显示模块,指示模块、以及单片机工作的基本复位、晶振模块。

甲机由3个数码管,4个独立键盘开关,1个蜂咛器组成。

乙机由8个发光二极管,一个蜂咛器,1个数字温度传感器DS18B20组成。

单片机上最基本的两个电路:

复位电路(图2.2)和晶振电路(图2.3)

图2.2

图2.3

3.器件的功能及作用

3.1硬件设计

3.1.1AT89C52和RS23说明

At89c52单片机内部有1个功能很强大的全双工串行口,可以同时发送和接收数据。

串行口的内部有数据接收缓冲器和数据发送缓冲器,数据接收缓冲器只能读出不能写入,数据发送缓冲器只能写入不能读出,这两个数据缓冲器都是用SBUF来表示,地址都是99H,CPU对特殊功能寄存器SBUF执行写操作就将数据写入发送缓冲器,对SBUF执行度操作就是读出接收缓冲器中的内容。

特殊功能寄存器SCON参访串行口的控制状态信号,串行口用T1或者T2作为波特率发生器(发送和接收时钟),特殊功能寄存器PCON的最高位SMOD为串行口波特率的倍率控制位。

SCON:

串行口控制寄存器

寄存器地址98H,位寻址9FH~98H。

位地址

9F

9E

9D

9C

9B

9A

99

98

位符号

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0、SM1:

串行口工作方式选择位

SM2:

多机通信控制位

REN:

允许/禁止串行口接收的控制位

TB8:

在方式2和方式3中,是被发送的第9位数据,可根据需要由软件置1或清

零,也可以作为奇偶校验位,在方式1中是停止位。

RB8:

在方式2和方式3中,是被接收的第9位数据(来自第TB8位);在方式

中,RB8收到的是停止位,在方式0中不用。

TI——串行口发送中断请求标志位:

当发送完一帧串行数据后,由硬件置1;在转

向中断服务程序后,用软件清0。

RI——串行口接收中断请求标志位:

当接收完一帧串行数据后,由硬件置1;在转向中断服务程序后,用软件清0。

SM0、SM1:

串行口工作方式选择位,其组合含义如下所示:

PCON的D7位作为串行波特率系数SMOD控制位,PCON不可位寻址,其地址为87H,当SMOD=1时,波特率加倍。

SMOD在PCON中的位置如下所示:

RS232近程通讯总线适合于数据传输速率在0~20000b/s范围内的通信,由于通行设备厂商都生产与RS-232C制式兼容的通信设备,因此,它作为一种标准,目前已在微机通信接口中广泛采用。

如图3.1所示:

 

图3.1DB9

3.2电气特性

 EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定。

 在TxD和RxD上:

逻辑1(MARK)=-3V~-15V

      逻辑0(SPACE)=+3~+15V

      在RTS、CTS、DSR、DTR和DCD等控制线上:

      信号有效(接通,ON状态,正电压)=+3V~+15V

      信号无效(断开,OFF状态,负电压)=-3V~-15V

RS232C与TTL转换:

EIA-RS-232C是用正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。

因此,为了能够同计算机接口或终端的TTL器件连接,必须在EIA-RS-232C与TTL电路之间进行电平和逻辑关系的变换。

最大直接传输距离说明:

RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺。

3.3DB-9连接器

使用DB-9连接器,作为提供多功能I/O卡或主板上COM1和COM2两个串行接口的连接器。

它只提供异步通信的9个信号。

DB-25型连接器的引脚分配与DB-25型引脚信号完全不同。

因此,若与配接DB-25型连接器的DCE设备连接,必须使用专门的电缆线。

最大直接传输距离说明:

RS-232C标准规定,若不使用MODEM,在码元畸变小于4%的情况下,DTE和DCE之间最大传输距离为15m(50英尺)。

用RS-232总线连接系统有近程通讯方式和远程通讯方式两种,近程通讯是指传输距离小于15米的通讯,可以用RS-232电缆直接连接。

15米以上的长距离通讯,需要采用调制调解器。

当计算机与终端之间利用RS-232作近程连接时,有几根线实现交换连接。

本次实验不需要检测数据等信号状态的

RS-232是异步通讯中最广泛的标准总线,适用于数据中端设备(DTE)和数据通讯设备(DCE)之间的接口。

在微机通讯中,通常使用的RS-232接口信号是九根引脚。

如图3:

各引脚功能如下:

引脚号

符号

方向

功能

1

DCD

输入

载波检测

2

RXD

输入

接收数据

3

TXD

输出

发送数据

4

DTR

输出

数据终端就绪

5

GND

信号地

6

DSR

输入

数据装置就绪

7

RTS

输出

请求发送

8

CTS

输入

清除发送

9

RI

输入

振铃指示

 

图3.2DB9管脚说明

用RS-232总线连接系统有近程通讯方式和远程通讯方式两种,近程通讯是指传输距离小于15米的通讯,可以用RS-232电缆直接连接。

15米以上的长距离通讯,需要采用调制调解器。

计算机和终端用RS-232连接的交叉图4如下,图中“发送数据”与“接收数据”是交叉相连的,是得两台设备都能正常的发送和接收。

图3.3通讯连接

 

数据发送与接收线:

  发送数据(TxD)——通过TxD终端将串行数据发送到MODEM。

 接收数据(RxD)——通过RxD线终端接收从MODEM发来的串行数据。

 

4.系统硬件设计

线路原理图

 

5.软件设计

本系统的软件设计流程图。

系统设计代码分为以下几个部分:

初始化串行、发送数据、接收数据、键盘输入、数值转换、LED显示,数码管显示,用keil编译。

甲机程序设计框图(图5.1):

开始

图5.1甲程序设计框图

 

甲机程序:

//----------甲机程序代码------------

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitled1=P1^0;

sbitled2=P1^3;

sbitkey=P1^7;

//------共阳极数码管段码---------

ucharcodetable[]={0xC0,0xF9,0xA4,0xB0,0x99,

0x92,0x82,0xF8,0x80,0x90,0xff};

ucharnum;

//------延时------

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

//------串行口发送函数------

voidtransfer(ucharc)

{

SBUF=c;

while(TI==0);

TI=0;

}

voidmain()

{

num=0;

P0=0x00;

SCON=0x50;//串行口工作在方式1,既可以发送数据,也可以接收数据

TMOD=0x20;//定时器T1工作在方式2

PCON=0x00;

TH1=(256-253)/32;

TL1=(256-253)%32;

RI=0;

TI=0;

TR1=1;

IE=0x90;//串行口中断打开

while

(1)

{

if(key==0)

{

while(key==0);

num=(num+1)%4;

}

switch(num)

{

case0:

transfer('D');

led1=1;led2=1;

break;

case1:

transfer('A');

led1=0;led2=1;

break;

case2:

transfer('B');

led1=1;led2=0;

break;

case3:

transfer('C');

led1=0;led2=0;

break;

//delay(100);

}

}

}

voidrecieve()interrupt4

{

if(RI==1)

{

RI=0;

P0=~table[SBUF];

}

}

 

乙机程序设计框图(图5.2):

图5.2乙机设计框图

 

乙机程序:

//----------乙机程序代码------------

#include

#defineuintunsignedint

#defineucharunsignedchar

sbitled1=P1^0;

sbitled2=P1^3;

sbitkey=P1^7;

ucharnum=10;

voiddelay(uintz)

{

uintx,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

voidmain()

{

SCON=0x50;

TMOD=0x20;

PCON=0x00;

TH1=(256-253)/32;

TL1=(256-253)%32;

RI=0;

TI=0;

TR1=1;

IE=0x90;

led1=led2=1;

while

(1)

{

if(key==0)

{

while(key==0);

num=(num+1)%11;

SBUF=num;

while(TI==0);

TI=0;

}

}

}

voidrecieve()interrupt4

{

if(RI==1)

{

RI=0;

switch(SBUF)

{

case'A':

led1=0;led2=1;

break;

case'B':

led1=1;led2=0;

break;

case'C':

led1=0;led2=0;

break;

case'D':

led1=1;led2=1;

//delay(100);

}

}

else

led1=led2=1;

}

 

6.系统仿真调试

最后用Proteus画好原理图,把编译好的甲乙机程序HEX文件,下载到原理图里,点击运行仿真,查看效果!

 

7.设计体会和收获

最初选择双机串行通信这个实验时,由于从未接触过这类设计,感到新鲜的同时不乏挑战性。

现在终于将它完成了,感到受益颇多。

第一,这是一份考验我们自觉性、动手能力与协作意识的任务。

第二,未知并不可怕,可怕的是因未知而止步。

我们在课堂上所学的知识是非常有限的,这次的课程设计就是个很好的体现。

很多函数的运用我们还没掌握,一些简单的循环语句都可能出错。

实践后才能真的知道我们真正掌握了多少。

第三,团结就是力量一点都不假。

在团组合作时我们更便于互相取长补短,相互讨论,效果很好.

通过本次课设实验我们对自身进行了查缺补漏,是自己对单片机这么课程有了更深的了解,对我们以后的工作有了很大的帮助。

同时通过老师对我们的讲解,对各种知识的理解进一步加深,在此对老师深表感谢。

总之在这次的实验中我们更加丰富了自己使自己有了进一步的提高。

8.参考文献

1.《单片机语言C51典型应用设计》人民邮电出版社;刘文涛编著2005.10

2.《μVision2单片机应用程序开发指南》科学出版社;尹勇李宇编著2005.2

3.《单片机原理与应用及C51程序设计》(第2版)清华大学出版社:

谢维成

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

当前位置:首页 > 法律文书 > 判决书

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

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