RS-232接口與單片機(jī)串行通信程序
第二步:VB軟件編寫
當(dāng)軟件的界面設(shè)計(jì)完成后,我們就可以給程序添加代碼了,在程序中實(shí)現(xiàn)的主要功能如下:RS-232端口初始化、檢測(cè)PC鍵盤按壓的按鍵、發(fā)送按鍵編碼、在數(shù)據(jù)發(fā)送窗顯示當(dāng)前按鍵編碼、在接收數(shù)據(jù)窗中接收顯示單片機(jī)發(fā)送來的數(shù)據(jù),檢測(cè)繼電器控制按鈕的操作,發(fā)送繼電器控制命令。。。如下圖5所示:
RS-232串口通信測(cè)試軟件程序代碼編寫 | ||
![]() | ||
圖 5 |
【串行通信實(shí)驗(yàn)操作】
完成了單片機(jī)通信程序及PC上我VB程序開發(fā)后,我們編譯工程,得到單片機(jī)芯片燒寫的HEX格式目標(biāo)文件rs232test.hex和串口測(cè)試程序可以執(zhí)行文件RS232test.exe,然后我們就可以拿出實(shí)驗(yàn)板,馬上進(jìn)行串口通信實(shí)驗(yàn)了,檢測(cè)一下我們的實(shí)際通信效果。
1、使用ISP編程器將目標(biāo)文件rs232test.hex燒寫到AT89S51單片機(jī)中(見下圖6)
![]() |
2、如前面的圖2所示:我們將燒寫好了通信程序的AT89S51芯片鎖緊到S51單片機(jī)實(shí)驗(yàn)板上,然后把1602字符型液晶模塊插到實(shí)驗(yàn)板的1602接口上,用RS232串口通信電纜和USB電纜將實(shí)驗(yàn)板和電腦連接好,按壓實(shí)驗(yàn)板的電源開關(guān),開啟電源,此時(shí)實(shí)驗(yàn)板上的電源指示燈亮起來,實(shí)驗(yàn)板準(zhǔn)備就緒,隨時(shí)可以接收電腦發(fā)送的數(shù)據(jù)了。
3、雙擊我們編寫的串口測(cè)試程序RS232test.exe,啟動(dòng)RS-232串行通信測(cè)試軟件,在軟件上設(shè)置好和實(shí)驗(yàn)板連接的通信端口,然后點(diǎn)擊“PC發(fā)送數(shù)據(jù)發(fā)送窗”,即可激活輸入窗口,然后我們按壓電腦鍵盤上的按鍵,按壓PS2鍵盤的按鍵將會(huì)被顯示在軟件中,同時(shí)發(fā)送到單片機(jī)上通過1602液晶模塊進(jìn)行顯示,當(dāng)接收到正確數(shù)據(jù)時(shí)候,實(shí)驗(yàn)板上的蜂鳴器也會(huì)發(fā)出短促的聲音,使你按壓鍵盤的感覺從聲音上體現(xiàn)出來。從單片機(jī)發(fā)送回來的數(shù)據(jù)被軟件接收后,會(huì)還原顯示在發(fā)送數(shù)據(jù)窗中,如果我們?cè)陔娔X上按壓的鍵盤上的按鍵,在軟件的發(fā)送窗、接收窗及實(shí)驗(yàn)板上1602液晶模塊上顯示的按鍵都相同,則說明我們電腦的RS-232串口良好,單片機(jī)的串口也是良好的,通信正常。然后,我們可以點(diǎn)擊軟件中的“繼電器”按鈕,實(shí)驗(yàn)板上的單片機(jī)接收到電腦的控制指令后,就會(huì)控制繼電器產(chǎn)生相應(yīng)的開關(guān)動(dòng)作,實(shí)現(xiàn)電腦軟件對(duì)實(shí)驗(yàn)板上繼電器的控制。
通過實(shí)驗(yàn)加深對(duì)51單片機(jī)串口的認(rèn)識(shí):
下面我們通過這套串口測(cè)試程序來做個(gè)額外實(shí)驗(yàn)。理論上,當(dāng)我們按壓鍵盤上的按鍵,所有按鍵都會(huì)發(fā)送到單片機(jī),然后再返回計(jì)算機(jī)上的,在串口測(cè)試軟件上的PC發(fā)送數(shù)據(jù)窗和接收數(shù)據(jù)窗中顯示的字符數(shù)目、字符應(yīng)該是完全相同的,如上面圖1中顯示。但是,當(dāng)我們連續(xù)快速按壓PC鍵盤(注意:連續(xù)速度要足夠快哦,才能看到實(shí)驗(yàn)現(xiàn)象)時(shí),會(huì)發(fā)現(xiàn)接收數(shù)據(jù)窗中有時(shí)候會(huì)漏掉字符,累積下來,接收窗中的字符就會(huì)比發(fā)送窗中的字符少了。
發(fā)生這種現(xiàn)象的原因是什么 ?!
其實(shí)這是由于計(jì)算機(jī)發(fā)送過來的數(shù)據(jù)太快,而單片機(jī)的串口中斷一次只能接收處理一個(gè)數(shù)據(jù),前一個(gè)數(shù)據(jù)還沒有處理完,后面又有數(shù)據(jù)發(fā)送過來,單片機(jī)來不及處理漏掉了。這是由51單片機(jī)的串口特性決定的,AT89S51單片機(jī)的串口只有一個(gè)字節(jié)的發(fā)送和接收緩沖區(qū)SBUF,也就是說每次只能發(fā)送或接收一個(gè)字節(jié)數(shù)據(jù),如果在接收的數(shù)據(jù)沒有及時(shí)處理完,而又有新的數(shù)據(jù)進(jìn)來,會(huì)造成數(shù)據(jù)丟失,不像計(jì)算機(jī)中VB6的MSCOMM串行通信控件,默認(rèn)的接收緩沖區(qū)為1024字節(jié),而默認(rèn)的發(fā)送緩沖區(qū)也有512字節(jié),而且還可以改變緩沖區(qū)大小,計(jì)算機(jī)有了收發(fā)數(shù)據(jù)緩沖區(qū),通信當(dāng)中就不容易出現(xiàn)緩沖區(qū)溢出而通信錯(cuò)誤的現(xiàn)象。
在測(cè)控系統(tǒng)中,如果出現(xiàn)這種錯(cuò)誤的話則有可能系統(tǒng)失控,數(shù)據(jù)出錯(cuò),誤報(bào)警等。當(dāng)然,我們?cè)谕ㄐ胖幸部梢约尤胄r?yàn)機(jī)制來檢查錯(cuò)誤,但這種現(xiàn)象也使系統(tǒng)穩(wěn)定性降低,出現(xiàn)莫名其妙的故障,而且這種屬于軟件故障,我們往往不容易想到,會(huì)走彎路。為了減少這種問題的出現(xiàn),在這里站長(zhǎng)提醒大家,在開發(fā)的單片機(jī)串口中斷服務(wù)子程序中,要盡量加快數(shù)據(jù)處理速度,在接收完成數(shù)據(jù)后,要及時(shí)打開串口中斷,以便接收新的數(shù)據(jù),而其他占用時(shí)間的運(yùn)算程序盡量不要在串口中斷里面處理,這是每一個(gè)單片機(jī)開發(fā)人員值得注意的問題,希望大家能夠從我們這個(gè)實(shí)驗(yàn)中得到啟發(fā),開發(fā)出更完美的程序來,少走彎路。
好了,這個(gè)實(shí)驗(yàn)到此結(jié)束了,希望大家通過對(duì)這個(gè)軟件的學(xué)習(xí),掌握單片機(jī)實(shí)時(shí)溫度監(jiān)控的開發(fā)、串口通信程序的開發(fā)及計(jì)算機(jī)串口實(shí)時(shí)控制開發(fā)原理及PC監(jiān)控軟件的開發(fā),為開發(fā)其他功能更加完善的單片機(jī)綜合應(yīng)用系統(tǒng)打好基礎(chǔ)。
51單片機(jī)相關(guān)文章:51單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)教程
單片機(jī)相關(guān)文章:單片機(jī)視頻教程
單片機(jī)相關(guān)文章:單片機(jī)工作原理
數(shù)字通信相關(guān)文章:數(shù)字通信原理
通信相關(guān)文章:通信原理
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論