單片機雙機通訊,就是直接單片機的串口RX和TX直接連接,然后通過串口命令完成通訊
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (13.33 KB, 下載次數: 42)
下載附件
2018-12-2 01:42 上傳
0.png (13.54 KB, 下載次數: 41)
下載附件
2018-12-2 01:42 上傳
單片機源程序如下:
- #include <reg51.h>
- #define uchar unsigned char
- sbit key0=P1^0;
- sbit key1=P1^1;
- sbit key2=P1^2;
- uchar i;
- uchar code tb[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
- void delay(int z) //延時子函數
- {
- int i,j;
- for(i=0;i<z;i++)
- for(j=0;j<500;j++);
- }
- void init() //串口初始化
- {
- SCON=0x50;
- TMOD=0x20;
- TH1=0xFD;
- TL1=0xFD;
- TR1=1;
- }
- void main()
- {
- i = 0;
- init();
- P1=0xff;
- P2=0xff;
- while(1)
- {
- if(key0==0)
- {
- i++;
- //if(i>=10)
- // i=0;
- SBUF=~tb[i%10]; //送緩沖區
- P0=~tb[i%10]; //數據送P0口
- while(TI==0); //判斷是否發送完成
- TI=0;
- delay(200);
- }
- if(key1==0)
- {
- i--;
- // if(i<=0)
- // i=9;
- SBUF=~tb[i%10]; //送緩沖區
- P0=~tb[i%10]; //數據送P0口
- while(TI==0); //判斷是否發送完成
- TI=0;
- delay(200);
- }
- /* for(i=7;i<10;i++) //連續發送數組數據
- {
- SBUF=~tb[i]; //送緩沖區
- P0=~tb[i]; //數據送P0口
- while(TI==0); //判斷是否發送完成
- TI=0;
- delay(50);
- }
- */
- }
- }
復制代碼
所有資料51hei提供下載:
雙機串行.zip
(56.79 KB, 下載次數: 49)
2018-11-29 14:08 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|