找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

51單片機(jī)雙機(jī)串口通信仿真 內(nèi)含源碼 仿真圖

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主

單片機(jī)源程序如下:
  1. /******************************************************************
  2. 功能:采用USART串口通信,波特率為9600,一個(gè)單片機(jī)發(fā)送數(shù)字
  3.           一個(gè)單片機(jī)接收,并把接收的數(shù)字用數(shù)碼管顯示。接收。!
  4.          作者:cs天涯
  5. ******************************************************************/
  6. #include <reg51.h>
  7. #define uchar unsigned char
  8. #define uint unsigned int
  9. bit flag;
  10. uchar num;
  11. void display(uchar num);
  12. void delay(uint z);
  13. void init();
  14. uchar code table[]=
  15. {
  16.   0x3f,0x06,0x5b,0x4f,
  17.   0x66,0x6d,0x7d,0x07,
  18.   0x7f,0x6f,0x77,0x7c,
  19.   0x39,0x5e,0x79,0x71};//編碼0~9AbCdEF
  20. void main()
  21. {
  22.   init();
  23.   while(1)
  24.    {
  25.      while(flag)
  26.            {
  27.             display(num);
  28.             delay(5);
  29.            }
  30.    }
  31. }
  32. void init()
  33. {
  34.   PCON &= 0x7F;        //波特率不加倍
  35.   TMOD=0x20;   //定時(shí)器1工作方式2
  36.   TH1=0xfd;
  37.   TL1=0xfd;         //給定時(shí)器定初值,設(shè)置波特率為9600
  38.   TR1=1;    //開(kāi)啟定時(shí)器1工作
  39.   SCON=0x50;//0101 0000 允許串行口接收數(shù)據(jù),設(shè)置串行口工作方式1
  40.   EA=1;
  41.   ES=1;          //打開(kāi)串行口中斷
  42.   ET1=0;  //禁止定時(shí)器1中斷
  43.   }
  44. void display(uchar num)
  45. {
  46.   uchar shi,ge;
  47.   shi=num/10;                           //取十位
  48.   ge=num%10;                           //取個(gè)位

  49.   P0=table[shi];                        //送十位值
  50.   P2=0xbf;//1011 1111     //選擇段選位置
  51.   delay(5);
  52.   P0=0;                                          //數(shù)碼管消影
  53.   P2=0xff;

  54.   P0=table[ge];                                //送個(gè)位值
  55.   P2=0x7f;//0111 1111        //選擇段選位置
  56.   delay(5);
  57.   P0=0;                                          //數(shù)碼管消影
  58.   P2=0xff;
  59. }
  60. void delay(uint z)        //延時(shí)函數(shù)
  61. {
  62.   uint x,y;
  63.   for(x=z;x>0;x--)
  64.   for(y=110;y>0;y--);
  65. }
  66.   void receive() interrupt 4
  67. {
  68.   num=SBUF;
  69.   flag = 1;                                //接受一次后打開(kāi)顯示
  70.   ES = 0;                //關(guān)閉串行中斷
  71.   RI = 0;                 //清除串行接受標(biāo)志位
  72.   }
  73. 發(fā)送程序:
  74. #include <reg51.h>
  75. #define uchar unsigned char
  76. #define uint unsigned int
  77. uchar num;     //=2939可以不要
  78. void init();
  79. void delay(int z);
  80. void send(uchar num); //聲明子函數(shù)的時(shí)候要加分號(hào)
  81. void main()
  82. {
  83.    init();            //調(diào)用子函數(shù)的時(shí)候要加分號(hào)
  84.   while(1)
  85.    {
  86.    send(39);        //發(fā)送函數(shù)
  87.    delay(10);       //發(fā)送后延時(shí)一下,保證發(fā)送頻率不過(guò)快
  88.    }
  89. }

  90. void init()
  91. {
  92.   PCON&=0x7F;     //        設(shè)置波特率不加倍
  93.   TMOD=0x20;    //設(shè)置定時(shí)器1工作方式 2
  94.   TH1=0xfd;  
  95.   TL1=0xfd;           //設(shè)定定時(shí)器1工作方式2的初值   (關(guān)計(jì)算還沒(méi)講)  波特率為9600
  96.   TR1=1;       //開(kāi)定時(shí)器1,開(kāi)啟波特率發(fā)生器
  97.   SM0=0;
  98.   SM1=1;    //設(shè)定串口通信工作方式1
  99.   EA=1;             //開(kāi)總中斷
  100.   }

  101. void delay(int z)        //晶振11.592.延時(shí)z毫秒
  102. {
  103.   uint x,y;
  104.   for(x=z;x>0;x--)
  105.   for(y=110;y>0;y--);
  106. }

  107. void send(uchar num)
  108. {
  109.   SBUF=num;      //把發(fā)送的內(nèi)容寫(xiě)進(jìn)sbuf,自動(dòng)發(fā)送 ,發(fā)送數(shù)據(jù)時(shí)TI為0,!0為1
  110.   while(!TI);   //!邏輯非,發(fā)送完數(shù)據(jù),發(fā)送完數(shù)據(jù)時(shí)TI為1.!1為0,停止發(fā)送
  111.   TI=0;             //TI需要軟件清零
  112. }


復(fù)制代碼

所有資料51hei提供下載:
單片機(jī)串口通信.zip (37.19 KB, 下載次數(shù): 258)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

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

使用道具 舉報(bào)

沙發(fā)
ID:237239 發(fā)表于 2018-1-23 09:12 | 只看該作者
部分注釋無(wú)關(guān)主題,如79行//=2939可以不要, 98行(關(guān)計(jì)算還沒(méi)講)
回復(fù)

使用道具 舉報(bào)

板凳
ID:635436 發(fā)表于 2019-11-4 16:35 | 只看該作者
請(qǐng)問(wèn)一下U3是什么芯片呢
回復(fù)

使用道具 舉報(bào)

地板
ID:77126 發(fā)表于 2021-3-16 15:35 | 只看該作者
下來(lái)好好學(xué)習(xí)學(xué)習(xí),謝謝分享!
回復(fù)

使用道具 舉報(bào)

5#
ID:1081034 發(fā)表于 2023-6-1 13:57 | 只看該作者
電腦發(fā)送單片機(jī)接收顯示可以實(shí)現(xiàn)嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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