您好、欢迎来到现金彩票网!
当前位置:秒速快三开奖 > 双机协同 >

双机间波特率可选串行通信设计与调试

发布时间:2019-06-30 04:58 来源:未知 编辑:admin

  双机间波特率可选串行通信设计与调试_信息与通信_工程科技_专业资料。双机间波特率可选串行通信设计与调试

  项目任务书 题目: 双机间波特率可选的串行通信 系 部 学科门类 专 业 学 号 姓 名 班 级 2015 年 6 月 10 日 I 合肥师范学院 单片机课程设计(任务书) 双机间波特率可选的串行通信设计与调试 摘 要 双机通信的实质就是解决两单片机串行通信问题。针对于 89C51 单片机全双工异步串 行通信口,我们采用单片机直接交叉互连的串行通信方式。考虑到本设计应用于短距离传 输、两单片机具有相同的数据格式及电平且为使设计简单,我们最终决定本系统采用方式 一单片机直接交叉连接的串行通信方式,上位机发送的数据由串行口 TXD 端输出,直接 由下位机的串行口数据接收端 RXD 接收。如果串口通信线路过长,可考虑采用 RS523 标 准,使用 MAX232 芯片进行 TTL 和 RS232 的电平转换,以延长传输距离。为了减少波特 率误差,使用 11.592MHz 的晶振。 关键字:51 单片机 串行通信 波特率可选 I 合肥师范学院 单片机课程设计(任务书) 目 一引言 录 1.1 课题来源及意义· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·1 1.2 研究现状及趋势· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·1 二系统设计· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·2 2.1 概述· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·2 2.2 方案比较确定· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·8 三电路设计与调试· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·9 3.1 设计方案· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·9 3.2 软件仿真· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·9 四总结· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·12 参考文献· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·13 附录· · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · · ·15 II 合肥师范学院 单片机课程设计(任务书) 一 1.1 课题来源及意义 引言 随着电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片 机为我们的设计提供了许多新的方法与思路。 对于一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消 耗大的系统、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片 机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成 为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运 行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。但在一 些相对复杂的单片机应用系统中 ,仅仅一个单片机资源是不够的 ,往往需要两个或多个单 片机系统协同工作。这就对单片机通信提出了更高要求。 1.2 研究现状及趋势 单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少,长距 离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来 越重要的作用。所以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。 1 合肥师范学院 单片机课程实验与设计(任务书) 二 2.1 概述 2.1.1 串行通信的特点 系统设计 在远程通信和计算机科学中,串行通信是指在计算机总线或其他数据通道上,每次传 输一个位元数据,并连续进行以上单次过程的通信方式。与之对应的是并行通信,它在串 行端口上通过一次同时传输若干位元数据的方式进行通信。一位接一位地顺序传送。这样 一个字节的数据要分 8 次由低位到高位按顺序一位位地传送。由此可见,串行通信的特点 如下:1、节省传输线,这是显而易见的。尤其是在远程通信时,此特点尤为重要。这也 是串行通信的主要优点;2、数据传送效率低。与并行通信比,这也这是显而易见的。这 也是串行通信的主要缺点。 串行通信被用于长距离通信以及大多数计算机网络,在这些应用场合里,电缆和同步 化使并行通信实际应用面临困难。凭借着其改善的信号完整性和传播速度,串行通信总线 正在变得越来越普遍,甚至在短程距离的应用中,其优越性已经开始超越并行总线不需要 串行化元件等缺点。 2.1.2 串行通信的分类 (1)异步通信 所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位 与位之间的传送基本上是同步的.异步串行通信的特点可以概括为:①以字符为单位传送 信息;②相邻两字符间的间隔是任意长; ③接收时钟和发送时钟只要相近就可以。异步 方式特点简单的说就是:字符间异步,字符内部各位同步。 (2)同步通信 所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字 符内部的位与位之间都同步.同步串行通信的特点可以概括为:①以数据块为单位传送信 息;②在一个数据块(信息帧)内,字符与字符间无间隔;③接收时钟与发送进钟严格同 步。 2.1.3 串行通信技术标准 2.1.3.1 数据传输率 2 合肥师范学院 单片机课程实验与设计(任务书) (1)比特率和波特率:比特率是指每秒传输的二进制位数,用 bps(bit/s)表示。波特率 是指每秒传输的符号数,若每个符号所含的信息量为 1 比特,则波特率等于比特率。在计 算机中,一个符号的含义为高低电平,它们分别代表逻辑“ 1”和逻辑“0” ,所以每个符 号所含的信息量刚好为 1 比特,因此在计算机通信中,常将比特率称为波特率,即:1 波 特(B)=1 比特(bit)=1 位/秒(1bps)例如:电传打字机最快传输率为每秒 10 个字符/ 秒,每个字符包含 11 个二进制位,则数据传输率为:11 位/字符× 10 个字符/秒=110 位/秒 =110 波特(Baud)计算机中常用的波特率是:110、300、600、1200、2400、4800、9600、 19200、28800、33600,目前最高可达 56Kbps. (2)位时间 Td:位时间是指传送一个二进制位所需时间,用 Td 率 = 1/B (3)发送时钟和接收时钟 在串行通信中,二进制数据以数字信号的信号形式出现 ,不论是发送还是接收,都必 须有时钟信号对传送的数据进行定位。在 TTL 标准表示的二进制数中,传输线上高电平表 示二进制 1,低电平表示二进制 0,且每一位持续时间是固定的,由发送时钟和接收时钟 的频率决定。 1)发送时钟 发送数据时,先将要发送的数据送入移位寄存器,然后在发送时钟的控制下,将该并 行数据逐位移位输出。通常是在发送时钟的下降沿将移位寄存器中的数据串行输出,每个 数据位的时间间隔由发送时钟的周期来划分。 2)接收时钟 在接收串行数据时,接收时钟的上升沿对接收数据采样,进行数据位检测,并将其移 入接收器的移位寄存器中,最后组成并行数据输出。 2.1.3.2 波特率因子 接收时钟和发送时钟与波特率有如下关系: F=n× B (2-1) 表示。Td = 1/ 波特 这里 F 是发送时钟或接收时钟的频率;B 是数据传输的波特率;n 称为波特率因子。 设发送或接收时钟的周期为 Tc,频率为 F 的位传输时间为 Td,则: Tc=1/F Td =1/B 得到: 3 (2-2) (2-3) 合肥师范学院 单片机课程实验与设计(任务书) Tc=T/n (2-4) 在实际串行通信中,波特率因子可以设定。在异步传送时,n = 1,16,64 实际常采 n=16,即发送或接收时钟的频率要比数据传送的波特率高 n 倍。在同步通信中波特率因子 必等于 1。 2.1.4 串行通信与并行通信区别 计算机与外界的信息交换称为通信。在通信领域内,有两种数据通信方式:并行通 信和串行通信。随着计算机网络化和微机分级分布式应用系统的发展,通信的功能越 来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输, 也包括计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。 串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据 一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计 算机与计算机、计算机与外设之间的远距离通信。 在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现 的。如果一组数据的各数据位在多条线上同时被传输,这种传输方式称为 并行通信。 8 位数据线 源 终点 源 终点 (a)并行通信 (b)串行通信 图 2-1 串行通信与并行通信的区别 4 合肥师范学院 单片机课程实验与设计(任务书) 2.1.5 MCS-51 串行接口的基本特点 MCS-51 单片机的串行端口有 4 种基本工作方式,通过编程设置,可以使其工作在任 一方式,以满足不同场合的需要。其中,方式 0 主要用于外接移位寄存器,以扩展单片机 的 I/O 电路;工作方式 1 多用于双机之间或与外设电路的通信;方式 2、3 除有方式 1 的 功能外,还可以作多机通信,以构成分布式多微机系统。 串行端口有两个控制寄存器 SCON、PCON,用于设置工作方式、发送或接收的状态、 特征位、数据传送波特率[每秒传送的位数]以及作为中断标志等。 串行端口有一个数据寄存器 SBUF 在特殊功能寄存器中的字节地址为 99H,该寄存器 为发送和接收所共用。 串行端口的波特率可以用程序来控制。在不同工作方式中,由时钟振荡频率的分频值 或由定时器 T1 的定时溢出时间确定,使用十分方便灵活。 串口控制寄存器 输入:在(REN)=1 时,串行口采样 RXD 引脚,当采样到 1 至 O 的跳变时,确认是串 行发送来的一帧数据的开始位 0,从而开始接收一帧数据。只有当 8 位数据接收完,并检 测到高电平停止位后,只有满足①(R1)=0;②(SM2)=0 或接收到的第 9 位数据为 1 时,停 止位才进入 RB8,8 位数据才能进入接收寄存器,并由硬件置位中断标志 RI;否则信息丢 失。所以在方式 1 接收时,应先用软件清零 RI 和 SM2 标志。 1. 工作方式 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。 2. 工作方式 3 5 合肥师范学院 单片机课程实验与设计(任务书) 方式 3 为波特率可变的 11 位 UART 方式。除波特率外,其余与方式 2 相同。 波特率的选择 如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在 MCS-51 串行口的四种工作方式中,方式 0 和 2 的波特率是固定的,而方式 1 和 3 的波特 率是可变的,由定时器 T1 的溢出率控制。 1 方式 1 方式 1 的波特率固定为主振频率的 1/12。 2 方式 2 方式 2 的波特率由 PCON 中的选择位 SMOD 来决定,可表示为: 波特率=2sMoD×fosc/64 (2-5) 也就是当 SMOD=1 时, 波特率为 1/32× fosc, 当 SMOD=0 时, 波特率为 1/64×fosc。 3 方式 1 和方式 3 定时器 T1 作为波特率发生器,其公式如下: 波特率=2SMOD/32×定时器 T1 溢出率 T1 溢出率=T1 计数率/产生溢出所需的周期数 (2-6) (2-7) 式中 T1 计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时, T1 计数率为 Fosc/2,当工作于计数器状态时,T1 计数率为外部输入频率,此频率应小于 Fosc/24。产生溢出所需周期与定时器 T1 的工作方式、T1 的预置值有关。 定时器 T1 工作于方式 O:溢出所需周期数=8192-X 定时器 T1 工作于方式 1:溢出所需周期数=65536-X 定时器 T1 工作于方式 2:溢出所需周期数=256-X 因为方式 2 为自动重装入初值的 8 位定时器/计数器模式,所以用它来做波特率发生 器最恰当。这种方式下,T1 的溢出率[次/秒]计算式可以表示为: T1 溢出率=Fsoc/12[256-X] (2-7) 2.1.6 波特率 波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。MCS-51 串行端口在四种工作模式下有不同的波特率计算方法。其中,模式 0 和模式 2 波特率计算 很简单;模式 1 和模式 3 的波特率选择相同,故在此仅以工作模式 1 为例来说明串口通信 波特率的选择。 6 合肥师范学院 单片机课程实验与设计(任务书) 在串行端口工作于模式 1,其波特率将由计时/计数器 1 来产生,通常设置定时器工作 于模式 2(自动再加模式)。在此模式下波特率计算公式为: 波特率=(1+SMOD)*晶振频率/(384*(256-TH1)) 其中,SMOD——寄存器 PCON 的第 7 位,称为波特率倍增位; TH1——定时器的重载值。 在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运 作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的 通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最 小的频率进行通信。 (2-8) 2.1.7 AT89C51 单片机的结构和作用 AT89C51 是一个低电压,低功耗,高性能 CMOS 8 位单片机,40 个引脚,32 个外部 双向输入/输出(I/O)端口,同时内含 2 个外设中断口,2 个 16 位可编程定时计数器,2 个全双工串行通信口。AT89C51 可以按照常规的方法进行编程,也可以在线k bytes 的可反复擦写的 Flash 只读程序存储器和 128 bytes 的随机存取数据存储器 (RAM) , 器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 MCS-51 指令系统。 2.1.8 双机通信 两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原理及通 信方式为: 单工通信:是指消息只能单方向传输的工作方式。单工通信信道是单向信道,发送端 和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息, 不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。通信双方采用单 工通信属于点到点的通信。根据收发频率的异同,单工通信可分为同频通信和异频通信。 半双工通信: 这种通信方式可以实现双向的通信, 但不能在两个方向上同时进行, 必须轮流交替地进行。 也就是说, 通信信道的每一段都可以是发送端, 也可以是接端。 但同一时刻里,信息只能有一个传输方向。如日常生活中的例子有步话机通信等。 双工通信:双工通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的同时也能 听,边说边听。这种发射机和接收机分别在两个不同的频率上能同时进行工作的双工机也称为 异频双工机。双工机的特点是使用方便,但线路设计较复杂,价格也较高。 7 合肥师范学院 单片机课程实验与设计(任务书) 利用 AT89C51 芯片、复位电路、时钟电路、开关组、发光二极管等,使 A 机和 B 机的 波特率可选,完成串行通信。 外 部 电 路 单 片 机 A 串口通信 单 片 机 B 外 部 电 路 图 2-2 系统框图 2.2 方案的比较确定 本设计是基于 Proteus 与 μ Vision 仿真软件编程来设计方案, 选择合适的编程语言是一 个重序可读性和可移植性比较差。而 C 语言虽然执行效率没有汇编语言高,但语言简洁, 使用方便,灵活,运算方便,表达类型多样化,数据结构类型丰富,具有结构化的控制语 句,程序设计自由度大,有很好的可重用性,可移植性等特点。所以我们采用 C 语言编写 了程序。两个单片机间采用串行口方式 1 进行通信。由于距离近可以直接采用输入输出直 接相连通信。 8 合肥师范学院 单片机课程实验与设计(任务书) 三 3.1 设计方案 电路设计与调试 本次设计,对于两片 AT89C51,发送方的数据由串行口 TXD 段输出,经过传输线将 信号传送到接收方。接收方接收后,在 LED 上显示接收的信息。 软件部分,通过通信协议进行发送接收,主机先送 0xaa 给从机,当从机接收到 0xaa 后, 向主机反馈,主机收到反馈后停止发送数据给从机。从机收到正确数据后送到 LED 显示。 3.2 软件仿线 电路设计 在桌面上双击图标打开 ISIS 7 Professional 窗口。在器件选择按钮中单击“P”按钮, 或执行菜单命令“库”→“拾取元件/符号”,添加如下表所示的元件。 表 3-1 元件选择表 单片机 AT89C51 瓷片电容 CAP 22pF 电阻 RES 10K 开关 Button 二片 四只 二只 六个 晶体 CRYSTAL 11.0592MHz 电解电容 CAP-ELEC 1uF 电阻 RES 1K 发光二极管 LED 二只 二只 二只 八个 图 3-1 AT89C51 管脚图 9 合肥师范学院 单片机课程实验与设计(任务书) 管脚说明:VCC:供电电压。GND:接地。P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P0 口的管脚第一次写 1 时,被定义为高阻输入。P0 能 够用于外部程序数据存储器, 它可以被定义为数据/地址的第八位。 在 FIASH 编程时, P0 口 作为原码输入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口: P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。 P1 口管脚写入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输 出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。 RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正 脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。 然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输 出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作 用。 另外, 该引脚被略微拉高。 如果微处理器在外部执行状态 ALE 禁止, 置位无效。 /PSEN: 外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有 效。但在访问外部数据存储器时,这两次有效的/PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH) ,不管是否有内部程序存储 器。注意加密方式 1 时,/EA 将内部锁定为 RESET;当/EA 端保持高电平时,此间内部程序 存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP) 。 XTAL1:反向 振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。 振荡 器特性: XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片 内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2 应不接。 有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要 求,但必须保证脉冲的高低电平要求的宽度。 设计电路详见附录图附-1。 3.2.2 程序设计 主机程序流程图:详见附录图附-2。 从机程序流程图:详见附录图附-3。 主机程序详见附录。 10 合肥师范学院 单片机课程实验与设计(任务书) 从机程序详见附录。 3.2.3 调试仿真 关于 Proteus 与 Keil 的联合仿真调试。需注意 Proteus 的 ISIS 中 A、B 机的 CPU 属性 中 Program File 与 Keil 的μ Vision4 中的路径和文件名要一致。 启动 Proteus 的 ISIS,并将其放在屏幕的右上角(可将原理图放大到合适大小);再 启动 Keil 的μ Vision4,并将其放在屏幕的左下角。 在 Keil 中执行菜单命令“调试”→“启动/停止调试”,进入 Keil 调试环境。同时, 在 Proteus ISIS 的窗口中可看出 Proteus 也进入了程序调试状态。 在 Keil 中点击“运行”快捷按钮,运行程序。调试成功显示如图所示(详见附录图附4)。 11 合肥师范学院 单片机课程实验与设计(任务书) 四 总结 经过课程设计,在查阅资料的过程中,学习了基于单片机的 C 语言程序设计,了解了 单片机串行通信的基本知识,对于以后的学习和工作都有很大的益处。 在学习的过程中,也遇到了一些困难,比如开始的时候,由于发送端和接收端的通信 协议没有做好,导致数据不能正确的传输,在解决问题的过程中,对于通信协议的实现有 了深刻的认识。 回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,可以说得是 苦多于甜,但是可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且 学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结 合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来, 从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能 力。 12 合肥师范学院 单片机课程实验与设计(任务书) 参考文献 [1] 张刚毅,基于 Proteus 的单片机课程的基础实验与课程设计[M].北京:人民邮电出版社,2012 [2]韩毅刚,计算机通信技术[M].北京:北京航空航天大学出版社,2007 [3]李朝青,单片机与 PC 机网络通信技术[M].北京:北京航空航天大学出版社,2007 [4]胡洪波,单片机原理与应用实验教程[M].湘潭大学出版社,2009 13 合肥师范学院 单片机课程实验与设计(任务书) 附录 主机程序:master.c #includereg51.h sbit key0=P1^0; sbit key1=P1^1; sbit key2=P1^2; sbit key3=P1^3; unsigned char keyscan() { unsigned char keyscan_num,temp; P1=0xff; temp=P1; if(~(temp&0xff)) { if(key0==0) { keyscan_num=0; } else if(key1==0) { keyscan_num=1; } else if(key2==0) { keyscan_num=2; } 14 合肥师范学院 单片机课程实验与设计(任务书) else if(key3==0) { keyscan_num=3; } else { keyscan_num=1; } return keyscan_num; } } void spi_init1200() { SCON=0x50; PCON=0x80; TI=0; EA=1; ET1=1; TMOD=0x20; TH1=0xe8; TL1=0xe8; TR1=1; } void spi_init2400() { SCON=0x50; PCON=0x80; 15 合肥师范学院 单片机课程实验与设计(任务书) TI=0; EA=1; ET1=1; TMOD=0x20; TH1=0xf4; TL1=0xf4; TR1=1; } void spi_init4800() { SCON=0x50; PCON=0x80; TI=0; EA=1; ET1=1; TMOD=0x20; TH1=0xfa; TL1=0xfa; TR1=1; } void spi_init9600() { SCON=0x50; PCON=0x80; TI=0; EA=1; ET1=1; TMOD=0x20; 16 合肥师范学院 单片机课程实验与设计(任务书) TH1=0xfd; TL1=0xfd; TR1=1; } void spi_send(unsigned char ch) { SBUF=ch; while(TI==0); TI=0; } void main() { unsigned char key_press; while(1) { key_press=keyscan(); switch(key_press) { case 0: spi_init1200(); break; case 1: spi_init2400(); break; case 2: spi_init4800(); break; 17 合肥师范学院 单片机课程实验与设计(任务书) case 3: spi_init9600(); break; default: break; } spi_send(0xaa); } } 从机程序:slave.c #includereg51.h sbit key0=P1^0; sbit key1=P1^1; sbit key2=P1^2; sbit key3=P1^3; unsigned char keyscan() { unsigned char keyscan_num,temp; P1=0xff; temp=P1; if(~(temp&0xff)) { if(key0==0) { keyscan_num=0; } else if(key1==0) 18 合肥师范学院 单片机课程实验与设计(任务书) { keyscan_num=1; } else if(key2==0) { keyscan_num=2; } else if(key3==0) { keyscan_num=3; } else { keyscan_num=1; } return keyscan_num; } } void spi_init1200() { SCON=0x50; PCON=0x80; TI=0; EA=1; ET1=1; TMOD=0x20; TH1=0xe8; TL1=0xe8; 19 合肥师范学院 单片机课程实验与设计(任务书) TR1=1; } void spi_init2400() { SCON=0x50; PCON=0x80; TI=0; EA=1; ET1=1; TMOD=0x20; TH1=0xf4; TL1=0xf4; TR1=1; } void spi_init4800() { SCON=0x50; PCON=0x80; TI=0; EA=1; ET1=1; TMOD=0x20; TH1=0xfa; TL1=0xfa; TR1=1; } void spi_init9600() 20 合肥师范学院 单片机课程实验与设计(任务书) { SCON=0x50; PCON=0x80; TI=0; EA=1; ET1=1; TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; } void main() { unsigned char key_press; while(1) { key_press=keyscan(); switch(key_press) { case 0: spi_init1200(); break; case 1: spi_init2400(); break; case 2: spi_init4800(); break; 21 合肥师范学院 单片机课程实验与设计(任务书) case 3: spi_init9600(); break; default: break; } while(RI==0); } } void receive() interrupt 4 { RI=0; P2=SBUF; } 22 合肥师范学院 单片机课程实验与设计(任务书) 附图-1 电路图 23 合肥师范学院 单片机课程实验与设计(任务书) 主程序 程序初始化 扫描键盘确定比特率 是否为有效值 否 是 发送信号 是否接受成功 是 否 结束 附图-2 主机程序框图 24 合肥师范学院 单片机课程实验与设计(任务书) 主程序 程序初始化 扫描键盘确定比特率 否 是否获得有效值 是 接受信号 是 否 是否接受到有效值 LED显示 附图-3 从机程序框图 25 合肥师范学院 单片机课程实验与设计(任务书) 附图-4 运行结果 26

http://cellmall.net/shuangjixietong/270.html
锟斤拷锟斤拷锟斤拷QQ微锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷微锟斤拷
关于我们|联系我们|版权声明|网站地图|
Copyright © 2002-2019 现金彩票 版权所有