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

下载本文档

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

文档简介

1、 基于基于 at89c51 单片机的双机串行通信设计单片机的双机串行通信设计姓名:杨应伟学号:100110061专业:机械设计制造及其制动化 班级:机电二班 前前 言言单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。在测控系统和工程应用中,常遇到多项任务需同时执

2、行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,ibmpc 机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给 pc 机,pc 机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机

3、之间采用 rs-232 进行双击通信。在通信过程中,使用通信协议进行通信。在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,ibmpc 机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给 pc 机,pc 机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。 串行通信是单片机的一个重要应用,本次课程设

4、计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用 rs-232 进行双击通信。在通信过程中,使用通信协议进行通信。目目 录录前言.11 基本原理 .31.1 串行通信 .31.2 at89c51 的基本特点.41.3 波特率选择 .71.4 通信协议的使用 .81.5 双机通信 .82 总体设计 .1 10 02.1 设计目的 .102.2 设计要求 .102.3 设计方案 .103 硬件设计.113.1 51 单片机串行接口的结构.113.2 整体电路设计 .124 软件设计.135 联合调试.156 总结 .

5、16参考文献.17附录.181 基本原理1.1 串行通信计算机与外界的信息交换称为通信。在通信领域内,有两种数据通信方式:并行通信和串行通信。随着计算机网络化和微机分级 分布式应用 系统的发展,通信的功能越来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与 外部设备,如终端、打印机和磁盘等设备之间的传输。 串行通信是指使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与计算机、计算机与外设之间的远距离通信。 。串行通信1.2 at89c51 单片机的主要工作特性内含 4kb

6、 的 flash 存储器,擦写次数 1000 次;内含 28 字节的 ram;具有 32 根可编程 i/o 线;具有 2 个 16 位可编程定时器;具有 6 个中断源、5 个中断矢量、2 级优先权的中断结构;具有 1 个全双工的可编程串行通信接口;具有一个数据指针 dptr;两种低功耗工作模式,即空闲模式和掉电模式;具有可编程的 3 级程序锁定定位;at89c51 的工作电源电压为 5(10.2)v 且典型值为 5v,最高工作频率为24mhz.at89c51 各部分的组成及功能:振荡器和时钟电路数据存储器128 字节程序存储器14kbcpu两个 16 位定时器计数器中断控制总线扩展控制器并行可

7、编程i/o 口可编程串行口内部总线 1. 2.1 中央处理器(1) 运算器 运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元 alu、累加器 acc、b 寄存器、程序状态字 psw 和两个暂存器等。alu 是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。算术运算包括加、减、乘、除、增量、减量、bcd 码运算;逻辑运算包括“与” 、“或” 、 “异或” 、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。暂存器 1 和暂存器 2 是 alu 的两个输入,用于暂存参与运算的数据。alu 的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返

8、回到外部中断扩展控制p0 p1 p2 p3rxdtxd累加器;另一个是程序状态字 psw,用于存储运算和操作结果的状态。累加器是 cpu 使用最频繁的一个寄存器。acc 既是 alu 处理数据的来源,又是 alu 运算结果的存放单元。单片机与片外 ram 或 i/o 扩展口进行数据交换必须通过 acc 来进行。b 寄存器在乘法和除法指令中作为 alu 的输入之一,另一个输入来自 acc。运算结果存于 ab 寄存器中。(2) 控制器控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器 pc、pc 增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制

9、指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。at89c51 单片机中,pc 是一个 16 位的计数器,可对 64kb程序存储器进行寻址。复位时 pc 的内容是 0000h.(3)存储器单片机内部的存储器分为程序存储器和数据存储器。at89c51 单片机的程序存储器采用 4kb 的快速擦写存储器 flash memory,编程和擦除完全是电器实现。(4)外围接口电路 at89c51 单片机的外围接口电路主要包括:4 个可编程并行 i/o 口,1 个可编程串行口,2 个 16 位的可编程定时器以及中断系统等。at89c51 的工作原理:1. 引脚排列及功能at89c51 的封装形式

10、有 pdip,tqfp,plcc 等,现以 pdip 为例。 (1)i/o 口线 p0 口 8 位、漏极开路的双向 i/o 口。当使用片外存储器及外扩 i/o 口时,p0 口作为低字节地址/数据复用线。在编程时,p0 口可用于接收指令代码字节;程序校验时,可输出指令字节。p0 口也可做通用 i/o 口使用,但需加上拉电阻。作为普通输入时,应输出锁存器配置 1。p0 口可驱动 8 个 ttl 负载。p1 口 8 位、准双向 i/o 口,具有内部上拉电阻。 p1 口是为用户准备的 i/o 双向口。在编程和校验时,可用作输入低 8 位地址。用作输入时,应先将输出锁存器置 1。p1 口可驱动 4 个

11、ttl 负载。p2 8 位、准双向 i/o 口,具有内部上拉电阻。 当使用外存储器或外扩 i/o 口时,p2 口输出高 8 位地址。在编程和校验时,p2 口接收高字节地址和某些控制信号。p3 8 位、准双向 i/o 口,具有内部上拉电阻。 p3 口可作为普通 i/o 口。用作输入时,应先将输出锁存器置 1。在编程/校验时,p3 口接收某些控制信号。它可驱动 4 个 ttl 负载。(2)控制信号线 rst 复位输入信号,高电平有效。在振荡器稳定工作时,在 rst 脚施加两个机器周期以上的高电平,将器件复位。 ea/vpp 外部程序存储器访问允许信号 ea.当 ea 信号接地时,对 rom 的读操

12、作限定在外部程序存储器,地址为 0000h-ffffh;当 ea 接 vcc 时,对 rom 的读操作从内部程序存储器开始,并可延续至外部程序存储器。在编程时,该引脚可接编程电压 5v 或 12v。在编程校验时,该引脚可接 vcc。 psen 片外程序存储器读选通信号 psen,低电平有效。在片外程序存储器取指期间,当 psen 有效时,程序存储器的内容被送至 p0 口;在访问外部ram 时,psen 无效。 ale/prog 低字节锁存信号 ale.在系统扩展时,ale 的下降沿将 p0 口输出的低 8 位地址锁存在外接的地址锁存器中,以实现低字节地址和数据的分时传送。此外,ale 端连续输

13、出正脉冲,频率为晶振频率的 1/6,可做外部定时脉冲使用。 (3)外部晶振引线 xtal1 片内振荡器反向放大器和时钟发生线路的输入端。使用片内振荡器时,连接外部石英晶体和微调电容。xtal2 片内振荡器反相放大器的输出端。当使用片内振荡器时,外接石英晶体和微调电容。1.2.2 存储器组织和特殊功能寄存器at89c51 的存储器将程序存储器和数据存储器分开,并有各自的存储空间和访问指令。它有 4 个存储空间:片内存储器、片外存储器、片内数据存储器及片外存储器。1.2.3 时钟电路和工作时序(1) 振荡器电路原理 (2)振荡电路的接法1.3波特率选择 波特率(boud rate)就是在串口通信中

14、每秒能够发送的位数(bits/second)。mcs-51 串行端口在四种工作模式下有不同的波特率计算方法。其中,模式 0 和模式 2 波特率计算很简单,请同学们参看教科书;模式 1和模式 3 的波特率选择相同,故在此仅以工作模式 1 为例来说明串口通信波特率的选择。 在串行端口工作于模式 1,其波特率将由计时/计数器 1 来产生,通常设置定时器工作于模式 2(自动再加模式)。在此模式下波特率计算公式为: 波特率=(1+smod)*晶振频率/(384*(256-th1) 其中,smod寄存器 pcon 的第 7 位,称为波特率倍增位;&rf q2 q36pd振荡器xtal1xtal2xtal1

15、cndc2c1xtal2xtal1gndnc外部振荡器信号 th1定时器的重载值。 在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。 下面举例说明波特率选择过程:假设系统要求的通信频率在 20000bit/s 以下,晶振频率为 12mhz,设置 smod=1(即波特率倍增)。则 th1=256-62500/波特率。 根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,960

16、0,19200。列计数器重载值,通信误差如下表:表 1-2通信误差表因此,在通信中,最好选用波特率为 1200,2400,4800 中的一个。1.4 通信协议的使用 通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在 pc 机与单片机之间进行通信,在双方程式设计过程中,有如下约定: 0 xa1:单片机读取 p0 端口数据,并将读取数据返回 pc 机; 0 xa2:单片机从 pc 机接收一段控制数据; 0 xa3:单片机操作成功信息。 在系统工作过程中,单片机接收到 pc 机数据信息后,便查找协议,完成相应的操作。当单片

17、机接收到 0 xa1 时,读取 p0 端口数据,并将读取数据返回 pc机;当单片机接收到 0 xa2 时,单片机等待从 pc 机接收一段控制数据;当 pc 接收到 0 xa3 时,就表明单片机操作已经成功。1.5 双机通信两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原理及通信方式为:单工通信:是指消息只能单方向传输的工作方式。单工通信信道是单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。通信双方采用“按讲” (push to talk,ptt)单工通信属于点到点的

18、通信。根据收发频率的异同,单工通信可分为同频通信和异频通信。半双工通信:这种通信方式可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。也就是说,通信信道的每一段都可以是发送端,也可以是接端。但同一时刻里,信息只能有一个传输方向。如日常生活中的例子有步话机通信等。双工通信:双工通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的同时也能听,边说边听。这种发射机和接收机分别在两个不同的频率上能同时进行工作的双工机也称为异频双工机。双工机的特点是使用方便,但线路设计较复杂,价格也较高。2 总体设计2.1 设计目的1.通过设计相关模块充分熟悉 51 单片机的最小系统的组成和原理

19、;2.通过软件仿真熟悉 keil 和 proteus 的配合使用;3.通过软件编程熟悉 51 的 c51 编程规范;2.2 设计要求两片单片机之间进行串行通信,a 机将数据发送给 b 机,在 b 机的数码管上静态显示。2.3 设计方案 软件通过通信协议进行发送接收,主机接10,21,32,43,54,65,76,87,98,09 后给从机(从机静态显示),当从机接收到后,向从机发送代表 0-f 的数码管编码数组,相应显示10,21,32,43,54,65,76,87,98,09。3 硬件设计3.1 51 单片机串行接口的结构(1)数据缓冲器(sbuf)接受或发送的数据都要先送到 sbuf 缓存

20、。有两个,一个缓存,另一个接受,用同一直接地址 99h,发送时用指令将数据送到 sbuf 即可启动发送;接收时用指令将 sbuf 中接收到的数据取出。(2)串行控制寄存器(pcon)scon 用于串行通信方式的选择,收发控制及状态指示,各位含义如下:sm0sm1sm2rentb8rb8tirism0,sm1:串行接口工作方式选择位,这两位组合成 00,01,10,11 对应于工作方式 0、1、2、3。串行接口工作方式特点见下表sm0sm1工作方式功能波特率 0008 位同步移位寄存器(用于 i/o 扩展)forc/1201110 位异步串行通信(uart)可变(t1 溢出率*2smod/32)

21、10211 位异步串行通信(uart)forc/64 或 forc/3211311 位异步串行通信(uart)可变(t1 溢出率*2smod/32)sm2:多机通信控制位。ren:接收允许控制位。软件置 1 允许接收;软件置 0 禁止接收。tb8:方式 2 或 3 时,tb8 为要发送的第 9 位数据,根据需要由软件置 1 或清 0。rb9:在方式 2 或 3 时,rb8 位接收到的第 9 位数据,实际为主机发送的第9 位数据 tb8,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。ti:发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。ri:

22、接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。(3)输入移位寄存器接收的数据先串行进入输入移位寄存器,8 位数据全移入后,再并行送入接收 sbuf 中。(4)波特率发生器波特率发生器用来控制串行通信的数据传输速率的,51 系列单片机用定时器 t1 作为波特率发生器,t1 设置在定时方式。波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。(5)电源控制寄存器 pcon其最高位为 smod。3.2 整体电路设计51 单片机的串行接口是一个全双工的接口,它可以作为 uart(通用异步接受和发送器)用,也可以作为同步移位寄存器用,本

23、系统共用两块单片机,每块单片机均选用 at89s51,最小系统也都一样。由于两块单片机的主要任务是通信,为了得到准确的波特率,采用振荡频率为 11.0592mhz 的晶振,最终设计电路如下图 3 所示,发送方的数据由串行口 txd 段输出,经过传输线将信号传送到接收端。信号到达接收方串行口的接收端。接受方接收后,通过 p1 口在数码管上显示接收的信息。 4 软件设计通过通信协议进行发送接收,主机先送 cdh 给从机,当从机接收到 cdh 后,向主机回答 dch。主机收到 dch 后就把数码表 tab16中的 10 个数据送给从机,并发送检验和。从机收到 16 个数据并计算接收到数据的检验和,与

24、主机发送来的检验和进行比较,若检验和相同则发送 00h 给主机;否则发送 ffh 给主机,重新接受。从机收到 16 个正确数据后送到一个数码管显示。4.1 串行通信软件实现(1)串行口工作于方式 3;用定时器 1 产生 4800bit/s 的波特率,晶振频率为 11.0592mhz。(2)功能:将本机 rom 中数码表 tab16中的 16 个数发送到从机,并保存在从机内部rom 中,从机收到这 16 个数据后送到一个数码管循环显示。(3)通信协议:主机首先发送连络信号(cdh),从机接收到之后返回一个连络信号(dch)表示从机已准备好接收。(4)通信过程使用第九位发送奇偶校验位。(5)从机接

25、收到一个数据后,立即进行奇偶校验,若数据没有错误,则返回 00h,否则返回 ffh。(6)主机发送一个数据后,等待从机返回数据;若为 00h,则继续发送下一个数据,若为ffh,则重新发送数据。(1)程序流程图 (2)接收方程序流程图主程序开始检验和相等?程序初始化接收数据,计算检验和n发送 00h 至主机接收完成?n清除标志位发送 ffh,重新接收显示5 联合调试 在 protues 上进行仿真实验。首先使用 keilc 将编写完成的程序编译生成hex 文件,将 hex 文件烧录到两片单片机中,进行仿真实验,结果如下图所示,可以看到,接收端已将接受到的数据完整的显示了出来。注:注:1.仿真的过

26、程中并没有体现出单片机的最小系统的组成元素:时钟电路和复位电路,但是实际的硬件电路中这两部分是必不可少的,此外,在实际测试中,程序是事先烧进单片机里的.2.在数码管的共阴极与地之间接三极管是为了放大数码管的驱动电流,让数码管更加清楚的显示数据。6 课设中的心得体会经过繁忙而又紧张的课程设计,终于顺利的完成了设计任务。虽然在这段时间里每天都那么繁忙,但是在这忙碌的过程中却得到了许多的收获。经过课程设计,在查阅资料的过程中,学习了基于单片机的 c 语言程序设计,了解了单片机串行通信的基本知识,对于以后的学习和工作都有很大的益处。在学习的过程中,也遇到了一些困难,比如开始的时候,由于发送端和接收端的

27、通信协议没有做好,导致数据不能正确的传输,在解决问题的过程中,对于通信协议的实现有了深刻的认识。从最初拿到题目,分析设计要求以及实现的初步思路,然后去查阅资料进行更加具体的设计这次实验无疑要求我们团队协作,互相配合并且整体上比较全面的统筹设计。于是,初步规划后,我们开始将系统要实现功能的各个模块单独开来用 proteus 仿真,并最终将各个模块组合后整体调试。整个过程中我们在仿真上花费了较长时间,因为知道仿真成功是实现真正硬件电路的基础,仿真是从根本上检验设计者的设计逻辑以及思路的,很好的仿真才能使得设计系统在实现要求功能的基础上更加稳定、简单,仿真中,我们仔细斟酌了电路布线的合理性。在焊接过

28、程中,由于之前的统筹布局使得我们的电路布线简洁、明了,需要注意的是,由于焊接的粗心,有些焊点需要一再解焊导致焊盘脱落,而且对于数码管管脚焊接方式也是值得进一步改进的,这便是我今后所要更加注意的,争取全心全意的焊接电路,不要因为某些粗心的原因是电路焊接发生错误,在那个下午坚持不懈的努力下我们终于完成了任务,可以说是大部分的任务都是在那个下午一气呵成的。总的来说,在实验中,我们尽量统筹并使得团队协作发挥更大作用,第一周的周三分发元器件后,在第二天我们组便基本上完成了设计要求的基本功能,于是,我们利用剩下的时间去调试硬件以及更加深入的总结题目的意义。最后,作为本次实验小组的组长,我对大家辛勤劳作默契

29、配合的合作精神深感欣慰,希望以后得到好的继承与发扬!参考文献【1】 胡伟.单片机 c 程序设计及应用实例.北京:人民邮电出版社,2003【2】 韩毅刚.计算机通信技术.北京:北京航空航天大学出版社,2007【3】 李朝青.单片机与 pc 机网络通信技术.北京:北京航空航天大学出版,2007【4】 胡洪波.单片机原理与应用实验教程.湘潭大学出版社,2009.7【5】单片机课程设计指导书 皮大能 北京理工大学出2012.7【6】8051 单片机实践与应用 吴金戎 清华大学出版社 2003.8【7】单片机技术基础教程与实践 夏路易 电子工业出版 2008.1【8】单片机原理及应用 张毅刚 高等教育出

30、版社 2012.11附录附录程序清单#include /字形码*按列取模char code table=0 x5e,0 x22,0 x52,0 xac,0 x7e,0 xa1,0 x52,0 xbf,0 x7e,0 xa8,0 xd2,0 xa5,0 x5e,0 x22,0 x00,0 x04,0 x7f,0 xf8,0 x46,0 x60,0 x41,0 x80,0 x46,0 x60,0 xff,0 xfc,0 x40,0 x02,0 x00,0 x0e,0 x00,0 x00,0 x08,0 x20,0 x30,0 x20,0 x20,0 x40,0 x0aa,0 x40,0 xaa,0

31、 x90,0 xaa,0 x90,0 xa1,0 x54,0 xfe,0 x32,0 xa1,0 x15,0 xaa,0 x98,0 xaa,0 x90,0 xaa,0 x40,0 x20,0 x40,0 x28,0 x20,0 x30,0 x20,0 x00,0 x00,0 x02,0 x00,0 x06,0 x00,0 x7a,0 xfc,0 x12,0 x80,0 x12,0 x80,0 xff,0 xff,0 x12,0 x88,0 x32,0 x84,0 x16,0 xf8,0 x02,0 x00,0 x1f,0 xe0,0 x00,0 x02,0 x00,0 x01,0 xff,0 xfe,0 x00,0 x00,0 x00,0 x00,0 x01,0 x00,0 x02,0 x00,0 x04,0 x00,0 x1f,0 xff,0 xe1,0

温馨提示

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

评论

0/150

提交评论