350 likes | 578 Views
实例解读 51 单片机完全学习与应用 All you need to know about the 8051 microcontroller. 杨欣 Yang X 张延强 Zhang Y 编著 莱 · 诺克斯 Nokes L 王玉凤 Wang Y 刘湘黔 Liu X 主审 电子工业出版社 2011.2. 第 13 章 串行沟通. www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《 实例解读 51 单片机完全学习与应用 》 All you need to know about the 8051 microcontroller
E N D
实例解读51单片机完全学习与应用All you need to know about the 8051 microcontroller 杨欣Yang X 张延强Zhang Y 编著 莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X 主审 电子工业出版社 2011.2
第13章 串行沟通 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 U盘的串行通信口 串行通信是当前最为盛行的通信方式,它广泛应用在许多设备中。如一个普通的U盘,它像其他任何一种USB设备一样,都通过USB口与计算机进行数据交换,而交换的方式正是串行通信。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.1 ■串行还是并行? 13.1.1 串行与并行的比喻 串行和并行通信比喻中有一个显著的特点,就是虽然后者需要更宽的桥面,但是小人们通过的速度明显比前者要快,因为8个人能一次全部通过。而前者需要一位一位地通过,这暗示了为什么并行通信的传输速率一般较串行通信更快。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.1.2 串行与并行器件 ADC0804是并行ADC器件而AD7705是串行ADC器件。很明显并行ADC占用单片机的I/O口较多,而串行只占用了3个I/O口(P2.0~P2.2) www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.2 ■单片机串行数据交换 13.2.1 AT89S51的串行口 AT89S51单片机的P3.0和P3.1除作为一般I/O口外,还分别在串行通信中充当接收口RXD和发送口TXD, www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.2.1 AT89S51的串行口 当单片机工作于异步通信时,由于异步传输每一次只传输1个字节的数据,所以衡量串行口传输速度的方法就是看它每秒传输多少个字节的数据。例如串行口1秒传输1024个字节,则数据传输率为1024Bps,即1KBps。单位Bps代表“字节/秒”(Bytes per second)。更小的单位的是bps,即“位/秒”(bits per second)。除了以上两个单位外,另一个广泛使用的描述数据传输率的物理量是波特率,对应的单位为波特(baud)。波特的定义是:传输数据中每秒信号的变化量。常常我们把波特与位/秒看成相等,即1波特(Bd)等于1位/秒(bps): 1Bd=1bps AT89S51单片机的UART在传输数据时,可被设置不同的波特率,以达到不同的传输速率。后面将会讨论如何通过指令设置波特率。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.2.2 串行流水灯 数据表中的数据按位逐一从单片机的串行口发送,例如原本的并行数据1111 1110被逐位地从串行口发送出去。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.2.2 串行流水灯 一位一位的数据可通过一个移位寄存器重新组合成并行数据后交给发光二极管显示,串入/并出移位寄存器74164可以把串行输入的数据“组装”成为并行的。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.2.2 串行流水灯 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.2.2 串行流水灯 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.2.3 串行接收数据 转换芯片8位并行装载移位寄存器74166把DIP开关S1产生的由8个不同电平信号构成的并行数据转换成串行数据。74166的S/L端(15管脚)是移位/载入控制端,与单片机的P3.2口相连。当P3.2向其输入一个低电平时,74166就将DIP开关S1产生的并行数据读入并进行串行转换。类似的,串行数据由74166的QH(13管脚)送入单片机的串行口,同时单片机向CLK(7管脚)输入时钟信号。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.2.3 串行接收数据 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.3 ■与串行通信有关的寄存器 13.3.1 串行口缓冲寄存器SBUF 程序13-1和程序13-2都涉及了串行口缓冲寄存器SBUF,这是一个1个字节长度的寄存器,属于特殊功能寄存器。 在发送数据时,当设置好串行口工作模式和波特率后,只要把数据载入SBUF中,串行口就会自动将数据发送出去。类似地,在接收数据时,串行口接收下来的数据保存在SBUF中以供程序读取。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.3.2 串行口控制寄存器SCON 串行口控制寄存器SCON是一个1个字节长度的寄存器。SCON控制着单片机串行通信的工作模式,可以被位寻址。 串行口有4种工作模式,由SM0(位7)和SM1(位6)决定。以模式1使用较多,该模式下的数据帧由8位数据、1个停止位、1个开始位组成。这种模式与计算机的串行口模式兼容,这就使得单片机的串行口可以和计算机的串行口进行数据交换。SM2位一般用于使能或屏蔽多个单片机之间通信的功能。REN位——接收使能位,当REN=1时,单片机可以从串行口接收数据。如果REN=0,则接收功能被关闭。TI位与RI位是串行通信的重要标志位。当单片机完成SBUF中的数据发送后,发送中断标志位TI被硬件置1,以利于程序判断数据发送的完成情况。当单片机接收数据完毕后,接收中断标志位RI会硬件置1,这样利于我们判断数据接收的完成情况。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.4 ■串行口工作模式 13.4.1 模式0 在模式0下,串行口实际上是一个同步移位寄存器。该模式下只发送或接收8位数据。注意,模式0下数据由单片机的RXD端(10管脚)发送或接收,而TXD端(11管脚)发送或接收的移位脉冲。发送或接收数据时,低位数据在前,高位数据在后。 模式0下串行口控制寄存器SCON的SM2位应设为0,且TB8位无用。该模式下串行口通信的波特率固定为晶振频率的1/12。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.4.1 模式0 • ①-发送。首先,通过指令“MOV SCON, #00H”设置串行口工作在模式0下发送数据,将要发送的8位数据载入串行口缓冲寄存器SBUF,串行口就会自动将SBUF中的数据转换成8位串行数据,并以的波特率从RXD端发送出去。当数据发送完成后,SCON中的标志位TI会被硬件置1。这时,可用指令“JBC TI, CHECK”来检测TI位并将其清0。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.4.1 模式0 • ②-接收。首先,通过指令“MOV SCON, #10H”设置串行口工作在模式0下接收数据(RI位=0、REN位=1)。串行口随即启动接收,此时RXD端为数据接收端,TXD端仍然为移位脉冲输出。当1个字节的数据接收完毕后保存在SBUF中,同时标志位RI被置1,可用指令“JBC RI, LOOP”来检测RI位并清0。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.4.2 模式1 在模式1下,串行口每一帧发送或接收10位数据。这10个位分别是1个起始位“0”、8个数据位、1个停止位“1”。在该模式下,单片机的TXD端为数据发送端口,RXD端为数据接收端口。 模式1下串行通信的波特率是可变的,由Timer 1工作在模式2下,通过载入Timer寄存器TH1和TL1的计数初始值来设置波特率。在模式1下,单片机会自动根据Timer 1的计数初始值得出波特率。这个计算基于以下的公式得出: TH1是Timer 1寄存器。SMOD1是电源控制寄存器PCON中的位7,如果SMOD1=0为单倍波特率,如果SMOD1=1则为双倍波特率。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.4.2 模式1 假设使用单倍波特率,即SMOD1=0,晶振频率 =11.0592MHz,向Timer 1寄存器TH1(=TL1)中载入F3H,即TH1=243,根据公式13-2得波特率: www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.4.3 模式2 在模式2下,串行口是一个9位异步通信口,每一帧共发送或接收11位数据。这11位数据由1个起始位“0”、8个数据位、第9位数据(TB8位,位于SCON内)、1个停止位“1”组成。该模式下的波特率为晶振频率的1/32或1/64,这取决于PCON寄存器中的SMOD1的设置,计算公式为: 模式2下发送数据时,数据由TXD端送出,数据中的第9位数据从串行口控制寄存器SCON中的TB8位取得(可用指令“MOV TB8, bit”向TB8位载入数据bit)。与其他模式相同,向SBUF载入数据后即自动发送。发送完一帧数据后,发送中断标志位TI=1,所以可用指令“JBC TI, CHECK”来检测TI并将其清0。 模式2下接收数据时。需要将串行口控制寄存器SCON中的REN位置1,串行口就会启动接收过程。RXD端接收,数据中的第9位载入SCON寄存器的RB8位上。接收完1帧数据后,RI位被置1,可用指令“JB RI, CHECK”来检测RI位以判断接收完成情况。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.4.4 模式3 模式3与模式2的串行口功能、发送/接收过程几乎相同,只是模式3的波特率可控,与模式1具有相同的计算公式。 从上面对4种模式的分析知道,除模式0作为一个移位寄存器使用外(倾向用于扩展I/O口),模式1和模式3具有灵活设置波特率的特点,所以在应用中可以“偏爱地”使用。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.5 ■应用体验——双机通信 13.5.1 双机通信的应用 两个单片机通信可以把各自获得的信息进行沟通和传递。如地下有一个前端单片机系统,负责接收并处理从温度、压力传感器检测到的温度、压力信号,并控制勘探头等设备工作。在地面系统,另外有一个单片机系统接收用户的操作指令,通过通信统线路与前端单片机系统实时交换勘探状态信息。这样,用户通过地面的单片机系统就可以控制和观察前端单片机系统的工作。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.5.2 双机通信的通信链路 如果两个单片机之间的距离很近,比如小于10m,那两个单片机的通信线路连接就非常简单,可以使用两芯屏蔽线将两个单片机的RXD端和TXD端对绞相连,同时将屏蔽层接地以减小噪音即可。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.5.3 排队呼叫系统 我们去银行办理业务时,可在排队机上拿到一个排队号。大屏幕和广播会按排队号的顺序叫顾客到柜台办理业务,这里就可用所学的知识看看排队呼叫系统的组成。在柜台的业务员手上有一个数字小键盘,当业务员用小键盘输入下一个顾客的排队号时,排队号就显示在银行大厅里的大屏幕上,以提示手持该排队号的顾客到柜台办理业务。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.5 ■应用体验——双机通信 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.6 ■普通计算机的串行通信口 13.6.1 计算机串行口 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.6.2 本机串口实验 如果接收区的数据与发送区的数据是一致的,说明串口通信实验成功,数据链路和软件控制都是正确的。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.7 ■实例解读——网络密码锁 13.7.1 串行口电平转换芯片 单片机串口使用的是TTL电平,即高、低电平的电压范围分别为+2V~+5V和0V~+0.8V。而计算机串口使用的是RS-232标准,高、低电平的电压范围分别为-25V~-3V和+3V~+25V。可见,单片机与计算机串口的电平不相同,不能直接接口。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.7.1 串行口电平转换芯片 为了跨越这个障碍,可使用一个电平转换芯片在单片机与计算机的串口之间作为桥梁实现数据交换。在单片机的RXD端和TXD端接一个电平转换芯片,电平转换芯片与计算机的串口相连,同时两个串口共地。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.7.2 单片机与计算机串行通信实验 单片机与计算机之间串行通信实验:单片机的P0口与8支发光二极管相连,P2口与DIP开关S1相连。U2是电平转换芯片MAX232。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.7.2 单片机与计算机串行通信实验 在单片机中运行程序13-6,接着在计算机上运行串口调试软件设置好相应的串口号,波特率为2400。打开串口,在数据发送区任意输入一个字母,然后发送,如果一切正常,就会看到发光二极管的状态发生改变。说明数据从计算机经过串行口发送到单片机系统。例如输入的是字母“A”,则计算机从串口发送的数据是“A”的ASCII码0100 0001(参考附录G),单片机接收后从P0口输出,则点亮对应位为0的发光二极管。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.7.2 单片机与计算机串行通信实验 向单片机下载完程序13-7后,先运行计算机上运行串口调试软件,设置好相应的串口号,波特率为2400。打开串口,等待接收数据。可以拨动一下图13-31所示电路中的DIP开关S1,例如设置成0100 0001(字母“A”的ASCII码),然后给单片机上电以运行程序13-7,单片机就会通过串口向计算机发送DIP开关S1产生的数据。如果一切正常,就会在计算机上的串口调试软件或自己设计的串口通信应用程序中接收到并显示0100 0001对应的字母“A”。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.7.3 网络密码锁 网络密码锁:用户在小键盘上输入密码,单片机扫描键盘获得密码(数字)并存储在30H中。单片机将保存在30H中的输入密码通过串行口发送到计算机端。计算机串行口接收到密码后,与预先设置好的有效密码进行比对,判断输入密码的正确性。如果密码正确,计算机将通过串行口向单片机回送数据11H,错误则回送88H。密码锁如果从串行口接收到11H则驱动门锁控制器打开锁,如果接收到88H则发出错误密码的警告。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X
第13章 串行沟通 13.7.3 网络密码锁 根据以上的描述并结合电路图得到网络密码锁的单片机程序,如程序13-8所示。其中的串行通信部分,单片机既向计算机发送数据(密码),也从计算机端接收数据(开锁信号)。 www.circuitfly.com 欢迎访问“电路飞翔网”获取更多信息 《实例解读51单片机完全学习与应用》All you need to know about the 8051 microcontroller 编著:杨欣Yang X 张延强Zhang Y 主审:莱·诺克斯Nokes L 王玉凤Wang Y 刘湘黔Liu X