关于两块51单片机之间的串口通信(排队叫号系统)

发布者:温柔之风最新更新时间:2021-11-25 来源: eefocus关键字:51单片机  串口通信  排队叫号系统 手机看文章 扫描二维码
随时随地手机看文章

一、项目要求

叫号:按下按键叫号,数码管显示叫号的号数,蜂鸣器响。

取号:按下按键取号,两个数码管分别显示取到的号数和等待的人数。


(PS:推荐使用串口调试助手进行调试)

二、可能使用到的工具

1.串口调试助手(百度网盘自行下载)

链接:https://pan.baidu.com/s/1XmCBUDD7kF8a5393fh_bBg

提取码:znv3

三、串口通信原理

1.由51单片机引脚图可看出,P3.1(TXD)和P3.0(RXD)为串行通信口,

P3.0为串行接收口,P3.1为串行发送口。要使两块单片机板可以进行串口通信,则将两块板之间的RXD/TXD交叉连接。

在这里插入图片描述

四、设计流程图

在这里插入图片描述

五、硬件设计

在这里插入图片描述

六、界面实现

在这里插入图片描述

七、代码

主机:


#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;   //对数据类型进行声明定义

typedef unsigned char u8;

 u8 an=0;//叫号数

 u8 receiveData=0;

 sbit k1=P1^0; //定义P0.0口是k1

 sbit beep=P1^5;

 char jishu=0,t=0;

u8 code smgduan[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//显示0~F的值

void UsartInit()

{

SCON=0X50; //设置为串口工作方式1

TMOD=0X20; //设置定时器工作方式2

PCON=0X00; //波特率不加倍 PCON第一位是SMOD与波特率的倍数有关

TH1=0XF3; //计数器初始值设置,波特率是2400的

TL1=0XF3;

ES=1; //打开接收中断

EA=1; //打开总中断

TR1=1;     //打开计数器

}  

void delay(u16 i)

{

int j=0;


for(j=0;j

}

void beepx()

{

 beep=0;

  delay(10000);

  beep=1;

 } 

void sendchar()

{

   TI=0;

   SBUF=an;

    while(!TI); //等待发送数据完成

TI=0;

}  

 void CallNum(u16 k) //叫号函数

 {

   P2=smgduan[k];

 }

 void Usart() interrupt 4

{  

   if(RI==1)

   {

receiveData=SBUF;//出去接收到的数据

RI = 0;//清除接收中断标志位

}

    

void main()

{

  P2=smgduan[0];

UsartInit();  // 串口初始化

while(1)

{

   if(k1==0)

   {

     delay(100000);

if(k1==0);

{

  if(receiveData>an)

  {   

     an++;

        CallNum(an);

beepx();

     sendchar();  

   }

    while(!k1);

delay(1000);

    }

  }

}

}


从机:


#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器

typedef unsigned int u16;   //对数据类型进行声明定义

typedef unsigned char u8;

  u8 quhao=0;  //取号

 u8 receiveData=0;    //接收到的数据

 sbit k1=P1^0; //定义P1.0口是k1

u8 code smgduan[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,

0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};//显示0~F的值

void UsartInit()

{

SCON=0X50; //设置为串行工作方式1  

TMOD=0X20; //设置计数器工作方式2(8位自动重装定时器/计数器)

PCON=0X00; //波特率不加倍  最高位为SMOD决定波特率是否加倍

TH1=0XF3; //定时器初始值设置,波特率是2400

TL1=0XF3;

ES=1; //打开串口中断

EA=1; //打开总中断

TR1=1; //打开定时器1

}  

void delay(u16 i)

{

int j=0;

for(j=0;j

}

 void sendchar()

{

   TI=0;  

   SBUF=quhao;

    while(!TI); //等待发送数据完成

TI=0; //发送标志位清零,等待下次中断

}  

void getnum(u16 k)//取到的号

 {

 P0=smgduan[k];

 }

 void waitnum(u16 k) //等候的人数

 {

   P2=smgduan[k];

 }

 void Usart() interrupt 4  //4为串口中断号

{  

   if(RI==1)

   {

receiveData=SBUF;//出去接收到的数据

RI = 0;//清除接收中断标志位

}

}  

void main()

{

  P0=smgduan[0];

  P2=smgduan[0];

UsartInit();  // 串口初始化

while(1)

{

   if(k1==0)

   {

     delay(100000);

if(k1==0);

if(quhao<15)

{

    quhao++;

      getnum(quhao);

  sendchar();

waitnum(quhao-receiveData-1);

}

while(!k1);

delay(1000);

}  

  } 

  /*if(quhao-receiveData-1==-1)

  {

    waitnum(0);

  }

  else{

   waitnum(quhao-receiveData-1);

   }  */

}

}

关键字:51单片机  串口通信  排队叫号系统 引用地址:关于两块51单片机之间的串口通信(排队叫号系统)

上一篇:51单片机UART 串口通信[ 方式1 ]实现
下一篇:【C51单片机】数码管实现99秒倒计时

推荐阅读最新更新时间:2024-11-17 11:29

51单片机红外控制步进电机
单片机源程序如下: #include reg52.h //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #define uchar unsigned char /*********************************************************************************/ sbit IR=P3^2; //红外接口标志 uchar i; unsigned char irtime; //红外用全局变量 bit irpro_ok,irok; unsigned char IRcord ; unsigned cha
[单片机]
51单片机是冯诺依曼结构还是哈佛结构?
简介:有人说51地址线复用,就是冯诺依曼结构。很多入门的书上基本上都说:由运算器、控制器、存储器、输入设备、输出设备组成的系统 都叫冯氏结构。 也有的说:“程序存储器的数据线地址线”与“数据存储器的数据线地址线”共用的话,就 是冯氏结构,所以51是该结构。 关于这个问题,有人说51地址线复用,就是冯诺依曼结构。很多入门的书上基本上都说:由运算器、控制器、存储器、输入设备、输出设备组成的系统 都叫冯氏结构。 也有的说:“程序存储器的数据线地址线”与“数据存储器的数据线地址线”共用的话,就 是冯氏结构,所以51是该结构。(我认为说得太绝对了) 我认为冯氏结构与哈佛结构的区别应该在存储器的空间分别上,哈佛结构的数据区和代码区是分开的
[单片机]
<font color='red'>51单片机</font>是冯诺依曼结构还是哈佛结构?
51单片机实验——模拟三台机器故障检测与指示系统
1.实验题目: 在proteus中模拟实现一个三台机器故障检测与指示系统,如图2所示,当无故障时,LED0 灯亮;当有故障时,LED0 灯灭,1故障(P2.0为0)时,LED1 灯亮,2故障(P2.1为0)时,LED1 灯亮,3 号故障(P2.2为0)时,LED3灯亮。 2.KEIL代码 #include reg51.h sbit LED=P1^0; sbit LED1=P1^1; sbit LED2=P1^2; sbit LED3=P1^3; sbit P20=P2^0; sbit P21=P2^1; sbit P22=P2^2; void INT0_Init() //编写中断初始化函数 { EA=1;//开启中断总
[单片机]
<font color='red'>51单片机</font>实验——模拟三台机器故障检测与指示<font color='red'>系统</font>
51单片机-定时器工作模式2
1.工作模式2的使用 这里我们顺便讲解一下定时器0的工作模式2,也就是使用“小试管”的方式,TMOD的初始化就为“TMOD=0x02;”。 我们知道工作模式2的最长溢出时间仅为256*(12/11059200)=0.000277秒=277微秒。 我们想实现间隔51ms的流水灯实验该怎么做,首先我们定义一个变量cnt用来记录每次的溢出次数,然后我们的定时时间为51微秒(因为最大定时只有278微秒),cnt记录的值等于1000的时候,证明时间已经过去了51ms,于是再去执行流水灯的任务。 我们已经知道工作模式2是不需要在溢出之后再填充初始值的,比如我们定时的时间为51微秒,那么计算出“距离溢出的刻度”就为47(实际计算
[单片机]
AT89C51与AT89S51单片机有什么区别
AT89S51 是一个低功耗,高性能CMOS 8位单片机,片内含8k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统供给高性价比的解决方案。 AT89S51具有如下特点:40个引脚,8k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌
[单片机]
51单片机密码锁制作的程序和流程图
一、基本组成: 单片机小系统+4*4矩阵键盘+1602显示+DC电机 基本电路: 键盘和和显示 键盘接P1口,液晶的电源的开、关通过P2.7口控制 电机(控制口P2.4) 小系统就不贴上来了吧。。。 二、基本功能描述: 1.验证密码、修改密码 a)锁的初始密码是123456(密码最长为10位,最短为1位)。 2.恢复初始密码 a)系统可以恢复初始密码,否则一旦忘记密码而又不能恢复初始密码,该锁就永远打不开。但是又不能让用户自行修改密码,否则其他人也可以恢复该初始密码,使得锁的安全性大大下降。 3.使系统进入低功耗状态 a)在实际使用中,锁只有在开门时才被使用。因而在大多数的时间
[单片机]
<font color='red'>51单片机</font>密码锁制作的程序和流程图
89c51单片机32个心形流水灯
#include reg52.h #include intrins.h //库函数 #define uint unsigned int #define uchar unsigned char//宏定义 void delay(uint xms)//延时函数 { uint i,j; for(i=xms;i 0;i--) for(j=110;j 0;j--); } void zys(uint t)//左右闪烁 { while(t--) { P3=P2=0x00; delay(500); P3=P2=0xff; P1=P0=0x00; delay(500);
[单片机]
89c<font color='red'>51单片机</font>32个心形流水灯
51单片机在锅炉水处理控制中的应用
0 引 言 自然水中通常含有钙镁等离子,俗称硬水。在锅炉用水中需要去除水中的钙镁离子而形成软水以防止锅炉结垢。在生产中锅炉水的软化处理是一项重要的安全指标,所以,对于锅炉水处理的技术要求愈来愈高。单片机以其较高的灵活性和稳定性广泛应用在自动控制领域。本文所设计的锅炉水处理控制装置,由高低水位控制进水阀开关,选用单片机为核心,C语言编程实现循环时间电路控制。该装置已成功应用于成都富华水处理公司。 1 软水生产工艺过程及对自控系统的要求 1.1 生产工艺过程 软化水设备的工作原理是基于阳离子交换原理。水由交换柱上流下,与交换树脂中的盐离子充分接触达到把原水中的杂质、易结垢的重金属阳离子去除掉。其生产工艺大致分为下列几步:①条件
[单片机]
<font color='red'>51单片机</font>在锅炉水处理控制中的应用
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved