搜档网
当前位置:搜档网 › 基于双口RAM的单片机通信

基于双口RAM的单片机通信

基于双口RAM的单片机通信
基于双口RAM的单片机通信

目录

1.绪论 (2)

1.1课题的提出 (2)

1.2 双端口RAM概述 (2)

1.3本论文主要研究的内容 (4)

2. 基于双端口RAM的单片机间通信概述 (4)

2.1双端口RAM的发展过程、存储原理 (4)

2.1.1.双端口RAM的发展过程 (4)

2.1.2.双端口RAM的基本存储原理 (5)

2.1.3.双端口RAM的中断逻辑功能 (6)

2.1.4.标识器逻辑及主/从模式 (6)

2.2双端口RAM的应用 (7)

2.3接口电路实现方案概述 (8)

2.3.1. 基于CY7C133双口RAM (8)

2.3.2. ISA总线与IDT7025的接口 (9)

2.3.3. IDT7026实现高速并口缓存的接口电路 (10)

2.4初期主要元器件的选择 (11)

2.6双口RAMIDT7005S概述 (11)

2.7其它主要器件概述 (17)

3.系统硬件接口及实现 (18)

3.1引言 (18)

3.2 89C52单片机简介 (18)

3.3 单片机与双口RAM的接口电路简介 (23)

3.4硬件的调试 (26)

4.系统软件及实现 (27)

4.1引言 (27)

4.2双口RAM的地址空间分配和旗语、中断逻辑 (28)

4.3软件主要部分流程图 (30)

4.4系统主要模块程序说明 (33)

5.结论 (41)

主要参考文献: (42)

1.绪论

1.1课题的提出

在一些应用系统的通信设计中,PC机与单片机间常常采用串行异步通信方式。因为这种通信方式,硬件电气连接简单在PC机上针对串口编程方便。但是串行异步通信受传输速率的限制,通常最高波特率设定在9 600 b/s左右。采用串行同步方式可提高传输率,但需在PC机上扩展设备。如果所设计的数据采集系统,其数据传输速率要求达到60 kb/s以上,采用串行异步通信远远不能满足这个要求。随着采集数据量的增大以及数据处理任务的增加,对数据传送的要求也越来越高,依靠单片机的自带串口实现数据的串行传输已经无法满足要求,在系统或模块间必须要能够进行高速的并行数据传输。与串行通信相比,采用双端口RAM (简称DRAM)不仅数据传输速度高,而且抗干扰性能好。高性能的双端口RAM能够方便的构成各种工作方式下的高速数据传送介质,解决数据传输低速的瓶颈问题。无论是并行处理网络中的数据共享,还是流水线方式的高速数据传输,双端口RAM都可以发挥重要作用,从而保证数据通路的畅通。

1.2 双端口RAM概述

双端口RAM不同于一般的RAM,但仍然是存储数据的器件,因此基于双端口RAM的通信实际上利用双端口RAM实现数据的共享,在共享的基础上实现交互就是通信了。因此双端口RAM实现两个单片机间数据的共享和

片机与双端口RAM的接口电路。此部分包括双端口RAM的两个独立端口分别与两个单片机连接的接口电路。(2)单片机控制双端口RAM实现数据共享的程序。程序的重点问题是要解决地址空间分配和地址空间争用。

双端口RAM是一种特殊的存储芯片,除了数据存储功能外,它提供两个完全独立的断口,每个端口分别有自己的控制线、地址线和I/O数据线,允许双端口同时读写数据,适合于两个单片机以总线方式对存储空间的共享。从电气特性上看,双端口RAM与其他常用的片外RAM存在许多区别如下:

1.具有两套完全独立的数据线、地址线、读写控制线,允许两个单

片机对其同一存储单元在不同的时间进行读写。

2.具有两套完全独立的中断逻辑,可以实现两个单片机之间的握

手。

3.具有两套完全独立的BUSY逻辑线,确保两个单片机对其同一单

元读写操作的正确性,解决端口争用问题。

同一数据区的争用是双端口RAM使用时要解决的核心问题。当两个单片机通过各自的端口同时读取一个双端口RAM单元时,就产生了争用,此时会出现写入值和读出值不是所期望值的数据混合状态

双端口RAM和单片机之间是并行总线的连接,它实现的是并行的数据“传输”,与串行通信相比具有许多优点:

1.速度快、方式简单。它读取共享信息所用时间与一般外部RAM所

用时间基本相同,数据按字传输,速度远快于按位进行的串行传

输。读写双端口RAM所需的系统等待时间可以通过适当的设计消

除。

2.准确可靠。因为单片机的串行寄存器SBUF每次只能保留一个字

节的数据,如果单片机在进行重要的处理时无法及时响应和处

理串行中断,就会造成数据的丢失或错误。而双端口RAM的并行

通信就不存在此问题。

1.3本论文主要研究的内容

本论文主要是针对解决单片机间通信技术进行深入了解:

1.研究双端口RAM的工作原理及双端口RAM的地址空间分配和旗语、

中断逻辑

2.设计完成了单片机和双端口RAM之间的硬件接口电路;

3.设计完成了单片机控制双端口RAM实现数据共享的软件程序,重点

解决了地址空间的分配和地址空间的争用问题;

4.研究了利用单片机实现数据传输的通信技术,利用高性能的双端口

RAM解决数据传输低速的瓶颈问题,实现了并口通信对大量数据流

进行快速数据传输。

2. 基于双端口RAM的单片机间通信概述2.1双端口RAM的发展过程、存储原理

2.1.1.双端口RAM的发展过程

标准双端口RAM的两个端口都有自己的数据、地址、控制总线,允许处理器对存储器的任何地址执行随机读写操作。过去为了解决数据传送的

速度瓶颈问题,人们常常用普通RAM来实现双端口RAM的功能。一般的RAM(如6116等)只有一套数据、地址、控制总线;因此,必须对之进行特殊处理,加上一定的外围芯片之后才构成双端口RAM。随着微电子技术的飞速发展和RAM在数字系统中日益重要的地位,一些公司开始研制双端口RAM芯片。主要以IDT和CYPRESS公司为代表。现在,双口RAM无论是在容量、速度、数据位宽度还是功能上都得到了快速的发展。

2.1.2.双端口RAM的基本存储原理

早期的双端口RAM只带有忙仲裁逻辑.它采用忙“BUSY”信号来实现。忙仲裁逻辑是用来确定左右两端口被要求访问同一地址中单元时的优先级。这种早期的双端口RAM以IDT公司的IDT7132和IDT7032为代表。下面我们以IDT7005为便来介绍双端口RAM的基木存取原理。

双端口RAM芯片的核心部分是双端口存储阵列.左右两个端口可以共用该存储阵列.并且拥有各自的控制线,在单独存取数据时和普通的RAM 相同。同时读取不同存储空间的数据和同时读取相同存储空间的数据时。左右端口都可以进行。若同时对相同的数据空间作写操作,或一端口对一数据空间作读操作的同时另一端口对该数据空间作写操作,左右端口将发生冲突。为此,双端口RAM芯片通过忙“BUSY',信号处理这两种情况。当左右端口对不同存储空间进行读写操作时,可同时存取。此时.左右两端的“BUSY”信号为无效。若对同一存储空间同时进行存储操作时,哪一个的存储清求信号先出现则该端的“BUSY',信号无效。哪一端的存储信号出现在后,则这一端“BUSY”信号有效,禁止存储。

2.1.

3.双端口RAM的中断逻辑功能

在许多系统中都要求允许双CPU通过端口直接进行通信。于是双端口RAM发展到除带忙逻辑仲裁功能外,还带有双边中断逻辑功能。其中以IDT公司的IDT7130, IDT7005芯片和CYCPRESS公司的CY7C130芯片为代表。

IDT7130芯片的中断逻辑是通过“信箱’,来实现的。即读码

IDT7130芯片最高位的两个存储单元(3FF,3FE)来实现。3FF作为右边端口的中断信箱,3FE作为左边端口的中断信箱;各CPU可以读双方的中断信箱,但只能写对方的中断信箱。当一端写入对方的中断信箱时,对方就会产生一个中断信号。读自己的中断信箱时会清除自己的中断信号。读对方的中断信箱时不会清除中断信号。如果一端的BUSY信号有效,就不会再向另一端设置中断信号,也不能读自己的中断信箱清除中断信号。发出中断清求时,向地址中3FE,3FF中写入的内容由用户确定。当中断功能不使用时,该地址单元作为普通的双端口RAM单元使用。

2.1.4.标识器逻辑及主/从模式

利用双端口RAM的BUSY信号线,虽然可以保证左右两个端口能可靠地完成数据传输,但当两个端口对同一地址单元同时存取数据时,其中一个端口要处于等待状态。对于高速接口电路来说,插入等待状态会降低其数据通过率,这在有些情况下是不能接受的。为有效地解决这一问题.实现数据高速无等待状态传送。双端口RAM中采用标识器逻辑电路。这种芯片有IDT公司的IDT70261和CYCPRESS公司的CY7C026。标识器逻辑可以使双口RAM暂时指定一块存储区,只供一端的CPU使用,称之为独占模式。在IDT70261中,配置了独立于RAM阵列的8个标识寄存器,用来标

识双口RAM是否处于独占模式。标识寄存器为低电平有效,申请时应写入0,释放时应写入1。当左端口要申请使用独片模式时,他先写0到标识寄存器,然后读标识寄存器的状态,若读到的值为0则表示申请成功,若读到的值为1表明右端口正在使用双端口RAM的相同单元,申请失败。此时左边CPU可以重新设置申请,也可以先完成别的任务,并不断尝试申请。当右边CPU退出独占模式而向寄存器写入1,左边就可以写入0并取得独占模式的控制权。另外对寄存器的读写应“先写后读”,不要“先读后写”,以避免出现争夺系统总线的现象。因为寄存器共有8个,也可以把双端口RAM划分成8块,每块存储器的容量由用户自己确定。

另外,实际中数据的宽度往往大少芯片本身的宽度,这时就要扩展数据位宽度。IDT70261的M/S管脚提供了数据位宽度扩展功能。例如,实际应用中经常需要32位的数据总线,可以将一片IDT70261的M/S管脚置低,而另一片的M/S管脚置高。然后将两块芯片管脚连接在一起即可组成32位数据位宽度。

2.2双端口RAM的应用

双端口RAM在数字系统中应用非常广泛。比如高速度数据采集系统中,一般的数据传送系统在大数据量的情况下会造成数据堵塞现象。又例如在一些实时控制的场合,实时算法经常需要山几个DSP串行或并行工作以提高系统的运行速度和实时性,以双端口RAM构成的数据接口可以在两个处理器之间进行高速可靠的信急传输。此外,双端口RAM可以应用在智能总线适配卡、网络适配卡中作为高速数据传输的接口。

基于双端口RAM数字系统的设计虽然摆脱了采用传统共用存储器软硬件设计的复杂性,但在设计中仍然有几个关键的问题需要注意。在双端口RAM的数字系统设计中归纳了两个方而要注意的问题。第一是存取速度的

匹配,由于不同CPU相对少双口RAM的存取时间不一样,为了保证它们之间高速的信息传输,有必要在硬件和软件上对其加以修改。第二是地址编码问题,由于双端口RAM为多CPU提供访问存储空间,不同的编码方法也会对系统产生很大的影响。

2.3接口电路实现方案概述

2.3.1. 基于CY7C133双口RAM

双口CY7C133是一种高速2K*16CMOS双端口静态RAM,具有两套相互独立、完全对称的地址、数据和控制总线,最大访问时间可以为25/35/55 ns。CY7C133允许两个CPU 同时读取任何存储单元(包括同时读同一地址单元),但不允许同时写或一读一写同一地址单元,否则就会发生错误。双口RAM 中引入了仲裁逻辑(忙逻辑) 电路来解决这个问题。当左右两端口同时写入或一读一写同一单元时,先稳定的地址端口通过仲裁逻辑电路优先读写,同时内部电路使另一个端口的信号有效,并在内部禁止对方访问,直到本端口操作结束。BUSY信号可以作为中断源指明本次操作非法。

图2-1 DSP、DRAM与单片机间的接口电路

89C52 和DRAM 之间通过2-4译码器74HC139和3个8位D触发器74HC374进行通信。当89C52对双口RAM 进行读数据时,A0为低电平,假设地址为0xl000H,则存储在双口RAM 中该地址处的16位数据同时被读出,由于高8位数据线与89C52的8位数据线直接相连,所以高8位数据被立即读人

89C52中。U3的使能信号LE有效(高电平),OE无效(高电平),因而低8位数据被送人U3中锁存起来。接着89C52再进行一次读操作,这时地址变为

0xl001H,由于A0变成高电平,双口RAM的读使能信号变成无效电平,

所以此次读操作对双口RAM 不产生影响,对于U3,显然LE变成了无效电平,而OE变成了有效电平,上次被锁存的数据(即双口RAM 的低8位数据)被送入89C52。当89C52对双端口RAM 进行写入操作时,此时A0为高电平,假设地址为0xl00CH,U2的使能信号LE和OE均为有效电平,因而数据被同时写入双端口RAM 中(即此时双端口RAM 的高8位数据和低8位相同);接着89C52再进行一次写操作,此时地址变为0xl00DH,由于A0变成低电平,U2的片选为无效电平,U2被封锁,数据写入双端口RAM 的高8位。从上面的分析可知,利用最低地址位A0的不同电平,89C52通过两次连续的读或写操作,成功地实现了对双端口RAM 中数据的读或写,只不过读人时先读人高8位,后读人低8位;而写入则是先写入低8位,后写入高8位。

2.3.2. ISA总线与IDT7025的接口

设计的DSP系统读写双端口RAM时指令周期为80ns,而主机以16位方式读写存储器的指令周期一般为O.5us,考虑到双端口RAM与DSP间的

数据交换速率要比与主机间的数据交换速率快的多,为保证在要求的传输

距离下数据交换可靠,将双端口RAM芯片设计到DSP系统电路板上,通过电缆线将ISA总线接口卡与DSP系统板连接起来。

ISA总线接口卡上采用一片CPLD器件EMP7128S-15实现存储器地址范围选择,I/0地址选择,地址总线和数据总线的选通控制,ISA总线与双端口RAM间的控制信号产生等功能。在PC机中,与每个地址对应的存储单元只能存储一个字节的数据。图中ISA总线上的地址线A13-A1经驱动后分别与双端口 RAM的地址线A12L-AOL对应相连接,8K字的双端口RAM映射到PC机系统内存的某一存储空间,占用16K字节的地址范围,主机对双端口RAM存储单元的访问均采用16位方式,只对偶地址读写。而对I/0端口的访问数据量很小,I/0端口的读写仍采用8位数据方式。

2.3.3. IDT7026实现高速并口缓存的接口电路

IDT 7026作为数据传送和数据共享的接口芯片,信号处理系统输出的数据可先写入双端口RAM。待数据全部写入IDT7026后.系统再向PC机发出中断清求.PC机响应中断后.在中断服务子程序里把数据读入内存。此时的双端口RAM相当于一个PC机的一个16位高速并行接口。

图2-2 IDT 7026的接口电路

2.4初期主要元器件的选择

高性能的双端口RAM能够方便的构成各种工作方式下的高速数据传送介质,解决数据传输低速一起的瓶颈问题.双口RAM (简称DRAM)不仅数据传输速度高,而且抗干扰性能好.无论是并行处理网络中的数据共享,还是流水方式的高速数据传输,双端口RAM都可以发挥重要作用,从而保证数据通路的畅通。双端口RAM主要是2个公司的产品。下面对这两个公司的产品进行一下比较。一种是CY7C13,它是一种高速2K*16双端口静态RAM ;另一种就是IDT7005S,它是一款高速8 K* 8双端口静态RAM,两者的功能相似, 除了数据存储功能外,可提供两个完全独立的端口,每个端口分别有自己的控制线、地址线和I/O数据线,允许双端口同时读写数据,适用于两个单片机以总线方式对存储空间的共享。特别应该注意的是,IDT7005S是8K*8的双端口静态RAM,与单片机组成接口电路时可直接连接,不需要增加译码电路,这样使单片机与双端口RAM之间的电路简化很多,所以我选用IDT7005S这块双端口RAM芯片。不仅节省了元件数量,还减少了许多工作量。接口电路的元件只需要2个锁存器芯片和一个双端口RAM芯片。

2.6双口RAMIDT7005S概述

双端口RAM芯片IDT7005S是一款高速8K*8双端口静态RAM,其内部的功能结构如图。

图2-3 双端口RAMIDT7005S内部功能结构图

图2-3中所示的两端完全对称的结构(两套完全独立的I/O控制线、地址线、数据线)和仲裁中断旗语逻辑模块使得IDT7005S成为真正的双端口RAM,允许两个控制器同时读取任何存储单元(包括读同一地址单元),单不允许同时写或一读一写同一地址单元。

IDT7005S的主要功能特性:

与TTL电平兼容,采用5V(正负10%)电压供电。

高速接入:访问时间最大只有几十NS。

低功耗:运行时750MW,休眠时仅5MW。

通过M/S选择可级联扩展到16位或者更多位的数据总线。当M/S为高时,BUSY信号为输出忙标志;当M/S为低时,BUSY信号则作为输入脚使用。

提供BUSY和中断标志。

具有片内端口仲裁逻辑

硬件支持端口间旗语信号。

各端口完全异步操作。

IDT7005S的核心部分是用于数据存储的存储器阵列,可为左右两个端口所共用。这样,位于两个端口的左右处理单元就可以共用一个存储器。当两个端口对双口RAM存取时,存在4种情况:

1.两个端口不同时对同一地址单元存取数据

2.两个端口同时对同一地址单元读出数据

3.两个端口同时对同一地址单元写入数据

4.两个端口同时对同一地址单元,一个写入数据,另一个读出数据。

在第一种和第二种情况时,两个端口的存取不会出现错误,第三种情况会出现写入错误,第四种情况会出现读出错误。为避免后两种错误情况的出现,IDT7005S芯片的设计有硬件“BUSY”功能输出,其工作原理下面介绍。

当左右端口不对同一地址单元存取时,BUSYR为高,BUSYL为高,此时可正常存储;当左右端口对同一地址单元存取时,存取请求信号出现在前的端口对应的BUSY为高,允许存取,另一个端口对应的BUSY为低,禁止数据的存取。注意,两个端口的存取请求在前。此时,控制线BUSYR和BUSYL只有一个为低电平,不会同时为低,这样就可以保证一个对应于BUSY为高的端口能进行正常存取,避免双端口存取出现错误。

利用双口RAM的BUSY信号线虽然可以保证左右两端口能可靠的完成数据的传送,当当两端口对同一地址单元同时存取数据时,其中一个端口处于等待状态。对于高速数据传输来说,插入等待状态会降低数据传输速率,这在某些情况下是不能接受的,此时可以利用IDT7005S提供旗语电路。旗语电路把一个端口使用双口RAM的状态传送到另一个端口,通过旗

实际上是通过8个与双口RAM独立的锁存器,在两个端口间传送旗语,以表明共同的双口RAM是否在使用。在旗语工作模式,控制脚SEM用作8个旗语锁存器的“片选”信号,地址线A2~A0用于8个旗语琐存器的寻址,数据线D0用作旗语锁存器状态的写入和读出,其工作状态如表2-1。

当左端口要使用双口RAM时,它先写“0”到旗语,然后读旗语状态,若读到值为“1”,表明右端口正在使用双口RAM的相同地址单元。此时,左端口可以循环检查旗语状态,知道右端口结束使用,也可以撤消请求,即写“1”到旗语,转去执行其他操作。同理,右端口使用双口RAM时,也按相同步骤进行。注意,当某个断口完成对双口RAM操作后,应立即对旗语写“1”,否则双口RAM将一直被占用。另外,对旗语应先写后读,不要先读后写,以避免出现争用系统总线的现象。

图2-4 IDT7005S引脚图

图2-5 插入68引脚的插座后的引脚图

当拿到引脚插座时,我对于网络上的电路图产生了质疑,所以我用万用表对引脚座进行了逐点测量,得到了这个我用的引脚座图。

与串行通信相比,采用双端口RAM (简称DRAM)不仅数据传输速度高,而且抗干扰性能好。它们之间通过双端口RAM完成数据交换。由于89C52与双端口RAM 总线宽度并不匹配,需要进行接口电路的设计。双口IDT7005S是一种高速8K×8双端口静态RAM ,具有两套相互独立、完全对称的地址、数据和控制总线,最大访问时间可以为25/35/55 ns。

IDT7005S允许两个CPU 同时读取任何存储单元(包括同时读同一地址单元),但不允许同时写或一读一写同一地址单元,否则就会发生错误。双端口RAM 中引入了仲裁逻辑电路来解决这个问题。当左右两端口同时写入或一读一写同一地址单元时,先稳定的地址端口通过仲裁逻辑电路优先读写,同时内部电路使另一个端口的信号有效,并在内部禁止对方访问,直到本端口操作结束。BUSY信号可以作为中断源指明本次操作非法。

2.7其它主要器件概述

锁存器74HC373通过对其使能信号的控制,进行分时读写,实现数据总线的扩展,即利用锁存器作为虚拟总线。锁存器74HC373的引脚图如下。

图2-6 74LS373的接口电路图

74L373在整个电路中实现的是系统的13位地址线的低8位地址线和8位数据线的分时复用,也是一个十分重要的部件,在系统中起着不可替代的作用。

3.系统硬件接口及实现

3.1引言

前面已经对锁存器和双端口RAMIDT7005S进行了介绍和硬件功能的分析,下面就不多做分析了。本课题的核心器件是单片机,由它控制实现对双端口RAM空间的读写,学校的单片机为AT89C52单片机芯片,它完全能满足要求,而且价格较便宜,比较常用。我本来是将单片机芯片焊接在电路伴扳上了,但是由于我对单片机芯片了解不够,调试时有许多麻烦,所以我最后还是选择用学校的实验室有此芯片的实验箱。

3.2 89C52单片机简介

随着计算机技术的发展,单片机技术已成为计算机技术中的一个独特的分支,单片机的应用领域也越来越广泛,特别是在工业控制和仪器仪表智能化中扮演着极其重要的角色。单片机属于计算机的一个种类。从应用领域来看,单片机主要用于控制,所以称为微控制器(Microcontroller)。从单片机呈现给用户的供应状态来看,单片机产品仅是一块集成电路芯片,即它的所有功能部件都集成在一块芯片上,所以称之为单片机Single-Chip Microcomputer)。单片机的结构和指令系

统与通用微型计算机是有差异的,但毕竟它还属于计算机的一个种类,其最基本的功能模块和基本的工作原理仍是一样的。

单片机的特点:

(1)小巧灵活、成本低、易于产品化它能方便地组装各种智能式测控设备及各种智能仪器仪表。

(2)可靠性能高、适应的温度范围宽单片机芯片本身是按工业测控环境要求设计的,能适应各种恶劣的环境,这是其他机种无法比拟的。(3)易扩展、控制功能强很容易构成各种规模的应用系统。指令系统中有丰富的逻辑功能用指令。

(4)便于实现多机和分布式控制可以方便地组成多机和分布式计算机控制系统。

单片机的应用

单片机以其卓越的性能、很高的性能价格比,使其在许多领域得到了广泛的应用。利用它可开发便携式智能检测控制仪器。还可以指导它应用于产品的内部,取代部分老式机械、电子零件或元器件,可使产品缩小体积,增强功能,实现不同程度的智能化。

实际上,单片机几乎在人类生活的各个领域都表现出强大的生命力,使计算机的应用范围达到了前所未有的广度和深度。单片机的出现尤其对电路工作者产生了观念上的冲击。过去经常采用模拟电路、数字电路实现的电路系统,现在相当大一部分可以用单片机予以实现,传统的电路设计方法已演变成软件和硬件相结合的设计方法,而且许多电路设计问题将转化为纯粹的程序设计问题。

AT89C52是美国ATMEE公司生产的低电1-}.:,高性能CMOS 8位单片机,片内含8k bytes的nJ一反熨擦写的只读程序存储器(PEROM)和256 bytes的随机存取数据存储器(RAM ),器件采用ATMEE公司的高密度、非

内置通用8位中央处理器(CPU)和Flash存储单元,功能强大的AT89C52单片机适合于许多较为复杂控制应用场合。

主要性能参数:

·与MCS-51产品指令和引脚完全兼容

·8k字节可重擦写FLASH闪速存储器

·1000次擦写周期

·全静态操作:OHz-24MHz

·三级加密程序存储器

·256*8字节内部

" 32个可编程I/0口线

·3个16位定时/计数器

·8个中断源

·可编程串行UART通道

·低功耗空闲和掉电模式

功能特性概述:

AT89C52提供以下标准功能:8k字节Flash闪速存储器,256字节内部RAM, 32个I/O口线,3个16位定时/计数器,一个6 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时一AT89C52 可降至OHz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电力式保存RAM的内容,但振荡器停止_工作并禁止:其它所有部件工作直到下一个硬件复位。

P0口:P0口是一组8位漏极开路型双向I/0口,也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的方式驱动8个TTE逻辑门电路,对端口P0写“1”时,可作为高阻抗输入端用。在访问外部数据存

(完整版)51单片机实现双机通信(自己整理的)

1号机程序 #in clude #defi ne uint un sig ned int #defi ne uchar un sig ned char sbit p10=P1 A 0; uchar a,b,kk; //uchar code d_c[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void delay_ms(uchar y) { uchar i; while(y__) for(i=0;i<120;i++) 5 } void put(uchar x) // 发送函数 { SBUF=x; //SBUF:串行口数据缓冲器 while (TI==0); 〃等待发送结束 TI=0; } P £j £fA>l3 旳 4阳 1370 丘阳 H 鮎口 PDLWAJil- PDSA>f POfiAME PQ TiJT FZ^KS 畑 阳pz- A A-m FZW11 PZ.AtZ FZj9jAl4 PZ.TW? P3£VR : iD paimcc P3.sii nrn pjjfflrn F3.WTI] M*Tl pgtjgQIH F3.7/IF 1E 11 左边1号机,右边2号机, ,功能实现 帕叶DO ■ 口 IJApi FDJ H [I Z — 观旧 IP 口 .hQKD* *QAADf H ^ 弓 H.Lta RQfMM FZJWS pz. iwe F2JKA-IDI P2JTA11I F2.HW1Z P2JSM13 F2W.14 F2JM1S F3Ji nHX& gj.im:& riaiWTO rjjfWTT F3.1/W f3AT1 P3JillW F3JMF ■T2 1E

单片机双机之间的串行通信设计

专业方向课程设计报告 题目:单片机双机之间的串行通信设计

单片机双机之间的串行通信设计 一.设计要求: 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。 二、方案论证: 方案一:以两片51单片机作为通信部件,以4*4矩阵键盘作为数据输入接口,通过16个不同键值输入不同的信息,按照51单片机的方式3进行串口通信,从机采用中断

方式接收信息并按照通信协议改变波特率或者用I/O口输出、CD4511译码、数码管显示相关数据,整个系统的软件部分采用C语言编写。 方案二:整个系统的硬件设计与方案一样,但是通信方式采用方式一进行通信,主从机之间的访问采用查询方式,数据输出直接由单片机的译码程序输出译码数据,同时软件编写采用汇编语言。 两种方式从设计上来说各有特色,而且两种方式都应该是可行的。方案一中按照方式三通信可以输出九位数据而方式一只能输出八位数据,但就本题的要求来说方式一就可以了。主从机之间的交流采用中断方式是一种高效且保护单片机的选择,但是相比之下本人对查询方式的理解更好一些。数码管的显示若采用CD4511译码则直接输出数据就可以了,但是这样会增加硬件陈本,而且单片机的资源大部分都还闲置着,所以直接编写一段译码程序是比较好的做法。另外在软件编写上,采用C语言在后续设计中对硬件的考虑稍少一些,换言之采用汇编可以使自己对整个通信过程及单片机的部分结构有更清晰地认识所以综合考虑采用方案二。 三、理论设计: 采用AltiumDesigner绘制的原理图(整图)

本系统主要包括五个基本模块:单片机最小系统(包括晶振电路、电源、复位电路及相关设置电路)、4*4矩阵键盘、功能控制电路、数据显示电路、波特率更改指示电路。 本设计的基本思路是通过控制口选择将要实现的功能,然后矩阵键盘输入数据,单片机对数据进行处理(加校验码、设置功能标志位),然后与从机握手,一切就绪之后后就开始发送数据,然后从机对接收数据校验,回发校验结果,主机根据校验结果进行下一步动作,或者重发,或者进入下一 数据的发送过程,然后按照此过程不段循环,直到结束。 晶振电路提供脉冲,加上复位电路,将 EA接入高电电平选择片内程序存储器。 这是一个单片机能够工作的最低设置。

51单片机实现双机通信(自己整理的)

左边1号机,右边2号机,,功能实现 1号机程序 #include #define uint unsigned int #define uchar unsigned char sbit p10=P1^0; uchar a,b,kk; //uchar code d_c[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; void delay_ms(uchar y) { uchar i; while(y--) for(i=0;i<120;i++) ; } void put(uchar x) //发送函数 { SBUF=x; //SBUF:串行口数据缓冲器 while(TI==0); //等待发送结束 TI=0; } void main() { uchar j; SCON=0x40; //串行口工作方式1,8位通用异步发送器

— TMOD=0x20; //定时器1工作方式2 PCON=0x00; //波特率不倍增 TH1=0xf4; TL1=0xf4; //波特率2400 TR1=1; //定时器1开始计时 P2=0xc0; while(1) { if(p10==0&&j==0) { delay_ms(15); while(p10==0); kk=1; P2=0xf9; j=1; } if(p10==0&&j==1) { delay_ms(15); while(p10==0); kk=2; P2=0xa4; j=2; } if(p10==0&&j==2) { delay_ms(15); while(p10==0); kk=3; P2=0xb0; j=0; } if(kk==1) put('A'); if(kk==2) put('B'); if(kk==3) put('C'); delay_ms(10); } }

单片机双机通信系统的课程设计

一.课程设计的目的及基本要求: 实践课程是使学生融会贯通本课程所学专业理论知识,完成一个较完整的设计计算和安装调试过程,以加深学生对所学理论的理解与应用,认识和熟悉元器件和电子测量仪器的性能指标,了解解决实际问题的一般过程,培养学生综合运用基础理论知识和专业知识去解决实际工程设计问题的能力。通过电子技术的综合性工程训练,使学生达到以下的目的和要求: 1、结合模拟电路、数字电路、可编程逻辑 器件、单片机电子线路CAD等课程中所学的 理论知识,按要求独立设计方案,培养学生 独立分析与解决问题的能力; 2、学会查阅相关手册和资料,通过查阅手 册和资料,进一步熟悉常用电子器件的类型 和特性,并掌握合理选用的原则; 3、学会使用常用电子元器件(包括中规模 芯片、专用芯片和可编程器件);

4、掌握基本的现代电子技术设计工具和EDA (Electronic design automation)技术; 5、掌握电子电路的安装与调试技术,进一 步熟悉电子仪器的使用方法; 6、认真撰写总结报告,培养严谨的作风和 科学的态度; 二.课程设计的主要内容: 课题十九单片机双机通信系统 基本要求:设计两个单片机最小系统,能实现有线通信,一方为发送,另一方为接收。 提高要求:两个单片机最小系统能相互通信,并能实现校验。 三.具体要求和时间安排: 每一个学生在教师指导下,独立完成一个应用系统。工作量如下: 1、电路原理图(A3幅面)1张,要求Protel软件绘制; 2、pcb版图(A3及以上幅面)1张;

3、设计说明书(20-30页)1本,内含能编译通过的源程序(有必要的注释)。

51单片机串口通信,232通信,485通信,程序

51单片机串口通信,232通信,485通信,程序代码1:232通信 #include #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table[]="i get"; void init() { TMOD=0X20; TH1=0XFD; TH0=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init();

while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 {

RI=0; a=SBUF; flag=1; } 代码2:485通信 #include #include"1602.h" #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="i get "; void init() { TMOD=0X20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;

} void main() { init_1602(); init(); while(1) { if(flag==1) { display(0,a); } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; } Love is not a maybe thing. You know when you love someone.

单片机双机通信报告

单片机双机通信接口应用 专业班级:电信 设计者:? ? 指导老师:? 设计时间:2011-11-28 ~12-9

一、实验目的与要求: 课程设计目的: 1.通过课程设计巩固、深化和扩展理论知识与初步的专业技能,提高综合运用知识的能力,逐步增强实际工程训练。 2.培养正确的设计思想,掌握课程设计的主要内容、步骤和方法。 3.培养获取信息和综合处理信息的能力、文字和语言表达能力以及协作工作能力。 4.提高运用所学的理论知识和技能解决实际问题的能力及其基本工程素质。 课程设计要求: 1、能够根据设计任务和指标要求,综合运用单片机课程中所学到的理论知识与实践技能独立完成一个设计课题,了解并掌握单片机系统设计的一般设计方法,具备初步的独立设计能力;。 2、根据课题需要选择参考书籍,查阅手册、图表等有关文献资料。要求通过独立思考、深入钻研课程设计中所遇到的问题,培养自己分析、解决问题的能力。 3、学会撰写课程设计总结报告。 4、通过课程设计,逐步形成严肃认真、一丝不苟、实事求是的工作作风和科学态度,培养学生树立一定的全局观点。。 5、在课程设计过程中,要做到团结协作。 意义:单片机应用系统设计是单片机课程的实践性教学环节,既涉及到许多理论知识(设计原理与方法),又强调系统设计能力的锻炼,培养创新设计的能力,养成一丝不苟的工作作风,为今后从事单片机行业的工作打下基础。 二、功能要求: 单片机双机通信接口应用。设计电路并编写程序,完成单片机与单片机之间的通信,甲机发送键盘输入的键号,乙机接收键号并在最右边的LED以十六进制的方式显示出来,通信协议:以方式2工作,波特率为2400b/s,信息格式为8个数据位,无奇偶校验位。

单片机课程设计_基于单片机的双机之间的串联通信

单片机系统 课程设计 成绩评定表 设计课题基于单片机的双机之间的串联通信学院名称:电气工程学院 学生姓名: 学号: 指导教师: 设计地点: 设计时间:

单片机系统 课程设计 课程设计名称:基于单片机的双机之间的串联通信专业班级: 学生姓名: 学号: 指导教师: 课程设计地点: 课程设计时间:

单片机系统课程设计任务书

目录 一. 设计目的 (4) 二. 串行口及其扩展简介 (4) 三.设计要求 (5) 四.硬件电路设计 (8) 五.流程图设计 (10) 六.程序设计 (12) 七.设计小结 (17) 八.参考文献 (17)

双机之间的串行通信设计 一、设计目的 1、了解串行通信的工作原理 2、了解键盘设定的工作原理 3、掌握80C51的定时器1计数器1的编程 4、掌握电路板的实物焊接 随着电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。 对于莫一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路, 单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。但能在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。这就对单片机通信提出了很高要求。 二、串行口及其扩展简介 1.串行通信的基本特征是数据逐位顺序进行传送 2.全双工制式是指通信双方均设有发送器和接收器,并且信道划分为发送信道和接收信道,因此全双工制式可实现甲乙双方同时发送和接收数据,发送时能接收,接收时也能发送 3.串行通信的传送速率用于说明数据传送的快慢. “波特率”表示每秒种传输离散信号事件的个数,或每秒信号电平的变化次数,单位为band(波特)。 “比特率”是指每秒传送二进制数据的位数,单位为比特/秒,记作bits/s或b/s或bps。 在二进制的情况下,波特率与比特率数值相等

第06章单片机串行通信系统习题解答

第6章单片机串行通信系统习题解答 一、填空题 1.在串行通信中,把每秒中传送的二进制数的位数叫波特率。 2.当SCON中的M0M1=10时,表示串口工作于方式 2 ,波特率为 fosc/32或fosc/64 。 3.SCON中的REN=1表示允许接收。 4.PCON 中的SMOD=1表示波特率翻倍。 5.SCON中的TI=1表示串行口发送中断请求。 6.MCS-51单片机串行通信时,先发送低位,后发送高位。 7.MCS-51单片机方式2串行通信时,一帧信息位数为 11 位。 8.设T1工作于定时方式2,作波特率发生器,时钟频率为,SMOD=0,波特率为时,T1的初值为 FAH 。 9.MCS-51单片机串行通信时,通常用指令 MOV SBUF,A 启动串行发送。 10.MCS-51单片机串行方式0通信时,数据从引脚发送/接收。 二、简答题 1.串行口设有几个控制寄存器它们的作用是什么 答:串行口设有2个控制寄存器,串行控制寄存器SCON和电源控制寄存器PCON。其中PCON中只有的SMOD与串行口的波特率有关。在SCON中各位的作用见下表: 2.MCS-51单片机串行口有几种工作方式各自的特点是什么 答:有4种工作方式。各自的特点为:

3.MCS-51单片机串行口各种工作方式的波特率如何设置,怎样计算定时器的初值 答:串行口各种工作方式的波特率设置: 工作方式O :波特率固定不变,它与系统的振荡频率fosc 的大小有关,其值为fosc/12。 工作方式1和方式3:波特率是可变的,波特率=(2SMOD/32)×定时器T1的溢出率 工作方式2:波特率有两种固定值。 当SM0D=1时,波特率=(2SM0D/64)×fosc=fosc/32 当SM0D=0时,波特率=(2SM0D/64)×fosc=fosc/64 计算定时器的初值计算: 4.若fosc = 6MHz ,波特率为2400波特,设SMOD =1,则定时/计数器T1的计数初值为多少并进行初始化编程。 答:根据公式 N=256-2SMOD ×fosc /(2400×32×12)= ≈243 =F3H TXDA: MOV TMOD,#20H ;置T1定时器工作方式2 MOV TL1,#0F3H ;置T1计数初值. MOV TH1,#0F3H B f B f N OSC SMOD OSC SMOD ??-=???-=384225612322256

基于51单片机的双机串行通信

机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx : xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 1.51单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

51单片机实现的485通讯程序

51单片机实现的485通讯程序 #ifndef __485_C__ #define __485_C__ #include #include #define unsigned char uchar #define unsigned int uint /* 通信命令*/ #define __ACTIVE_ 0x01 // 主机询问从机是否存在 #define __GETDATA_ 0x02 // 主机发送读设备请求 #define __OK_ 0x03 // 从机应答 #define __STATUS_ 0x04 // 从机发送设备状态信息 #define __MAXSIZE 0x08 // 缓冲区长度 #define __ERRLEN 12 // 任何通信帧长度超过12则表示出错uchar dbuf[__MAXSIZE]; // 该缓冲区用于保存设备状态信息uchar dev; // 该字节用于保存本机设备号 sbit M_DE = P1^0; // 驱动器使能,1有效 sbit M_RE = P1^1; // 接收器使能,0有效

void get_status(); // 调用该函数获得设备状态信息,函数代码未给出 void send_data(uchar type, uchar len, uchar *buf); // 发送数据帧 bit recv_cmd(uchar *type); // 接收主机命令,主机请求仅包含命令信息 void send_byte(uchar da); // 该函数发送一帧数据中的一个字节,由send_data()函数调用void main() { uchar type; uchar len; /* 系统初始化*/ P1 = 0xff; // 读取本机设备号 dev = (P1>>2); TMOD = 0x20; // 定时器T1使用工作方式2 TH1 = 250; // 设置初值 TL1 = 250; TR1 = 1; // 开始计时 PCON = 0x80; // SMOD = 1 SCON = 0x50; // 工作方式1,波特率9600bps,允许接收 ES = 0; // 关闭串口中断 IT0 = 0; // 外部中断0使用电平触发模式 EX0 = 1; // 开启外部中断0

Proteus中实现单片机双机通信实验

Proteus中实现单片机双机通信实验 【摘要】本文针对单片机项目设计中出现的问题和基本方法,提出了将Proteus仿真软件和Keil软件引入到单片机项目式开发中。以“单片机双机通信实验”项目为例,详细阐述Proteus软件在单片机课程教学中的使用方法和仿真调试过程。实践证明,该方法能激发开发热情,锻炼创新能力和单片机软硬件综合开发能力,是提高单片机开发效率和设计产品质量的一种有效方法。 【关键词】单片机开发;Proteus软件;仿真调试 引言 单片机开发是一项综合性、实践性、应用性很强的技术。传统的单片机开发采用“先理论设计,再动手实验”的开发模式,该模式造成编程与之实验结果分离,不便于调试,效果并不理想。鉴于此,本文将Proteus和引入到单片机的项目式开发中,通过仿真的直观性和真实感,不仅节约了硬件资源的投入,而且提高了单片机开发效率和产品质量。 一、Proteus简介 Proteus软件是英国Labcenter electronics公司开发的电路分析与实物仿真软件,它除了具有其他EDA工具的原理布图、PCB自动或人工布线、电路仿真等功能外,Proteus最大的特点是基于微控制器的设计连同所有的外围电路一起仿真,可直接在单片机虚拟系统上对MCU编程,并可对软件源代码进行实时调试。同时,它具有电路互动仿真功能,通过动态外设模型,如键盘、LED/LCD等,可实时显示系统输入、输出结果,以实现交互仿真,或配合Proteus配置的虚拟仪器如示波器、逻辑分析仪等,使单片机虚拟系统实现预期的实验效果。 此处还需要用Keil软件来协助。Keil软件是美国Keil Software公司出品的兼容单片机C语言软件的开发系统,是目前世界上最好的51单片机开发工具之一。它提供了丰富的库函数和功能强大的集成开发调试工具,生成的目标代码效率高,多数语句生成的汇编代码很紧凑,容易理解。 Proteus和Keil各自都可以进行仿真调试,但效果不是很理想,如把两者结合起来相互配合,则可发挥Proteus和Keil的优势使其在仿真过程中的软件调试和硬件设计更加便捷、高效。 二、仿真项目教学案例 (一)项目要求 本项目要求用两片AT89C51单片机实现A机检测输入键盘信息,并通过串行通信方式,传送给B机,在B机用数码管显示A机所按下的对应按键代号,“0-9”

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.sodocs.net/doc/bb1535774.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

基于单片机的双机通信程序设计

前言 单片机的通信接口是各台仪表之间或仪表与计算机之间进行信息交换和传输的联络装置。主要有五种类型,串行通信接口、并行通信接口、USB接口、现场总线接口以及以太网接口。 串行通讯是单片机的一个重要应用。本设计就是利用两块单片机来完成一个系统,实现单片机之间的串行通讯。 随着计算机的不断普及,在我们的周围可能会同时出现多台微型计算机,而且这些计算机的牌号,后型号不同,而且有的格式不兼容。于是利用单片机串行口实现不同计算机之间的相互通信,以达到信息或程序的共享是非常有用的。从智能家用电器到工业上的控制系统都采用了上位机与下位机基于串行通信的主从工作方式,这样就充分利用了微机分析处理能力强、速度快的特点及下位机(单片机)面向控制、使用灵活方便的优势。利用多机通讯构成的分布式系统逐渐普及。本实验就点对点的双机通信进行训练。学习串口的工作方式,初始化编程,和单片机与单片机点对点通信的编程方法以及硬件电路的设计方法。

1.总体设计方案 1.1 串口通信的设计原理 复位电路复位电路 单片机单片机 电源电路电源电路 时钟电路时钟电路 按键输入1位LED数码管 显示电路 图1 串口通信的设计原理框图 本次设计用于两片89S51,PC机的串行口采用的是标准的RS232接口,单片机的串行口电平是FTL电平,而TTL电平特性与RS232的电气特性不匹配,因此为了使单片机的串行口能与RS232接口通信,必须将串行口的输入/输出电平进行转换。通常用MAX232芯片来完成电平转换。单片机的发送方的数据由串行口TXD段输出,经过电平转换芯片MAX232将TTL电平转换为RS232电平输出,经过传输线将信号传送到接收端。接收方也使用MAX232芯片进行电平转换后,信号到达接收方串行口的接收端。接收方接收后,在数码管上显示接收的信息,实现串口通讯数据的发送和接收,该系统可采用max232进行串口通讯数据传送。可用LED显示发送的相应据。 1.2 数据传输方案比较与选折 在串行通信中,数据是在两个站之间传送的。按照数据传送方向,串行通信可采用三种方案。 方案一:单工制式 单工制式是指甲乙双方通信只能单向传送数据。 发送器A 接收器B 图2 单工制式

两个单片机之间的串行通信

两个单片机之间的串行通信 一、设计要求 在某个控制系统中有U1、U2这两个单片机,U1单片机首先将P1端口指拨开关数据载入SBUF,然后经由TXD将数据传送给U2单片机,U2单片机将接收数据存入SBUF,再由SBUF载入累加器,并输出至P1端口,点亮相应端口的LED。 二、实验所需元器件 三、电路原理图: 两个单片机之间的串行通信电路图

四、程序设计 这两个单片机均工作在半工状态,U1将P1端口的状态通过TXD发半空给U2,而U2接收U1的数据,然后控制P1端口的LED显示。因此,需编写两个不同的程序,其程序流程图如下所示:

五、C语言程序: U1的C语言程序: #include "reg51.h" #define uint unsigned int #define uchar unsigned char void send(uchar state) { SBUF=state; while(TI==0); TI=0; } void SCON_init(void) { SCON=0x50; TMOD=0x20; PCON=0x00; TH1=0xfd; TL1=0xfd; TI=0; TR1=1; ES=1; } void main() { P1=0xff; SCON_init(); while(1) { send(P1); } } U2的C语言程序: #include "reg51.h" #define uint unsigned int #define uchar unsigned char uchar state; void receive() { while(RI==0) state=SBUF; RI=0; } void SCON_init(void) { SCON=0x50; TMOD=0x20; PCON=0x00; TH1=0xfd; TL1=0xfd; RI=0; TR1=1; } void main() { SCON_init(); while(1) { receive(); P1=state; } } 六、调试与仿真:

基于单片机的双机串行通信

河南机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx 姓名: xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规范; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

单片机双机通信与PCB设计

实验六、双机通信与PCB设计 一、实验目的 掌握串口通信工作原理及程序开发方法,熟悉ARES软件PCB设计过程。 二、实验内容 1、按照P241图A.72绘制电路原理图1,将第6章实例2中2#机的查询法收发程序改为中断法(1#机发送过程不变)并实现原有功能; 2、按照图A7.3和表A7.3绘制电路原理图2,并定义电源端口; 3、采用ARES软件完成电路原理图2的PCB设计,形成光绘(Gerber)输出文件,其中BCD数码管需按照图A.74所示尺寸进行PCB自定义封装; 4、完成实验报告。 三、实验要求 提交的实验报告中应包括:电路原理图1,2#机的C51源程序,双机通信仿真效果及讨论*,PCB设计图(电路原理图2、排版图、3D效果图、光绘文件分层图3-4幅)以及实验小结。 提交实验报告的电子邮件主题及存盘文件名格式如,2005041220马晓明实验六。 *讨论:中断法与查询法的程序结构差异及优缺点。 1、电路原理图1

2、2#机的C51源程序 发送端源程序: #include #define uchar unsigned char char code map[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; void delay(unsigned int time) { unsigned int j=0; for(;time>0;time--) for(j=0;j<125;j++); } void main() { uchar c=0; TMOD=0x20; TH1=TL1=0xf4; PCON=0; TR1=1; SCON=0x50; while(1) { SBUF=c;

基于AT89C51单片机的双机串行通信设计

编号1 单位代码 学号 分类号 密级 课程设计 基于AT89C51单片机的双机串行通信设计 院(系)名称工学院机械系 专业名称机械设计制造及其自动化 学生姓名 指导教师 2014年11 月10日

前言 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。 在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。 在通信过程中,使用通信协议进行通信。在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC 机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。 串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。

基于51单片机的双机串行通信课程设计 1000110061

基于AT89C51单片机的双机串行通信设计 姓名:杨应伟 学号:100110061 专业:机械设计制造及其制动化 班级:机电二班

前言 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。 在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。 在通信过程中,使用通信协议进行通信。在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。 串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。

基于单片机的双机通信

基于单片机的双机通信 [摘要]双机通信是单片机的一个重要应用。本次课程设计就是要利用单片机来完成一个系统,实现两个单片机之间的有序通信。本文详细介绍了关于基于单片机AT89C51实现的双机之间的通信的设计。软件部分采用C语言编程实现接收部分和发射部分的功能,用Protues进行仿真。软件设计完成后,将程序烧入单片机。通信的结果实用数码管进行显示,数码管采用查表方式显示。在通信过程中,使用通信协议进行通信。 [关键词]51单片机;串行通信;接口

Two-machine communication based on single chip [Abstract]Dual machine communication is an important application of single chip. This course is designed to using single chip computer to complete a system, realize the orderly communication between two single-chip microcomputer. This paper introduces the realization based on single-chip microcomputer AT89C51 about the dual machine for communication between the design. Software part adopts the C programming language realization receiving part and emission, part of the Protues function, through simulation. The software design is completed, the procedure spread microcontroller. Communication results and practical to display, digital digital tube pipe, adopting look-up table display. In communication process, USES communication protocol to communicate. [Key words]51 SCM; serial communication; Interface

双单片机串口通信原理+程序

一、实验目的 掌握单片机串口通信的设计方法,了解双单片机通信的原理。 二、实验内容(含程序) 编写发送方和接受方单片机程序,让发送方单片机向接受方单片机循环发送几个两位十六进制数,并将发送的数显示在发送方和接受方的数码管上,要求串行口采用方式1进行通信,选用定时器T1作为波特率发生器,T1工作方式2,通信的波特率位9600。 硬件连接: 发送发程序:

#include #define uint unsigned int uchar table[]={0xaa,0xB5,0xdd,0xa8,0xba,0xcc,0xf4,0xb0}; //要发送的数据void delay(uint x) { uint i,j; for(i=x;i>0;i--) for(j=110;j>0;j--); } void main() { uchar i=0; TMOD=0x20; TH1=0xfd; TL1=0xfd; SM0=0; SM1=1; TR1=1; EA=1; ES=1; while(1) { SBUF=table[i]; P1=table[i]; while(!TI); TI=0; i++; if(i==8) i=0; delay(800);

} } 接收方程序: #include #define uchar unsigned char uchar a; void main() { TMOD=0x20; TH1=0xfd; TL1=0xfd; REN=1; TR1=1; SM0=0; SM1=1; EA=1; ES=1; while(1); } void ser() interrupt 4 { RI=0; a=SBUF; P1=a; } 三、实验结果及分析 本实验需要完成两个程序,发送方和接受方的,但是并没有要求

相关主题