利用单片机串口实现甲乙两机的数据传输

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介: 简介:利用单片机串口实现甲乙两机的数据传输

题目:利用单片机串口实现甲乙两机的数据传输。


要求:


①甲机连续发送0-F,共记16个字符,并显示再数码管上;

②乙机接受甲机内容并用数码管显示后回传;

③甲机接收到乙机回传内容后与当前内容相比较,若一致则发送下一个;

④晶振为11.0592Mhz,数据通讯波特率为2400。


1、虚拟电路图


image.png


2、实现的效果


20210619225529678.gif


3、相关代码

  • ①发送机部分


#include<reg51.h>
#define uchar unsigned char
char code map[]={
    0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5e,0x79,0x71
};
void delay(unsigned int time){
    unsigned int j = 0;
    for(;time>0;time--)
    for(j=0;j<125;j++);
}
void main(void){
    uchar counter=0; //定义计数器
    TMOD=0x20;       //T1定时方式2
    TH1 = TL1 = 0xf4;//2400b/s
    PCON=0;            //波特率不加倍
    SCON = 0X50;    //串口方式1,TI和RI清零,允许收敛
    TR1=1;                 //启动TI
    while(1){
        SBUF = counter;//发送联络信号
        while(TI==0);     //等待发送完成
        TI=0;                 //清TI标志位
        while(RI==0);    //等待乙机回答
        RI=0;
        if(SBUF == counter){   //若返回值与发送值相同,组织新数据
            P2 = map[counter];//显示已发送值
            if(++counter>15) counter=0;//修正计数器值
            delay(1000);
        }
    }
}


  • ②接收机部分


#include<reg51.h>
#define uchar unsigned char
char code map[]={
    0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x77,0x7c,0x39,0x5e,0x79,0x71
};
void main(void){
    uchar receive;      //定义接收缓冲
    TMOD=0x20;          //TI定时方式2
    TH1=TL1=0xf4;       //2400b/s
    PCON=0;             //波特率不加倍
    SCON=0x50;          //串口方式1,TI和RI清零,允许接受
    TR1=1;              //启动TI
    while(1){ 
        while(RI==1){           //等待接收完成
            RI = 0;             //清RI标志位
            receive = SBUF;     //取得接收值
            SBUF = receive;       //结果返送主机
            while(TI==0);         //等待发送结束
            TI = 0;             //清TI标志位
            P2 = map[receive];  //显示接收值
        }
    }
}

如有不足,还请大佬评论区留言或私信我,我会进行补充。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
3月前
|
芯片
STC15F100E单片机模拟串口
STC15F100E单片机模拟串口
STC15F100E单片机模拟串口
|
11月前
|
内存技术
单片机(MCU)如何才能不死机之串口Overrun
单片机(MCU)如何才能不死机之串口Overrun
|
2月前
单片机IO口模拟串口实现原理
单片机IO口模拟串口实现原理
24 5
串口通讯,三种数据传输方式介绍
串口通讯,三种数据传输方式介绍
176 0
|
3月前
|
网络协议 Linux
嵌入式单片机开源的串口示波器实现方法
嵌入式单片机开源的串口示波器实现方法
42 0
|
11月前
|
芯片
STM32F0单片机快速入门六 用库操作串口(UART)原来如此简单
STM32F0单片机快速入门六 用库操作串口(UART)原来如此简单
|
11月前
STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
STM32F0单片机快速入门七 串口(UART)操作从轮询到中断
|
11月前
|
C语言
简单的C语言宏定义结合全局变量的方法实现单片机串口实现透传模式
简单的C语言宏定义结合全局变量的方法实现单片机串口实现透传模式
79 0
【单片机期中测试】13.串口通信的应用(2)—— 超声波通过串口返回数据
【单片机期中测试】13.串口通信的应用(2)—— 超声波通过串口返回数据
95 0
|
存储
如何编写一个可变参数函数?如何让所有单片机的所有串口实现printf函数?
如何编写一个可变参数函数?如何让所有单片机的所有串口实现printf函数?
155 0