1.基本功能: A機向B機發送控制命令,B機根據接收到的控制命令執行控制操作。 如A機發送1 B機打開現場一半LED 發送2 B機打開現場全部LED 發送3 B機控制LED流水燈效果 發送0 B機關閉全部LED 2.電路及程序要求: 1.先做好硬件電路 (1)在Proteus中搭建好電路:兩塊AT89C51型號單片機,左邊一塊作為發送端,右邊一塊作為接收端; (2)搭建好按鍵電路,按鍵接在發送端單片機上,使用外部中斷INT0接口,接收端單片機連接8顆LED燈,使用P2口。 2.程序 程序功能為按下相應按鍵發送端發送相應數據給接收端,接收端在接收到的不同數字信號下對8顆LED燈進行不同的功能顯示。 3雙機通信控制系統 3.1 在Proteus中搭建好電路:兩塊AT89C51型號單片機,左邊一塊作為發送端,右邊一塊作為接收端; 3.2 搭建好按鍵電路,按鍵接在發送端單片機上,使用外部中斷INT0接口,接收端單片機連接8顆LED燈,使用P2口 3.3 電路開始運行時,發送端發送“0”,LED燈全部不亮;按下按鍵一次,發送“1”,接收端機打開現場一半LED;按下按鍵第二次,發送“2”,接收端機打開現場全部LED;按下按鍵第三次,發送“3”,接收端控制LED流水燈效果。
圖片1.png (44.47 KB, 下載次數: 34)
下載附件
2018-6-28 09:00 上傳
單片機源程序如下:
- /*********************
- *******接收**********
- *********************/
- #include<reg51.h>
- #include"intrins.h"
- #define uchar unsigned char
- #define uint unsigned int
- uchar code SegTab[] = {0xC0,0xF9,0xA4,0xB0};
- uchar a1;
- void delay500ms(void) //?? 0us
- {
- unsigned char a,b,c;
- for(c=23;c>0;c--)
- for(b=152;b>0;b--)
- for(a=70;a>0;a--);
- }
- void InitUART(void)
- {
- TMOD = 0x20;
- SCON = 0x50;
- PCON = 0x80;
- TH1 = 0xF3;
- TL1 = TH1;
- EA = 1;
- ES = 1;
- TR1 = 1;
- }
- void main(void)
- {
- InitUART();
- while(1);
- }
- void UARTInterrupt(void) interrupt 4
- {
- uchar ch,i;
- ch=SBUF;
- if(RI)
- {
- RI = 0;
- if(SBUF==0) //add your code here!
- {
- P2=0xff;
- delay500ms();
- }
- if(SBUF==1)
- {
- P2=0xf0;
- delay500ms();
- }
- if(SBUF==2)
- {
- P2=0x00;
- delay500ms();
- }
- while(SBUF==3)
- {
- P2=0xFE;
- for(i=0;i<8;i++)
- {
- P2=_crol_(P2,1);
- delay500ms();
- }
- P2=0xFE;
- for(i=0;i<8;i++)
- {
- P2=_cror_(P2,1);
- delay500ms(); //延時100毫秒
- }
- //燈花樣轉動
- P2=0xfc;
- delay500ms(); //延時500毫秒
- P2=0xf3;
- delay500ms();
- P2=0xcf;
- delay500ms();
- P2=0x3f;
- delay500ms();
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
雙機通信.rar
(55.2 KB, 下載次數: 104)
2018-6-28 09:03 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|