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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > RS-232接口與單片機串行通信程序

          RS-232接口與單片機串行通信程序

          作者: 時間:2013-01-15 來源:網絡 收藏

          第二步:VB軟件編寫

          當軟件的界面設計完成后,我們就可以給程序添加代碼了,在程序中實現(xiàn)的主要功能如下:RS-232端口初始化、檢測PC鍵盤按壓的按鍵、發(fā)送按鍵編碼、在數據發(fā)送窗顯示當前按鍵編碼、在接收數據窗中接收顯示發(fā)送來的數據,檢測繼電器控制按鈕的操作,發(fā)送繼電器控制命令。。。如下圖5所示:

          RS-232串口通信測試軟件程序代碼編寫
          點擊瀏覽下一頁

          圖 5


          實驗操作】

          完成了通信程序及PC上我VB程序開發(fā)后,我們編譯工程,得到芯片燒寫的HEX格式目標文件rs232test.hex和串口測試程序可以執(zhí)行文件RS232test.exe,然后我們就可以拿出實驗板,馬上進行串口通信實驗了,檢測一下我們的實際通信效果。

          1、使用ISP編程器將目標文件rs232test.hex燒寫到AT89S51單片機中(見下圖6)

          點擊瀏覽下一頁

          2、如前面的圖2所示:我們將燒寫好了通信程序的AT89S51芯片鎖緊到S51單片機實驗板上,然后把1602字符型液晶模塊插到實驗板的1602接口上,用RS232串口通信電纜和USB電纜將實驗板和電腦連接好,按壓實驗板的電源開關,開啟電源,此時實驗板上的電源指示燈亮起來,實驗板準備就緒,隨時可以接收電腦發(fā)送的數據了。

          3、雙擊我們編寫的串口測試程序RS232test.exe,啟動RS-232測試軟件,在軟件上設置好和實驗板連接的通信端口,然后點擊“PC發(fā)送數據發(fā)送窗”,即可激活輸入窗口,然后我們按壓電腦鍵盤上的按鍵,按壓PS2鍵盤的按鍵將會被顯示在軟件中,同時發(fā)送到單片機上通過1602液晶模塊進行顯示,當接收到正確數據時候,實驗板上的蜂鳴器也會發(fā)出短促的聲音,使你按壓鍵盤的感覺從聲音上體現(xiàn)出來。從單片機發(fā)送回來的數據被軟件接收后,會還原顯示在發(fā)送數據窗中,如果我們在電腦上按壓的鍵盤上的按鍵,在軟件的發(fā)送窗、接收窗及實驗板上1602液晶模塊上顯示的按鍵都相同,則說明我們電腦的RS-232串口良好,單片機的串口也是良好的,通信正常。然后,我們可以點擊軟件中的“繼電器”按鈕,實驗板上的單片機接收到電腦的控制指令后,就會控制繼電器產生相應的開關動作,實現(xiàn)電腦軟件對實驗板上繼電器的控制。


          通過實驗加深對51單片機串口的認識:

          下面我們通過這套串口測試程序來做個額外實驗。理論上,當我們按壓鍵盤上的按鍵,所有按鍵都會發(fā)送到單片機,然后再返回計算機上的,在串口測試軟件上的PC發(fā)送數據窗和接收數據窗中顯示的字符數目、字符應該是完全相同的,如上面圖1中顯示。但是,當我們連續(xù)快速按壓PC鍵盤(注意:連續(xù)速度要足夠快哦,才能看到實驗現(xiàn)象)時,會發(fā)現(xiàn)接收數據窗中有時候會漏掉字符,累積下來,接收窗中的字符就會比發(fā)送窗中的字符少了。

          發(fā)生這種現(xiàn)象的原因是什么 ?!

          其實這是由于計算機發(fā)送過來的數據太快,而單片機的串口中斷一次只能接收處理一個數據,前一個數據還沒有處理完,后面又有數據發(fā)送過來,單片機來不及處理漏掉了。這是由51單片機的串口特性決定的,AT89S51單片機的串口只有一個字節(jié)的發(fā)送和接收緩沖區(qū)SBUF,也就是說每次只能發(fā)送或接收一個字節(jié)數據,如果在接收的數據沒有及時處理完,而又有新的數據進來,會造成數據丟失,不像計算機中VB6的MSCOMM控件,默認的接收緩沖區(qū)為1024字節(jié),而默認的發(fā)送緩沖區(qū)也有512字節(jié),而且還可以改變緩沖區(qū)大小,計算機有了收發(fā)數據緩沖區(qū),通信當中就不容易出現(xiàn)緩沖區(qū)溢出而通信錯誤的現(xiàn)象。

          在測控系統(tǒng)中,如果出現(xiàn)這種錯誤的話則有可能系統(tǒng)失控,數據出錯,誤報警等。當然,我們在通信中也可以加入校驗機制來檢查錯誤,但這種現(xiàn)象也使系統(tǒng)穩(wěn)定性降低,出現(xiàn)莫名其妙的故障,而且這種屬于軟件故障,我們往往不容易想到,會走彎路。為了減少這種問題的出現(xiàn),在這里站長提醒大家,在開發(fā)的單片機串口中斷服務子程序中,要盡量加快數據處理速度,在接收完成數據后,要及時打開串口中斷,以便接收新的數據,而其他占用時間的運算程序盡量不要在串口中斷里面處理,這是每一個單片機開發(fā)人員值得注意的問題,希望大家能夠從我們這個實驗中得到啟發(fā),開發(fā)出更完美的程序來,少走彎路。

          好了,這個實驗到此結束了,希望大家通過對這個軟件的學習,掌握單片機實時溫度監(jiān)控的開發(fā)、串口通信程序的開發(fā)及計算機串口實時控制開發(fā)原理及PC監(jiān)控軟件的開發(fā),為開發(fā)其他功能更加完善的單片機綜合應用系統(tǒng)打好基礎。

          51單片機相關文章:51單片機教程


          單片機相關文章:單片機教程


          單片機相關文章:單片機視頻教程


          單片機相關文章:單片機工作原理


          數字通信相關文章:數字通信原理


          通信相關文章:通信原理



          上一頁 1 2 3 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();