chap7单片机串行通信系统.pptx

  1. 1、本文档共83页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
chap7单片机串行通信系统

单片机原理与应用 --单片机串行通信系统;内容概要 串行通信基本概述 串行口的基本工作原理 与串行口有关的特殊功能寄存器 串行口的4种工作方式 串行口通信的应用编程;重点内容: MCS-51单片机串行接口的工作原理及工作方式 MCS-51单片机串行接口应用程序设计方法; 概述;什么是通信?;并行通信 通常是将数据字节的各位用多条数据线同时进行传送 。;串行通信 串行通信使用一条数据线,将数据一位一位地依次传输,每一位数据占据一个固定的时间长度。 ;同步串行通信方式;同步串行通信方式;同步串行通信方式;异步串行通信方式 ;数据帧(一帧数据):;为逻辑“0”信号,占用一位,用来通知;在异步串行通信中,通信双方事先应该做好以下约定:;串行通信的校验;循环冗余校验 这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。这种校验方法纠错能力强,广泛应用于同步通信中。;单工通信 一方固定发送,一方固定接收; 半双工通信 双方都可以收发,但是只能收 或者发,不能同时进行; 全双工通信 双方可以同时进行收发;;在串行传输中,通信的双方都按通信协议进行,所谓通信协议就是通信双方必须共同遵守的一种约定,约定包括数据的格式、同步的方式、传送的步骤、检纠错方式及控制字符的定义 等。;串行接口的基本任务:;串口主要功能;; 有两个物理上独立的串行数据缓冲寄存器SBUF(属于特殊功能寄存器): 发送控制器 接收控制器 输入移位寄存器 串行控制寄存器SCON 若干控制门电路;串行数据缓冲器SBUF: 发送缓冲器: 接收缓冲器:;数据的发送与接收:;shift;shift;shift;shift;SBUF:串行数据缓冲寄存器 SCON:串行口控制寄存器 PCON:电源控制寄存器;SBUF(99H);串行通信控制寄存器 SCON (98H);SM0 SM1 SM2 REN TB8 RB8 TI RI;TI:;;其字节地址87H,没有位寻址功能。;7.3 串行通信工作方式及应用; 7.3.1 串行通信工作方式; 7.3.1 串行通信工作方式; 7.3.1 串行通信工作方式; 7.3.1 串行通信工作方式; 7.3.1 串行通信工作方式;使用方式0,进行数据移位输入、输出时, 是将串行口作为并行口使用; 7.3.1 串行通信工作方式;⑴ 数据发送; 7.3.1 串行通信工作方式; 7.3.1 串行通信工作方式; 7.3.1 串行通信工作方式; 7.3.1 串行通信工作方式; 在接收完第9位数据后,需满足以下两个条件,才能将接收到的数据送入SBUF(接收缓冲器)。 (1)RI?=?0,意味着接收缓冲器为空。 (2)SM2?=?0或接收到的第9位数据位RB8?=?1。 ; 7.3.1 串行通信工作方式;四种工作方式比较; 7.3.2 串行通信波特率设置;波特率计算;溢出率计算;T1溢出一次所需要的时间为:;计数初值计算;【例】若fosc=6MHz,波特率为2400波特,设SMOD=1,则定时/计数器T1的计数初值为多少?; 解决的方法只有调整单片机的时钟频率fosc,通常采用11.0592MHz晶振。; 7.3.3 串行通信应用;初始化后,设置串口工作。 发送:直接写SBUF,查询TI/中断 接收:REN置1,查询RI/中断;工作方式0应用;74LS165芯片资料;74LS165芯片资料;编程思路:;void main() { SCON=0x10; //串口方式0,允许接收数据 while(1) { P3_2=0; //并行输入数据 P3_2=1; //允许串行移位操作 while(RI==0) ; //循环等待接收完毕 RI=0; //清中断标志 P2=SBUF; //送P2口 delay(20); //延时 } };工作方式1应用;设SMOD=0,PCON=0x00;;串口设置;甲机发送程序;#includereg51.h #define uchar unsigned char uchar i; const unsigned char LED_TAB[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//段码表 void delay(unsigned int x)//延时函数 { uchar j; while(x--) { for(j=0;j123

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档