<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

第二步:VB軟件編寫(xiě)

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

RS-232串口通信測試軟件程序代碼編寫(xiě)
點(diǎn)擊瀏覽下一頁(yè)

圖 5


實(shí)驗操作】

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

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

點(diǎn)擊瀏覽下一頁(yè)

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

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


通過(guò)實(shí)驗加深對51單片機串口的認識:

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

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

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

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

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

51單片機相關(guān)文章:51單片機教程


單片機相關(guān)文章:單片機教程


單片機相關(guān)文章:單片機視頻教程


單片機相關(guān)文章:單片機工作原理


數字通信相關(guān)文章:數字通信原理


通信相關(guān)文章:通信原理



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

關(guān)鍵詞: RS-232接口 單片機 串行通信

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>