IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 51单片机 两个单片机串口通信 单个数码管 连续发送单个字节 -> 正文阅读

[嵌入式]51单片机 两个单片机串口通信 单个数码管 连续发送单个字节

主机(发送机) 代码

/******************************************************
@File  : 串两单片机通信(发送学号后6位)--主机.c
@Author: zero
@Date  : 2021/09/27
@Log   : 2021/09/28 修改 发送的数据 由主机控制发送, 从机只管接收
*****************************************************/
#include <reg51.h>

sbit key = P3 ^ 7; //定义按钮端口
sbit led = P1 ^ 3; //定义led端口

unsigned char a = 0;
unsigned char code student_ID[] = {
    1,
    2,
    0,
    0,
    7,
    5, //TODO 修改为自己的学号
    10 //10-为全灭
};     //定义学号数组

//延时函数
void delay_ms(unsigned int n)
{
    unsigned int i = 0, j = 0;
    for (i = 0; i < n; i++)
        for (j = 0; j < 123; j++);
}

//发送函数
void Send_data(unsigned char date)
{
    SBUF = date; //将date赋予SBUF发送出去
    while (!TI)
        ;   //等待发送数据完成
    TI = 0; //清除发送完成标志位
}

//主函数
void main()
{
    SCON = 0x40; //选择方式1
    TMOD = 0x20; //使用定时器1,8位自动加载计时器
    TH1 = 0xfd;  //设定波特率为9600
    TL1 = 0xfd;  //设定波特率为9600
    TR1 = 1;     //启用定时器1
    while (1)
    {
        if (key == 0) //判断按钮是否按下
        {
            delay_ms(50); //延时去抖
            if (key == 0) //再次判断按钮是否按下
            {
                led = !led;               //取反led电平
                Send_data(student_ID[a]); //调用(发送数据)函数,将数据发送给从机
                a = (a + 1) % 7;          //取余,7次归0
                while (key == 0)          //判断按钮是否松开
                {
                    delay_ms(200); //按钮不松开,一直延时
                }
            }
        }
    }
}

从机(接收机) 代码

/******************************************************
@File  : 串两单片机通信(发送学号后6位)--从机.c
@Author: zero
@Date  : 2021/09/27
@Log   : 2021/09/28 修改 发送的数据 由主机控制发送, 从机只管接收
*****************************************************/
#include <reg51.h>

unsigned char a;
unsigned char code _0to9_[] = {0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90, 0xff};   //定义 0-9数组 及 全灭

//主函数
void main()
{
  SCON = 0x50; //选择方式1
  TMOD = 0x20; //使用定时器1,8位自动加载计时器
  TH1 = 0xfd;  //设定波特率为9600
  TL1 = 0xfd;  //设定波特率为9600
  TR1 = 1;     //启用定时器1
  EA = 1;      //开总中断
  ES = 1;      //允许串口中断
  while (1)
  {
    //do anything that you want
  }
}

//外部中断中断函数
void serial() interrupt 4
{
  if (RI) //RI=1时表示串口接收完成,当有数据来,RI置位
  {
    a = SBUF;       //将数据赋予a
    RI = 0;         //先读数据,后清零
    P0 = _0to9_[a]; //取数组中a的数据赋予P0
  }
}

Proteus 仿真??

?

使用的元器件?

?

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:27:52  更:2021-09-29 10:30:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 2:38:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码