计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。 51 单片机用 4 个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。
51 单片机的串行接口是一个全双工的接口,它可以作为 UART (通用异步接受和发送器)用,也可以作为同步移位寄存器用。 51 单片机串行接口的结构如下:
( 1 )数据缓冲器( SBUF )
接受或发送的数据都要先送到 SBUF 缓存。有两个,一个缓存,另一个接受,用同一直接地址 99H, 发送时用指令将数据送到 SBUF 即可启动发送;接收时用指令将 SBUF 中接收到的数据取出。
( 2 )串行控制寄存器( PCON )
SCON 用于串行通信方式的选择,收发控制及状态指示,各位含义如下:
SM0 SM1 SM2 REN TB8 RB8 TI RI

SM0,SM1: 串行接口工作方式选择位,这两位组合成 00 , 01 , 10 , 11 对应于工作方式 0 、 1 、 2 、 3 。
串行接口工作方式特点见下表
SM0 SM1 工作方式 功能 波特率
0 0 0 8 位同步移位寄存器(用于 I/O 扩展)f ORC /12
0 1 1 10 位异步串行通信( UART ) 可变( T1 溢出率 *2 SMOD /32 )
1 0 2 11 位异步串行通信( UART ) f ORC /64 或 f ORC /32
1 1 3 11 位异步串行通信( UART ) 可变( T1 溢出率 *2 SMOD /32 )

SM2 :多机通信控制位。
REN :接收允许控制位。软件置 1 允许接收;软件置 0 禁止接收。
TB8 :方式 2 或 3 时, TB8 为要发送的第 9 位数据,根据需要由软件置 1 或清 0 。
RB9 :在方式 2 或 3 时, RB8 位接收到的第 9 位数据,实际为主机发送的第 9 位数据 TB8 ,使从机根据这一位来判断主机发送的时呼叫地址还是要传送的数据。
TI :发送中断标志。发送完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续发送。
RI :接收中断标志。接收完一帧数据后由硬件自动置位,并申请中断。必须要软件清零后才能继续接收。
( 3 )输入移位寄存器
接收的数据先串行进入输入移位寄存器, 8 位数据全移入后,再并行送入接收 SBUF 中。
( 4 )波特率发生器
波特率发生器用来控制串行通信的数据传输速率的, 51 系列单片机用定时器 T1 作为波特率发生器, T1 设置在定时方式。波特率时用来表示串行通信数据传输快慢程度的物理量,定义为每秒钟传送的数据位数。
( 5 )电源控制寄存器 PCON
其最高位为 SMOD 。
( 6 )波特率计算
当定时器 T1 工作在定时方式的时候,定时器 T1 溢出率 = ( T1 计数率) / (产生溢出所需机器周期)。由于是定时方式, T1 计数率 = f ORC /12 。产生溢出所需机器周期数 = 模 M- 计数初值 X 。

proteus建立工程如下:

运行时的截图如下:


左边为主机,主机代码为:

#include <reg51.h>//初始化串行口
void csh(){SM0=0;SM1=1;REN=1;TI=0;RI=0;PCON=0;TH1=0xF3;TL1=0XF3;TMOD=0X20;EA=1;ET1=0;ES=1;TR1=1;}void main(){int i,j;char c=0;csh();while(1){ES=0;TI=0;P0=c;SBUF=c;while(!TI);TI=0;ES=1;for(j=0;j<50;j++)for(i=0;i<5000;i++);c++;if (c>9)c=0;}
}void intrr() interrupt 4{char temp;temp=SBUF;P2=temp;RI=0;}

右边为从机,代码为:

#include <reg51.h>//初始化串行口
void csh(){SM0=0;SM1=1;REN=1;TI=0;RI=0;PCON=0;TH1=0xF3;TL1=0XF3;TMOD=0X20;EA=1;ET1=0;ES=1;TR1=1;}void main(){csh();while(1){;}
}void intrr() interrupt 4{char temp;temp=SBUF;P2=temp;RI=0;temp++;if (temp>9)temp=0;ES=0;TI=0;P0=temp;SBUF=temp;while(!TI);TI=0;ES=1;}

下载链接:https://download.csdn.net/download/qq_40608730/16434518

基于proteus软件仿真AT89C52的双机串口通信 附工程包相关推荐

  1. 基于proteus软件仿真AT89C52的流水灯

    proteus软件仿真设置界面如下: 代码如下: #include <reg51.h>void Delay1ms(unsigned int count) {unsigned int i,j ...

  2. 基于proteus软件仿真AT89C52的电压表(附工程文件)

    通过ADC0808芯片进行高精度的电压转换,再通过LCD显示. 电压范围0-5V,精度0.05V ADC0808是采样分辨率为8位的.以逐次逼近原理进行模/数转换的器件.其内部有一个8通道多路开关,它 ...

  3. 基于51单片机的双机串口通信排队叫号系统(LCD显示)设计

    基于51单片机的双机串口通信排队叫号系统(LCD显示)设计 1 开发环境 视频讲解 2 功能说明介绍 3 仿真图 4 程序 5 原理图 6 视频讲解 7 设计报告 7.1 设计目的 7.2 设计要求及 ...

  4. ssb的matlab仿真,基于matlab软件仿真——单边带、双边带调制解调程序和Simulink建模仿真...

    内容简介: 基于matlab软件仿真--单边带.双边带调制解调程序和Simulink建模仿真,毕业论文,共22页,7757字,附开题报告.源程序. [摘要]:本文利用Simulink软件上的动态集成建 ...

  5. Proteus模拟STM32F103R6微控制器之串口通信USART的方法

    Proteus模拟STM32F103R6微控制器之串口通信USART的方法,实验环境如下: 模拟软件:Proteus 8.11 SP0 开发环境:Keil MDK 5.33 参考资料:ST公司官方参考 ...

  6. ESP32串口通信 双机串口通信

    ESP32串口 ESP32双机串口通信 环顾论坛居然无使用uart进行双击通信的案例或者讲解!!! 还是自己摸索吧!环境依旧是arduino(熟练使用ESP32后必得用vs code,这个IDE居然有 ...

  7. 基于8086简易电子琴系统仿真设计-基于8086红外自动门控制系统设计-基于单片机8x8矩阵键盘两机串口通信-基于单片机8层电梯控制系统仿真设计-基于单片机ADC0809和DAC0832模数和数模设计

    1189基于8086简易电子琴系统仿真设计-设计资料 编写一实现电子琴的程序,并实现若干扩展功能. 基本功能:用键盘输入对应的七个音阶,通过实验箱的喇叭发出声音,并通过七段数码管显示输入音阶: 扩展功 ...

  8. 数码管显示1到8c语言,单片机控制八只数码管滚动显示1~8 附PROTEUS软件仿真图

    数码管显示是每一个单片机初学者都必须学的,而单片机驱动数码管的数字循环显示实验,又是单片机基础中的基础,同时也是学好C语言编程的关键,此实验在硬件上可以弄清楚单片机驱动原理和数码管的显示原理,在软件上 ...

  9. 基于TMS320C6713的McBSP和EDMA实现串口通信

    针对TI公司的DSP芯片TMS320C6713,利用片上同步多通道缓冲串行口(McBSP)和增强型直接存储器存取(EDMA)实现了串口通信功能.该方案解决了芯片只有同步串口而不能进行异步传输的问题,丰 ...

最新文章

  1. LeetCode简单题之找出数组的最大公约数
  2. 权限的继承,取消继承,强制继承
  3. 银行IT:研究框架(165页)
  4. 计算机硬件结构中负责识别,计算机硬件基本结构树状图
  5. 消防荷载楼板按弹性还是塑性计算_现浇楼板裂缝处理办法全总结!
  6. Android之文件读写
  7. 【深度】中国半导体行业如何从芯片到生态整体突围?
  8. html一像素等于多少px,pt和px换算(一pt等于多少像素)
  9. python opencv双目测距_OpenCV实现双目测距
  10. 用户行为序列推荐模型
  11. Linux查看最近开关机记录
  12. python os.walk如何不遍历隐藏文件,Python os.walk() 遍历出当前目录下的文件夹和文件...
  13. Linux 下的IP/子网计算器:ipcalc
  14. 2022 3.17网易互娱研发岗笔试题锯齿数独题解
  15. python 计算月还款额度
  16. anaconda环境安装搜不到的环境
  17. Ubuntu磁盘分区和内存查看
  18. 继电保护原理1.2-反时限过流保护
  19. matlab 音频fft,在wav文件和FFT的matlab中的Audioread
  20. JS逆向-请求参数验证(案例:七麦数据)

热门文章

  1. 计算机知识搞笑句子,20句幽默有趣经典的句子,句句精辟(收好)
  2. 手势识别智能传感器发展和未来的探究
  3. springboot中使用@ConfigurationProperties(prefix = “xxx“) 取值为空问题
  4. 计算机专业的研究热点,计算思维研究热点及趋势
  5. 管理经济学【十】之 垄断竞争市场中的企业决策
  6. 我们都能完整的对出魔方的所有面了
  7. 小时候短暂的武校经历!
  8. echars 饼状图做成水球图
  9. 色彩标准709loghlg
  10. CorelDraw插件开发-VBA-常用功能-裁出多边形内的图形-CDR插件