单片机间通信协议说明书.docx

上传人:b****5 文档编号:7498645 上传时间:2023-01-24 格式:DOCX 页数:16 大小:117.16KB
下载 相关 举报
单片机间通信协议说明书.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

单片机间通信协议说明书

 

目录

第一章摘要3

第二章总体设计4

1)设计要求:

4

2)设计方案:

4

第三章设计原理4

1)单片机串行通信的概述4

2)单片机最小系统5

(1)AT89C-52单片5

(2)晶振电路6

(3)复位电路6

2)硬件设计8

3)软件设计10

主程序设计10

延时中断设计11

初始值设定11

程序流程图12

第四章系统的仿真与实现13

Proteus软件介绍13

Keil软件介绍13

仿真过程14

仿真结果14

第五章设计小结15

第六章参考文献15

第七章附录16

1#机c程序16

2#机c程序18

 

第一章摘要

 

本次设计采用MCS-52单片机。

是这样的,MCS-52系列单片机芯片比51芯片多了个定时寄存器,芯片的内存也比51大点,其他功能相同。

串行通信是单片机的一个重要应用。

本次课程设计就是要利用单片机来完成一个系统,实现双片单片机串行通信。

通信的结果是用数码管、发光二极管进行显示,数码管采用查表方式显示。

两个单片机之间采用TTL接口电路进行双机通信。

在通信过程中,使用通信协议单工进行通信。

关键词:

52单片机,串行通信,接口,通信协议。

 

第二章总体设计

1)设计要求:

1#机2#机之间实现串行通信,1#机上接一个按键、一个八段数码管,2#机上接一个按键、2个LED,用1#机上的按键控制2#机上的2个LED循环点亮,用2#机上的按键控制1#机上的数码管循环显示0-9。

2)设计方案:

本次设计,对于两片89C52,采用TTL电路进行双机通信。

发送方的数据由串行口TXD段输出,经过传输线将信号传送到接收端。

信号到达接收方串行口的接收端。

接受方接收后,在数码管上显示接收的信息。

为提高抗干扰能力,还可以在输入输出端加光耦合进行光电隔离。

  本系统利用单片机的串行口,由软件和硬件两部分协调实现两单片机的串行数据传输。

硬件电路以AT89C52单片机为核心,外围电路包括按键电路(数据的输入),显示电路(数据的输出),复位电路。

工作在硬件电路基础上的软件主要完成数据输入,存储,显示,发送和接收。

由于两单片机相距很近,可以直接将其串行口相连,这样也可以简化设计难度。

软件部分,通过通信协议进行发送接收,当1#机按键按下,2#机两个灯开始循环点亮。

当2#机按键按下后,首先把设定好的程序给单片机检验,完毕1#机开始接受并显示在8段数码管上。

第三章设计原理

1)单片机串行通信的概述

在通信领域内,有两种数据通信方式:

并行通信和串行通信。

随着计算机网络化和微机分布式应用系统的发展,通信的功能越来越重要通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。

串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固的时间长度。

其只需要少数几条线就可以在系统间交换信息,特别使用于计算机与计算机、计算机与外设之间的远距离通信。

使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。

在串行通信中,把通信接口只能发送或接收的单传送办法叫单工传送;而把数据在甲乙两机之间的双向传递,称之为双工传送。

在双工传送方式中又分为半双工传送和全双工传送。

半双工传送是两机之间不能同时进行发送和接收,任一时该,只能发或者只能收信息。

51系列单片机有一个可编程的全双工串行通信接口,它可作异步接收发送器用,也可做同步移位寄存器用,其帧格式可有8位、10位或11位,并能设置各种波特率,给使用带来很大的灵活性。

 51系列单片机有两个物理上独立的接收、发送缓冲器SBUF,它们只占用同一地址99H,可同时发送、接送数据。

发送缓冲器只能 写入,不能读出,接收缓冲器只能读出、不能写入。

串行发送接收的速率与波特率发生器产生的移位脉冲同频。

51系列单片机用定时器T1或直接用CPU时钟作为通信波特率发生器的输入,在串行接口的不同工作方式中,波特率发生器从两个输入信号中选择一个分频,产生移位脉冲来同步串口的接收和发送,移位脉冲的速率即是波特率。

接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读出之前,第二字节即开始被收。

但是,若在第二个字节接收完毕后,前一个字节还未被CPU读取的话,第二个字就会覆盖第一个字节,造成第一个字节的丢失。

接收器是武汉理工大学《单片机原理与应用》课程设计说明书2 双缓冲结构,串行口的发送和接收都是以特殊功能寄存器SBUF的名义进行或写的。

8051串行口可设置四种工作方式,可有8位,10位和11位帧格式。

方式0以8位据为一帧,不设起始位和停止位,先发送最低位。

方式1以10位为一帧传输,设有1个起位“0”,8个数据位和1一个停止位“1”。

方式23以11位为1帧传输,设有1个起始“0”,8个数据位,1个附加第九位和1个停止们“1”,附加第九位由软件置1或清0。

发送时在TB8中,接收时送入RB8中。

2)单片机最小系统

(1)AT89C-52单片机

 AT89C5l/52 是片内有ROM/EPROM 的单片机,用其构成最小应用系统时,只要将单片机接上时钟电路和复位电路即可。

 MCS-51 单片机系列是 Intel 公司推出的功能强、速度快的 8位高档单片微型计算机系列产品,是当前工业测试系统中较理想的一种,内部有一个可编程的全双工的串行通信口,即串行通信和发送缓冲器 (SBUF),这两个在物理上是独立的接收发送器,既可以发送数据,也可以接收数据。

全双工的串行通信只需要一根输出线 (发送数据TXD)和一根输入线 (接收数据RXD)。

串行通信中主要有两种技术问题,一个是数据传送,另一个是数据转换。

具体说,在发送端,要把并行数据转换为串行数据;而在接收端,则要把接收到的串行数据转换为并行数据。

 

   串行数据传送是将构成字符的每个二进制数据按一定的顺序进行传送的方式,串行通信协议规定字符数据的传送格式,每个串行数据由起始位、数据位、奇偶校检位和停止位组成。

本系统就是利用单片机的串行口,以串行通信方式,实现两单片机之间的数据交换,信息共享。

(2)晶振电路 

 AT89C5l/52单片机的时钟信号通常有两种形式:

一种是内部时钟方式,另外一种是外部时钟方式。

内部时钟方式是在单片机的XTALI和XTAL2 引脚外接石英晶体,就构成了自激震荡并在单片机内部产生时钟脉冲信号。

本设计采用内部时钟方式。

 

(3)复位电路 

 当在AT89C5l/52 单片机的RST引脚引入高电平并保持两个机器周期时,单片机内部就执行复位操作。

在实际应用中,复位操作有两个基本形式:

一种是上电复位,另一种是上电与按键均有效的复位。

本系统采用上电按

键都有效的复位。

按键按下,RST引脚的高电平只要能保持足够的时间 (2个机器周期),单片机就可以进行复位操作。

另外在单片机运行期间,还可以利用按键完成复位操作。

2)硬件设计

计算机与外界的信息交换称为通信,常用的通信方式有两种:

并行通信和串行通信。

单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。

串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。

51/2单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。

51单片机串行接口的结构如下:

(1)数据缓冲器(SBUF)接受或发送的数据都要先送到SBUF缓存。

有两个,一个缓存,另一个接受,用同一接地址99H,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。

(2)串行控制寄存器(PCON)

SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

SM0,SM1:

串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。

串行接口工作方式特点见下表

SM0

SM1

工作方式

功能

波特率

0

0

0

8位同步移位寄存器(用于I/O扩展)

fORC/12

0

1

1

10位异步串行通信(UART)

可变(T1溢出率*2SMOD/32)

1

0

2

11位异步串行通信(UART)

fORC/64或fORC/32

1

1

3

11位异步串行通信(UART)

可变(T1溢出率*2SMOD/32)

SM2:

多机通信控制位。

REN:

接收允许控制位。

软件置1允许接收;软件置0禁止接收。

TB8:

方式2或3时,TB8为要发送的第9位数据,根据需要由软件置1或清0。

RB9:

在方式2或3时,RB8位接收到的第9位数据,实际为主机发送的第9位数据TB8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。

TI:

发送中断标志。

发送完一帧数据后由硬件自动置位,并申请中断。

必须要软件清零后才能继续发送。

RI:

接收中断标志。

接收完一帧数据后由硬件自动置位,并申请中断。

必须要软件清零后才能继续接收。

(3)输入移位寄存器

接收的数据先串行进入输入移位寄存器,8位数据全移入后,再并行送入接收SBUF中。

(4)波特率发生器

波特率发生器用来控制串行通信的数据传输速率的,51系列单片机用定时器T1作为波特率发生器,T1设置在定时方式。

波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。

(5)电源控制寄存器PCON其最高位为SMOD。

(6)波特率计算

当定时器T1工作在定时方式的时候,定时器T1溢出率=(T1计数率)/(产生溢出所需机器周期)。

由于是定时方式,T1计数率=fORC/12。

产生溢出所需机器周期数=模M-计数初值X。

驱动电路

显示输出

1#机

2#机设计总图

1#机proteus设计总图2#机

3)软件设计

通过通信协议进行收发数据,串行口工作于方式1;用定时器1产生9600bit/s的波特率,工作于方式2。

通信协议:

主机首先发送连络信号(按键),从机接收到之后开始接受数据。

主程序设计

主程序要完成的工作主要是系统的初始化设置系统状态显示及各开关量的状态检测判断。

串行口工作于方式1;用定时器1产生9600bit/s的波特率,工作于方式2。

通信协议:

判断按键是否被按下。

串行口控制寄存器SCON的设置 

串行口控制寄存器的基本情况在前面已经介绍,这里不再重复。

根据我们所做的内容,我们采用了串行工作方式1,REN设置为“1”(允许接收),综上所述我们设SCON的初始值为50H

 

延时中断设计

初始值设定

程序流程图

 

第四章系统的仿真与实现

Proteus软件介绍

Proteus(海神)的ISIS是一款Labcenter出品的电路分析实物仿真系统,可仿真各种电路和IC,并支持单片机,元件库齐全,使用方便,是不可多得的专业的单片机软件仿真系统。

①全部满足我们提出的单片机软件仿真系统的标准,并在同类产品中具有明显的优势。

②具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS一232动态仿真、1C调试器、SPI调试器、键盘和LCD系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。

③目前支持的单片机类型有:

68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各种外围芯片。

④支持大量的存储器和外围芯片。

总之该软件是一款集单片机和SPICE分析于一身的仿真软件,功能极其强大,可仿真51、AVR、PIC。

Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。

因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。

对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象。

Keil软件介绍

Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。

Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。

仿真过程

操作如下:

1)在Protues中画出系统电路图

2)将程序在keil中编译并生成hex文件。

3)把在keil中编译生成的HEX文件载入AT89C52芯片中;

3)运行仿真。

仿真结果

第五章设计小结

经过繁忙而又紧张的课程设计,终于顺利的完成了设计任务。

虽然在这段时间里每天都那么繁忙,但是在这忙碌的过程中却得到了许多的收获。

经过课程设计,在查阅资料的过程中,学习了基于单片机的C语言程序设计,了解了单片机串行通信的基本知识,对于以后的学习和工作都有很大的益处。

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

通过这次课程设计,锻炼了自己独立思考的能力。

第六章参考文献

[2]张迎新.单片机初级教程[M].北京:

北京航空航天大学出版社,1996

[3]谢宜仁.单片机实用技术问答[M].北京:

人民邮电出版社,2003

[4]刘湘涛,江世明.单片机原理与应用[M].西安:

西安电子科技大学出版社,2003

[5]张毅刚,彭喜元单片机原理及应用[M].北京:

高等教育出版社,2010

[6]高峰.单片微型计算机原理与接口技术[M].北京:

科学出版社,2007

[7]徐伟.C51单片机高效入门[M].北京:

机械工业出版社,2004

[8]何利民.单片机应用系统设计[M].北京:

北京航空航天大学出版社,2006

第七章附录

1#机c程序

#include//头文件

#defineucharunsignedchar

#defineuintunsignedint

uchartemp;//定义一个无符号字符

ucharcodetab[]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0X7D,0x07,0x7F,0x6F};//0-9字符

voiddelay(uintms)//延时子程序

{uchari;

while(ms--)

for(i=123;i>0;i--);

}

voidUART(void)

{

TMOD=0x20;//M1=1,M0=0定时器1工作方式2(定时常数重装,8位)

SCON=0x50;//SM0=0,SM1=1,REN=1串口工作方式1,允许接收

TH1=0xfd;//晶振11.0592时,波特率9600

TL1=TH1;//TL1计数,溢出后,TH1值送入TL1

EA=1;//开总中断

ES=1;//允许串口中断

TR1=1;//启动定时器/计数器工作

}

voiddisplay()

{ucharj;

for(j=0;j<10;j++)

{

P0=tab[j];//P0口写数据0-9

delay(1000);//延时

}

}

voidmain()

{

UART();

while

(1)//大循环

{

SBUF=P1;//接受数据

while(TI==0);

TI=0;//允许接受下一帧数据

if(temp==0xfe)//判断按键是否按下

display();

}

}

voidUARTinterrupt()interrupt4//中断子程序

{

if(RI)//接受数据结束

{

RI=0;//SBUF接受下个数据

temp=SBUF;

}

}

2#机c程序

#include

#defineucharunsignedchar

#defineuintunsignedint

uchartemp;

voiddelay(intms)//延时子程序

{uchari;

while(ms--)

for(i=123;i>0;i--);

}

voidUART()

{

TMOD=0x20;//M1=1,M0=0定时器1工作方式2(定时常数重装,8位)

SCON=0x50;//SM0=0,SM1=1,REN=1串口工作方式1,允许接收

TH1=0xfd;//晶振11.0592时,波特率9600

TL1=TH1;//TL1计数,溢出后,TH1值送入TL1

EA=1;//开总中断

ES=1;//允许串口中断

TR1=1;

}

voiddisplay()

{ucharj;

for(j=0;j<10;j++)//灯循环闪十次

{P0=0xFE;//只有第一个灯亮

delay(500);//延时

P0=0xFD;//只有第二个灯亮

delay(500);//延时

}

}

voidmain()

{

UART();//设置单片机工作方式

while

(1)

{

SBUF=P1;//取出SBUF值给P1口

while(TI==0);//允许向SBUF写入下个数据

TI=0;

if(temp==0XFE)//判断P1^0状态

display();

}

}

voidUARTinterrupt()interrupt4//中断程序

{

if(RI)//接受数据完成,申请中断

{

RI=0;//允许接受下个数据

temp=SBUF;//赋值SBUF

}

}

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

当前位置:首页 > 法律文书 > 调解书

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

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