生活随笔
收集整理的這篇文章主要介紹了
C51单片机实现双机通讯
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
C51單片機實現雙機通訊(代碼為原創,供參考)
一、實驗任務:
編程控制單片機實現與其他單片機之間的雙機通信。
要求實現以下功能:
1、甲機所連矩陣鍵盤(0~F)按下的鍵值,可以通過串行口發送到乙機,并在乙機的LED數碼管上進行顯示。
2、乙機的數碼管能夠顯示最近從甲機收到的八個字符(動態顯示)。
3、乙機能將當前已累計收到的字符個數反饋給甲機(最大為255,例如當前已收到10個字符,則反饋10)。
4、甲機在收到乙機反饋的字符個數后,將此值的二進制顯示在八個發光二極管上(如收到反饋值10,則顯示00001010)。
發送方代碼
#include <reg51.h>
#include <intrins.h>sbit H1
=P2
^0;
sbit H2
=P2
^1;
sbit H3
=P2
^2;
sbit H4
=P2
^3;unsigned char num
=16;
unsigned char flag
=0;
void delay(unsigned int time
)
{unsigned int i
=0;for(;time
>0;time
--)for(;i
<125;i
++);
}
void Getkey()
{unsigned char i
=0;unsigned char x
=0xef;P2
=0x0f;flag
=0;if(P2
!=0x0f){flag
=1;delay(10);for(i
=0;i
<4;i
++){P2
=x
;if(H1
==0){num
=0+i
;while(H1
==0); delay(10);while(H1
==0);}if(H2
==0){num
=4+i
;while(H2
==0); delay(10);while(H2
==0);}if(H3
==0){num
=8+i
;while(H3
==0); delay(10);while(H3
==0);}if(H4
==0){num
=12+i
;while(H4
==0); delay(10);while(H4
==0);}x
=_crol_(x
,1);} }
}
void main()
{SCON
=0x50;TMOD
=0x20;TH1
=TL1
=0xf4;TR1
=1;while(1){Getkey();if(flag
==1){SBUF
=num
;while(TI
==0);TI
=0;}while(RI
){P0
=SBUF
;RI
=0;} }
}
接受方代碼
#include <reg51.h>
#include <intrins.h>
unsigned char code key_code
[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};
unsigned char b
[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char code c
[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay(unsigned int time
)
{unsigned int i
=0;for(;time
>0;time
--)for(;i
<125;i
++);
}
void main()
{unsigned char i
,j
,num
=0;SCON
=0x50;TMOD
=0x20;TH1
=TL1
=0xf4;TR1
=1;while(1){while(RI
){for(i
=7;i
>0;i
--){b
[i
]=b
[i
-1];}RI
=0;b
[0]=key_code
[SBUF
];num
++;}SBUF
=num
;while(TI
==0);TI
=0;j
=0;while(j
<8){P1
=c
[j
];P2
=b
[j
];delay(5);j
++;} }
}
電路圖
總結
以上是生活随笔為你收集整理的C51单片机实现双机通讯的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。