找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机双机串行通信加数码显示程序

[复制链接]
跳转到指定楼层
楼主
甲为传输机乙为接收机,现在想加共阳数码显示。功能为当按键按下时甲机发送数据,乙机接收数据,甲机的K1按键通过串口发送信息控制乙机的LED灯D3和D4闪烁:① 第一次按下K1键,甲机发送字符“A”, 甲机的D1和乙机的D3都闪烁;甲乙数码管同时显示1  ② 第二次按下K1键,甲机发送字符“B”, 甲机的D2和乙机的D4都闪烁,甲乙数码管同时显示2  ③ 第三次按下K1键,甲机发送字符“C”, 甲机的D1、D2和乙机的D3、D4都闪烁,甲乙数码管同时显示3   ④ 第四次按下K1键,甲机停止发送,甲机的D1、D2和乙机的D3、D4都停止闪烁。
甲乙
数码管同时显示0

甲机源程序如下:

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit  K1 = P1^0;
sbit  D1 = P0^0;
sbit  D2 = P0^4;
void Delay(uint x)   
{ uchar i;
  while(x--)   
    for(i=0; i<120; i++);}
void putc_to_SerialPort (uchar c)
{  SBUF = c ;
   while (TI == 0) ;
   TI = 0;
}
void main( )
{  uchar Operation_NO = 0;
   SCON = 0x40;
   TMOD=0x20;  
   PCON=0x00;
   TH1=0xFD;   
   TL1=0xFD;
   TI= 0;
   TR1=1;
while(1)   
   {  if(K1==0)
         {  while (K1==0);
           Operation_NO=(Operation_NO+1)%4; }
      switch(Operation_NO)
         { case 0:  D1=D2=1; break;
           case 1:  putc_to_SerialPort('A') ;
                    D1=~D1;
                    D2=1;
                    break;
           case 2:  putc_to_SerialPort('B');
                    D2=~D2;
                    D1=1;
                    break;

case 3:  putc_to_SerialPort('C') ;
                  D1=~D1;
                  D2=~D2;
                  break;
         }
    Delay(100);
   }
}

评分

参与人数 2黑币 +55 收起 理由
王者不可阻挡 + 5 不错
admin + 50 共享资料的黑币奖励!

查看全部评分

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

使用道具 举报

沙发
ID:836924 发表于 2020-11-16 20:01 | 只看该作者
乙机如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit D3=P0^0;
sbit D4=P0^4;
void Delay(x)
{ uchar i;
   while(x--)   
     for(i=0; i<120; i++);
}
void main( )
{   SCON=0x50;     
    TMOD=0x20;     
    PCON=0x00;
    TH1=0xFD;   
    TL1=0xFD;
    RI= 0;     
    TR1=1;
    D3=D4=1;
    while(1)
      {  if(RI)
             {RI=0;
switch(SBUF)
        {   case 'A':D3=~D3;
                        D4=1;   break;
            case 'B':D4=~D4;
                        D3=1;   break;
            case 'C':D3=~D3;
                                D4=~D4;
                                break;
         }
       }
    else  D3=D4=1;
    Delay(100);  
  }
}
回复

使用道具 举报

板凳
ID:849894 发表于 2020-11-26 22:24 | 只看该作者
学习了,多多交流。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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