找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1318|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

PC機(jī)與單片機(jī)通信程序(RS232 協(xié)議)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1044798 發(fā)表于 2022-9-16 07:19 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機(jī)串口通信的應(yīng)用,通過串口,我們的個人電腦和單片機(jī)系統(tǒng)進(jìn)行通信。
個人電腦作為上位機(jī),向下位機(jī)單片機(jī)系統(tǒng)發(fā)送十六進(jìn)制或者ASCLL碼,單片機(jī)
系統(tǒng)接收后,用LED顯示接收到的數(shù)據(jù)和向上位機(jī)發(fā)回原樣數(shù)據(jù)。

程序和原理圖見附件。

單片機(jī)源程序如下:
  1. #include "reg52.h" //包函8051 內(nèi)部資源的定義
  2. unsigned char dat; //用于存儲單片機(jī)接收發(fā)送緩沖寄存器SBUF里面的內(nèi)容
  3. unsigned char fan;
  4. int i,j;
  5. void Delay() //延時程序
  6. {
  7. for(i=0; i<100; i++)
  8. for(j=0; j<100; j++);
  9. }
  10. void delays()
  11. {
  12. int k;
  13. for (k=0;k<1200;k++);
  14. }
  15. ///////功能:串口初始化,波特率9600,方式1/////////
  16. void Init_Com(void)
  17. {
  18. TMOD = 0x20;
  19. PCON = 0x00;
  20. SCON = 0x50;
  21. TH1 = 0xFd;
  22. TL1 = 0xFd;
  23. TR1 = 1;
  24. }
  25. /////主程序功能:實現(xiàn)接收數(shù)據(jù)并把接收到的數(shù)據(jù)原樣發(fā)送回去///////
  26. void main()
  27. {
  28. Init_Com();//串口初始化
  29. while(1)
  30. {
  31.                  
  32. if ( RI ) //掃描判斷是否接收到數(shù)據(jù),
  33. {
  34. dat = SBUF; //接收數(shù)據(jù)SBUF賦與dat
  35. if(dat==0x30)        //如果PC發(fā)送十六進(jìn)制00,單片機(jī)P1口全亮。
  36. {P1=0x00;
  37. Delay();   }
  38. else if(dat==0x31)
  39. {P1=0x01;
  40. Delay();}
  41. else if(dat==0x32)
  42. {P1=0x03;
  43. Delay();}
  44. else if(dat==0x33)
  45. {P1=0x07;
  46. Delay(); }
  47. else if(dat==0x34)
  48. {P1=0x0f;
  49. Delay(); }
  50. else if(dat==0x35)
  51. {P1=0x1f;
  52. Delay();}
  53. else if(dat==0x06)
  54. {P1=0x3f;
  55. Delay(); }
  56. else if(dat==0x07)
  57. {P1=0x7f;
  58. Delay();}
  59. else if(dat==0x08)
  60. {P1=0xff;
  61. Delay(); }
  62. else if(!(P2&0x01))
  63. { delays();
  64. while(!(P2&0x01));
  65. fan = 0x36;}
  66. else if(!(P2&0x02))
  67. { delays();
  68. while(!(P2&0x02));
  69. fan = 0x37;}
  70. else if(!(P2&0x04))
  71. { delays();
  72. while(!(P2&0x04));
  73. fan = 0x38;}
  74. else if(!(P2&0x08))
  75. { delays();
  76. RI=0; //RI 清零。
  77. SBUF =dat; //在原樣把數(shù)據(jù)發(fā)送回去(接收數(shù)據(jù)為發(fā)送數(shù)據(jù)的ASCII碼,如發(fā)送q顯示為113)
  78. }
  79. }
  80. }
復(fù)制代碼

PC 機(jī)與單片機(jī)通信(RS232 協(xié)議).doc

181 KB, 下載次數(shù): 15, 下載積分: 黑幣 -5

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

使用道具 舉報

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

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

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

快速回復(fù) 返回頂部 返回列表