<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          RS232串口通信篇

          作者: 時(shí)間:2016-12-16 來(lái)源:網(wǎng)絡(luò) 收藏

          本文引用地址:http://www.ex-cimer.com/article/201612/330818.htm

            為了能夠在電腦端看到單片機(jī)發(fā)出的數(shù)據(jù),我們必須借助一個(gè)PC 機(jī)(上位機(jī))的軟件進(jìn)行觀察,這里我們推薦一個(gè)免費(fèi)的電腦串口調(diào)試軟件——串口調(diào)試助手,軟件界面如圖5 所示。

            軟件可以設(shè)定串口號(hào)、波特率、校驗(yàn)位等參數(shù),非常實(shí)用。在實(shí)際應(yīng)用中一定要保證上位機(jī)設(shè)置與單片機(jī)相統(tǒng)一,否則數(shù)據(jù)將會(huì)出錯(cuò)。串口調(diào)試助手可以從http://www.hificat.com/ 免費(fèi)下載使用。

            對(duì)于下位機(jī)軟件的編程,我們使用MPLab IDE 軟件來(lái)進(jìn)行C 語(yǔ)言編程,它是我們的編程環(huán)境,同時(shí)我們可以通過(guò)使用ICD2 仿真燒寫(xiě)器和增強(qiáng)型PIC實(shí)驗(yàn)板連接進(jìn)行程序的仿真調(diào)試和燒寫(xiě)步驟,具體的操作步驟,我們已經(jīng)在前幾期做了詳細(xì)的說(shuō)明和介紹,在此就不再重復(fù)說(shuō)明,讀者朋友可以參閱以前的文章或直接登陸http://www.hificat.com/pic_demo/pic_demo.asp 查看資料?,F(xiàn)在我們可以輸入程序代碼進(jìn)行調(diào)試了,我們?cè)贛PLab IDE 軟件中新建工程,加入源程序代碼,同時(shí)進(jìn)行芯片型號(hào)的選擇和配置位的設(shè)置,我們實(shí)驗(yàn)所用的芯片型號(hào)為PIC16F877A。編寫(xiě)的程序代碼如下:

            #includepic.h> / 包含單片機(jī)內(nèi)部資源預(yù)定義

            unsigned char recdata;

            void delay() // 延時(shí)子程序

            {

            unsigned int k;

            for(k=0;k300;k++);

            }

            //------------------------------

            // 主程序

            void main()

            {

            TRISC=0xC0; // 設(shè)置C 口方向

            TRISA=0XC0; //RA0--RA5 為輸出

            SPBRG=0X19; // 設(shè)置波特率為9600BPS

            TXSTA=0X24; // 使能串口發(fā)送,選擇高速波特率

            RCSTA=0X90; // 使能串口工作,連續(xù)接收

            RCIE=0X1; // 使能接收中斷

            GIE=0X1; // 開(kāi)放全局中斷

            PEIE=0X1; // 使能外部中斷

            while(1) // 等待中斷

            {

            switch (recdata)

            {

            case 0x01:PORTC=0x01;break;

            case 0x02:PORTC=0x02;break;

            case 0x03:PORTC=0x04;break;

            case 0x04:PORTC=0x08;break;

            case 0x05:PORTC=0x10;break;

            case 0x06:PORTC=0x20;break;

            }

            delay();

            }

            }

            //------------------------------

            // 中斷函數(shù)

            void interrupt usart(void)

            {

            if(RCIF) // 判斷是否為串口接收中斷

            {

            RCIF=0;

            recdata=RCREG; // 接收數(shù)據(jù)并存儲(chǔ)

            TXREG=recdata; // 返送接收到的數(shù)據(jù) // 把接

            收到的數(shù)據(jù)發(fā)送回去

            }

            }

            編好程序后,讀者朋友可以將編譯好的HEX 通過(guò)ICD2 仿真燒寫(xiě)器燒入單片機(jī)芯片,然后上電運(yùn)行。首先,我們打開(kāi)串口調(diào)試助手,設(shè)定好串口序號(hào)、波特率等相關(guān)參數(shù),具體參數(shù)見(jiàn)圖6 所示,然后我們發(fā)送十六進(jìn)制數(shù)“01”,我們的思路是發(fā)送數(shù)據(jù)“01”,則點(diǎn)亮實(shí)驗(yàn)板上第一個(gè)LED 發(fā)光管;發(fā)送數(shù)據(jù)“02”,則點(diǎn)亮板上第二個(gè)LED 發(fā)光管,現(xiàn)在我們發(fā)送了“01”后,我們可以看到實(shí)驗(yàn)板上的第一個(gè)發(fā)光管已點(diǎn)亮,如圖7 所示,同樣,你可以試一下用串口調(diào)試助手發(fā)送其它數(shù)據(jù)內(nèi)容,板子上將會(huì)出現(xiàn)何種現(xiàn)象。

            我們輸入了這么長(zhǎng)一段程序后,作為初學(xué)者的讀者一定對(duì)有些語(yǔ)句會(huì)有點(diǎn)疑問(wèn),下面我們就來(lái)一起結(jié)果實(shí)際,看一下一些關(guān)鍵程序語(yǔ)句的作用。

            #includepic.h> 語(yǔ)句用來(lái)加載PIC庫(kù)文件,頭部recdata 變量的定義是用來(lái)存放我們接收到的串口數(shù)據(jù),void delay () 是延時(shí)函數(shù),TRISC、TRISA 相關(guān)的語(yǔ)句用來(lái)設(shè)置RC、RA 口的輸入、輸出狀態(tài),在此我們?cè)O(shè)置為輸出。SPBRG=0X19 至PEIE=0X1 這些語(yǔ)句,分別是對(duì)串口通信參數(shù)的配置與開(kāi)啟中斷使能, while(1) 是死循環(huán)語(yǔ)句,即周而復(fù)始地執(zhí)行{ } 內(nèi)的語(yǔ)句體,如我們現(xiàn)在的程序中的作用即是不停地判斷recdata 這個(gè)變量,也就是不停地判斷串口接收到的數(shù)據(jù)是否為0x01、0x02??

            0x06 這些數(shù)據(jù),通過(guò)判斷不同的數(shù)值,再點(diǎn)亮板上LED 發(fā)光管,即PORTC 端口的賦值。在程序尾部有個(gè)interrupt usart() 函數(shù),它是我們的中斷處理函數(shù),當(dāng)有串口中斷產(chǎn)生時(shí),就會(huì)進(jìn)入這個(gè)函數(shù)體,函數(shù)體中語(yǔ)句的主要作用是把接收到的串口數(shù)據(jù)放到變量recdata 中,同時(shí)將接收到的數(shù)據(jù)再返回給上位機(jī),即回傳給PC 機(jī),這樣就進(jìn)行了一次完整的雙向通信。

            信的原理與使用我們講到這里,接下來(lái)幾期,我們將繼續(xù)一起學(xué)習(xí)增強(qiáng)型PIC 實(shí)驗(yàn)板的其它各部分資源的原理與使用,使你對(duì)單片機(jī)應(yīng)用的各方面知識(shí)都有所入門(mén)與提高。增強(qiáng)型PIC實(shí)驗(yàn)板系統(tǒng)資源豐富,可做實(shí)驗(yàn)有:6 位LED 數(shù)碼管、8 路LED、直控鍵盤(pán)、蜂鳴器喇叭、繼電器試驗(yàn)、I2C 總線接口、SPI 總線接口、160X 液晶、128X64液晶、紅外接收頭接口、步進(jìn)電機(jī)驅(qū)動(dòng)接口、AD模/ 數(shù)轉(zhuǎn)換接口、串行時(shí)鐘芯片DS1302、溫度傳感器DS18B20 接口、訊、外擴(kuò)展接口以便外接更多的實(shí)驗(yàn)資源。


          上一頁(yè) 1 2 下一頁(yè)

          關(guān)鍵詞: RS232串口通

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();