欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3495|回復: 2
打印 上一主題 下一主題
收起左側(cè)

51單片機實現(xiàn)串口通信(主單片機到從單片機發(fā)送LED流水燈)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:407545 發(fā)表于 2018-12-9 21:33 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
其實這是個51單片機串口通信的小例子,課堂上老師說你們可以去嘗試弄一下,于是就去網(wǎng)上找一下資料,就做了這個實驗。

先把一個作為主機,用來發(fā)送數(shù)據(jù);另一個作為從機,用來接收數(shù)據(jù)。將兩個程序各自燒錄到對應的板子上去,并將主機的TX(P3.0)接到從機的RX(P3.1),主機的RX(P3.1)接到從機的TX(P3.1),便可以實現(xiàn)將主機的數(shù)據(jù)發(fā)送到從機上去,并在從機上實現(xiàn)功能,這時可以看到從機上流水燈的現(xiàn)象
主機發(fā)送代碼
  1. #include<reg51.h>
  2. unsigned char code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};           //流水燈控制碼
  3. void send(unsigned char dat)            //數(shù)據(jù)發(fā)送程序
  4. {
  5.            SBUF=dat;                           //將要發(fā)送的數(shù)據(jù)存入發(fā)送緩沖器中
  6.         while(TI==0);                       //若發(fā)送中斷標志位沒有置1(正在發(fā)送數(shù)據(jù)),就等待
  7.         TI=0;                               //若發(fā)送完成,TI自動置1,這里把它清零
  8. }
  9. void delay(void)                        //延時函數(shù)
  10. {
  11.         unsigned char m,n;
  12.         for(m=0;m<200;m++)                  //延時約50ms
  13.         for(n=0;n<250;n++);
  14. }
  15. void main(void)
  16. {
  17.         unsigned char i;
  18.         TMOD=0x20;                         //定時器T1工作于方式2(可自動重裝的8位定時器)
  19.         SCON=0x40;                         //串口工作方式1,不允許接收
  20.         PCON=0x00;                         //波特率不倍增
  21.         TH1=0xf4;                          //波特率為2400b/s
  22.         TL1=0xf4;
  23.         TR1=1;                             //啟動定時器T1(T1作波特率的發(fā)生器)
  24.         while(1)
  25.         {
  26.                 for(i=0;i<8;i++)               //一共8位的流水燈控制碼
  27.                 {
  28.                         send(tab[i]);              //發(fā)送數(shù)據(jù)
  29.                         delay();                   //每50ms發(fā)送一次數(shù)據(jù)
  30.                 }
  31.         }
  32. }

  33. 從機接收代碼

  34. #include<reg51.h>
  35. unsigned char receive(void)         //數(shù)據(jù)接收函數(shù)
  36. {
  37.         unsigned char dat;
  38.         
  39.         while(RI==0);                   //數(shù)據(jù)沒有接收完畢時等待接收
  40.         RI=0;                           //接收完畢時清零
  41.         dat=SBUF;                       //將接收緩沖器中的數(shù)據(jù)存入dat
  42.         return dat;                     //將接收到的數(shù)據(jù)返回
  43. }
  44. void main(void)
  45. {
  46.         TMOD=0x20;                     //設置定時器T1工作于方式2
  47.         SCON=0x50;                     //串口工作方式1,允許接收數(shù)據(jù)
  48.         PCON=0x00;                     //波特率不倍增
  49.         TH1=0xf4;                      //波特率為2400b/s
  50.         TL1=0xf4;
  51.         TR1=1;                         //啟動定時器T1
  52.         REN=1;                         //允許接收數(shù)據(jù)
  53.         while(1)
  54.         {
  55.                 P2=receive();              //將接收到的數(shù)據(jù)送到P1口顯示        
  56.         }
  57. }
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:130345 發(fā)表于 2020-3-2 14:15 | 只看該作者
謝謝樓主,學習了。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表