找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2837|回復(fù): 1
收起左側(cè)

51單片機(jī)UART通信打印信息+源碼+proteus仿真+VSPD虛擬串口

[復(fù)制鏈接]
ID:652518 發(fā)表于 2023-8-21 17:27 | 顯示全部樓層 |閱讀模式
       一、使用51單片機(jī)的串口與Proteus的Virtual Terminal(虛擬終端)進(jìn)行一個簡單的串口通信,實現(xiàn)的功能是讓Virtual Terminal通過串口 向單片機(jī)發(fā)送數(shù)據(jù),單片機(jī)接收到數(shù)據(jù)后經(jīng)串口將數(shù)據(jù)發(fā)送到Virtual Terminal上顯示。

      1、Virtual Terminal

Virtual Terminal

Virtual Terminal

Virtual Terminal參數(shù)配置

Virtual Terminal參數(shù)配置

在使用前根據(jù)程序設(shè)計配置Virtual Terminal的參數(shù),本實驗使用的是11.0592MHz的晶振,波特率為9600不加倍,串口工作于方式1,8位數(shù)據(jù)位1位停止位。

      2、仿真電路圖

UART通信仿真電路圖

UART通信仿真電路圖


    3、程序
    這里給大家分析一個51單片機(jī)的定時器及中斷配置圖(這個是在論壇上找的)
單片機(jī)定時器及中斷.png

  1. #include <reg52.h>
  2. #include <stdio.h>
  3. #include <string.h>    //stdio.h,string.h用于printf函數(shù)原型

  4. void delay(unsigned int z);
  5. void uart_init(void);//串行口初始化

  6. void main()
  7. {
  8.     int a = 6,d = 15;
  9.     char b = 'A',c[] = "abcde";
  10.     uart_init();
  11.     while(1)
  12.     {
  13.         printf("a = %d b = %c c = %s d = %x\n",a,b,c,d);
  14.         printf("hello word!\n");
  15.         printf("你好世界\n");
  16.        delay(1000);
  17.    }
  18. }

  19. void uart_init(void)
  20. {
  21.     TMOD=0x20;     //即0010 0000,定時器/計數(shù)器1,工作方式2
  22.     TH1=0xfd;          //設(shè)置波特率為9600
  23.     TL1=0xfd;
  24.     TR1=1;               //啟動定時器/計數(shù)器1
  25.         
  26.     SCON=0x50;     //SM0=0;SM1=1;REN=1;0101 0000.串口工作方式1,允許串行控制
  27.     PCON=0x00;     //設(shè)置SMOD=0
  28.     IE=0x90;            //EA=1;ES=1;CPU允許中斷,串行允許中斷
  29.         
  30.     TI=1;                 //中斷請求標(biāo)志位,直接使用printf必須加入此句才能實現(xiàn)發(fā)送
  31. }

  32. void delay(unsigned int z)
  33. {
  34.     unsigned int x,y;
  35.     for(x=z;x>0;x--)
  36.     for(y=110;y>0;y--);
  37. }
復(fù)制代碼
    4、仿真結(jié)果

仿真結(jié)果輸出

仿真結(jié)果輸出

  • 溫馨提示:如果仿真出現(xiàn)如下圖所示的亂碼現(xiàn)象,將51單片機(jī)的晶振設(shè)置為11.0592MHz
      1.png 7.png


     二、利用VSPD軟件虛擬一對串口,然后在PC中使用串口助手和Proteus中的MCU進(jìn)行通信。
     1、打開安裝好的VSPD軟件,設(shè)置好需要創(chuàng)建的串口對的端口號(這里使用COM3和COM4作為示例),然后點擊add virtual pair按鈕;
8.png 9.png

    2、設(shè)置DB9串口參數(shù)和串口助手參數(shù)
       這里Component Reference和Component Value不是必填選項,下面的端口選擇我們之前創(chuàng)建的虛擬串口對COM3和COM4中的其中一個,演示時我這邊使用(串口3,波特率9600,8位數(shù)據(jù)位,1位停止位,無校驗,無流控)的參數(shù)條件。在串口助手中使用(串口4,波特率9600,8位數(shù)據(jù)位,1位停止位,無校驗,無流控)。
  • DB9串口定義和接線參考

DB9串口定義和接線

DB9串口定義和接線


  • DB9串口參數(shù)設(shè)置
12.png

  • 串口助手參數(shù)設(shè)置
11.png    
    3、仿真電路圖
13.png

    需要注意的是Proteus中的DB9為母頭接口,而電腦PC的為公頭接口,所以連接方式,需要RXD接DB9的RXD,TXD接DB9的TXD。
   4、仿真結(jié)果
14.png





附件給大家打包了,里面包括了proteus仿真+程序+VSPD虛擬串口軟件+串口助手軟件
UART_proteus仿真 程序 VSPD軟件 串口助手軟件.zip (7.28 MB, 下載次數(shù): 61)







評分

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

查看全部評分

回復(fù)

使用道具 舉報

ID:210959 發(fā)表于 2023-9-6 16:56 | 顯示全部樓層
感謝樓主提供的好資料。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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