串行通信及数据校验程序设计.
07实验七 Linux环境下的串行通信实验

连接驱动器的使能端,使得当RTS设置成高(逻辑1)时,有效RS485驱动器;设置RTS为低 时,使驱动器处于三态,这时候实际上从总线上断开了驱动器,从而允许其他节点可以使 用同一传输线。当使用RTS时,必须确保发送数据前将RTS设置成高,在发送完数据的最 后一位后,将RTS线设成低。。另一种可选方法是自动发送数据控制。这种方法要求特殊 的电路,当数据传输时自动使能或无效驱动器。它减少了软件开销和程序员的潜在错误。
五、基础知识
串行通信 1、基本原理 串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行 端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。 串口是系统资源的一部分,应用程序要使用串口进行通信,必须在使用之前向操作系统提 出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。 2、串口通信的基本任务 (1) 实现数据格式化:因为来自CPU的是普通的并行数据,所以,接口电路应具有实 现不同串行通信方式下的数据格式化的任务。在异步通信方式下,接口自动生成起止式的 帧数据格式。在面向字符的同步方式下,接口要在待传送的数据块前加上同步字符。 (2) 进行串-并转换:串行传送,数据是一位一位串行传送的,而计算机处理数据是 并行数据。所以当数据由计算机送至数据发送器时,首先把串行数据转换为并行数才能送 入计算机处理。因此串并转换是串行接口电路的重要任务。 (3) 控制数据传输速率:串行通信接口电路应具有对数据传输速率——波特率进行选 择和控制的能力。 (4) 进行错误检测:在发送时接口电路对传送的字符数据自动生成奇偶校验位或其他 校验码。在接收时,接口电路检查字符的奇偶校验或其他校验码,确定是否发生传送错误。 (5) 进行TTL与EIA电平转换:CPU和终端均采用TTL电平及正逻辑,它们与EIA采用
单片机串行通信实验报告(实验要求、原理、仿真图及例程)

《嵌入式系统原理与实验》实验指导实验三调度器设计基础一、实验目的和要求1.熟练使用Keil C51 IDE集成开发环境,熟练使用Proteus软件。
2.掌握Keil与Proteus的联调技巧。
3.掌握串行通信在单片机系统中的使用。
4.掌握调度器设计的基础知识:函数指针。
二、实验设备1.PC机一套2.Keil C51开发系统一套3.Proteus 仿真系统一套三、实验容1.甲机通过串口控制乙机LED闪烁(1)要求a.甲单片机的K1按键可通过串口分别控制乙单片机的LED1闪烁,LED2闪烁,LED1和LED2同时闪烁,关闭所有的LED。
b.两片8051的串口都工作在模式1,甲机对乙机完成以下4项控制。
i.甲机发送“A”,控制乙机LED1闪烁。
ii.甲机发送“B”,控制乙机LED2闪烁。
iii.甲机发送“C”,控制乙机LED1,LED2闪烁。
iv.甲机发送“C”,控制乙机LED1,LED2停止闪烁。
c.甲机负责发送和停止控制命令,乙机负责接收控制命令并完成控制LED的动作。
两机的程序要分别编写。
d.两个单片机都工作在串口模式1下,程序要先进行初始化,具体步骤如下:i.设置串口模式(SCON)ii.设置定时器1的工作模式(TMOD)iii.计算定时器1的初值iv.启动定时器v.如果串口工作在中断方式,还必须设置IE和ES,并编写中断服务程序。
(2)电路原理图Figure 1 甲机通过串口控制乙机LED闪烁的原理图(3)程序设计提示a.模式1下波特率由定时器控制,波特率计算公式参考:b.可以不用使用中断方式,使用查询方式实现发送与接收,通过查询TI和RI标志位完成。
2.单片机与PC串口通讯及函数指针的使用(1)要求:a.编写用单片机求取整数平方的函数。
b.单片机把计算结果向PC机发送字符串。
c.PC机接收计算结果并显示出来。
d.可以调用Keil C51 stdio.h 中的printf来实现字符串的发送。
串口通信crc校验计算

串口通信crc校验计算
在串口通信中,CRC(循环冗余校验)是一种常用的校验方法,用于检测数据传输过程中的错误。
下面是一个简单的CRC校验计算示例,使用的是CRC-16(也称为Xmodem CRC)算法。
假设我们要发送的数据是 0x55 0x44 0x33 0x22,我们可以按照以下步骤计算CRC校验值:
1. 确定生成多项式。
在CRC-16中,常用的生成多项式是 0x1021(二进制表示为 1000000000000010000000001)。
2. 将数据左移16位,与生成多项式进行异或操作。
在本例中,数据左移后的结果为 0x55443322'00000000。
3. 将异或操作的结果与生成多项式进行模2除法,得到余数。
在本例中,余数为 0x243F(二进制表示为 1001010001111111)。
4. 将余数左移16位,与原数据拼接起来,得到CRC校验码。
在本例中,CRC校验码为 0x55443322'243F。
以上是一个简单的CRC校验计算示例,实际应用中可能需要根据具体的协议和数据进行调整。
单片机串行通信的设计

单片机串行通信的设计单片机串行通信是指通过串行接口,将数据一位一位地传输到另一个单片机或外部设备的通信方式。
串行通信相比并行通信具有线路数量少、布线简单的优势,因此在嵌入式系统和通信领域得到广泛应用。
本文将围绕单片机串行通信的设计展开论述。
一、串行通信原理串行通信主要利用两根线路进行数据传输,一条线路作为数据线,一条线路作为时钟线。
发送方按照一定的时钟频率将数据位逐位传输到接收方,接收方根据时钟信号判断数据位的高低状态。
二、串行通信接口串行通信主要有两种接口方式:UART(通用异步收发器)和SPI(串行外设接口)。
1. UART:UART是一种异步通信方式,数据通过单个数据线进行传输。
UART有两个引脚:一根引脚用于数据传输(TXD - 发送,RXD - 接收),另一个引脚用于时钟同步(Baud Rate Generator - 波特率发生器)。
UART通信需要发送方和接收方的波特率一致,否则会导致数据传输错误。
2.SPI:SPI是一种同步通信方式,数据通过多个数据线进行传输。
SPI有四个引脚:主输出/从输入(MISO)、主输入/从输出(MOSI)、时钟信号(CLK)和片选信号(CS)。
SPI通信中的主从关系是由软件决定的,主设备负责控制时序和片选,从设备则根据主设备的控制信号进行数据传输。
三、串行通信的数据传输串行通信的数据传输基本步骤如下:1.初始化串行通信接口:设置波特率、数据位长度、停止位等参数,并打开串行通信开关。
2.发送方数据准备:将需要传输的数据准备好,存储到发送缓冲区中。
3.数据传输:根据数据位长度和波特率设定的时钟频率,将数据位逐位输出到数据线。
4.接收方接收数据:根据时钟信号,逐位读取数据线上的数据位,并存储到接收缓冲区中。
5.结束通信:关闭串行通信开关,并进行后续处理。
四、串行通信的设计考虑因素在设计单片机串行通信时,需要考虑以下因素:1.通信协议:选用合适的通信协议,例如UART协议或SPI协议。
单片机双机串行实验报告

单片机双机串行实验报告实验目的:通过单片机实现双机串行通信功能,掌握串行通信的原理、方法和程序设计技巧。
实验原理:双机串行通信是指通过串行口将两台单片机连接起来,实现数据的传输和互动。
常用的串行通信方式有同步串行通信和异步串行通信。
异步串行通信是指通过发送和接收数据时的起始位、停止位和校验位进行数据的传输。
而同步串行通信是指通过外部时钟信号进行数据的同步传输。
实验器材:1.两台单片机开发板(MCU7516)2.两个串口线3.两台计算机实验步骤:1.将两台单片机开发板连接起来,通过串口线连接它们的串行口。
2.在两台计算机上分别打开串口调试助手软件,将波特率设置为相同的数值(例如9600)。
3.在编程软件中,编写两个程序分别用于发送数据和接收数据。
4.在发送数据的程序中,首先要设置串口的波特率、数据位、停止位和校验位,并将数据存储在缓冲区中。
然后利用串口发送数据的指令将数据发送出去。
5.在接收数据的程序中,同样要设置串口的参数。
然后使用串口接收数据的指令将接收到的数据存储在缓冲区中,并将其打印出来。
实验结果与分析:经过实验,我们成功地实现了单片机之间的双机串行通信。
发送数据的单片机将数据发送出去后,接收数据的单片机能够正确地接收到数据,并将其打印出来。
实验中需要注意的是,串口的波特率、数据位、停止位和校验位必须设置为相同的数值。
否则,发送数据的单片机和接收数据的单片机无法正常进行通信。
同时,在实验之前,需要了解单片机开发板支持的串口通信相关的指令和函数。
实验总结:通过本次实验,我们深入了解了单片机之间的双机串行通信原理和方法。
掌握了串口的设置和使用方法,以及相关的指令和函数。
在实验中,我们学会了如何通过串行口实现数据的传输和互动,为今后的单片机应用和开发打下了基础。
同时,我们还发现,双机串行通信在实际应用中有着广泛的用途。
例如,可以通过串行通信实现两台计算机之间的数据传输,或者实现单片机与计算机之间的数据收发。
串行通讯的实验报告

一、实验目的1. 理解串行通讯的基本原理和通信方式。
2. 掌握串行通讯的硬件设备和软件实现方法。
3. 学会使用串行通讯进行数据传输。
4. 通过实验,提高动手能力和分析问题、解决问题的能力。
二、实验原理串行通讯是指用一条数据传输线将数据一位一位地按顺序传送的通信方式。
与并行通讯相比,串行通讯具有线路简单、成本低等优点。
串行通讯的基本原理如下:1. 异步串行通讯:每个字符独立发送,字符间有时间间隔,不需要同步信号。
每个字符由起始位、数据位、奇偶校验位和停止位组成。
2. 同步串行通讯:数据块作为一个整体发送,需要同步信号。
同步串行通讯分为两种方式:面向字符方式和面向比特方式。
三、实验设备1. 计算机:一台2. 串行通讯设备:串行数据线、串行接口卡、串口调试助手等3. 单片机实验平台:一台4. 数码管显示模块:一个四、实验内容1. 异步串行通讯实验(1)硬件连接:将计算机的串口与单片机实验平台的串行接口连接。
(2)软件设计:编写程序,实现单片机向计算机发送数据,计算机接收数据并显示在屏幕上。
(3)实验步骤:a. 设置串行通信参数:波特率、数据位、停止位、奇偶校验位等。
b. 编写发送程序,实现单片机向计算机发送数据。
c. 编写接收程序,实现计算机接收数据并显示在屏幕上。
2. 同步串行通讯实验(1)硬件连接:与异步串行通讯实验相同。
(2)软件设计:编写程序,实现单片机向计算机发送数据块,计算机接收数据块并显示在屏幕上。
(3)实验步骤:a. 设置串行通信参数:波特率、数据位、停止位、奇偶校验位等。
b. 编写发送程序,实现单片机向计算机发送数据块。
c. 编写接收程序,实现计算机接收数据块并显示在屏幕上。
3. 双机通讯实验(1)硬件连接:将两台单片机实验平台通过串行数据线连接。
(2)软件设计:编写程序,实现两台单片机之间相互发送和接收数据。
(3)实验步骤:a. 设置串行通信参数:波特率、数据位、停止位、奇偶校验位等。
串行口通信开启和关闭紧急处理功能程序设计代码

串行口通信开启和关闭紧急处理功能程序设计代码串行口通信开启和关闭紧急处理功能程序设计代码一、介绍串行口通信是计算机与外部设备进行数据交互的一种常见方式。
在某些情况下,可能会遇到紧急处理的需求,例如在发生故障或异常情况时需要立即停止通信。
本文将详细介绍如何设计一个程序,在串行口通信中实现开启和关闭紧急处理功能。
二、程序设计思路为了实现串行口通信开启和关闭紧急处理功能,我们需要使用一个编程语言来编写程序。
在这里,我们选择使用Python语言进行示例演示。
下面是程序设计的主要思路:1. 导入所需的库和模块:我们需要导入Python的serial模块来实现串行口通信功能。
2. 设置串行口参数:在开始通信之前,我们需要设置好串行口的参数,包括波特率、数据位、停止位等。
3. 打开串行口:通过调用serial模块中的open()函数来打开指定的串行口。
4. 开启紧急处理功能:通过向外部设备发送特定指令来开启紧急处理功能。
5. 进行数据交互:使用read()和write()函数进行数据的读取和写入操作。
6. 关闭紧急处理功能:通过向外部设备发送特定指令来关闭紧急处理功能。
7. 关闭串行口:通信结束后,通过调用serial模块中的close()函数来关闭串行口。
三、程序设计代码下面是一个简单的示例代码,演示了如何实现串行口通信开启和关闭紧急处理功能:```pythonimport serial# 设置串行口参数port = 'COM1' # 串行口号baudrate = 9600 # 波特率bytesize = serial.EIGHTBITS # 数据位parity = serial.PARITY_NONE # 校验位stopbits = serial.STOPBITS_ONE # 停止位# 打开串行口ser = serial.Serial(port, baudrate, bytesize, parity, stopbits)# 开启紧急处理功能ser.write(b'Emergency:ON')# 进行数据交互data = ser.read(10) # 读取10个字节的数据ser.write(b'Send data')# 关闭紧急处理功能ser.write(b'Emergency:OFF')# 关闭串行口ser.close()```四、代码解释和注意事项1. 在代码中,我们首先导入了serial模块,并设置了需要的串行口参数。
单片机双机之间的串行通讯设计报告

单片机双机之间的串行通讯设计报告摘要:本文介绍了一种基于单片机的双机之间的串行通讯设计。
该设计使用两个单片机,通过串行通信协议进行数据传输。
通讯过程中,两台单片机之间通过数据线连接,并使用中断方式进行数据接收和发送。
同时,本文还介绍了串行口工作方式 0 的应用,以及如何使用移位寄存器进行串行口扩展。
通过该设计,可以实现两台单片机之间的高速数据传输,并且具有良好的稳定性和可靠性。
关键词:单片机,串行通讯,中断方式,移位寄存器,串行口扩展一、引言串行通讯是计算机系统中常用的一种数据传输方式,它可以实现不同设备之间的数据传输。
在单片机应用中,串行通讯也是一种常见的数据传输方式。
本文介绍了一种基于单片机的双机之间的串行通讯设计,该设计使用两个单片机通过串行通信协议进行数据传输。
本文还介绍了串行口工作方式 0 的应用,以及如何使用移位寄存器进行串行口扩展。
通过该设计,可以实现两台单片机之间的高速数据传输,并且具有良好的稳定性和可靠性。
二、设计原理该串行通讯设计使用两个单片机,分别为发送单片机和接收单片机。
发送单片机将数据通过串行口发送到接收单片机,接收单片机再将接收到的数据进行处理。
两台单片机之间通过数据线连接,并使用中断方式进行数据接收和发送。
在串行通讯中,数据是通过串行口进行传输的。
串行口工作方式0 是一种常见的串行口工作方式,它使用移位寄存器进行数据接收和发送。
在移位寄存器中,数据被移位到寄存器中进行传输,从而实现了数据的串行传输。
三、设计实现1. 硬件设计在该设计中,发送单片机和接收单片机分别使用一个串行口进行数据传输。
发送单片机将数据通过串行口发送到接收单片机,接收单片机再将接收到的数据进行处理。
两台单片机之间通过数据线连接,并使用中断方式进行数据接收和发送。
硬件设计主要包括两个单片机、串行口、数据线和中断控制器。
其中,两个单片机分别拥有自己的串行口,并且都能够接收和发送数据。
数据线将两台单片机连接在一起,中断控制器用于处理数据的接收和发送。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中北大学单片机原理及接口技术课程设计说明书学生姓名:学号:学院:计算机与控制工程学院专业:自动化题目:串行通信及数据校验程序设计指导教师:职称:2013年12月22日中北大学单片机及其接口技术课程设计任务书12/13 学年第一学期学院:计算机与控制工程学院专业:自动化学生姓名:学号课程设计题目:串行通信及数据校验程序设计起迄日期:12月16 日~12月20 日课程设计地点:中北大学指导教师:沈小林下达任务书日期: 2013年12月16日课程设计任务书课程设计任务书目录一、设计任务 (2)1.任务 (2)2.通信技术要求 (2)二、基本原理 (2)1. AT89C51单片机的串行接口结构 (2)2.串行口方式1的发送和接收 (4)3.设置串行通信寄存器 (4)三、系统方案比较与论证 (5)1.汇编语言和C语言的特点及选择 (5)2.并行通信与串行通信的比较 (5)3.串行通信程序设计的比较 (6)4.同步通信与异步通信的区别 (6)四、系统电路设计 (6)五、软件设计 (7)1.发送程序设计 (7)2.接收程序设计 (7)3.校验程序设计 (8)4.系统软件总体流程图 (9)六、总结 (11)七、参考文献 (11)一、设计任务1.任务通过对单片机串行通信程序设计掌握单片机串行数据通讯的实现及数据校验的原理。
2.通信技术要求(1)串行通信波特率:9600bps;(2)数据长度:20字节二、基本原理1.AT89C51单片机的串行接口结构51单片机的串行接口是一个全双工的接口,它可以作为UART用,也可以作为同步移位寄存器用。
51单片机串行接口的结构如下:(1)数据缓冲器(SBUF)接受或发送的数据都要先送到SBUF缓存。
接收SBUF和发送SBUF用同一直接地址99H,两者在物理结构上是相互独立的,单片机用它们来接收和发送数据,发送时用指令将数据送到SBUF即可启动发送;接收时用指令将SBUF中接收到的数据取出。
(2)串行控制寄存器(SCON)SCON用于串行通信方式的选择,收发控制及状态指示,各位含义如下:SM0,SM1:串行接口工作方式选择位,这两位组合成00,01,10,11对应于工作方式0、1、2、3。
串行接口工作方式特点见下表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)波特率计算串行口方式1波特率≌2SMOD /32×f OSC /12(256-X)下表列出了定时器T1工作于方式2常用波特率及初值。
.方式1真正用于串行发送或接收,为10位通用异步接口。
TXD与RXD分别用于发送与接收数据。
收发一帧数据的格式为1位的起始位(低位在前)﹑1位停止位,最高位TB8用来作奇偶校验位,共10位。
在接收时,停止位进入SCON的RB8,此方式的传送波特率可调。
串行口方式1的发送与接收时序如图7—12(a)和(b)所示。
图1—1 方式1发送和接收时序3.设置串行通信寄存器。
(1)确定定时器T1工作模式寄存器TMOD令TMOD=00100000B=10H,定时器工作于模式2(自动重装初始值定时器),这种模式下可以自动重新装载初始值,可省去用户软件中重装常数的语句,并可产生相当精确的定时时间,此时定时器T1用作波特率发生器,系统晶体振荡频率为11.059MHZ。
(2)设置串行通信控制寄存器SCON由于采用了方式1、全双工通信、允许接收,所以SCON中取(SM0 SM1)=0 1、REN =1,其余有关多机通信的控制位SM2、TB8、RB8和接收/发送中断标志TI、RI都应清0,因此SCON=01010000B=50H,基本设置如下表所示:(3令波特率控制位SMOD=0,波特率为设定值9600bps。
(4)计算定时器T1的初值XX≌256-fosc×(SMOD+1)/(384×波特率)解得:X≌FDH所以(TH1)=(TL1)=FDH。
(5)确定通信协议甲机:将片外数据存储器单元的内容向乙机发送,每发送一帧信息,乙机对接收的信息进行奇偶校验。
此处对发送的数据作偶校验,将P值放在TB8中。
若校验正确,则乙机向甲机回发“数据发送正确”的信号(以00H作为应答信号)。
甲机收到乙机“正确”的应答信号后,再发送下一个字节。
若奇偶校验有错,则乙机发出“数据发送不正确”的信号(以FFH作为应答信号)。
甲机接收到“不正确”应答信号后,重新发送原数据,直至发送正确。
甲机将该数据块发送完毕后停止发送。
其发送格式为:乙机:接收甲机发送的数据,并写入片外数据存储器中。
每接收一帧数据,乙机对所接收的数据进行奇、偶校验,并发出相应的应答信号,直至接收完所有的数据。
4 MAZ232芯片用8051串行接口通信,如果两台8051单片机之间的距离很近(不超过1.5m),可以采用直接将两台8051单片机的串行接口直接相连,利用其自身的TTL电平(0-5V)直接传输数据信息。
如果传输距离较远(超过1.5m),由于传输线的阻抗与分布电容,会产生电平损耗和波形畸变,以至于检测不出数据或数据出错。
此时可利用 RS232标准总线接口,将单片机输出的TTL电平转换为RS232标准电平(逻辑1为-15—-5V;逻辑0为+5-—+15V)。
用RS232可将传输距离提高到15m,如果想远距离传输,可以采用RS422或者RS485。
电平转换芯片MAX232是美信公司(MAXIM)生产,专用于进行将TTL电平转换为RS232电平的芯片,MAX232内部有泵电源,能将+5V电源电压在芯片内提高到RS232电平所需的+10V或者-10V电平。
5九针串口口,分别称为 COM1 和 COM2。
二、系统方案比较与论证1.汇编语言和C语言的特点及选择本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。
在单片机的应用系统程序设计时,常用的是汇编语言和C语言。
主机硬件,程序可读性和可一直性比较差。
而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算方便,表达花类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可重用性,可移植性等特点。
本着学习和创新的精神,我们采用C语言编写了程序。
2.并行通信与串行通信的比较计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。
51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信得特点是传输信号的速度快,但所用的信号线不较多,成本高,传输的距离较近。
串行通信的特点是只用两条信号线即可完成通信,成本低,传输的距离较远。
3.串行通信程序设计的比较串行通信程序设计主要有微机发送接收程序和单片机发送接收程序。
微机发送接收程序复杂难懂,操作不便。
单片机发送接收程序简单易懂,操作方便。
故而,此系统采用后者。
4.同步通信与异步通信的区别“异步通信”是一种很常用的通信方式。
异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。
异步通信的好处是通信设备简单、便宜,但传输效率较低。
异步通信也可以是以帧作为发送的单位。
接收端必须随时做好接收帧的准备。
这是,帧的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。
“同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。
收发双方不停地发送和接收连续的同步比特流。
但这时还有两种不同的同步方式。
一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。
另一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。
三、系统电路设计两个单片机采用全双工方式发送数据,甲机发送,乙机接收。
串行接口工作于方式 1两机均选用11..0592MHZ的振荡频率,波特率为9600bps。
双机通信的硬件连接图如下图:系统接口电路原理图四、软件设计1.发送程序设计#include<reg52.h> //包含单片机寄存器的头文件sbit key=P2^7;void main(){TMOD=0x20; //TMOD=0010 0000B,定时器T1工作于方式 2 SCON=0x40; //SCON=0100 0000B,串口工作方式1 1起始位8数据位1停止位PCON=0x00; //PCON=0000 0000B,波特率9600 晶振11.0592 TH1=0xfd; //根据规定给定时器T1赋初值TL1=0xfd; //根据规定给定时器T1赋初值TR1=1; //启动定时器T1while(1){unsigned int i,j;if(key==0){for(i=0; i<100; i++) //for语句先赋值即i=0,然后执行语句即后面的for语句,然后执行i++,然后判断为真是跳出循环for(j = 249; j > 0; j--); //什么也不做等待一个机器周期if(key==0){SBUF=P1; //发送数据while(TI==0); //检查发送完成中断标志如果未完成就等等否则复位发送标志位以便下个数据可以发送TI=0;}}}}2.接收程序设计#include<reg52.h>void main(){TMOD=0x20; //TMOD=0010 0000B,定时器T1工作于方式2 SCON=0x40; //SCON=0100 0000B,串口工作方式1 1起始位8数据位1停止位PCON=0x00; //PCON=0000 0000B,波特率9600 晶振11.0592TH1=0xfd; //根据规定给定时器T1赋初值TL1=0xfd; //根据规定给定时器T1赋初值TR1=1; //启动定时器T1while(1){unsigned int i,j;if(key==0){for(i=0; i<100; i++) //for语句先赋值即i=0,然后执行语句即后面的for语句,然后执行i++,然后判断为真是跳出循环for(j = 249; j > 0; j--); //什么也不做等待一个机器周期if(key==0){P1=SBUF; //接收数据}3仿真keil和multisim联合仿真五、总结在为期一周的单片机课程设计中,从选课题查资料,到学软件做仿真,再到检测与调试,我都收获了很多。