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