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

下载本文档

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

文档简介

1、 *实践教学实践教学*XXXXX 大学大学计算机与通信学院2013 年秋季学期 通信系统综合训练 课程设计题题 目:目: 51 单片机双机串行通信设计 专业班级:专业班级: 通信工程 x 班 姓姓 名:名: xx 学学 号:号: xx 指导教师:指导教师: xx 成成 绩:绩: 摘要摘要双机通信的实质就是解决两单片机串行通信问题。针对于 89C51 单片机全双工异步串行通信口,我们采用单片机直接交叉互连的串行通信方式。考虑到本设计应用于短距离传输、两单片机具有相同的数据格式及电平且为使设计简单,我们最终决定本系统采用方式一单片机直接交叉连接的串行通信方式,上位机发送的数据由串行口 TXD 端输

2、出,直接由下位机的串行口数据接收端 RXD 接收。本设计的硬件电路分为数码管显示模块、单片机工作的基本复位电路以及晶振模块。编程采用 C 语言加以实现。通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用 RS-232 进行双向通信。关键字关键字:51 单片机 串行通信 RS-232 接口标准目录目录前言.11 基本原理.21.1 串行通信概述 .21.2 串行通信的分类 .21.3 串行通信技术标准 .21.4 串行通信协议 .31.5 串行通信与并行通信区别 .41.6 MCS-51 串行接口的基本特点.51.7 波特率选择 .71.8 通信协议的使用 .71.9 51

3、 单片机的结构和作用.71.10 双机通信 .82 系统分析.92.1 汇编语言和 C 语言的特点及选择 .92.2 并行通信与串行通信的比较 .92.3 串行通信程序设计的比较 .92.4 同步通信与异步通信的区别 .93 系统设计.113.1 设计要求 .113.2 设计方案 .113.3 硬件设计 .113.4 软件设计 .144 系统调试.20总结.21参考文献.22致谢.231前言前言随着电子技术的飞速发展,单片机也步如一个新的时代,越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路。 对于一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、

4、功能强大的低消耗系统、加密系统等等。如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比,因此,多种异型单片机系统设计渐渐成为一种新的思路,单片机技术作为计算机技术的一个重要分支,由于单片机体积小,系统运行可靠,数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。但在一些相对复杂的单片机应用系统中,仅仅一个单片机资源是不够的,往往需要两个或多个单片机系统协同工作。这就对单片机通信提出了更高要求。单片机之间的通信可以分为两大类:并行通信和串行通信。串行通信传输线少,长距离传输时成本低,且可以利用数据采集方便灵活,成本低廉等优点,在通信中发挥着越来越重要的作用。所

5、以本系统采用串行通信来实现单片机之间可靠的,有效的数据交换。21 1 基本原理基本原理1.1 串行通信概述1.1.1 串行通信的特点 在远程通信和计算机科学中,串行通信是指在计算机总线或其他数据通道上,每次传输一个位元数据,并连续进行以上单次过程的通信方式。与之对应的是并行通信,它在串行端口上通过一次同时传输若干位元数据的方式进行通信。一位接一位地顺序传送。这样一个字节的数据要分 8 次由低位到高位按顺序一位位地传送。由此可见,串行通信的特点如下:1、节省传输线,这是显而易见的。尤其是在远程通信时,此特点尤为重要。这也是串行通信的主要优点;2、数据传送效率低。与并行通信比,这也这是显而易见的。

6、这也是串行通信的主要缺点。 串行通信被用于长距离通信以及大多数计算机网络,在这些应用场合里,电缆和同步化使并行通信实际应用面临困难。凭借着其改善的信号完整性和传播速度,串行通信总线正在变得越来越普遍,甚至在短程距离的应用中,其优越性已经开始超越并行总线不需要串行化元件等缺点。 1.2 串行通信的分类 1.2.1 异步通信 所谓异步通信,是指数据传送以字符为单位,字符与字符间的传送是完全异步的,位与位之间的传送基本上是同步的.异步串行通信的特点可以概括为:以字符为单位传送信息;相邻两字符间的间隔是任意长; 接收时钟和发送时钟只要相近就可以。 异步方式特点简单的说就是:字符间异步,字符内部各位同步

7、。 1.2.2 同步通信 所谓同步通信,是指数据传送是以数据块(一组字符)为单位,字符与字符之间、字符内部的位与位之间都同步.同步串行通信的特点可以概括为:以数据块为单位传送信息;在一个数据块(信息帧)内,字符与字符间无间隔;接收时钟与发送进钟严格同步。 1.3 串行通信技术标准 1.3.1 数据传输率 (1)比特率和波特率:比特率是指每秒传输的二进制位数,用 bps(bit/s)表示。波特率是指每秒传输的符号数,若每个符号所含的信息量为 1 比特,则波特率等于比特率。在计算机中,一个符号的含义为高低电平,它们分别代表逻辑“1”和逻辑“0” ,所以每个符号所含的信息量刚好为 1 比特,因此在计

8、算机通信中,常将比特率称为波特率,即:1 波特(B)=1 比特(bit)=1 位/秒(1bps)例如:电传打字机最快传输率为每秒 10 个字符/秒,3每个字符包含 11 个二进制位,则数据传输率为:11 位/字符10 个字符/秒=110 位/秒=110 波特(Baud)计算机中常用的波特率是:110、300、600、1200、2400、4800、9600、19200、28800、33600,目前最高可达56Kbps. (2)位时间 Td:位时间是指传送一个二进制位所需时间,用 Td 表示。Td = 1/波特率 = 1/B (3)发送时钟和接收时钟 在串行通信中,二进制数据以数字信号的信号形式出

9、现,不论是发送还是接收,都必须有时钟信号对传送的数据进行定位。在 TTL 标准表示的二进制数中,传输线上高电平表示二进制 1,低电平表示二进制 0,且每一位持续时间是固定的,由发送时钟和接收时钟的频率决定。 1)发送时钟 发送数据时,先将要发送的数据送入移位寄存器,然后在发送时钟的控制下,将该并行数据逐位移位输出。通常是在发送时钟的下降沿将移位寄存器中的数据串行输出,每个数据位的时间间隔由发送时钟的周期来划分。 2)接收时钟 在接收串行数据时,接收时钟的上升沿对接收数据采样,进行数据位检测,并将其移入接收器的移位寄存器中,最后组成并行数据输出。 1.3.2 波特率因子 接收时钟和发送时钟与波特

10、率有如下关系:F=nB 这里 F 是发送时钟或接收时钟的频率;B 是数据传输的波特率;n 称为波特率因子。设发送或接收时钟的周期为 Tc,频率为 F的位传输时间为 Td,则:Tc=1/F,Td =1/B 得到:Tc=T/n 在实际串行通信中,波特率因子可以设定。在异步传送时,n = 1,16,64 实际常采 n=16,即发送或接收时钟的频率要比数据传送的波特率高 n 倍。在同步通信中波特率因子必等于 1。 1.4 串行通信协议 包括 RS-232-C、RS-422、RS485、USB 等。 RS-232-C、RS-422 与 RS-485 标准只对接口的电气特性做出规定,不涉及接插件、电缆或协

11、议。USB 是近几年发展起来的新型接口标准,主要应用于高速数据传输领域。 1.4.1 RS-232-C 串口 RS-232-C 也称标准串口,是目前最常用的一种串行通讯接口。它是在 1970 年由美国电子工业协会(EIA)联合贝尔系统、 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它的全名是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进4制数据交换接口技术标准” 。传统的 RS-232-C 接口标准有 22 根线,采用标准 25 芯 D 型插头座。自 IBM PC/AT 开始使用简化了的 9 芯 D 型插座。至今 25 芯插头座现代应用中已经很少采用。电脑一般

12、有两个串口:COM1 和 COM2,9 针 D 形接口通常在计算机后面能看到。现在有很多手机数据线或者物流接收器都采用 COM 口与计算机相连。 1.4.2 RS-422 为改进 RS-232 通信距离短、速率低的缺点,RS-422 定义了一种平衡通信接口,将传输速率提高到 10Mb/s,传输距离延长到 4000 英尺(速率低于 100kb/s 时) ,并允许在一条平衡总线上连接最多 10 个接收器。RS- 422 是一种单机发送、多机接收的单向、平衡传输规范,被命名为 TIA/EIA-422-A 标准。 1.4.3 RS-485 为扩展应用范围,EIA 又于 1983 年在 RS-422 基

13、础上制定了 RS-485 标准,增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,后命名为 TIA/EIA-485-A 标准。 1.4.4 RJ-45 接口 是以太网最为常用的接口,RJ45 是一个常用名称,指的是由 IEC(60)603-7 标准化,使用由国际性的接插件标准定义的 8 个位置(8 针)的模块化插孔或者插头。 1.4.5 Universal Serial Bus(通用串行总线) 简称 USB,是目前电脑上应用较广泛的接口规范,由Intel、Microsoft、Compaq、IBM、NEC、Northern

14、 Telcom 等几家大厂商发起的新型外设接口标准。USB 接口是电脑主板上的一种四针接口,其中中间两个针传输数据,两边两个针给外设供电。USB 接口速度快、连接简单、不需要外接电源,传输速度 12Mbps,新的 USB 2.0可达 480Mbps;电缆最大长度 5 米,USB 电缆有 4 条线:2 条信号线,2 条电源线,可提供 5伏特电源,USB 电缆还分屏蔽和非屏蔽两种,屏蔽电缆传输速度可达 12Mbps,价格较贵,非屏蔽电缆速度为 1.5Mbps,但价格便宜;USB 通过串联方式最多可串接 127 个设备;支持热插拔。最新的规格是 USB 3.0。 1.5 串行通信与并行通信区别计算机

15、与外界的信息交换称为通信。在通信领域内,有两种数据通信方式: 并行通信和串行通信。随着计算机网络化和微机分级 分布式应用 系统的发展,通信的功能越来越重要。通信是指计算机与外界的信息传输,既包括计算机与计算机之间的传输,也包括计算机与 外部设备,如终端、打印机和磁盘等设备之间的传输。 串行通信是指 使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。其只需要少数几条线就可以在系统间交换信息,特别适用于计算机与5计算机、计算机与外设之间的远距离通信。 在计算机和终端之间的数据传输通常是靠电缆或信道上的 电流或电压变化实现的。如果一组数据的各数据位在多条线上同时被传输,这种

16、传输方式称为并行通信。终点源010010018 位数据线(a)并行通信0100 1 00 1源(b)串行通信终点图 1 串行通信与并行通信的区别1.6 MCS-51 串行接口的基本特点 MCS-51 单片机的串行端口有 4 种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同场合的需要。其中,方式 0 主要用于外接移位寄存器,以扩展单片机的IO 电路;工作方式 1 多用于双机之间或与外设电路的通信;方式 2、3 除有方式 1 的功能外,还可以作多机通信,以构成分布式多微机系统。 串行端口有两个控制寄存器 SCON、PCON,用于设置工作方式、发送或接收的状态、特征位、数据传送波特率

17、每秒传送的位数以及作为中断标志等。串行端口有一个数据寄存器 SBUF 在特殊功能寄存器中的字节地址为 99H,该寄存器为发送和接收所共用。串行端口的波特率可以用程序来控制。在不同工作方式中,由时钟振荡频率的分频值或由定时器 T1 的定时溢出时间确定,使用十分方便灵活。串口控制寄存器输入:在(REN)=1 时,串行口采样 RXD 引脚,当采样到 1 至 O 的跳变时,确认是串行发送来的一帧数据的开始位 0,从而开始接收一帧数据。只有当 8 位数据接收完,并检测到高电平停止位后,只有满足(R1)=0;(SM2)=0 或接收到的第 9 位数据为 1 时,停止位才进入 RB8,8 位数据才能进入接收寄

18、存器,并由硬件置位中断标志 RI;否则信息丢失。所以在6方式 1 接收时,应先用软件清零 RI 和 SM2 标志。1. 工作方式 2 方式 2 为固定波特率的 11 位 UART 方式。它比方式 1 增加了一位可程控为 1 或 0 的第9 位数据。输出:发送的串行数据由 TXD 端输出一帧信息为 11 位,附加的第 9 位来自 SCON 寄存器的 TB8 位,用软件置位或复位。它可作为多机通讯中地址数据信息的标志位,也可以作为数据的奇偶校验位。当 CPU 执行一条数据写入 SUBF 的指令且 TI=0 时,就启动发送器发送。发送一帧信息后,置位中断标志 TI。输入:在(REN)=1 时,串行口

19、采样 RXD 引脚,当采样到 1 至 O 的跳变时,确认是串行发送来的一帧数据的开始位 0,从而开始接收一帧数据。在接收到附加的第 9 位数据后,当满足(RI):0;(SM2)=0 或接收到的第 9 位数据为 1 时,第 9 位数据才进入 RB8,8 位数据才能进入接收寄存器,并由硬件置位中断标志 Ri;否则信息丢失。且不置位 RI。2. 工作方式 3方式 3 为波特率可变的 11 位 UART 方式。除波特率外,其余与方式 2 相同。波特率的选择 如前所述,在串行通讯中,收发双方的数据传送率(波特率)要有一定的约定。在 MCS-51串行口的四种工作方式中,方式 0 和 2 的波特率是固定的,

20、而方式 1 和 3 的波特率是可变的,由定时器 T1 的溢出率控制。1方式 1方式 1 的波特率固定为主振频率的 1/12。2方式 2方式 2 的波特率由 PCON 中的选择位 SMOD 来决定,可表示为:波特率=2sMoDfosc64也就是当 SMOD=1 时,波特率为 132fosc,当 SMOD=0 时,波特率为 164fosc。3方式 1 和方式 3定时器 T1 作为波特率发生器,其公式如下:波特率=2SMOD32定时器 T1 溢出率T1 溢出率=T1 计数率产生溢出所需的周期数式中 T1 计数率取决于它工作在定时器状态还是计数器状态。当工作于定时器状态时,T1 计数率为 Fosc/2

21、:当工作于计数器状态时,T1 计数率为外部输入频率,此频率应小于Fosc/24。产生溢出所需周期与定时器 T1 的工作方式、T1 的预置值有关。定时器 T1 工作于方式 O:溢出所需周期数=8192-X定时器 T1 工作于方式 1:溢出所需周期数=65536-X7定时器 T1 工作于方式 2:溢出所需周期数=256-X因为方式 2 为自动重装入初值的 8 位定时器计数器模式,所以用它来做波特率发生器最恰当。这种方式下,T1 的溢出率次秒计算式可以表示为:T1 溢出率=Fsoc12256-X1.7 波特率选择波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)

22、。MCS-51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式 0 和模式 2 波特率计算很简单;模式 1 和模式 3 的波特率选择相同,故在此仅以工作模式 1 为例来说明串口通信波特率的选择。 在串行端口工作于模式 1,其波特率将由计时/计数器 1 来产生,通常设置定时器工作于模式 2(自动再加模式)。在此模式下波特率计算公式为: 波特率=(1+SMOD)*晶振频率/(384*(256-TH1) 其中,SMOD寄存器 PCON 的第 7 位,称为波特率倍增位; TH1定时器的重载值。 在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范

23、围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。 1.8 通信协议的使用通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在 PC 机与单片机之间进行通信,在双方程式设计过程中,有如下约定: 0 xA1:单片机读取 P0 端口数据,并将读取数据返回 PC 机; 0 xA2:单片机从 PC 机接收一段控制数据; 0 xA3:单片机操作成功信息。在系统工作过程中,单片机接收到 PC 机数据信息后,便查找协议,完成相应的操作。

24、当单片机接收到 0 xA1 时,读取 P0 端口数据,并将读取数据返回 PC 机;当单片机接收到0 xA2 时,单片机等待从 PC 机接收一段控制数据;当 PC 接收到 0 xA3 时,就表明单片机操作已经成功。81.9 51 单片机的结构和作用51 单片机的串行接口是一个全双工的接口,它可以作为 UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51 单片机串行接口的结构如下:数据缓冲器( SBUF)接受或发送的数据都要先送到 SBUF 缓存。有两个,一个缓存,另一个接受,用同一个直接地址 99H,发送时用指令将数据送到 SBUF 即可启动发送:接收时用指令将 SBUF 中接收

25、到的数据取出。串行控制寄存器( PCON)SCON 用于串行通信法师的选择,首发控制及状态指示。利用 AT89C51 芯片、复位电路、时钟电路、LED 数码管等,使 A 机控制 B 机的两个 LED闪烁,B 机控制 A 机的数码管加一显示。使用 DS18B20 温度传感器,由 B 机测量温度后由 A机显示. 把 P1 口的高 7 位与数码管相连,绿灯表示通行方向。P2 口与 LED 显示器相连,用来输出显示的数字。图 2 系统和原理框图1.10 双机通信两台机器的通信方式可分为单工通信、半双工通信、双工通信,他们的通信原理及通信方式为:单工通信:是指消息只能单方向传输的工作方式。单工通信信道是

26、单向信道,发送端和接收端的身份是固定的,发送端只能发送信息,不能接收信息;接收端只能接收信息,不能发送信息,数据信号仅从一端传送到另一端,即信息流是单方向的。通信双方采用单工通信属于点到点的通信。根据收发频率的异同,单工通信可分为同频通信和异频通信。半双工通信: 这种通信方式可以实现双向的通信,但不能在两个方向上同时进行,必须轮流交替地进行。也就是说,通信信道的每一段都可以是发送端,也可以是接端。但同一时刻里,信息只能有一个传输方向。如日常生活中的例子有步话机通信等。双工通信:双工通信是指在同一时刻信息可以进行双向传输,和打电话一样,说的同时也能听,边说边听。这种发射机和接收机分别在两个不同的

27、频率上能同时进行工作的外围电路AT89C51MAX232RS232232RS232MAX232AT89C51外围电路9双工机也称为异频双工机。双工机 的特点是使用方便,但线路设计较复杂,价格也较高 。2 系统分析系统分析2.1 汇编语言和 C 语言的特点及选择本设计是硬件电路和软件编程相结合的设计方案,选择合适的编程语言是一个重要的环节。在单片机的应用系统程序设计时,常用的是汇编语言和 C 语言。主机硬件,程序可读性和可移植性比较差。而 C 语言虽然执行效率没有汇编语言高,但语言简洁,使用方便,灵活,运算方便,表达类型多样化,数据结构类型丰富,具有结构化的控制语句,程序设计自由度大,有很好的可

28、重用性,可移植性等特点。所以我们采用 C 语言编写了程序。2.2 并行通信与串行通信的比较计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用 4 个接口与外界进行数据输入与数据输出就是并行通信,并行通信得特点是传输信号的速度快,但所用的信号线比较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线即可完成通信,成本低,传输的距离较远。2.3 串行通信程序设计的比较串行通信程序设计主要有微机发送接收程序和单片机发送接收程序。微机发送接收程序复杂难懂,操作不便。单片机发送接收程序简单易懂,操作方便。故而,此系统采用后者。2.4 同步通信与异步通信的区别“异

29、步通信”是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低。 异步通信也可以是以帧作为发送的单位。接收端必须随时做好接收帧的准备。这是,帧10的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。这也称为帧定界。帧定界还包含确定帧的

30、结束位置。这有两种方法。一种是在帧的尾部设有某种特殊的比特组合来标志帧的结束。或者在帧首部中设有帧长度的字段。需要注意的是,在异步发送帧时,并不是说发送端对帧中的每一个字符都必须加上开始位和停止位后再发送出去,而是说,发送端可以在任意时间发送一个帧,而帧与帧之间的时间间隔也可以是任意的。在一帧中的所有比特是连续发送的。发送端不需要在发送一帧之前和接收端进行协调。 每个字符开始发送的时间可以是任意的 t0 0 1 1 0 1 1 0 起始位结束位 t 每个帧开始发送的时间可以是任意的以字符为单位发送以帧为单位发送帧开始帧结束 “同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。

31、收发双方不停地发送和接收连续的同步比特流。但这时还有两种不同的同步方式。一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。另一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。113 系统设计系统设计3.1 设计要求在本设计中,要求完成 51 单片机与串口的线路连接、并用 C 语言编写程序实现 PC 机与51 单片机通过串口实现异步通信,并能根据设置调整异步传行通信参数。3.2 设计方案本次设计,对于两片 89C51,采用 RS-232 进行双机通信。发送方的数据由串行口 TXD段输出,经过电平转换芯片 MAX232 将 TTL 电平转换为

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

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

34、的七段数码管显示其接收到(A 机发出)的数字;而 A 机的七段数码管则显示其接收到(B 机发出)的数字。电路原理图如下所示。12BAABX1CRYSTALC122pFC222pFR110kC310nfX2CRYSTALC422pFC522pFR210kC610nfXTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/

35、TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U1AT89C51XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1

36、.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U2AT89C5123456781RP1RESPACK-723456781RP2RESPACK-7U3NOTU4NOT图 3 电路原理图在桌面上双击图标打开 ISIS 7 Professional 窗口。在器件选择按钮中单击“P”按钮,或执行菜单命令“库”“拾取元件符号”,添加如下

37、表所示的元件。表 2 元件选择表51 单片机 AT89C51 二片晶体 CRYSTAL 11.0592MHz 二只瓷片电容 CAP 22pF 四只电解电容 CAP-ELEC 10uF 二只电阻 RES 10K 二只上拉电阻网络 RESPACK-7 二只七段数码管 7SEG-COM-CAT-GRN 二只管脚说明:VCC:供电电压。GND:接地。P0 口:P0 口为一个 8 位漏级开路双向 I/O 口,每脚可吸收 8TTL 门电流。当 P0 口的管脚第一次写 1 时,被定义为高阻输入。P0 能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在 FIASH 编程时,P0 口作为原13码输

38、入口,当 FIASH 进行校验时,P0 输出原码,此时 P0 外部必须被拉高。 P1 口:P1 口是一个内部提供上拉电阻的 8 位双向 I/O 口,P1 口缓冲器能接收输出 4TTL 门电流。P1 口管脚写 XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P

39、3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A1124P2.4/A1225P2.5/A1326P2.6/A1427U3AT89C51 图 3 AT89C51 管脚图入 1 后,被内部上拉为高,可用作输入,P1 口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在 FLASH 编程和校验时,P1 口作为第八位地址接收。RST:复位输入。当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地

40、位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX,MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN 有效。但在访问外部数据存储器时,这两次有效的/

41、PSEN 信号将不出现。/EA/VPP:当/EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH) ,不管是否有内部程序存储器。注意加密方式 1 时,/EA 将内部锁定为RESET;当/EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP) 。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。 振荡器特性: XTAL1 和 XTAL2 分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时14钟源驱动器件,XTAL2 应不接。有

42、余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。在工具栏中单击虚拟仪器按纽,再在对象选择器中选择虚拟终端VIRTUAL TERMINAL,放置两个虚拟终端。在 ISIS 原理图编辑窗口中放置元件,再单击工具箱中元件终端图标,在对象选择器中单击 POWER 和 GROUND 放置电源和地。放置好元件后,布好线。左键双击各元件,设置相应元件参数,完成电路图的设计。3.4 软件设计A、B 两机进行异步串行通信,当 B 机接收到 A 机发出的数据后,一方面通过其数码管显示,另外加上偏移量后发出。当 A 机收到 B 机发出的数据后,一方

43、面通过其数码管显示,另外经延时后再发出下一个数据。A、B 两机的流程图如下所示。(1)发送端程序流程图15主程序开始从机应答程序初始化主机发送信号 K1 按下主机发送数据输出完成?清除标志位未应答未完成(2)接收方程序流程图16主程序开始接收完成?程序初始化K2 按下,接收数据未完成发送信号接收完成?未完成清除标志位显示重新接收A、B 两台 51 单片机的异步串行接收采用查询方式,它们详细的 C51 程序如下所示。/A 机程序#include /包含单片机寄存器的头文件unsigned char code ddata= 0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0

44、 x73,0 x3e,0 x31,0 x6e,0 x76,0 x38,0 xff,0 x00 ; /A,B,C,D,E,F,P,U,R,Y,H,L,全亮,全灭的段码/*函数功能:发送一个字节数据*/17void 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; /将接收缓冲

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

46、定时器 TL1 赋初值 TR1=1; /启动定时器 T1 P2=0 x01; /置 P2.0 口为高电平18 while(1) for(i=0;i8;i+) Send(i); /发送数据 iP0=ddataReceive(); /将接收到的数据送 P0 口显示 delay(); /600ms 后发送下一个数据 delay(); delay(); delay(); /B 机程序#include /包含单片机寄存器的头文件unsigned char code ddata= 0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71,0 x73,0 x3e,0 x31,0 x6e,0 x

47、76,0 x38,0 xff,0 x00 ;/A,B,C,D,E,F,P,U,R,Y,H,L,全亮,全灭的段码/*函数功能:发送一个字节数据*/void Send(unsigned char dat) SBUF=dat; while(TI=0) ;/等待 TI=0;/*函数功能:接收一个字节数据*/ unsigned char Receive(void)19 unsigned char dat; while(RI=0) ; /等待,直至接收完毕(RI=1)RI=0; /为了接收下一帧数据,需将 RI 清 0 dat=SBUF; /将接收缓冲器中的数据存于 datreturn dat;/*函数功

48、能:主函数*/void main(void) unsigned char dat; TMOD=0 x20; /定时器 T1 工作于方式 2 SCON=0 x50; /SCON=0101 0000B,串口工作方式 1,允许接收(REN=1) PCON=0 x00; TH1=0 xfd; /定时器 TH1 赋初值,波特率 9600 TL1=0 xfd; /定时器 TL1 赋初值 TR1=1; /启动定时器 T1 P2=0X01; /置 P2.0 口为高电平 while(1) dat=Receive();P0=ddatadat; /将接收到的数据送 P0 口显示Send(dat+8); /偏移量为+8 打开 Keil 程序(本人使用的是 Keil8.06 中文版),执行菜单命令“工程”“新建工程”创建“lesson1”项目,并选择单片机型号为 AT89C51。执行菜单命令“文件”“新建”创建文件,输入 A 机的 C 语言源程序,保存为“lesson1.C”。在 Project Workspace 窗口中右击源代码组 1,选择“添加文件到组源代码组 l”将源程序“lesson1.C”添加到项目中。20在

温馨提示

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

评论

0/150

提交评论