STC51单片机-异步串行通信系统-物联网应用系统设计项目开发

简介: STC51单片机-异步串行通信系统-物联网应用系统设计项目开发

一、说明

同步通信是指在约定的通信速率下,发送端和接收端的时钟信号频率和相位始终保持一致(同步),这就保证了通信双方在发送和接收数据时具有完全一致的定时关系。串行通信是指计算机主机与外设之间以及主机系统与主机系统之间数据的串行传送。使用串口通信时,发送和接收到的每一个字符实际上都是一次一位的传送的,每一位为1或者为0。串行通信可以分为同步通信和异步通信两类。


异步串行通信是指通信双方以一个字符(包括特定附加位)作为数据传输单位且发送方传送字符的间隔时间不一定,具有不规则数据段传送特性的串行数据传输。


它—般由起始位、数据位、奇偶校验位和停止位四部分组成。它用一个起始位表示字符的开始,用停止位表示字符的结束,构成一帧,即在异步通信中,发送的每一个数据字符均带有起始位、停止位和可选择的奇偶位。数据字符之间没有特殊关系,也没有发送接收时钟。


异步通信数据帧的第一位是开始位,在通信线上没有数据传送时处于逻辑’1’状态。当发送设备要发送一个字符数据时,首先发出一个逻辑“0”信号,这个逻辑低电平就是起始位。起始位通过通信线传向接收设备,当接收设备检测到这个逻辑低电平后,就开始准备接收数据位信号。因此,起始位所起的作用就是表示字符传送开始。


当接收设备收到起始位后,紧接着就会收到数据位。数据位的个数可以是5,6,7或8位的数据。在字符数据传送过程中,数据位从最低位开始传输。数据发送完之后,可以发送奇偶校验位。奇偶校验位用于有限差错检测,通信双方在通信时需约定一致的奇偶校验方式。就数据传送而言,奇偶校验位是冗余位,但它表示数据的一种性质,这种性质用于检错,虽有限但很容易实现。在奇偶位或数据位之后发送的是停止位,可以是1位、1.5位或2位,停止位一直为逻辑’1’状态。停止位是一个字符数据的结束标志。


在异步通信中,字符数据一个一个地传送。在发送间隙,即空闲时,通信线路总是处于逻辑“1”状态,每个字符数据的传送均以逻辑“0”开始。


用Proteus仿真编程实现以下功能:

  • 2个同种单片机之间的异步串行通信

二、重点

  • 单片机异步串行通信的工作方式及其控制方法
  • 单片机异步串行通信的实际应用

三、实现

  //从机1串行通信程序
#include <reg52.h>
sbit led=P2^0;          //定义P2.0连接的黄色LED
bit rrdy=0;         //接收准备标志位rrdy=0,表示未做好接收准备
bit trdy=0;           //发送准备标志位trdy=0,表示未做好发送准备
bit err=0;  
void delay_ms(unsigned int i)     //延时函数
{
  unsigned char j;
  for(;i>0;i--)     
  for(j=0;j<125;j++)    
  ;
} 
void main()         //从机1主函数      
{
  EA=1;       //总中断打开
  TMOD=0x20;      //T1方式2自动装载,用于设置波特率
  TL1=0xfd;TH1=0xfd; PCON=0x00;   //波特率设为9600
  SCON=0xd0;      //SM2设为0,TB8设为0
  TR1=1;        //启动定时器T1 
  P1=0xff;      //向P1写入全1,8个绿色LED全灭
  ES=1;       //允许串口中断
  while(RI==0);     //接收控制指令0xff
  if(SBUF==0xff) err=0;   //如果接收到的数据为0xff,err=0,表示通信正常
  else err=1;     //err=1,表示接收出错
  RI=0;       //接收中断标志清0
  SM2=1;        // SM2置1,为多机通讯做好准备。
  while(1);
}
void int1() interrupt 4       //串行口中断函数
{
 if(RI)       
 {
  if(RB8)         //如果RB8=1,表示接收的为地址帧
  {
    RB8=0;        
    if(SBUF==0x02)   //如接收的数据为地址帧0x01,是本从机的地址
            //2#机本句改为:if(SBUF==0x02)
    {
      SM2=0;    //则SM2清0,准备接收数据帧
      led=0;    //点亮本从机黄色发光二极管
    }
  }
  else          //如果接收的不是本从机的地址
  {
    rrdy=1;     //准备好接收标志置1
    P1=SBUF;    //串口接收的数据送P1,LED显示
      SM2=1;      // SM2仍为1 
    led=1;      // 熄灭本从机黄色发光二极管 
  }
  RI=0; 
}
delay_ms(500); 
P1=0xff;          //熄灭本从机8个绿色发光二极管  
}  
…………

四、下载

详见:STC51单片机-异步串行通信系统-物联网应用系统设计项目开发

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
目录
相关文章
|
传感器 数据采集 监控
LabVIEW单片机的废气再循环EGR检测系统
LabVIEW单片机的废气再循环EGR检测系统
113 0
|
11月前
|
传感器 存储 物联网
单片机的原理与应用
单片机是一种将计算机的CPU、存储器、输入输出接口等功能集成在一块芯片上的微型计算机,被广泛应用于各类控制系统和智能设备中。
544 5
|
11月前
|
传感器 数据采集 存储
基于51单片机的大棚环境检测系统设计
基于51单片机的大棚环境检测系统设计
708 0
|
11月前
|
传感器 编解码 人机交互
基于51单片机的温室大棚环境检测系统
基于51单片机的温室大棚环境检测系统
221 0
|
传感器 存储 程序员
《单片机原理与应用及C51编程技术》期末复习笔记
《单片机原理与应用及C51编程技术》期末复习笔记
310 0
|
传感器
基于51单片机的车辆倒车雷达报警系统
该文描述了一个基于51单片机的超声波倒车雷达系统设计,要求包括:2cm至4m的测量范围,3mm精度,集成DS18B20温度传感器以校准声速,使用LCD1602显示距离和温度,具备按键设置预警距离及蜂鸣器报警功能。系统由AT89C51单片机、HC-SR04超声波模块、DS18B20温度模块、报警电路和LCD显示电路组成。文中还展示了Proteus仿真电路图和部分仿真结果分析,包括LCD显示示例和预警距离设置操作。
310 4
|
芯片
AT89S52单片机的最小应用系统
AT89S52单片机的最小应用系统
370 0
|
传感器 数据处理 芯片
基于51单片机的自动售货机系统
该项目设计了一个基于AT89C51单片机的自动售货机系统,采用4×4矩阵键盘选择货物和投入货币,LCD1602液晶显示购物状态和货币状态,LED显示货物选择和出货情况。系统通过货币传感器检测投入的真伪和金额,根据商品价格进行找零。功能包括选择货物、货币识别、自动计算总价、出货与找零。仿真电路展示了从欢迎界面到购物、投币、出货或找零的过程。程序设计中包含了状态定义和延时函数等。
187 0
【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)
【51单片机】初学者必读的一文【探究定时计数器与中断系统是如何配合起来的?】(9)
|
编译器 C语言 开发者
单片机原理与应用:探索微型计算机世界
单片机原理与应用:探索微型计算机世界
124 1

热门文章

最新文章