摘要:隨著PC機(jī)技術(shù)和單片機(jī)技術(shù)的日益成熟,單片機(jī)與PC機(jī)通信技術(shù)的應(yīng)用也越來越廣泛, 對(duì)通信技術(shù)的研究也越來越多,特別是串行通信。該文以RS-232為接口線路,89C51單片機(jī)學(xué)習(xí)板為硬件環(huán)境,Visual Basic作為軟件開發(fā)工具,利用其提供的各種面向?qū)ο蟮拈_發(fā)工具及串行通信控件MSComm,設(shè)計(jì)了一個(gè)PC機(jī)與C51單片機(jī)串行通信系統(tǒng)。系統(tǒng)主要可以完成PC機(jī)和單片機(jī)之間手動(dòng)的數(shù)據(jù)發(fā)送,自動(dòng)的數(shù)據(jù)發(fā)送,數(shù)據(jù)傳輸過程中的奇偶校驗(yàn),單片機(jī)的按鍵觸發(fā),數(shù)碼管顯示等功能。
關(guān)鍵詞:RS-232;串行通信;MSComm;C51單片機(jī)
中圖分類號(hào):TP391 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)36-8810-02
隨著技術(shù)的發(fā)展和數(shù)據(jù)流量的不斷增長,傳統(tǒng)采用并行接口方式中存在著干擾和時(shí)鐘傳送兩大關(guān)鍵問題,這成為影響并行I/O接口的數(shù)據(jù)傳輸效率。在這個(gè)背景下,串行通信方式作為一種比較靈活的方式被廣泛的在工業(yè)控制中使用,逐漸取代并行通信。單片機(jī)和微機(jī)技術(shù)的快速發(fā)展成為多機(jī)網(wǎng)絡(luò)測控系統(tǒng)中的一個(gè)新的發(fā)展方向。
1 串行通信原理介紹
在串行通信傳輸?shù)倪^程中,通信的雙方都要按照一定的通信協(xié)議來進(jìn)行數(shù)據(jù)的傳輸。這里所指的通信協(xié)議包括數(shù)據(jù)格式、同步方式、傳送速度、傳送步驟、檢糾錯(cuò)方式以及控制字符定義等問題做出統(tǒng)一規(guī)定,在通信的雙方都必須要遵守這些規(guī)范與規(guī)定。該文中只討論起止式異步通信數(shù)據(jù)格式。
起始位:位于字符幀開頭,只占一位,為邏輯0低電平,用于向接收設(shè)備表示發(fā)送端開始發(fā)送一幀信息。
數(shù)據(jù)位:緊跟起始位之后,用戶根據(jù)情況可取5位、6位、7位或8位,低位在前高位在后。
奇偶校驗(yàn)位:位于數(shù)據(jù)位之后,僅占一位,用來表征串行通信中采用奇校驗(yàn)還是偶校驗(yàn),由用戶決定。
停止位:位于字符幀最后,為邏輯1高電平。通??扇?位、1.5位或2位,用于向接收端表示一幀字符信息已經(jīng)發(fā)送完,也為發(fā)送下一幀做準(zhǔn)備。
在串行通信中,兩相鄰字符幀之間可以沒有空閑位,也可以有若干空閑位,這由用戶來決定[4]。
2 系統(tǒng)硬件設(shè)計(jì)
2.1 系統(tǒng)組成結(jié)構(gòu)
在這個(gè)系統(tǒng)中,主要是以實(shí)現(xiàn)一臺(tái)PC機(jī)與一臺(tái)單片機(jī)串行通信,正常傳輸數(shù)據(jù)為目地的。這樣就形成了上位機(jī)和下位機(jī)的概念,上位機(jī)是一臺(tái)高性能的PC機(jī),下位機(jī)則是由單片機(jī)組成[3]。
2.2 系統(tǒng)部件功能介紹
2.2.1 MCS-51單片機(jī)
在這個(gè)系統(tǒng)中,主要實(shí)現(xiàn)的是一臺(tái)PC機(jī)和一臺(tái)單片機(jī)串行通信。上位機(jī)是一臺(tái)高性能的PC機(jī),軟件的程序設(shè)計(jì)則在上面完成。下位機(jī)則是由一單片機(jī)組成的,在此不僅要求單片機(jī)有足夠的空間存儲(chǔ)自身的執(zhí)行程序,而且可以方便用戶擴(kuò)展功能,有好的交互性。因此,我選用了市場上比較流行的性價(jià)比比較高的89C51單片機(jī)[2]作為下位機(jī)。
2.2.2 .電平轉(zhuǎn)換
單片機(jī)的串口有很大一部分是使用TTL電平標(biāo)準(zhǔn)的,它的邏輯1電平是5V,邏輯0電平是0V,而電腦串行口所使用的是RS232C的電平標(biāo)準(zhǔn),它的邏輯1電平是-3V~-15V,邏輯0電平+3V~+15V。兩者的電平范圍相差很遠(yuǎn),所以連接時(shí)需要用到電平轉(zhuǎn)換電路。這樣電路有好多種,一般來說商業(yè)化的成品會(huì)用到MAX232,DS275等專用的RS232、TTL電平轉(zhuǎn)換集成電路,但是對(duì)于普通的電子愛好者,采用這樣的器件一來購買不方便,二來還會(huì)使制作電路板的成本提高。所以對(duì)于小型器件操作,一般采用的方法是使用小功率三極管搭建電平轉(zhuǎn)換電路。本系統(tǒng)所使用的學(xué)習(xí)板就是采用了兩個(gè)NPN管(9014) 來完成電平轉(zhuǎn)換的。兩個(gè)NPN管各有自己的功能,一個(gè)用來數(shù)據(jù)接收,一個(gè)用來數(shù)據(jù)發(fā)送。
2.2.3 按鍵觸發(fā)
組成鍵盤的按鍵有觸點(diǎn)式和非觸點(diǎn)式兩種,單片機(jī)中應(yīng)用的一般是由機(jī)械觸點(diǎn)構(gòu)成的。由于按鍵是機(jī)械觸點(diǎn),當(dāng)機(jī)械觸點(diǎn)斷開、閉合時(shí),會(huì)有抖動(dòng)。這種抖動(dòng)對(duì)于人來說是感覺不到的,但對(duì)計(jì)算機(jī)來說,則是完全可以感應(yīng)到的,因?yàn)橛?jì)算機(jī)處理的速度是在微秒級(jí),而機(jī)械抖動(dòng)的時(shí)間至少是毫秒級(jí),對(duì)計(jì)算機(jī)而言,這已是一個(gè)“漫長”的時(shí)間了。為使CPU能正確地讀出按鍵的狀態(tài),對(duì)每一次按鍵只作一次響應(yīng),就必須考慮如何去除抖動(dòng),常用的去抖動(dòng)的方法有兩種:硬件方法和軟件方法。單片機(jī)中常用軟件法,因此,對(duì)于硬件方法我們不介紹。軟件法其實(shí)很簡單:在檢測到有鍵按下時(shí),執(zhí)行一個(gè)10ms左右的延時(shí)程序后,在確認(rèn)該鍵的電平是否保持閉合狀態(tài)電平,若仍保持為閉合狀態(tài)的電平,則確認(rèn)為該鍵處于閉合狀態(tài),從而去除了抖動(dòng)影響。
本次系統(tǒng)采用的鍵盤就是非編碼機(jī)械觸點(diǎn)式鍵盤,由于按鍵有16個(gè),使用的為最常見的行列式接法。
2.2.4 數(shù)碼管顯示
在單片機(jī)應(yīng)用系統(tǒng)中,顯示器顯示常用兩種方法:靜態(tài)顯示和動(dòng)態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個(gè)顯示器都要占用單獨(dú)的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼,因此,使用這種方法單片機(jī)中CPU的開銷小。但是靜態(tài)顯示也有很大的缺點(diǎn),在位數(shù)較多的時(shí),字符更新速度慢,電路比較復(fù)雜,成本比較高。因而在實(shí)際應(yīng)用中常常采用動(dòng)態(tài)顯示方式。
本系統(tǒng)所使用的單片機(jī)學(xué)習(xí)板上共有8個(gè)數(shù)碼管,且段碼為多少是由單片機(jī)P0口決定的,選取哪個(gè)數(shù)碼管則是由P2口決定的,對(duì)于我們編寫程序,知道上面這兩個(gè)內(nèi)容已經(jīng)足夠了。
2.3 MCS51單片機(jī)設(shè)計(jì)流程
2.3.1 按鍵觸發(fā)程序設(shè)計(jì)
按鍵觸發(fā)程序設(shè)計(jì)由三部分組成:按鍵掃描程序設(shè)計(jì),延時(shí)程序設(shè)計(jì),按鍵處理程序設(shè)計(jì)。按鍵掃描程序設(shè)計(jì)和延時(shí)程序設(shè)計(jì)互相配合就可以實(shí)現(xiàn)軟件防抖的功能。本次系統(tǒng)中起作用的按鍵只有一個(gè),所以掃描程序不會(huì)很復(fù)雜,也不需要采用逐點(diǎn),逐行乃至全局掃描,其原理是比較現(xiàn)在按鍵和原來按鍵的狀態(tài)是否發(fā)生變化(通過異或運(yùn)算即可),如果發(fā)生變化則去執(zhí)行處理程序,如果沒有變化則順序執(zhí)行。圖1為按鍵處理程序流程圖。endprint
2.3.2 數(shù)碼管顯示程序
本系統(tǒng)所采用的單片機(jī)學(xué)習(xí)板上的數(shù)碼管是共陽集的。所要顯示的數(shù)據(jù)都是傳給P0口,然后通過位選擇(由P2口控制)來打開你所選取的數(shù)碼管,這樣你所想要顯示的數(shù)據(jù)就在數(shù)碼管上顯示出來了。具體的步驟如下:(1)、通過查表把所要顯示的數(shù)據(jù)傳給P0口。(2)、置位選信號(hào)為低電位,使數(shù)碼管導(dǎo)通。(3)、調(diào)用延時(shí)程序,使數(shù)碼管連續(xù)顯示。(4)、關(guān)閉數(shù)碼管。
本系統(tǒng)所點(diǎn)亮的數(shù)碼管是P2.6和P2.7所控制的,如果需要變換點(diǎn)亮的數(shù)碼管,只需要使相對(duì)應(yīng)的位選信號(hào)為低位即可。
圖2 數(shù)碼管顯示程序
3 系統(tǒng)軟件設(shè)計(jì)(PC機(jī)程序結(jié)構(gòu)圖)
軟件設(shè)計(jì)是在Visual Basic 6.0環(huán)境下完成的,主要使用了MSComm控件的相關(guān)屬性。對(duì)于PC機(jī)程序設(shè)計(jì),為了使設(shè)計(jì)的系統(tǒng)可以完成正常的串行通信,并且具有一定的輔助功能,比如數(shù)據(jù)的串口的選擇,數(shù)據(jù)的自動(dòng)傳輸,時(shí)間間隔的選擇,接收閥值的設(shè)定等等。圖 3為PC機(jī)程序設(shè)計(jì)的結(jié)構(gòu)圖。
4 結(jié)論
在過去中,串行通信系統(tǒng)已經(jīng)被應(yīng)用到工業(yè)控制的很多領(lǐng)域,比如一些寬帶網(wǎng)絡(luò)公司利用光纖接口轉(zhuǎn)換器與串行口連接;數(shù)字影像測量儀都備有RS-232接口,與計(jì)算機(jī)連接后,采用專門測量軟件對(duì)測繪圖形進(jìn)行處理和輸出。該文運(yùn)用Visual Basic 6.0和串行口RS-232在WINDOWS操作系統(tǒng)基礎(chǔ)上開發(fā)出基于PC機(jī)與單片機(jī)的串行通信系統(tǒng),并取得良好實(shí)驗(yàn)效果。
參考文獻(xiàn):
[1] 李志全.智能儀表設(shè)計(jì)原理及應(yīng)用[M].國防工業(yè)出版社,1998.
[2] 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京.航空航天大學(xué)出版社,1990.
[3] 張毅剛,彭喜元,姜守達(dá),等.新編MCS-51系列單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱工業(yè)大學(xué)出版社,2003.
[4] KaiHuang,F(xiàn)aye Briggs A.Computer Architecture and Parallel processing[M]. McGraw-HMCom-pany.1994.
2.3.2 數(shù)碼管顯示程序
本系統(tǒng)所采用的單片機(jī)學(xué)習(xí)板上的數(shù)碼管是共陽集的。所要顯示的數(shù)據(jù)都是傳給P0口,然后通過位選擇(由P2口控制)來打開你所選取的數(shù)碼管,這樣你所想要顯示的數(shù)據(jù)就在數(shù)碼管上顯示出來了。具體的步驟如下:(1)、通過查表把所要顯示的數(shù)據(jù)傳給P0口。(2)、置位選信號(hào)為低電位,使數(shù)碼管導(dǎo)通。(3)、調(diào)用延時(shí)程序,使數(shù)碼管連續(xù)顯示。(4)、關(guān)閉數(shù)碼管。
本系統(tǒng)所點(diǎn)亮的數(shù)碼管是P2.6和P2.7所控制的,如果需要變換點(diǎn)亮的數(shù)碼管,只需要使相對(duì)應(yīng)的位選信號(hào)為低位即可。
圖2 數(shù)碼管顯示程序
3 系統(tǒng)軟件設(shè)計(jì)(PC機(jī)程序結(jié)構(gòu)圖)
軟件設(shè)計(jì)是在Visual Basic 6.0環(huán)境下完成的,主要使用了MSComm控件的相關(guān)屬性。對(duì)于PC機(jī)程序設(shè)計(jì),為了使設(shè)計(jì)的系統(tǒng)可以完成正常的串行通信,并且具有一定的輔助功能,比如數(shù)據(jù)的串口的選擇,數(shù)據(jù)的自動(dòng)傳輸,時(shí)間間隔的選擇,接收閥值的設(shè)定等等。圖 3為PC機(jī)程序設(shè)計(jì)的結(jié)構(gòu)圖。
4 結(jié)論
在過去中,串行通信系統(tǒng)已經(jīng)被應(yīng)用到工業(yè)控制的很多領(lǐng)域,比如一些寬帶網(wǎng)絡(luò)公司利用光纖接口轉(zhuǎn)換器與串行口連接;數(shù)字影像測量儀都備有RS-232接口,與計(jì)算機(jī)連接后,采用專門測量軟件對(duì)測繪圖形進(jìn)行處理和輸出。該文運(yùn)用Visual Basic 6.0和串行口RS-232在WINDOWS操作系統(tǒng)基礎(chǔ)上開發(fā)出基于PC機(jī)與單片機(jī)的串行通信系統(tǒng),并取得良好實(shí)驗(yàn)效果。
參考文獻(xiàn):
[1] 李志全.智能儀表設(shè)計(jì)原理及應(yīng)用[M].國防工業(yè)出版社,1998.
[2] 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京.航空航天大學(xué)出版社,1990.
[3] 張毅剛,彭喜元,姜守達(dá),等.新編MCS-51系列單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱工業(yè)大學(xué)出版社,2003.
[4] KaiHuang,F(xiàn)aye Briggs A.Computer Architecture and Parallel processing[M]. McGraw-HMCom-pany.1994.
2.3.2 數(shù)碼管顯示程序
本系統(tǒng)所采用的單片機(jī)學(xué)習(xí)板上的數(shù)碼管是共陽集的。所要顯示的數(shù)據(jù)都是傳給P0口,然后通過位選擇(由P2口控制)來打開你所選取的數(shù)碼管,這樣你所想要顯示的數(shù)據(jù)就在數(shù)碼管上顯示出來了。具體的步驟如下:(1)、通過查表把所要顯示的數(shù)據(jù)傳給P0口。(2)、置位選信號(hào)為低電位,使數(shù)碼管導(dǎo)通。(3)、調(diào)用延時(shí)程序,使數(shù)碼管連續(xù)顯示。(4)、關(guān)閉數(shù)碼管。
本系統(tǒng)所點(diǎn)亮的數(shù)碼管是P2.6和P2.7所控制的,如果需要變換點(diǎn)亮的數(shù)碼管,只需要使相對(duì)應(yīng)的位選信號(hào)為低位即可。
圖2 數(shù)碼管顯示程序
3 系統(tǒng)軟件設(shè)計(jì)(PC機(jī)程序結(jié)構(gòu)圖)
軟件設(shè)計(jì)是在Visual Basic 6.0環(huán)境下完成的,主要使用了MSComm控件的相關(guān)屬性。對(duì)于PC機(jī)程序設(shè)計(jì),為了使設(shè)計(jì)的系統(tǒng)可以完成正常的串行通信,并且具有一定的輔助功能,比如數(shù)據(jù)的串口的選擇,數(shù)據(jù)的自動(dòng)傳輸,時(shí)間間隔的選擇,接收閥值的設(shè)定等等。圖 3為PC機(jī)程序設(shè)計(jì)的結(jié)構(gòu)圖。
4 結(jié)論
在過去中,串行通信系統(tǒng)已經(jīng)被應(yīng)用到工業(yè)控制的很多領(lǐng)域,比如一些寬帶網(wǎng)絡(luò)公司利用光纖接口轉(zhuǎn)換器與串行口連接;數(shù)字影像測量儀都備有RS-232接口,與計(jì)算機(jī)連接后,采用專門測量軟件對(duì)測繪圖形進(jìn)行處理和輸出。該文運(yùn)用Visual Basic 6.0和串行口RS-232在WINDOWS操作系統(tǒng)基礎(chǔ)上開發(fā)出基于PC機(jī)與單片機(jī)的串行通信系統(tǒng),并取得良好實(shí)驗(yàn)效果。
參考文獻(xiàn):
[1] 李志全.智能儀表設(shè)計(jì)原理及應(yīng)用[M].國防工業(yè)出版社,1998.
[2] 何立民.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京.航空航天大學(xué)出版社,1990.
[3] 張毅剛,彭喜元,姜守達(dá),等.新編MCS-51系列單片機(jī)應(yīng)用設(shè)計(jì)[M].哈爾濱工業(yè)大學(xué)出版社,2003.
[4] KaiHuang,F(xiàn)aye Briggs A.Computer Architecture and Parallel processing[M]. McGraw-HMCom-pany.1994.