找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3591|回复: 2
打印 上一主题 下一主题
收起左侧

基于51单片机双机通信Proteus仿真+AB机程序

[复制链接]
跳转到指定楼层
楼主
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


                                //A机程序
#include<reg51.h>
       //包含单片机寄存器的头文件
typedef unsigned char uchar;
typedef unsigned int  uint;
sbit K5=P2^2;
sbit K6=P2^1;
int ddata[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xF8,0x80,0x98};
/*0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xF8,0x80,0x98*/
void delay(void)   
{
           unsigned char m,n;
        for(m=0;m<200;m++)
        for(n=0;n<250;n++)           
           ;
}
/************************
函数功能:发送一个字节数据
*************************/
void Send(unsigned char dat)

{

         SBUF=dat;
   while(TI==0)
      ;                        //等待
    TI=0;
}





void keyscan()
{
        if(K5==0)     //K3按下H.T分数加一
        {         delay();
                  while(K5==0);
                Send(0x03);                 //区别  发送 03
                  if(K5==0)    //松手检测
                  {                 delay();        
                           while(K5==0);
                        

                  }
        }
        else if(K6==0)    //S4按下H.T分数加二
        {        delay();
                  while(K6==0);
                Send(0x04);                           //区别  发送 04

                  if(K6==0)
                  {                   delay();
                           while(K6==0);
                        

                  }
        }

}


/***********************
函数功能:接收一个字节数据
************************/
unsigned char Receive(void)
{
          unsigned char dat;
  if(RI==1)  
   {
           RI=0;      //为了接收下一帧数据,需将RI清0
    dat=SBUF;  //将接收缓冲器中的数据存于dat
        return dat;
   }          //等待,直至接收完毕(RI=1)

}        
/**********************
函数功能:延时约150ms
***********************/

/*****************
函数功能:主函数
******************/
void main(void)

{        unsigned char dat;
           unsigned char i;
           TMOD=0x20;  //TMOD=0010 0000B,定时器T1工作于方式2
           SCON=0x50;  //SCON=0101 0000B,串口工作方式1,允许接收
           PCON=0x00;  
           TH1=0xfd;   //定时器TH1赋初值,波特率9600
           TL1=0xfd;   //定时器TL1赋初值
           TR1=1;      //启动定时器T1  
        P2=0XFF;   //置P2.0口为高电平
                P0=0xff;        
          while(1)
   {
    keyscan();
    dat=Receive();
        P0=ddata[dat]; //将接收到的数据送P0口显示  

   }
}

全部资料51hei下载地址:
双机通信.rar (228.49 KB, 下载次数: 108)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:754594 发表于 2020-5-19 00:26 | 只看该作者
你能说明一下,你的程序f发的是什么吗?
回复

使用道具 举报

板凳
ID:242360 发表于 2020-6-8 00:29 | 只看该作者
压缩包里两个proteus的电路图都给清空了,小伙子有点遮遮掩掩的感觉啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表