標(biāo)題: 單片機(jī)雙機(jī)串行通信加數(shù)碼顯示程序 [打印本頁(yè)]

作者: yq1113    時(shí)間: 2020-11-16 20:00
標(biāo)題: 單片機(jī)雙機(jī)串行通信加數(shù)碼顯示程序
甲為傳輸機(jī)乙為接收機(jī),現(xiàn)在想加共陽(yáng)數(shù)碼顯示。功能為當(dāng)按鍵按下時(shí)甲機(jī)發(fā)送數(shù)據(jù),乙機(jī)接收數(shù)據(jù),甲機(jī)的K1按鍵通過(guò)串口發(fā)送信息控制乙機(jī)的LED燈D3和D4閃爍:① 第一次按下K1鍵,甲機(jī)發(fā)送字符“A”, 甲機(jī)的D1和乙機(jī)的D3都閃爍;甲乙數(shù)碼管同時(shí)顯示1  ② 第二次按下K1鍵,甲機(jī)發(fā)送字符“B”, 甲機(jī)的D2和乙機(jī)的D4都閃爍,甲乙數(shù)碼管同時(shí)顯示2  ③ 第三次按下K1鍵,甲機(jī)發(fā)送字符“C”, 甲機(jī)的D1、D2和乙機(jī)的D3、D4都閃爍,甲乙數(shù)碼管同時(shí)顯示3   ④ 第四次按下K1鍵,甲機(jī)停止發(fā)送,甲機(jī)的D1、D2和乙機(jī)的D3、D4都停止閃爍。
甲乙
數(shù)碼管同時(shí)顯示0

甲機(jī)源程序如下:

#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);
   }
}

作者: yq1113    時(shí)間: 2020-11-16 20:01
乙機(jī)如下:
#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);  
  }
}
作者: wmq1517fc    時(shí)間: 2020-11-26 22:24
學(xué)習(xí)了,多多交流。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1