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流水灯效果。
单片机源程序如下:
代码:
- /*********************
- *******接收**********
- *********************/
- #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