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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

PROTEUS模擬串口及仿真教程

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:81203 發(fā)表于 2015-5-26 19:55 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

1、利用 COMPIM 組件

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


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

同樣道理,其它的硬件設(shè)備送到 PC 機(jī)的 COM1 的串行數(shù)據(jù),也會在 COMPIM 的2號引腳出現(xiàn),送到仿真電路里面。

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

利用 COMPIM,就可以用一臺 PC 機(jī),仿真帶有串行口的單片機(jī)系統(tǒng),通過外接的電纜,和另外一臺 PC 機(jī)進(jìn)行全雙工的串行通信。十分輕松的就實現(xiàn)了對遠(yuǎn)程測量、控制系統(tǒng)進(jìn)行仿真調(diào)試。

2、利用 Virtual Serial Port Driver 軟件

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



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

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

仿真調(diào)試的畫面如下:



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

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

圖中單片機(jī)使用的程序如下:
  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;     //設(shè)置串口通信方式1, 允許接收
  41.      PCON &= 0x7F;
  42.      TMOD = 0x20;     //設(shè)置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. //======================================
復(fù)制代碼


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

使用道具 舉報

沙發(fā)
ID:252749 發(fā)表于 2017-12-23 21:29 | 只看該作者
好貼沒人?感謝樓主
回復(fù)

使用道具 舉報

板凳
ID:495179 發(fā)表于 2019-3-23 08:50 | 只看該作者
樓主,為啥接收的會出現(xiàn)亂碼呀???按你這個io口連的呀
回復(fù)

使用道具 舉報

地板
ID:701532 發(fā)表于 2020-4-12 15:05 | 只看該作者
謝了幫助很大
回復(fù)

使用道具 舉報

5#
ID:782249 發(fā)表于 2020-6-18 14:21 | 只看該作者
感謝樓主好貼!!
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 色婷婷久久久久swag精品 | 成在线人视频免费视频 | 91麻豆精品一区二区三区 | 涩涩视频网站在线观看 | 精品国产乱码久久久久久闺蜜 | 在线观看成年视频 | 一级做a爰片久久毛片 | 国产精品看片 | 手机av在线 | 久久综合成人精品亚洲另类欧美 | 亚洲精品乱码久久久久久久久久 | 久久国产精品无码网站 | 中文字幕不卡 | 国产精品1区 | 国产精品一级在线观看 | 亚洲精品久久国产高清情趣图文 | 欧区一欧区二欧区三免费 | 成人超碰 | 看羞羞视频免费 | 成人在线免费视频 | 亚洲一区二区精品视频 | 亚洲乱码国产乱码精品精的特点 | 九九九久久国产免费 | 欧美午夜视频 | 欧美午夜精品久久久久久浪潮 | 成人免费在线视频 | 伊人一区 | 久久精品亚洲国产奇米99 | 日韩综合一区 | 五月婷婷视频 | 夜夜草视频 | 国产日韩久久久久69影院 | 草久久 | 91激情视频 | 亚洲欧美激情四射 | 国产电影一区 | 欧美日韩精品中文字幕 | 亚洲日日夜夜 | 国产精品成人一区二区三区夜夜夜 | 久久国内| 久久精品91久久久久久再现 |