登录|立即注册|使用QQ帐号登录
论坛 > 51单片机
发帖|
看6065|回3|收藏
楼主 ID:360742 只看他
2018-6-28 09:04
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



单片机源程序如下:

代码:

  1.          /*********************
  2.                 *******接收**********
  3.                 *********************/
  4. #include<reg51.h>
  5. #include"intrins.h"
  6. #define uchar unsigned char
  7. #define uint unsigned int

  8. uchar code SegTab[] = {0xC0,0xF9,0xA4,0xB0};

  9. uchar a1;

  10. void delay500ms(void)   //?? 0us
  11. {
  12.     unsigned char a,b,c;
  13.     for(c=23;c>0;c--)
  14.         for(b=152;b>0;b--)
  15.             for(a=70;a>0;a--);
  16. }

  17. void InitUART(void)
  18. {
  19.     TMOD = 0x20;
  20.     SCON = 0x50;
  21.           PCON = 0x80;
  22.     TH1 = 0xF3;
  23.     TL1 = TH1;
  24.     EA = 1;
  25.     ES = 1;
  26.     TR1 = 1;
  27. }

  28. void main(void)
  29. {
  30.   InitUART();
  31.         while(1);
  32. }

  33. void UARTInterrupt(void) interrupt 4
  34. {
  35.         uchar ch,i;
  36.         ch=SBUF;
  37.    if(RI)
  38.    {
  39.       RI = 0;
  40.                         if(SBUF==0)                        //add your code here!
  41.                         {
  42.                                 P2=0xff;
  43.                                 delay500ms();
  44.                         }            
  45.                         if(SBUF==1)
  46.                         {
  47.                                 P2=0xf0;
  48.                                 delay500ms();
  49.                         }       
  50.                         if(SBUF==2)
  51.                         {
  52.                                 P2=0x00;
  53.                                 delay500ms();
  54.                         }
  55.                         while(SBUF==3)
  56.                         {
  57.                                         P2=0xFE;
  58.                                         for(i=0;i<8;i++)
  59.                                         {
  60.                                                 P2=_crol_(P2,1);
  61.                                                 delay500ms();
  62.                                         }
  63.                                         P2=0xFE;
  64.                                         for(i=0;i<8;i++)
  65.                                         {
  66.                                                 P2=_cror_(P2,1);
  67.                                                 delay500ms(); //延时100毫秒
  68.                                         }
  69.                                         //灯花样转动
  70.                                         P2=0xfc;
  71.                                         delay500ms(); //延时500毫秒
  72.                                         P2=0xf3;
  73.                                         delay500ms();
  74.                                         P2=0xcf;
  75.                                         delay500ms();
  76.                                         P2=0x3f;
  77.                                         delay500ms();
  78. ……………………

  79. …………限于本文篇幅 余下代码请从51黑下载附件…………

所有资料51hei提供下载:
双机通信.rar (55.2 KB)
(下载次数: 104, 2018-6-28 09:03 上传)

下载积分: 黑币 -5




沙发 ID:367783 只看他
2018-9-22 21:46
很好,可惜现在在学汇编,要是有汇编程序就更好了
板凳 ID:54795 只看他
2020-5-15 18:10
很有用,谢谢分享了
地板 ID:54795 只看他
2020-5-15 18:10
好东西,收藏了,谢谢分享

51黑电子论坛

Powered by Discuz! X3.1

首页|标准版|触屏版|电脑版