新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機編程-虛擬串口

        51單片機編程-虛擬串口

        作者: 時間:2016-11-11 來源:網(wǎng)絡 收藏
        串口通信在一些通信方面的項目中用的很多,但是學習起來往往條件不夠充分。這里我介紹一款軟件“虛擬串口”助你學。SUDT SerialNull V1.7http://www.skycn.com/soft/27579.html

        1.安裝完畢后打開該軟件

        本文引用地址:http://www.104case.com/article/201611/316876.htm

        上面為你實際的物理串行口COM3,COM4(注意我的電腦兩個串口壞了,換上了PCI 串口卡(長的很像內(nèi)存條),裝了驅(qū)動就設置為COM3,COM4,你的沒壞的話應該是COM1,COM2,新增虛擬物理串口就是COM3,COM4了),下面是虛擬的物理串行口。下面我們來增加一對虛擬串行口。

        因為一般的電腦最多為兩個串行口,在這個畫面上,我們設置為com3,com4,點擊add pair就可以增加一對虛擬串口(如上圖所示)。這兩對端口是通過這個軟件物理連接的,并且是rs232電平連接。

        這樣我們就完成里串口的設置,可以把此軟件關(guān)閉,這兩個端口將會一直存在于你的電腦中,下次直接使用就可以了。

        打開兩個串口調(diào)試助手。一個選COM1,發(fā)ABCDEFGHI,選中“自動發(fā)送”,另外一個選中COM2,發(fā)123456789,同樣選中“自動發(fā)送”。看看兩個串口是不是已經(jīng)忙活起來了。呵呵,帥吧。

        OK,現(xiàn)在開始模仿單片機與PC機的串行通信吧。PROTEUS就不用介紹了吧。

        注意:這里的單片機的RXD要與P1的RXD, 單片機的TXD要與P1的TXD,P1設置為COM1(虛擬串口中的一個),波特率就設為2400,然后打開串口調(diào)試助手,設為COM2(虛擬串口的另外一個),波特率就設為2400。點擊PROTEUS中的PLAY,點擊BUTTON,看看串口調(diào)試助手里面的東東吧。是不是點擊一下BUTTON就發(fā)一串字符到串口調(diào)試助手。

        有了這東東,以后學習串口就不用發(fā)愁了。這是我從網(wǎng)上一片文章中借鑒的,你可以上網(wǎng)查查,把串口這一塊吃透。

        源程序如下:

        #include

        #include

        char code str[] = "I love MCU nr";

        void send_int(void);

        void delayms(unsigned char ms);

        void send_char(unsigned char txd);

        void send_str();

        sbit K1 = P1^4;

        main()

        {

        send_int();

        TR1 = 1; // 啟動定時器1

        while(1)

        {

        if(!K1) // 掃描按鍵

        {

        delayms(10); // 延時去抖動

        if(!K1) // 再次掃描

        {

        send_str();

        while(!K1);

        }

        }

        }

        }

        void send_int(void)

        { TMOD = 0x20; // 定時器1工作于8位自動重載模式, 用于產(chǎn)生波特率

        TH1 = 0xF3; // 波特率2400

        TL1 = 0xF3;

        SCON = 0x50; // 設定串行口工作方式

        PCON&= 0xef; // 波特率不倍增

        IE = 0x0; // 禁止任何中斷

        }

        void send_char(unsigned char txd)

        // 傳送一個字符

        {

        SBUF = txd;

        while(!TI); // 等特數(shù)據(jù)傳送

        TI = 0; // 清除數(shù)據(jù)傳送標志

        }

        void send_str()

        // 傳送字串

        {

        unsigned char i = 0;

        while(str[i] !=

        主站蜘蛛池模板: 江安县| 祁阳县| 岚皋县| 扎鲁特旗| 澎湖县| 喀什市| 兴业县| 天长市| 西畴县| 卢龙县| 临清市| 琼海市| 上思县| 玉门市| 油尖旺区| 金湖县| 乌审旗| 伊金霍洛旗| 三都| 镇雄县| 炉霍县| 岑溪市| 灵宝市| 马鞍山市| 阳高县| 会宁县| 油尖旺区| 察雅县| 常山县| 德昌县| 九台市| 隆德县| 公主岭市| 石林| 晋江市| 南雄市| 黄陵县| 玉龙| 磴口县| 嫩江县| 金湖县|