標題: PROTEUS模擬串口及仿真教程 [打印本頁]
作者: xiongda 時間: 2015-5-26 19:55
標題: PROTEUS模擬串口及仿真教程
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' 等都是單片機送回來的信息。
圖中單片機使用的程序如下:
- //======================================
- #include <reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
- uchar a;
- sbit d = P3^7;
- //--------------------------------------
- say_CR_LF()
- {
- SBUF = 13; while (TI == 0); TI = 0;
- SBUF = 10; while (TI == 0); TI = 0;
- }
- //--------------------------------------
- say_yeah()
- {
- SBUF = a; while (TI == 0); TI = 0;
- SBUF = ','; while (TI == 0); TI = 0;
- SBUF = ' '; while (TI == 0); TI = 0;
- SBUF = 'y'; while (TI == 0); TI = 0;
- SBUF = 'e'; while (TI == 0); TI = 0;
- SBUF = 'a'; while (TI == 0); TI = 0;
- SBUF = 'h'; while (TI == 0); TI = 0;
- SBUF = '!'; while (TI == 0); TI = 0;
- say_CR_LF();
- }
- //--------------------------------------
- say_hello()
- {
- SBUF = 'H'; while (TI == 0); TI = 0;
- SBUF = 'e'; while (TI == 0); TI = 0;
- SBUF = 'l'; while (TI == 0); TI = 0;
- SBUF = 'l'; while (TI == 0); TI = 0;
- SBUF = 'o'; while (TI == 0); TI = 0;
- SBUF = '!'; while (TI == 0); TI = 0;
- say_CR_LF();
- }
- //--------------------------------------
- void init()
- {
- SCON = 0x50; //設置串口通信方式1, 允許接收
- PCON &= 0x7F;
- TMOD = 0x20; //設置T1定時方式2
- TH1 = 0xfd; // 9600bps @ 11.0592MHz
- TL1 = 0xfd;
- TR1 = 1; //啟動T1
- ES = 1; //開串口中斷.
- EA = 1; //開總中斷.
- say_hello();
- }
- //--------------------------------------
- void delay(uint z)
- {
- uint x, y;
- for(x = z; x > 0; x--) for(y = 110; y > 0; y--);
- }
- //--------------------------------------
- void main()
- {
- init();
- TI = 1;
- a = '4';
- while(1) {
- if(a == '1') {
- d = 0; delay(400);
- d = 1; delay(400);
- }
- else if(a == '2') {
- d = 0; delay(200);
- d = 1; delay(200);
- }
- else if(a == '3') {
- d = 0; delay(100);
- d = 1; delay(100);
- }
- else if(a == '4') {
- d = 1;
- } } }
- //--------------------------------------
- void ser() interrupt 4
- {
- if (TI == 1) TI = 0;
- if (RI == 1) {
- RI = 0;
- P0 = SBUF;
- a = SBUF; //中間變量.
- say_yeah();
- } }
- //======================================
復制代碼
作者: 王躍前 時間: 2017-12-23 21:29
好貼沒人?感謝樓主
作者: uisakgiuads 時間: 2019-3-23 08:50
樓主,為啥接收的會出現亂碼呀???按你這個io口連的呀
作者: yc鯤 時間: 2020-4-12 15:05
謝了幫助很大
作者: 妖刀亂人心 時間: 2020-6-18 14:21
感謝樓主好貼!!
歡迎光臨 (http://m.zg4o1577.cn/bbs/) |
Powered by Discuz! X3.1 |
主站蜘蛛池模板:
国产一区二区中文字幕
|
三级在线视频
|
天天色影院
|
黄色福利视频
|
天堂a在线
|
a视频在线观看
|
日韩在线观看中文字幕
|
日韩精品视频在线
|
精品一区二区在线播放
|
亚洲第一免费视频
|
亚洲午夜在线
|
人人艹人人|
免费中文字幕日韩欧美
|
男人操女人的网站
|
黄色免费大片
|
黄色片视频网站
|
日韩不卡一区
|
欧美不卡一区二区三区
|
国产自产21区|
色av吧
|
亚洲欧美在线观看
|
国产成人三级在线观看
|
成年人免费看视频
|
深夜福利网
|
美日韩在线视频
|
日韩成人在线观看
|
亚洲精品乱码久久久久久
|
伦一理一级一a一片
|
av播播
|
波多野结衣视频在线播放
|
久久精品国产一区二区
|
97在线观看视频
|
老司机午夜免费精品视频
|
黄色伊人
|
天堂8中文|
久久免费视频观看
|
手机看片福利视频
|
日韩在线欧美
|
免费av在线
|
亚洲精品www久久久久久广东
|
中文字幕在线观看网址
|