书签 分享 收藏 举报 版权申诉 / 89
上传文档赚钱

类型第6章串行通信AVR单片机应用技术项目化教程课件.ppt

  • 上传人(卖家):三亚风情
  • 文档编号:2694154
  • 上传时间:2022-05-18
  • 格式:PPT
  • 页数:89
  • 大小:2.04MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第6章串行通信AVR单片机应用技术项目化教程课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    串行 通信 AVR 单片机 应用技术 项目 教程 课件
    资源描述:

    1、 串行通信基础串行通信基础一一 ATmega16 ATmega16异步串行通信接口异步串行通信接口二二 单片机单片机I/OI/O口模拟串行通信口模拟串行通信三三 项目设计项目设计四四 在实际中外部设备与单片机之间或单片机与单片机之间、单片机与计算机之间交换数据,可以只通过2条线甚至一条线就完成数据的传输与交换。这时数据位排成一串,在数据线上传输,每个时间段只能传输一个比特位,且时间间隔为规定长度,这就是串行通信。6.1.1 6.1.1 串行通信与并行通信串行通信与并行通信6 6.1 .1串行通信基础串行通信基础前面所讨论的AVR单片机I/O口,其数据传输是按字节进行,一个字节8个比特位分别与I

    2、/O口位线相对应,同时从8个I/O口输入、输出,一个字节传输只需要时间T即可完成,这是数据的并行传输,如图6-1所示。并行传输具有传输线多、速度快、编程简单、通信距离短的特点。6.1.1 6.1.1 串行通信与并行通信串行通信与并行通信6 6.1 .1串行通信基础串行通信基础6.1.1 6.1.1 串行通信与并行通信串行通信与并行通信6 6.1 .1串行通信基础串行通信基础在串行数据传输中,一个字节8个比特数据排成一串,可以高位(MBS)在前,也可以低位在前(LBS),依次在数据线上进行传输。如果其传输速度与并行通信的速度相等且都为T,则串行通信中传输完一个字节所需要时间为8T,传输n个比特位

    3、则需要nT时间,如图6-2所示。串行通信具有传输线少、成本低等特点,比较适合远通信。6.1.1 6.1.1 串行通信与并行通信串行通信与并行通信6 6.1 .1串行通信基础串行通信基础6.1.2 6.1.2 串行通信方式串行通信方式6 6.1 .1串行通信基础串行通信基础 根据串行通信的组成形式和数据传输方向,串行通信有3种通信方式:单工、半双工、全双工。6.1.2 6.1.2 串行通信方式串行通信方式6 6.1 .1串行通信基础串行通信基础单工通信如图6-3a所示。单工通信只允许数据在一个方向上传输,发送端只能发送数据,接收端只能接收数据。半工通信如图6-3b所示。半双工通信数据可以在两个方

    4、向传输,但不能同时进行数据收、发。发送端在发送数据的同时,接收端只能接收数据,反之亦然。通过开关切换,可以将收发端功能互换,原来的接收端发送数据,原来的发送端接收数据。全双工通信分别有独立的接收线和独立的发送线,数据的收发可以同时进行,且互不影响,如图6-3c所示。 在单片机系统中,三种串行通信方式都有应用。6.1.3 6.1.3 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础1. 1. 同步通信同步通信 SYNC(Synchronous Communication)同步通信以数据块为传输单元,一个数据块中包含了若干个数据字符(比如数据字节),仅在数据块首部设置有

    5、12个同步字符,用以进行数据通信。一旦建立数据同步,就可以进行数据字符的传输,中间无需再同步,数据块中的数据字符长度可定义,如图6-4。6.1.3 6.1.3 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础1. 1. 同步通信同步通信 由于同步通信是以数据块为传输单元,冗余数据信息少,因此同步通信的通信速度很高,可达到Mbps以上。 在单片机系统中,采用同步串行通信时可以取消数据块前面的同步字符,用专门的时钟线来传递同步信号,以保证收发端数据的严格同步。因此,在单片机的同步通信中,单工或半双工的通信硬件连接时需要两条线,一条传输数据,另一条专用于传输时钟信号,而在

    6、全双工通信中则需要3条线,1条数据输入、1条数据输出、1条时钟线。6.1.3 6.1.3 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础2 2、异步通信、异步通信 异步通信以字符为传输单位,通信中两个字符的时间间隔不固定(异步),而字符中的两个相邻的比特位的时间是固定的(同步)。在异步通信中,没有专门的、独立的同步时钟信号,典型的异步通信的数据帧格式如图6-5所示,由起始位、数据位、奇偶校验位、停止位所组成。起始位为一固定时间长度的低电平,表示一帧数据的开始,接着就是传输的数据,其长度有5位、6位、7位、8位、9位等。数据位后面是奇偶校验位,指示数据通信的出错情况

    7、。校验位后面是1位或2位停止位。停止位为高电平,表示这一帧数据的结束。6.1.3 6.1.3 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础2 2、异步通信、异步通信数据帧后面跟着几位保证数据可靠传输的空闲位。异步通信数据帧的间隔时间不同,通信时数据是一帧一帧进行传输,每帧通过起始位来同步。由于异步通信中没有专门的时钟同步信号,因此在芯片内部需要专门的时序还原电路从异步数据帧中提取时钟信号,以保证接收的数据被正常还原。6.1.3 6.1.3 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础3 3、波特率、波特率(Baud RateBau

    8、d Rate)波特率是表示串行通信传输数据快慢的物理参数,其定义为单位时间内传输的二进制bit数,用位/秒(Bit per Second)表示,或写成bps。如串行通信中的数据传输波特率为128bps,意为每秒钟传输128个bit,合计16个字节,传输一个比特所需要的时间为:1/128bps=0.0078秒=7.8毫秒。传输一个字节的时间为:7.88=62.4毫秒。在异步通信中,常见的波特率通常有1200、2400、4800、9600等,其单位都是bps。高速的可以达到19200bps。异步通信中允许收发端的时钟(波特率)误差不超过5%。6.1.4 6.1.4 同步通信与异步通信同步通信与异步

    9、通信6 6.1 .1串行通信基础串行通信基础由于串行通信方式能实现较远距离的数据传输,因此在远距离控制时或在工业控制现场通常使用串行通信方式来传输数据。由于远距离数据传输时普通的TTL或CMOS电平无法满足工业现场的干扰和各种电气性能,因此不能用于直接进行远距离的数据传输。国际电气工业协会EIA推出了RS-232、RS485等接口标准。6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础1 1、RS-232RS-232接口接口RS-232C是1969年电子工业协会(EIA)制定的在数据终端设备DTE和数据通讯设备(DCE)之间的串行的二进制数据交

    10、换的接口,全称是EIA-RS-232-C协议,实际中常称RS-232,也称EIA-232,最初采用DB-25作为连接器,包含双通道,但是现在也有采用DB-9的单通道接口连接,其端口定义见表6-1所示。在实际中,DB9由于结构简单,仅需要3根线就可以完成全双工通信,所以在实际中使用比较多,应用广泛。6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础1 1、RS-232RS-232接口接口6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础1 1、RS-232RS-232接口接口6.1.4 6.1.4

    11、 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础1 1、RS-232RS-232接口接口RS-232采用负逻辑电平,用负电压表示数字信号逻辑1,用正电平表示数字信号的逻辑0。规定逻辑1的电压范围为-5-15V,逻辑0的电压范围为+5V-+15V。RS-232-C标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容限制,例如,采用150pF/m的通信电缆时,最大通信距离为15m;若每米电缆的电容量减小,通信距离可以增加。传输距离短的另一原因是RS-232属单端信号传送,存在共地噪声和不能抑制共模干扰等问题,因此一般用于20m以内的通信。6.1.4 6.1

    12、.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础2. RS-4852. RS-485接口规范接口规范 RS-485为弥补RS-232之不足而提出的。为改进RS-232通信距离短、速率低的缺点,RS-485定义了一种平衡通信接口,将传输速率提高到10Mbps,传输距离延长到4000英尺(速率低于100kbps时),并允许在一条平衡线上连接最多10个接收器。RS-485是一种单机发送、多机接收的单向、平衡传输规范,为扩展应用范围,随后又为其增加了多点、双向通信能力,即允许多个发送器连接到同一条总线上,同时增加了发送器的驱动能力和冲突保护特性,扩展了总线共模范围,其

    13、特点可以总结为: 6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础2. RS-4852. RS-485接口规范接口规范(1)差分平衡伟输; (2)多点通信; (3)驱动器输出电压(带载):1.5V; (4)接收器输入门限:200mV; (5)-7V至+12V总线共模范围; (6)最大输入电流:1.0mA/-0.8mA(7)最大总线负载:32个单位负载(UL); (8)最大传输速率:10Mbps; (9)最大电缆长度:4000英尺(3000米)。6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础

    14、2. RS-4852. RS-485接口规范接口规范 RS-485接口是采用平衡驱动器和差分接收器的组合,抗共模干能力增强,即抗噪声干扰性好。RS-485的电气特性是用传输线之间的电压差表示逻辑信号,逻辑“1”以两线间的电压差为+(26) V表示;逻辑“0”以两线间的电压差为-(26)V表示。RS-232-C接口在总线上只允许连接1个收发器, 即一对一通信方式。而RS-485接口在总线上是允许不只一个收发器存在,总线允许最多128个收发器存在,具备多站能力,基于RS-485接口可以方便的组建设备网络,实现组网传输或组网控制。6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1

    15、 .1串行通信基础串行通信基础2. RS-4852. RS-485接口规范接口规范 由于RS-485接口具有良好的抗噪声干扰性,使之成为远传输距离、多机通信的首选串行接口。RS-485允许总线存在多主机负载,其仅仅是一个电气接口规范,只规定了平衡驱动器和接收器的物理层电特性,而对于保证数据可靠传输和通信的连接层、应用层等协议在RS-485中并没有定义,需要用户在实际使用中予以定义。Modbus、RTU等是基于RS-485物理链路的常见的通信协议。6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础 3 3串行通信接口电平转换串行通信接口电平转换

    16、(1 1)TTL/CMOSTTL/CMOS电平与电平与RS-232RS-232电平转换电平转换TTL/CMOS电平采用的是0-5V的正逻辑,即0V表示逻辑0,5V表示逻辑1,而RS-232采用的负逻辑,逻辑0用+5V-+15V表示,逻辑1用-5V-15V表示。在TTL/CMOS的单片机系统中,如果使用RS-232串行口进行通信,必须进行电平转换。MAX232是一种常见的RS-232电平电平转换芯片,单芯片解决全双工通信方案,单电源工作,外围仅需少数几个电容器即可,其逻辑图和应用原理见图6-7、6-8所示。6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串

    17、行通信基础 3 3串行通信接口电平转换串行通信接口电平转换 (1 1)TTL/CMOSTTL/CMOS电平与电平与RS-232RS-232电平转换电平转换6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础 3 3串行通信接口电平转换串行通信接口电平转换 (2 2)TTL/CMOSTTL/CMOS电平与电平与RS-485RS-485电平转换电平转换RS-485电平是平衡差分传输,而TTL/CMOS是单极性电平,需要经过电平转换才能进行信号传输。常见的RS-485电平转换芯片有MAX485、MAX487等。MAX485为8个脚的芯片,支持半双工通信

    18、,RO为数据接收引脚,RI为数据发送引脚,RE#为接收使能端,DE为发送使能端。见图6-9所示。6.1.4 6.1.4 同步通信与异步通信同步通信与异步通信6 6.1 .1串行通信基础串行通信基础 3 3串行通信接口电平转换串行通信接口电平转换 (2 2)TTL/CMOSTTL/CMOS电平与电平与RS-485RS-485电平转换电平转换6.2.1 6.2.1 串行通信接口特点串行通信接口特点6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口(1)全双工通信操作,独立收发单元,2级FIFO;(2)支持异步或同步通信方式;(3)具有高精度的专用波特率发生器;(4

    19、)数据位长度支持5、6、7、 8、9位数据,(5)硬件奇偶判决功能;(6)具有数据过速检测功能;(7)具有帧错误检测功能;(8)三个独立的中断源:发送结束中断, 发送数据寄存器空中断,以及接收结束中断;(9)支持多处理器通讯模式。 6.2.2 6.2.2 串行通信接口组成串行通信接口组成6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口ATmega16串行接口主要由数据寄存器、控制寄存器、波特率发生器、发送移位寄存器、接收移位寄存器、奇偶校验电路等电路组成,见图6-10。 6.2.2 6.2.2 串行通信接口组成串行通信接口组成6 6. .2 ATmega16

    20、2 ATmega16异步串行通信接口异步串行通信接口(1 1)数据寄存器)数据寄存器UDRUDR UDR数据寄存器分为接收数据寄存器和数据发送寄存器。(2 2)控制寄存器)控制寄存器分别为UCSRA、UCSRB、UCSRC,通过对控制寄存器的编程,以实现对串行通信口的工作模式、波特率、数据格式等进行设置。(3 3)波特率发生器)波特率发生器ATmega16具有专用的波特率发生器器件,其工作时钟来源于系统时钟fosc,经过如图6-11所示的时钟电路产生数据收、发电路所需要的时钟信号。 6.2.2 6.2.2 串行通信接口组成串行通信接口组成6 6. .2 ATmega162 ATmega16异步

    21、串行通信接口异步串行通信接口 6.2.2 6.2.2 串行通信接口组成串行通信接口组成6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口 ATmega16的串行口通过编程可以实现4 种时钟模式,分别为正常的异步模式、倍速异步模式、主机同步模式、从机同步模式。 通过对控制寄存器的相关位进行编程,可以设定串行口工作在全双工异步模式或移位寄存器的同步模式。无论是串行口工作与同步模式或异步模式,其波特率均可是可以编程的。 在异步模式中,波特率具有倍增功能,在不改变任何参数、数据前提下,通过设置相关位可以使波特率时钟提高1倍,以应用于更高通信速度的场合。 在同步模式中,

    22、同步时钟源可以编程选择来自于主机或来自于从机。 6.2.2 6.2.2 串行通信接口组成串行通信接口组成6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口(4 4)发送移位寄存器)发送移位寄存器 发送移位寄存器的功能是将发送的数据进行转换,将发送数据寄存器UDR中数据在时钟信号的作用进行移位,每一个时钟数据向前移一位,最后将UDR中的并行数据变成一串串行数据从数据发送引脚TXD发送出去。(5 5)接收移位寄存器)接收移位寄存器 接收移位寄存器的功能是将接收到的串行数据进行转换,在时钟信号作用下,数据接收引脚RXD每收到一个数据移位寄存器向前移动移位,实现将接收

    23、的串行数据转变成并行数据的功能,收到的数据被放入数据接收寄存器UDR中。 6.2.2 6.2.2 串行通信接口组成串行通信接口组成6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口(6 6)奇偶校验电路)奇偶校验电路 奇偶校验电路是完成对收发数据的奇偶校验。奇偶校验是检测数据通信出错的常用手段,简单易于实现。当发送数据寄存器UDR中二进制数1的个数为奇数个时,则将相应的奇偶标志位置1,连同数据位、启停位构成数据帧一并发送。接收端接收到以后,如果接收寄存器中UDR二进制数1的个数为奇数个,则奇偶标志位不变,依旧为1。因此通过判别对比收发端奇偶标志可以快速检测数据

    24、在传输过程中是否出错,这种规则称为“寄校验”,反之如果1的个数为偶数个则将奇偶标志置1的称为“偶校验”,在控制寄存器中可以编程选择“奇校验”还是“偶校验”。6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口1 1UDRUDR数据寄存器数据寄存器接收器和发送器使用的寄存器都是UDR寄存器,但是仅名字相同,他们是两个完全独立的数据寄存器。当对UDR写操作时数据通过TXB发送出去,当执行UDR读操作时将RXB接收的数据读出来。 当数据长度不足8bit时如5、6、7 bit,未被使用的数据位被发送器忽略,而接

    25、收器则将它们直接置为0。6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口1 1UDRUDR数据寄存器数据寄存器 对UDR执行写操作前应该先检查UDR是否为空,即UDR里面的数据是否被发送结束,同访问控制寄存器的标志位实现。若写UDR时其不为空即数据发送还未结束,新写入的数据无效。 接收缓冲器UDR包含一个两级FIFO,接收的数据被置于FIFO中。读UDR会影响FIFO的状态,但FIFO空时同样会在控制寄存器中产生相应标志位。6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2

    26、ATmega162 ATmega16异步串行通信接口异步串行通信接口2 2波特率寄存器波特率寄存器UBRRUBRR 波特率发生器工作寄存器UBRR中的内容决定其产生的波特率值大小。波特率与UBRR寄存器取值关系如表6-2所示6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口2 2波特率寄存器波特率寄存器UBRRUBRR6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口2 2波特率寄存器波特率寄存器UBRRUB

    27、RR 表中fosc表示系统晶振频率大小,B为通信波特率,UBRR为波特率寄存器。常用的波特率有1200bps、2400bps等,在已知波特率和fosc前提下通过应用表6-x中的公式可以计算出UBRR寄存器取值。 UBRR寄存器为16位寄存器,分成高位UBRRH和低位UBRRL两部分。在ICCAVR编译器使用C语言编程时,可以将一个16位的数直接写入UBRR寄存器即可。但需要注意的是,UBRR的取值必须在0-4095之间。6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3控制和状态寄存器控制和状态

    28、寄存器 控制和状态寄存器是用来对串行口进行编程以及保存串行口的工作各种工作状态,在使用时至关重要。ATmega16有三个控制与状态寄存器,分别为UCSRA、UCSRB、UCSRC。6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3控制和状态寄存器控制和状态寄存器 RXCRXC位(位(Bit7Bit7): :接收结束标志位。 接收器已成功接收一个数据并置于接收缓冲器中,此时RXC 置位。RXC 标志可用来产生接收结束中断,执行完程序后自动清零。对该位写1清零会导致一次重复接收错误。TXCTXC位(

    29、位(Bit6Bit6): :发送结束标志位。发送缓冲器 (UDR)中的数据发送完成UDR为空,此时TXC 置位,TXC 标志可用来产生发送结束中断。执行完程序后该标志位自动清零,对该位写1清零会导致一次重复发送错误。UDREUDRE位(位(Bit5Bit5): : 数据寄存器空标志位。(1 1)控制与状态寄存器)控制与状态寄存器UCSRAUCSRA6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3控制和状态寄存器控制和状态寄存器 FEFE(bit4bit4): : 帧错误位。DORDOR( Bi

    30、t 3 Bit 3): : 数据溢出标志位。UPEUPE(Bit 2Bit 2): : 奇偶校验错误标志位。U2XU2X(Bit 1Bit 1): : 波特率倍增控制位。MPCMMPCM( Bit 0 Bit 0): : 多处理器通信模式标志位。 帧错误位(FE)、数据溢出标志位(DOR)、 奇偶校验错误标志位(UPE)与UDR中的内容有关,当对UDR进行读写操作时会影响这些标志位,因此读UDR数据之前应先将这三个标志位的内容读取出来。这三个标志位不会触发CPU产生中断。(1 1)控制与状态寄存器)控制与状态寄存器UCSRAUCSRA6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器

    31、6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3控制和状态寄存器控制和状态寄存器 RXCIERXCIE位(位( Bit 7 Bit 7): : 接收结束中断使能位。TXCIETXCIE位(位(Bit6Bit6): : 发送结束中断使能位。UDRIEUDRIE位(位(Bit 5Bit 5): :串行口数据寄存器空中断使能。RXENRXEN位(位(Bit4Bit4): : 接收使能位。置位后启动USART 接收器。PD0的I/O口功能不可用,将作为RXD数据接收专用引脚使用。该位清零禁止接收器。TXENTXEN位(位( Bit 3 Bit 3): : 发送

    32、使能位。UCSZ2UCSZ2位(位( Bit 2 Bit 2): :与UCSRC中的UCSZ0、 UCSZ1位一同使用。(2 2)控制与状态寄存器)控制与状态寄存器UCSRBUCSRB6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3控制和状态寄存器控制和状态寄存器 RXB8RXB8位(位( Bit 1 Bit 1): : 接收数据位 8。RXB8与UDR组成9 位串行数据帧,接收到的第9位数据被置于RXB8中。在对9位数据进行读取之前应先读RXB8的数据位,再读UDR中的低位数据。TXB8TX

    33、B8位(位( Bit 0 Bit 0): : 发送数据位8。TXB8与UDR组成9 位串行数据帧,发送的第9位数据被置于TXB8中。在对9位数据进行读取发送前应先将第9位数据写入TXB8中,再将余下数据写入UDR。(2 2)控制与状态寄存器)控制与状态寄存器UCSRBUCSRB6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3控制和状态寄存器控制和状态寄存器 UCSRC寄存器与UBRRH寄存器共用相同的I/O地址。对该寄存器的访问, 需要注意其数据取值。URSELURSEL位(位( Bit 7

    34、Bit 7): : 寄存器选择位。 通过该位选择访问UCSRC 寄存器或UBRRH 寄存器。URSEL位为1时对UCSRC进行读或写操作,因此写入UCSRC的值应该大于等于80H(0 x80)。而URSEL位为0时对波特率寄存器的高位UBRRH进行操作,写入UBR寄存器数不能超过4095。UMSELUMSEL位(位( Bit 6 Bit 6): : UMSEL=0,异步模式,UMSEL=1同步模式。(3 3)控制与状态寄存器)控制与状态寄存器UCSRUCSRC C6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步

    35、串行通信接口3 3控制和状态寄存器控制和状态寄存器 UPMUPM位(位(Bit 5:4Bit 5:4): : 奇偶校验模式位,校验方式如表6-3所示。(2 2)控制与状态寄存器)控制与状态寄存器UCSRBUCSRB6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3控制和状态寄存器控制和状态寄存器 USBSUSBS位(位( Bit 3 Bit 3): : 停止位选择位,USBS=0,1位停止位,USBS=1选择2位停止位。UCSZUCSZ位位: : 数据字符长度选择位,分别为UCZS0、UCZS1

    36、、UCZS2三个位,用来设定串行通信数据字符的长度,见表6-4所示。(3 3)控制与状态寄存器)控制与状态寄存器UCSRUCSRC C6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3控制和状态寄存器控制和状态寄存器 (2 2)控制与状态寄存器)控制与状态寄存器UCSRBUCSRB6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口【例6-1】按要求完成串行通信口寄存器的初始化操作,系统时钟为8M。 (1

    37、)设置同步通信模式,波特率30000bps; (2)设置8位异步通信模式,波特率设为2400bps;解:(1)UCSRA寄存器无需编程,UCSRB寄存器中的RXEN、TXEN位置位开启接收和发送器,UCSRC寄存器中的URSEL位置位选择对UCSRC寄存器操作,UMSEL位置位选则同步模式,计算波特率寄存器初始值:编程如下:6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口(2)UCSRA寄存器无需编程,UCSRB寄存器中的RXEN、TXEN位置位开启接收和发送器,UCSRC寄存器中的URSEL位置位

    38、选择对UCSRC寄存器操作,UCSZ0、UCSZ1置位选择8位数据模式,波特率不增倍的寄存器值计算公式如下:编程如下:6.2.3 6.2.3 串行通信接口寄存器串行通信接口寄存器6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口 思考:设置串行通信参数为数据位为9位,异步通信模式,波特率设为9600bps,1位停止位,无奇偶校验位,使用中断方式完成数据收发,该如何对寄存器编程?6.2.6.2.4 4 串行通信接口使用串行通信接口使用6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口 void USART_Init( unsig

    39、ned int baud )/* 设置波特率设置波特率*/UBRRH = (unsigned char)(baud8);UBRRL = (unsigned char)baud;/* 接收器与发送器使能接收器与发送器使能*/UCSRB = (1RXEN)|(1TXEN);/* 设置帧格式设置帧格式: 8 个数据位个数据位, 2 个停止位个停止位*/UCSRC = (1URSEL)|(1USBS)|(3UCSZ0);1 1 初始化初始化6.2.6.2.4 4 串行通信接口使用串行通信接口使用6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口1 1 发送数据(发送数

    40、据(8 8位)位) void USART_Transmit( unsigned char data )/* 等待发送缓冲器为空等待发送缓冲器为空 */while ( !( UCSRA & (1UDRE) );/* 将数据放入缓冲器,发送数据将数据放入缓冲器,发送数据 */UDR = data;6.2.6.2.4 4 串行通信接口使用串行通信接口使用6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口2 2 发送数据(字符串)发送数据(字符串)void USART_Transmit_String( unsigned char *data ) while(*data

    41、!=0) /*检查数组结束标志检查数组结束标志*/ while ( !( UCSR0A & (1UDRE0) ) /* 检查发送检查发送FIFO空空 */ ; UDR0 =*data; data+; return;6.2.6.2.4 4 串行通信接口使用串行通信接口使用6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3 接收数据(接收数据(8 8位)位)unsigned char USART_Receive( void )/* 等待接收数据等待接收数据*/while ( !(UCSRA & (1RXC) );/* 从缓冲器中获取并返回数据从缓冲器中获取并

    42、返回数据*/return UDR;6.2.6.2.4 4 串行通信接口使用串行通信接口使用6 6. .2 ATmega162 ATmega16异步串行通信接口异步串行通信接口3 3 接收数据(接收数据(8 8位)位)unsigned int USART_Receive( void ) unsigned char status, resh, resl;/* 等待接收数据等待接收数据*/while ( !(UCSRA & (1RXC) ) ;/* 从缓冲器中获得状态、第从缓冲器中获得状态、第9 位及数据位及数据*/status = UCSRA;resh = UCSRB;resl = UDR;/*

    43、如果出错,返回如果出错,返回-1 */if ( status & (1FE)|(1DOR)|(1 1) & 0 x01;return (resh 8) | resl);6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信 串行传输具有连接简单、使用方便的特点,因此在实际中被广泛使用。使用串行接口的器件和芯片可以节约单片机的I/O口,降低系统复杂性,使系统设计更为简洁。而包括Atmega16在内的单片机,其串行通信口的数量有限,因此使用单片机的I/O来模拟串行口的工作过程是一种常用办法。使用I/O口可以方便的扩展同步串行通信、异步串行通信等。由于同步通信具有独立的同步时钟线,因此

    44、使用I/O口模拟操作简单。而异步串行通信没有独立的同步时钟线,需要通过对协议的解码提取时钟信号后再提取数据,因此其收发均要复杂。6.3.1 6.3.1 单片机模拟串行口输出单片机模拟串行口输出6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信1. 1. 移位寄存器移位寄存器74HC59574HC59574HC595是常见的74系列的8位移位数据寄存器。输入的是串行数据,输出的是并行数据。74HC595还带锁存功能,8个输出端的数据可以同步更新,与单片机连接只需要3个脚即可,单片机3个I/O口引脚接到74HC59之后就可以输出扩展出8个I/O口。当更多的74HC595芯片级联以

    45、后可以扩展更多的I/O口出来,以满足需要I/O控制口比较多的场合,比如LED点阵屏驱动等。6.3.1 6.3.1 单片机模拟串行口输出单片机模拟串行口输出6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信1. 1. 移位寄存器移位寄存器74HC59574HC5956.3.1 6.3.1 单片机模拟串行口输出单片机模拟串行口输出6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信1. 1. 移位寄存器移位寄存器74HC59574HC595Q0-Q7:并行数据输出,Q7S用于多片74HC595芯片的级联,OE#:为芯片使能端,OE#必须为低电平有效。MR#:为芯片

    46、复位引脚。 DS、SHCP、STCP三个引脚为74HC595的串行数据输入引脚,他们之间的时序关系如图6-13所示。 DS为串行数据输入引脚,SHCP为同步移位时钟,DS在每个SHCP的上升沿期间将数据移入芯片。当8个数据移位完成后数据在STCP的上升沿作用下同步输出到Q0-Q7输到引脚6.3.1 6.3.1 单片机模拟串行口输出单片机模拟串行口输出6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信2. 2. 使用单片机使用单片机I/OI/O口驱动口驱动74HC59574HC595单片机可以使用3个I/O口分别模拟DS、SHCP、STCP的工作时序即可将一个字节数据通过串口输

    47、出到达74HC595芯片内部,并由Q0-Q7引脚输出。在CPU内部,数据是并行的,将并行数据变成串行数据并送DS端使用移位运算符实现。将欲通过串行口发送的数据存放在变量x中,将x与0 x80进行按位与运算,若结果为0 x80则发送数据1,从DS输出高电平,并控制SHCP端产生一个上升沿移位时钟将该位数据移位到595,将x中数据向左移动1位并重复刚才的过程,直到8位数据发送完毕为止。这种方法是先发送数据的最高位(MSB),最后才发送数据的最低位(LSB)。此时的数据仅保存在移位寄存器中,并未输到数据引脚Q0-Q7端,从STCP端产生一个上升沿脉冲将数据从移位寄存器输到Q0-Q7引脚上即可。6.3

    48、.1 6.3.1 单片机模拟串行口输出单片机模拟串行口输出6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信2. 2. 使用单片机使用单片机I/OI/O口驱动口驱动74HC59574HC595【例6-2】使用1片74HC595扩展8个I/O输出口,驱动8个发光二极管。解:设PA0接SHCP端,PA1接DS端,PA2接STCP端,故PA0、PA1、PA2设置为输出口,在proteus中绘制原理图如图6-146.3.1 6.3.1 单片机模拟串行口输出单片机模拟串行口输出6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信2. 2. 使用单片机使用单片机I/OI/

    49、O口驱动口驱动74HC59574HC595编写程序如下6.3.1 6.3.1 单片机模拟串行口输出单片机模拟串行口输出6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信6.3.2 6.3.2 单片机模拟串行口输入单片机模拟串行口输入6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信 使用串行口读入外部器件或芯片数据可以节约很多I/O引脚。在理解使用单片机模拟串行口输出的基础上,对串行口得输入模拟就变得相对容易。1. TLC25511. TLC2551串行串行A/DA/D采样芯片采样芯片TLC2551是一片单芯片12bit转换精度A/D采样芯片,内部集成了采样

    50、保持器,如图6-15所示。转换的数据结果通过3条串行总线输出给主机。TLC2551只有8个引脚,其中AIN为数模信号输入引脚,VDD为单5V供电电源端,VREF为外接参考电压,FS为与帧同步控制引脚,多芯片级联时使用,单芯片时该引脚接高电平。6.3.2 6.3.2 单片机模拟串行口输入单片机模拟串行口输入6.3 6.3 单片机单片机I/OI/O口模拟串行通信口模拟串行通信1. TLC25511. TLC2551串行串行A/DA/D采样芯片采样芯片SCLK、CS#、SDO为三总线串行通信接口,SCLK为移位时钟,CS#为芯片片选端,SDO为数据输出端,三者之间时序见图6-16。6.3.2 6.3

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第6章串行通信AVR单片机应用技术项目化教程课件.ppt
    链接地址:https://www.163wenku.com/p-2694154.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库