標(biāo)題: 51單片機(jī)UART通信打印信息+源碼+proteus仿真+VSPD虛擬串口 [打印本頁(yè)]

作者: 1327874105    時(shí)間: 2023-8-21 17:27
標(biāo)題: 51單片機(jī)UART通信打印信息+源碼+proteus仿真+VSPD虛擬串口
       一、使用51單片機(jī)的串口與Proteus的Virtual Terminal(虛擬終端)進(jìn)行一個(gè)簡(jiǎn)單的串口通信,實(shí)現(xiàn)的功能是讓Virtual Terminal通過(guò)串口 向單片機(jī)發(fā)送數(shù)據(jù),單片機(jī)接收到數(shù)據(jù)后經(jīng)串口將數(shù)據(jù)發(fā)送到Virtual Terminal上顯示。

      1、Virtual Terminal

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

      2、仿真電路圖


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


  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í)器/計(jì)數(shù)器1,工作方式2
  22.     TH1=0xfd;          //設(shè)置波特率為9600
  23.     TL1=0xfd;
  24.     TR1=1;               //啟動(dòng)定時(shí)器/計(jì)數(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;                 //中斷請(qǐng)求標(biāo)志位,直接使用printf必須加入此句才能實(shí)現(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é)果


     


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


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




   
    3、仿真電路圖


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






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








作者: 51heizlxz    時(shí)間: 2023-9-6 16:56
感謝樓主提供的好資料。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1