51单片机双机串行通信设计课程设计_第1页
51单片机双机串行通信设计课程设计_第2页
51单片机双机串行通信设计课程设计_第3页
51单片机双机串行通信设计课程设计_第4页
51单片机双机串行通信设计课程设计_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、*实践教学*课程设计题 目51单片机双机串行通信设计专业班级:姓 名:学 号:指导教师:成 绩:、八 、-前言在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式 系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤 其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有 广泛的应用。同时, IBM PC 机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机 独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。串

2、行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统, 实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两 个单片机之间采用 RS-232 进行双击通信。在通信过程中,使用通信协议进行通信。关键字:51单片机串行通信 RS-232接口标准6毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下 进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方 外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供

3、过帮助和做出过 贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作者签名: 日期:指导教师签名: 日期:使用授权说明本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存 毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以 采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下, 学校可以公布论文的部分或全部内容。作者签名: 日 期:学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个

4、人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。作者签名:日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论 文。涉密论文按学校规定处理。作者签名:日期:年月日导师签名:日期:年月日目录前言 0目录 21 基本原理 51.1 串行通信与并行通信 51.2 串行

5、接口的基本特点 51.3 波特率选择 71.4 通信协议的使用 81.5 51 单片机的结构和作用 81.6 双机通信 92 系统分析 102.1 汇编语言和 C 语言的特点及选择 102.2 并行通信与串行通信的比较 102.3 串行通信程序设计的比较 102.4 同步通信与异步通信的区别 103 系统设计 123.1 设计要求 123.2 设计方案 123.3 硬件设计 123.4 软件设计 154 系统调试 24总结 26参考文献 271基本原理1.1串行通信与并行通信计算机与外界的信息交换称为通信。在通信领域内,有两种数据通信方式:并行通信 和串行通信。随着计算机网络化和微机分级分布式

6、应用系统的发展,通信的功能越来越 重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括 计算机与外部设备,如终端、打印机和磁盘等设备之间的传输。串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一 个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机 与计算机、计算机与外设之间的远距离通信。在计算机和终端之间的数据传输通常是靠电缆或信道上的电流或电压变化实现的。 如果一组数据的各数据位在多条线上同时被传输,这种传输方式称为并行通信。0100 1 00 1源TLTL终点八、(b)串行通信(a)并行通信图1-1串行通信与并行通信的

7、区别1.2串行接口的基本特点MCS-51单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的 I/0电路;工作方式1多用于双机之间或与外设电路的通信; 方式2、3除有方式1的功能外, 还可以作多机通信,以构成分布式多微机系统。串行端口有两个控制寄存器 SCON PCON用于设置工作方式、发送或接收的状态、特征 位、数据传送波特率每秒传送的位数以及作为中断标志等。串行端口有一个数据寄存器SBUF在特殊功能寄存器中的字节地址为 99H,该寄存器为发 送和接收所共用。串行端口的波特率可以用程序来控制。在不同

8、工作方式中,由时钟振荡频率的分频值或由定时器T1的定时溢出时间确定,使用十分方便灵活。串口控制寄存器输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是串行 发送来的一帧数据的开始位 0,从而开始接收一帧数据。只有当 8 位数据接收完,并检测到 高电平停止位后,只有满足(R1)=0 :(SM2)=0或接收到的第9位数据为1时,停止位才 进入RB8 8位数据才能进入接收寄存器,并由硬件置位中断标志 RI;否则信息丢失。所以 在方式1接收时,应先用软件清零 RI和SM2标志。1. 方式 2方式2为固定波特率的11位UART方式。它比方式1增加了一位可程控为1或0的第 9

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位数据 才能进入接收寄存器,并由硬件置

10、位中断标志Ri;否则信息丢失。且不置位 RI。2. 工作方式 3方式3为波特率可变的11位UART方式。除波特率外,其余与方式 2相同。 波特率的选择如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在MCS-51 串行口的四种工作方式中, 方式0和2的波特率是固定的, 而方式 1和3的波特率是可变的, 由定时器 T1 的溢出率控制。1> 方式 1方式 1 的波特率固定为主振频率 的 1/12。2> 方式 2方式2的波特率由PCON中的选择位SMO来决定,可表示为:波特率 =2sMoD< fosc / 64也就是当SMOD=W,波特率为1/32X fosc

11、,当SMOD=I0,波特率为1/64X fosc。3方式1和方式3定时器T1作为波特率发生器,其公式如下:波特率=2SMO/32X定时器T1溢出率T1溢出率=T1计数率/产生溢出所需的周期数式中T1计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1计数率为Fosc/2 :当工作于计数器状态时,T1计数率为外部输入频率,此频率应小于 Fosc/24。产生溢出所需周期与定时器 T1的工作方式、T1的预置值有关。定时器T1工作于方式O:溢出所需周期数=8192-X定时器T1工作于方式1:溢出所需周期数=65536-X定时器T1工作于方式2:溢出所需周期数=256-X因为方式2为

12、自动重装入初值的8位定时器/计数器模式,所以用它来做波特率发生 器最恰当。这种方式下,T1的溢出率次/秒计算式可以表示为:T1 溢出率=Fsoc/ 12256-X1.3波特率选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数 (bits/second )。MCS-51 串行端口在四种工作模式下有不同的波特率计算方法。其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式 1为 例来说明串口通信波特率的选择。在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器 工作于模式2 (自动再加模式)。在此模式下波特

13、率计算公式为:波特率=(1+SMOD* 晶振频率 / (384* (256-TH1)其中,SMO寄存器PCON勺第7位,称为波特率倍增位; TH定时器的重载值。在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的 运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的 通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小 的频率进行通信。下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz设置SMOD=1即波特率倍增)。则TH1=256-62500/ 波特率根据波特率取值表,

14、我们知道可以选取的波特率有:1200, 2400, 4800, 9600, 19200。 列计数器重载值,通信误差如下表:表1-2通信误差表菠特率汗数器重载值TH1波特率误差12002W5? IS24002300,16K4SOO2430.1釀960024S6.99%192002538.51%因此,在通信中,最好选用波特率为1200, 2400, 4800中的一个1.4通信协议的使用通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明 白对方的意图,以进行下一步动作。假定我们需要在 PC机与单片机之间进行通信,在双方程 式设计过程中,有如下约定:0xA1 :单片机读取

15、P0端口数据,并将读取数据返回 PC机;0xA2 :单片机从PC机接收一段控制数据;0xA3 :单片机操作成功信息。在系统工作过程中,单片机接收到 PC机数据信息后,便查找协议,完成相应的操作。当单片 机接收到0xA1时,读取P0端口数据,并将读取数据返回 PC机;当单片机接收到0xA2时, 单片机等待从PC机接收一段控制数据;当PC接收到0xA3时,就表明单片机操作已经成功。1.551单片机的结构和作用51单片机的串行接口是一个全双工的接口, 它可以作为UART(通用异步接受和发送器) 用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下: 数据缓冲器(SBUF接受或发送的数据都要先

16、送到 SBUF缓存。有两个,一个缓存,另一个接受,用同一个 直接地址99H,发送时用指令将数据送到 SBUF即可启动发送:接收时用指令将 SBUF中接 收到的数据取出。串行控制寄存器(PCONSCON用于串行通信法师的选择,首发控制及状态指示。利用AT89C51芯片、复位电路、时钟电路、LED数码管等,使A机控制B机的两个LED 闪烁,B机控制A机的数码管加一显示。使用 DS18B20温度传感器,由B机测量温度后由A机 显示.把P1 口的高7位与数码管相连,绿灯表示通行方向。P2口与LED显示器相连,用来输出显示的数字。外围电路MAX2 132外ffl电路1.6 双机通信两台机器的通信方式可分

17、为单工通信、半双工通信、双工通信,他们的通信原理及通信 方式为:单工通信:是指消息只能单方向传输的工作方式。单工通信信道是单向信道,发送端和 接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能 发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。通信双方采用“按 讲”(Push To Talk,PTT)单工通信属于点到点的通信。根据收发频率的异同,单工通信可分 为同频通信和异频通信。半双工通信:这种通信方式可以实现双向的通信,但不能在两个方向上同时进行, 必须轮流交替地进行。也就是说,通信信道的每一段都可以是发送端,也可以是接端。 但同一时刻里,信息只能有

18、一个传输方向。如日常生活中的例子有步话机通信等。双工通信:双工通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的 同时也能听,边说边听。 这种发射机和接收机分别在两个不同的频率上能同时进行工作 的双工机也称为异频双工机。双工机的特点是使用方便,但线路设计较复杂,价格也较352 系统分析2.1 汇编语言和 C 语言的特点及选择 本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环 节。在单片机的应用系统程序设计时,常用的是汇编语言和 C 语言。主机硬件,程序可读性 和可一直性比较差。而C语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活, 运算方便,表达花

19、类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由 度大,有很好的可重用性,可移植性等特点。本着学习和创新的精神,我们采用两种语言分 别编写了程序。2.2 并行通信与串行通信的比较计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。 51单片机用 4 个接口与外界进行数据输入与数据输出就是并行通信,并行通信得特点是传输信 号的速度快,但所用的信号线不较多,成本高,传输的距离较近。串行通信的特点是只用两 条信号线即可完成通信,成本低,传输的距离较远。2.3 串行通信程序设计的比较串行通信程序设计主要有微机发送接收程序和单片机发送接收程序。微机发送接收程序复杂难

20、懂,操作不便。单片机发送接收程序简单易懂,操作方便。故而,此系统采用后者。2.4 同步通信与异步通信的区别“异步通信”是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都 没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任 意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位 和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简 单、便宜,但传输效率较低。异步通信也可以是以帧作为发送的单位。接收端必须随时做好接收帧的准

21、备。这是,帧 的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。这也称为帧定界。 帧定界还包含确定帧的结束位置。这有两种方法。一种是在帧的尾部设有某种特殊的比特组 合来标志帧的结束。或者在帧首部中设有帧长度的字段。需要注意的是,在异步发送帧时, 并不是说发送端对帧中的每一个字符都必须加上开始位和停止位后再发送出去,而是说,发 送端可以在任意时间发送一个帧,而帧与帧之间的时间间隔也可以是任意的。在一帧中的所 有比特是连续发送的。 发送端不需要在发送一帧之前和接收端进行协调。 每个字符开始发送 的时间可以是任意的 t0 0 1 1 0 1 1 0 起始位结束位 t 每个帧开始发送的时

22、间可以是任意的 以字符为单位发送以帧为单位发送帧开始帧结束“同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。收发双 方不停地发送和接收连续的同步比特流。但这时还有两种不同的同步方式。一种是使用全网 同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。另一种是使用准同步, 各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。3 系统设计3.1 设计要求在本设计中,要求完成51单片机与串口的线路连接、并用 C语言编写程序实现PC机与51 单片机通过串口实现异步通信,并能根据设置调整异步传行通信参数。3.2 设计方案本次设计,对于两片89C51,采用RS-23

23、2进行双机通信。发送方的数据由串行口 TXD段 输出,经过电平转换芯片 MAX232各TTL电平转换为RS-232点评输出,经过传输线将信号传 送到接收端。接收方也是用 MAX232芯片惊醒电平转换后,信号到达接收方串行口的接收端。 接收方接收后,在数码管上显示接收的信息。软件部分,通过通信协议进行发送接收,主机先送 AAH给从机,当从机接收到 AAH后,向主 机回答BBH主机收到BBH后就把数码表中的10个数据送给从机,并发送检验和。从机收到 16 个数据并计算接收到数据的检验和,与主机发送来的检验和进行比较,若检验和相同则发 送00H给主机;否则发送FFH给主机,重新接受。从机收到16个正

24、确数据后送到一个数码管 显示。3.3 硬件设计AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。 单片机的可擦除只读存储器可以反复擦除 1000次。该器件采用ATMEI高密度非易失存储器制 造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁 存储器组合在单个芯片中,ATME的 AT89C51是一种高效微控制器,AT89C2051是它的一种精 简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。A、B两台51

25、单片机机通过串行接口相连,B机的七段数码管显示其接收到(A机发出) 的数字;而A机的七段数码管则显示其接收到(B机发出)的数字。电路原理图如下所示。C122pFU119C20R1m xir一笳帧肌悴>XTAL1XTAL2C3IQlfRCTAPQOD 口PQ-UADIPCSRD2P03RD5PU3CHP0J5RD5 PCJWftDCKJLTWDT22pFX2CRY3FTALISP&EMALCEA1 J31 . 11 21 J1 11 51 J61 T PPPP卩PPPATB0CS1U2>XTAL1XTAL2RSTBPSEN"ALE苗P1D P1L1P12P1JPt.

26、iP15PiJ6P1.7ATB8CS1psnmsP2.1JW9 P22nia P23M1 P2.iLft12P2Sft13P2JSWH P2TJM5F3Hff!XD FgjJTDCD PlflNTO-FJ3flNlTP3.4HHP35nriM.T/RD"PDHMDD PD-mD1 PDftD2 叩朋CD PD_i.D« PDJSMDS PDJ&ftD6 PDJDTP2JKWSP2.1ffi9 P22Jft1Q P23mi1 P2.4Jft12 P2SM3 P2J6WU P2.7Jft1SF3H/RXD 卩 3.1JTXD FllNTP3.3flNlTP3.4/TDP

27、3J5/T1P3JSMP3.7/RT11-111E -if在桌面上双击图标打开ISIS 7 Professional窗口。在器件选择按钮中单击“P”钮,或执行菜单命令 库”一拾取元件/符号”添加如下表所示的元件。表3-1元件选择表51单片机AT89C51二片晶体 CRYSTAL 11.0592MHz 二只瓷片电容CAP 22pF四只电解电容CAP-ELEC 10uF二口-二只电阻RES 10K二只双列电阻网络Rx8 300R( Q)二口-二只七段数码管7SEG-MPX1-CA二只.11IKPioINTj INTOT,ToEA/VP10RXDTX0 AI.L/PPSENRESET-114rd6k

28、VR11迈29图3-2AT89C51管脚图管脚说明: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 口被外部下拉为低电平时,将输出电流,这是由 于内部上

29、拉的缘故。在 FLASH编程和校验时,P1 口作为第八位地址接收。P2 口: P2 口为一 个内部上拉电阻的8位双向I/O 口,P2 口缓冲器可接收,输出4个TTL门电流,当P2 口被 写“ 1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2 口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2 口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2 口输出地址的高八位。在给出地址“ T时,它利用内部 上拉优势,当对外部八位地址数据存储器进行读写时,P2 口输出其特殊功能寄存器的内容。P2 口在FLASH编程和校验时接收高八位地址信号和控制信号。P3 口:

30、P3 口管脚是8个带内部上拉电阻的双向I/O 口,可接收输出4个TTL门电流。当P3 口写入“ T后,它们被内部 上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3 口将输出电流(ILL)这是由于上拉的缘故。P3 口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能P3.0 RXD(串行输入口) P3.1 TXD (串行输出口) P3.2 /INTO (外部中断0)P3.3 /INT1 (外部中断1)P3.4 T0 (记时器0外部输入) P3.5 T1 (记时器1外部输入)P3.6 /WR (外部数据存储器写选通)P3.7 /RD (外部数据存储器读选通) P3 口

31、同时为闪烁编程和编程校验接收一些控制信号。RST:复位输入。当振荡器复位器件时,要保持RSTW两个机器周期的高电平时间。ALE/PROG当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。 然而要注意的是: 每当用作外部数据存储器时, 将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8E!地址上置0。此时,ALE只有在执行 MOV,MOV指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 A

32、LE禁止,置位无效。/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间, 每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出 现。/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH,不管是否 有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET当/EA端保持高电平时, 此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP。XTAL1: 反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2来自反向振荡器的输出。振荡器特性:XTAL1和XTAL2分别为反向放大器的输

33、入和输出。该反向放大器可以配置为片内振 荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必 须保证脉冲的高低电平要求的宽度。在工具栏中单击虚拟仪器按纽, 再在对象选择器中选择虚拟终端 VIRTUALTERMINA,L 放置两个虚拟终端。若用Proteus软件进行仿真,则上图中的晶振和复位电路以及U1、U2的31脚,都可以不画,它们都是默认的。在 ISIS 原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中 单击POWE和GROUND置电源和地。放置好元件后,布好线

34、。左键双击各元件,设置相应元 件参数,完成电路图的设计。最后将其保存的文件名为“串1.DSN”。3.4 软件设计A、B两机进行异步串行通信,当B机接收到A机发出的数据后,一方面通过其数码管显 示,另外加上偏移量后发出。当 A机收到B机发出的数据后,一方面通过其数码管显示,另 外经延时后再发出下一个数据。 A、B两机的流程图如下所示。(1)发送端程序流程图(2)接收方程序流程图主程序A B两台51单片机的异步串行接收采用查询方式,它们详细的C51程序如下所示/A机程序#i nclude<reg51.h>/包含单片机寄存器的头文件un sig ned char code ddata=0

35、xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e; 0,1,2,3,4.E,F的段码*函数功能:发送一个字节数据*/void Send(unsigned char dat)SBUF=dat;While(TI=0); / 等待TI=0;/*函数功能:接收一个字节数据*/unsigned char Receive(void)unsigned char dat;while(RI=0); / 等待,直至接收完毕( RI=1 )RI=0; / 为了接收下一帧数据,需将 RI 清 0 dat=SBU

36、F; / 将接收缓冲器中的数据存于 datreturn dat;/* 函数功能:延时约 150ms*/void delay(void)unsigned char m,n;for(m=0;m<200;m+)for(n=0;n<250;n+)J/*函数功能:主函数*/void main(void)unsigned char i;TMOD=0x20; /TMOD=0010 OOOOB 定时器 T1 工作于方式 2SCON=0x50; SCON=0101 0000B 串口工作方式 1,允许接收PCON=0x00;TH1=0xfd; /定时器TH1赋初值,波特率9600TL1=0xfd; /

37、 定时器 TL1 赋初值TR1=1;/ 启动定时器 T1while(1)for(i=0;i<8;i+)Send(i); / 发送数据 iP0=ddataReceive(); /将接收到的数据送 P0 口显示delay(); /600ms 后发送下一个数据delay();delay();delay();/B 机程序#include<reg51.h> / 包含单片机寄存器的头文件unsigned char code ddata=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x

38、8e; /0,1,2,3,4E,F的段码*函数功能:发送一个字节数据*/void Send(unsigned char dat)SBUF=dat;while(TI=0); / 等待TI=0;/*函数功能:接收一个字节数据*/unsigned char Receive(void)unsigned char dat;while(RI=0); / 等待,直至接收完毕( RI=1 )RI=0; / 为了接收下一帧数据,需将 RI 清 0 dat=SBUF; / 将接收缓冲器中的数据存于 datreturn dat;/*函数功能:主函数*/void main(void)unsigned char dat

39、;TMOD=0x20; / 定时器 T1 工作于方式 2SCON=0x50; SCON=0101 OOOOB 串口工作方式 1,允许接收(REN=)PCON=0x00;TH1=0xfd; / 定时器 TH1 赋初值,波特率 9600TL1=0xfd; / 定时器 TL1 赋初值TR1=1;/ 启动定时器 T1while(1)dat=Receive();P0=ddatadat; /将接收到的数据送 P0 口显示Send(dat+8);/ 偏移量为 +8打开Keil程序(本人使用的是Keil8.05中文版),执行菜单命令“工程新建工 程”创建“串1”项目,并选择单片机型号为 AT89C51执行菜单

40、命令“文件新建”创 建文件,输入A机的C语言源程序,保存为“ A.C”。在Project Workspace窗口中右击源代 码组1,选择“添加文件到组源代码组 I '”将源程序“ A.C”添加到项目中。在Keil中执行执行菜单命令“工程”-“创建目标”,编译源程序。如果编译成功, 则在“ Output Window ”的“创建”窗口中显示没有错误,并创建了“ A.HEX文件(注意此 时可执行文件的输出路径和文件名)。然后在 Project Workspace 窗口中右击源代码组 1,选择“删除组源代码组 l '和它 的文件”删除源程序“ A.C”。再次执行菜单命令“文件”-“新

41、建”创建文件,输入B机的C语言源程序,保存为“ B.C”。在Project Workspace窗口中右击源代码组1,选择“添加 文件到组源代码组I '”将源程序“ B.C”添加到项目中。再次在Keil中执行执行菜单命令“工程”-“创建目标”,编译源程序。如果编译成功,则在“ Output Window”的“创建”窗口中显示没有错误,并创建了“B.HEX文件4系统调试关于Proteus与Keil的联合仿真调试,可参见我以前所写的博文或其它参考资料。需注意Proteus的ISIS中A、B机的CPUS性中Program File 与Keil的卩Vision3中的路径和文件名要一致。启动Pro

42、teus的ISIS,并将其放在屏幕的右上角(可将原理图放大到合适大小);再启 动Keil的卩Vision3,并将其放在屏幕的左下角。Keil调试环境。同时,在Keil中执行菜单命令“调试启动/停止调试”,进入 在Proteus ISIS 的窗口中可看出Proteus也进入了程序调试状态。在Keil代码编辑窗口中设置相应断点,断点的设置方法:在需要设置断点语句前双击鼠 标左键,可设置断点;再次双击,可取消该断点。在Keil中按F5键(或点击“运行”快捷按钮)运行程序。A B机的七段数码管将分别显示不断变化的数值,同时监视 A、B机的虚拟终端也将显示本机发出的数据,如下图所示。3 3o O1 1

43、o O o O o OO3O02O007O065O04076O5O图 4-1调试结果或可以点击单步、运行到光标处、全速运行等快捷按钮,以及同时观察工程窗口寄存器 页面、存储器窗口等,来进行仿真调试。在A、B机的程序调试中,可以按照以下顺序进行: A机的发送程序、B机的接收程序、B 机的发送程序、A机的接收程序。然后再进行 A、B机的联合调试。总结紧张而忙碌的课程设计马上就要结束了,虽然在这段时间里很忙碌,但在这忙碌的过程 中却收到了很多收获。经过本次的课程设计,我了解了单片机串行通信的基本知识,也学习到了基于单片机的C 语言和汇编语言程序设计,对于以后的学习和工作有很大帮助。在这次的课程设计过

44、程中,我遇到了一些困难,也遇到过一些疑惑,比如开始时,由于 发送端和接收端的通信协议没 -有做好,导致数据不能正常传输。在解决问题的过程中,我对 于通信协议有了更深刻的认识,也锻炼了自己独立思考和团队协作的能力。参考文献1】胡伟.单片机 C 程序设计及应用实例 .北京:人民邮电出版社, 20032】韩毅刚 .计算机通信技术 .北京:北京航空航天大学出版社, 20073】李朝青 .单片机与 PC 机网络通信技术 .北京:北京航空航天大学出版社, 20074】胡洪波 .单片机原理与应用实验教程 .湘潭大学出版社, 2009.7学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下进行的研究工作所取得的成果。 尽我所知,除文中已经特别注明引用的内容和致谢的地方外, 本论文不包含任何其

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论