久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 25737|回復: 4
收起左側

PROTEUS模擬串口及仿真教程

[復制鏈接]
ID:81203 發表于 2015-5-26 19:55 | 顯示全部樓層 |閱讀模式

1、利用 COMPIM 組件

在 PROTEUS 軟件中,可以找到一個 COMPIM 組件,它的圖形、以及默認屬性可見下圖:


把 COMPIM 放在仿真電路圖中,當仿真運行起來之后,送到 COMPIM 3 號引腳的串行數據,將會通過 PC 機的 COM1 串行口輸出,如果在 PC 機的 COM1 串行口外接一條電纜,可將串行數據送到其它的硬件設備上。

同樣道理,其它的硬件設備送到 PC 機的 COM1 的串行數據,也會在 COMPIM 的2號引腳出現,送到仿真電路里面。

COMPIM 組件內部,自帶 RS-232-TTL 的電平轉換功能,因此不需要再使用電平轉換芯片。

利用 COMPIM,就可以用一臺 PC 機,仿真帶有串行口的單片機系統,通過外接的電纜,和另外一臺 PC 機進行全雙工的串行通信。十分輕松的就實現了對遠程測量、控制系統進行仿真調試。

2、利用 Virtual Serial Port Driver 軟件

上述的調試方法,可以說是很完備的了,但是還是必須在兩個串行口之間連接一條串行通信電纜。為了省去這條電纜,就應該看看虛擬串口軟件。
Virtual Serial Port Driver 軟件可以為 PC 機增加一些兩兩連接的虛擬串行口。
該軟件運行起來如下圖所示:



在圖中可以看到,COM1、COM2 就是“一對連接好虛擬串行口”;PC 機原來就有的實際的串行口,稱為物理串行口,為 COM3。
在圖中的下部,是 WINODWS 的設備管理器,從中也可以看到新添加的串行口信息。

有了這兩兩連接的虛擬串行口,就可以在同一臺 PC 機上,進行兩個軟件的全雙工串行通信了,并且不需要使用通信電纜。
-------------------
在前面提到的博文中,是利用 Virtual Terminal 調試單片機系統,現在就可以使用 COMPIM 組件和虛擬串口軟件來調試了。

仿真調試的畫面如下:



圖中,PROTEUS 仿真的單片機系統使用 COM1,“串口調試助手”使用 COM2。
這里用的“串口調試助手”,是 STC 單片機下載軟件中帶的,使用其它的“串口助手”軟件,也是完全可以的。

當通信的雙方都運行起來后,在“串口調試助手”發送'1'、'2'...就可以控制單片機的工作,圖中的 'Hello!'、'yeah' 等都是單片機送回來的信息。

圖中單片機使用的程序如下:
  1. //======================================
  2. #include <reg52.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. uchar a;
  6. sbit d = P3^7;
  7. //--------------------------------------
  8. say_CR_LF()
  9. {
  10.      SBUF = 13; while (TI == 0); TI = 0;
  11.      SBUF = 10; while (TI == 0); TI = 0;
  12. }
  13. //--------------------------------------
  14. say_yeah()
  15. {
  16.      SBUF = a;    while (TI == 0); TI = 0;
  17.      SBUF = ','; while (TI == 0); TI = 0;
  18.      SBUF = ' '; while (TI == 0); TI = 0;
  19.      SBUF = 'y'; while (TI == 0); TI = 0;
  20.      SBUF = 'e'; while (TI == 0); TI = 0;
  21.      SBUF = 'a'; while (TI == 0); TI = 0;
  22.      SBUF = 'h'; while (TI == 0); TI = 0;
  23.      SBUF = '!'; while (TI == 0); TI = 0;
  24.      say_CR_LF();
  25. }
  26. //--------------------------------------
  27. say_hello()
  28. {
  29.      SBUF = 'H'; while (TI == 0); TI = 0;
  30.      SBUF = 'e'; while (TI == 0); TI = 0;
  31.      SBUF = 'l'; while (TI == 0); TI = 0;
  32.      SBUF = 'l'; while (TI == 0); TI = 0;
  33.      SBUF = 'o'; while (TI == 0); TI = 0;
  34.      SBUF = '!'; while (TI == 0); TI = 0;
  35.      say_CR_LF();
  36. }
  37. //--------------------------------------
  38. void init()
  39. {
  40.      SCON = 0x50;     //設置串口通信方式1, 允許接收
  41.      PCON &= 0x7F;
  42.      TMOD = 0x20;     //設置T1定時方式2
  43.      TH1 = 0xfd;      // 9600bps @ 11.0592MHz
  44.      TL1 = 0xfd;
  45.      TR1 = 1;         //啟動T1

  46.      ES = 1;          //開串口中斷.
  47.      EA = 1;          //開總中斷.
  48.      say_hello();
  49. }
  50. //--------------------------------------
  51. void delay(uint z)
  52. {
  53.      uint x, y;
  54.      for(x = z; x > 0; x--) for(y = 110; y > 0; y--);
  55. }
  56. //--------------------------------------
  57. void main()
  58. {
  59.      init();
  60.      TI = 1;
  61.      a = '4';
  62.      while(1) {
  63.        if(a == '1') {
  64.          d = 0; delay(400);
  65.          d = 1; delay(400);
  66.        }
  67.        else if(a == '2') {
  68.          d = 0; delay(200);
  69.          d = 1; delay(200);
  70.        }
  71.        else if(a == '3') {
  72.          d = 0; delay(100);
  73.          d = 1; delay(100);
  74.        }
  75.        else if(a == '4') {
  76.          d = 1;
  77. }    } }
  78. //--------------------------------------
  79. void ser() interrupt 4
  80. {
  81.      if (TI == 1) TI = 0;
  82.      if (RI == 1) {
  83.        RI = 0;
  84.        P0 = SBUF;
  85.        a = SBUF;           //中間變量.
  86.        say_yeah();
  87. }    }
  88. //======================================
復制代碼


回復

使用道具 舉報

ID:252749 發表于 2017-12-23 21:29 | 顯示全部樓層
好貼沒人?感謝樓主
回復

使用道具 舉報

ID:495179 發表于 2019-3-23 08:50 | 顯示全部樓層
樓主,為啥接收的會出現亂碼呀???按你這個io口連的呀
回復

使用道具 舉報

ID:701532 發表于 2020-4-12 15:05 | 顯示全部樓層
謝了幫助很大
回復

使用道具 舉報

ID:782249 發表于 2020-6-18 14:21 | 顯示全部樓層
感謝樓主好貼。
回復

使用道具 舉報

6#
無效樓層,該帖已經被刪除
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜男人天堂 | 国产精品片 | 午夜av电影院 | 男女羞羞视频在线观看 | 国产成人免费视频网站视频社区 | 久热电影 | a级在线免费观看 | av一区二区三区四区 | 一区二区在线 | 午夜精品 | 久久久精品网 | 成人免费视频观看视频 | 中文字幕高清 | 99一级毛片| 国产二区三区 | 国产色网 | 美日韩精品 | 免费在线观看一区二区 | 91久久| 亚洲精品久久国产高清情趣图文 | 一区二区三区在线播放视频 | 91亚洲精| 天天躁日日躁aaaa视频 | 91九色porny首页最多播放 | 精品成人av | 国产一区二区久久 | 久久中文字幕一区 | 韩日一区| 一区亚洲 | 国产精品高潮呻吟久久 | 国产一区999 | 中文字幕视频一区 | 亚洲一区二区视频 | 久久伊| 国产69精品久久99不卡免费版 | 成人av观看 | 亚洲男女视频在线观看 | 亚洲网站在线观看 | 99精品视频免费观看 | 精久久久| 日韩在线不卡 |