找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3960|回復: 4
打印 上一主題 下一主題
收起左側

單片機與PC機串口通訊Proteus仿真程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:762393 發(fā)表于 2020-12-11 20:59 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機與PC機串口通訊仿真,包含程序和仿真圖


單片機源程序如下:
  1. /***************   writer:shopping.w   ******************/
  2. #include <reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char
  5. uchar Receive_Buffer[101];
  6. uchar Buf_Index = 0;
  7. uchar code DSY_CODE[]=
  8. {
  9.         0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00
  10. };

  11. void Delay(uint x)
  12. {
  13.         uchar i;
  14.         while(x--)
  15.         {
  16.                  for(i=0;i<120;i++);
  17.         }
  18. }

  19. void main()
  20. {
  21.         uchar i;
  22.         P0 = 0x00;
  23.         Receive_Buffer[0]=i;
  24.         SCON = 0x50;
  25.         TMOD = 0x20;
  26.         PCON = 0x00;
  27.         TH1  = 0xfd;
  28.         TL1  = 0xfd;
  29.         EA   = 1;
  30.         EX0  = 1;
  31.         IT0  = 1;
  32.         ES   = 1;
  33.         IP   = 0x01;
  34.         TR1  = 1;
  35.         while(1)
  36.         {
  37.                  for(i=0;i<100;i++)
  38.                 {
  39.                          if(Receive_Buffer[i]==-1)
  40.                                 break;
  41.                         P0 = DSY_CODE[Receive_Buffer[i]];
  42.                         Delay(200);
  43.                 }
  44.                 Delay(200);
  45.         }
  46. }

  47. void Serial_INT() interrupt 4
  48. {
  49.         uchar c;
  50.         if(RI==0)
  51.                 return;
  52.         ES = 0;
  53.         RI = 0;
  54.         c  = SBUF;
  55.         if(c>='0' && c<='9')
  56.         {
  57.                  Receive_Buffer[Buf_Index]=c-'0';
  58.                 Receive_Buffer[Buf_Index+1]=-1;
  59.                 Buf_Index = (Buf_Index+1)%100;       
  60.         }
  61.         ES = 1;
  62. }

  63. void EX_INT0() interrupt 0
  64. {
  65.         uchar *s = ("Receiving From 8051...\r\n");
  66.         uchar i = 0;
  67.         while(s[i]!='\0')
  68.         {
  69.                  SBUF = s[i];
  70.                 while(TI == 0);
  71.                 TI = 0;
  72.                 i++;
  73.         }
  74. }
復制代碼

所有資料51hei提供下載:
單片機與PC機串口通訊仿真.zip (35.02 KB, 下載次數(shù): 91)


評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:691185 發(fā)表于 2021-2-8 15:29 | 只看該作者
有沒有更加詳細的注釋呢
回復

使用道具 舉報

板凳
ID:639169 發(fā)表于 2021-3-3 19:19 | 只看該作者
開啟仿真啥都沒有

評分

參與人數(shù) 1黑幣 +13 收起 理由
51hei團團 + 13

查看全部評分

回復

使用道具 舉報

地板
ID:328014 發(fā)表于 2021-3-4 15:23 | 只看該作者

肯定沒有啊,你看這個函數(shù)void Serial_INT() interrupt 4,串口中斷以后 置一才有顯示,,你得向pc發(fā)送一個字符才顯示
回復

使用道具 舉報

5#
ID:483407 發(fā)表于 2021-12-24 17:02 | 只看該作者
仿真時,向PC發(fā)送,PC收到“D5 E2 CA C7 D3 C9 38 30 35 31 B7 A2 CB CD B5 C4 D7 D6 B7 FB B4 AE 21 0D 0A ”。從PC發(fā)送時,一次只能發(fā)一個ASCII,如41,則VT1顯示“A"
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

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