基于單片機與PC機通信的設(shè)計
基于單片機與PC機通信的設(shè)計,基于,單片機,pc,通信,通訊,設(shè)計
哈爾濱遠東理工學院
學士學位論文
題 目:基于單片機與PC機通信的設(shè)計
姓 名: 趙成郁
分 院: 機器人科學與技術(shù)學院
專 業(yè): 電子信息工程
學 號: 10030127
指導教師: 鄭燦香
二0 一四 年 五 月 十 日
畢業(yè)設(shè)計指導教師評分表
學生姓名
趙成郁
分院
機器人科學與技術(shù)學院
專業(yè)、班級
電子信息工程1班
指導教師姓名
鄭燦香
職稱
講師
從事
專業(yè)
電子信息工程
是否外聘
□是否
題目名稱
基于單片機與PC機通信的設(shè)計
序號
評 價 項 目
滿分
得分
1
選題與專業(yè)培養(yǎng)目標的符合程度,綜合訓練情況;題目難易度
10
2
題目工作量;題目與生產(chǎn)、科研、實驗室建設(shè)等實際的結(jié)合程度
10
3
綜合運用知識能力(設(shè)計涉及學科范圍,內(nèi)容深廣度及問題難易度);應(yīng)用文獻資料能力
15
4
設(shè)計(實驗)能力;計算能力(數(shù)據(jù)運算與處理能力);外文應(yīng)用能力
20
5
計算機應(yīng)用能力;對實驗結(jié)果的分析能力(或綜合分析能力、技術(shù)經(jīng)濟分析能力)
10
6
插圖(圖紙)質(zhì)量;設(shè)計說明書撰寫水平;設(shè)計的實用性與科學性;創(chuàng)新性
20
7
設(shè)計規(guī)范化程度(設(shè)計欄目齊全合理、SI制的使用等)
5
8
科學素養(yǎng)、學習態(tài)度、紀律表現(xiàn);畢業(yè)論文進度
10
得 分
X=
評 語:(參照上述評價項目給出評語,注意反映該論文的特點)
指導教師簽字: 年 月 日
畢業(yè)設(shè)計評閱人評分表
學生
姓名
趙成郁
專業(yè)
班級
電子信息工程1班
指導教
師姓名
鄭燦香
職稱
講師
題目
基于單片機與PC機通信的設(shè)計
序號
評 價 項 目
滿分
得分
1
選題與專業(yè)培養(yǎng)目標的符合程度,綜合訓練情況;題目難易度
10
2
題目工作量;題目與生產(chǎn)、科研、實驗室建設(shè)等實際的結(jié)合程度
10
3
綜合運用知識能力(設(shè)計涉及學科范圍,內(nèi)容深廣度及問題難易度);應(yīng)用文獻資料能力
15
4
設(shè)計(實驗)能力;計算能力(數(shù)據(jù)運算與處理能力);外文應(yīng)用能力
25
5
計算機應(yīng)用能力;對實驗結(jié)果的分析能力(或綜合分析能力、技術(shù)經(jīng)濟分析能力)
15
6
插圖(圖紙)質(zhì)量;設(shè)計說明書撰寫水平;設(shè)計的實用性與科學性;創(chuàng)新性
20
7
設(shè)計規(guī)范化程度(設(shè)計欄目齊全合理、SI制的使用等)
5
得 分
Y=
評 語:(參照上述評價項目給出評語,注意反映該論文的特點)
評閱人簽字 : 年 月 日
畢業(yè)設(shè)計答辯評分表
學生
姓名
趙成郁
專業(yè)
班級
電子信息工程1班
指導
教師
鄭燦香
職 稱
講師
題目
基于單片機與PC機通信的設(shè)計
答辯
時間
月 日
時
答辯組
成員姓名
出席
人數(shù)
序號
評 審 指 標
滿
分
得
分
1
選題與專業(yè)培養(yǎng)目標的符合程度,綜合訓練情況,題目難易度、工作量、與實際的結(jié)合程度
10
2
設(shè)計(實驗)能力、對實驗結(jié)果的分析能力、計算能力、綜合運用知識能力
10
3
應(yīng)用文獻資料、計算機、外文的能力
10
4
設(shè)計說明書撰寫水平、圖紙質(zhì)量,設(shè)計的規(guī)范化程度(設(shè)計欄目齊全合理、SI制的使用等)、實用性、科學性和創(chuàng)新性
15
5
畢業(yè)設(shè)計答辯準備情況
5
6
畢業(yè)設(shè)計自述情況
20
7
畢業(yè)設(shè)計答辯回答問題情況
30
總 分
Z=
答辯過程記錄、評語:
答辯組長簽字: 年 月 日
畢業(yè)設(shè)計成績評定表
學生姓名
趙成郁
性別
男
分院
機器人科學與技術(shù)學院
專業(yè)
電子信息工程
班級
電信1班
設(shè)計題目
基于單片機與PC機通信的設(shè)計
指導教師姓名
職稱
指導教師
評分(X)
評閱教師姓名
職稱
評閱教師
評分(Y)
答辯組組長
職稱
答辯組
評分(Z)
畢業(yè)設(shè)計成績
百分制
五級分制
答辯委員會評語:
答辯委員會主任簽字(蓋章): 分院公章: 年 月 日
注:1、指導教師、評閱教師、答辯組評分按百分制填寫,畢業(yè)設(shè)計成績百分制=0.3X+0.2Y+0.5Z。
2、評語中應(yīng)當包括學生畢業(yè)設(shè)計選題質(zhì)量、能力水平、設(shè)計水平、設(shè)計說明書撰寫質(zhì)量、學生在畢業(yè)設(shè)計實施或?qū)懽鬟^程中的學習態(tài)度及學生答辯情況等內(nèi)容的評價。
哈爾濱遠東理工學院
畢業(yè)設(shè)計任務(wù)書
學生姓名
趙成郁
分院
計算機科學與技術(shù)學院
專業(yè)、班級
電子信息工程一班
指導教師姓名
鄭燦香
職稱
講師
從事
專業(yè)
電子信息工程
是否外聘
□是□否
題目名稱
單片機與PC機串口通信的研究
一、設(shè)計目的、意義
目的:本論文運用單片機系統(tǒng)的設(shè)計方法,對單片機與PC機的串行通信系統(tǒng)進行設(shè)計,通過總體方案的分析與設(shè)計,確定了所采用單片機的型號,并明確硬件設(shè)計與軟件設(shè)計的內(nèi)容,硬件設(shè)計方面需要對單片機控制系統(tǒng)的硬件電路,如時鐘電路、復(fù)位電路進行設(shè)計,串口部分確定了以定時器T1工作在方式2作為波特率發(fā)生器,單片機與PC機采用了標準的RS-232C接口進行連接,其中存在著電平轉(zhuǎn)換電路的設(shè)計,利用了PROTEL99SE軟件進行通信系統(tǒng)硬件電路原理圖的繪制,并生成報表。軟件設(shè)計方面,利用VB的MSComm控件進行串口通信軟件的開發(fā),根據(jù)系統(tǒng)的功能要求,利用匯編程序編制,利用51匯編集成開發(fā)環(huán)境和STC-ISPV13下載型編程器對單片機匯編程序進行燒錄。在喜用軟硬件調(diào)試過程中,采用AT89C51單片機試驗開發(fā)版進行功能測試。最后進行分析,驗證系統(tǒng)可行性
二、設(shè)計內(nèi)容、技術(shù)要求
1.設(shè)計電路原理圖,并搭建電路
2.編制PC機與單片機通信的協(xié)議
3.完成單片機和PC機軟件編寫與調(diào)試
4.測試并完成報告。
三、設(shè)計完成后應(yīng)提交的成果
1、收集材料
2、詳細掌握單片機與PC機之間串行通信的硬件連接
3、單片機部分和PC機部分的串行數(shù)據(jù)收發(fā)程序
4、形成符合學校規(guī)定的畢業(yè)設(shè)計書面文檔。
四、設(shè)計進度安排
11月10日-------1月10日 收集材料
01月11日-------3月10日 論文撰寫
03月11日-------4月10日 中期檢查、格式修改
04月11日-------5月10日 定稿并打印裝訂
五、主要參考資料
[1]?楊光友.單片微型計算機原理與接口技術(shù)[M].北京:中國水利水電出版社.2002.?
[2]?王福瑞.單片微機測控系統(tǒng)大全[M].北京:北京航空航天出版社.1999.?
[3]?喻宗泉.單片機原理與應(yīng)用技術(shù)[M].西安:西安電子科技大學出版社,2006?
[4]?馮育長.單片機系統(tǒng)設(shè)計與實例分析[M].西安:西安電子科技大學出版社,2007?
[5]?陳濤.單片機應(yīng)用及C51程序設(shè)計[M].北京:機械工業(yè)出版社,2008?
[6]?趙亮,侯國銳.單片機C語言編程與實例[M].北京:人民郵電出版社,2003?
六、備注
指導教師簽字:
年 月 日
教研室主任簽字:
年 月 日
VI
哈爾濱遠東理工學院學士學位論文
摘 要
單片機應(yīng)用技術(shù)是目前應(yīng)用最為廣泛的一項計算機控制技術(shù),外圍電路功能擴展是單片機應(yīng)用系統(tǒng)開發(fā)中的一項重要環(huán)節(jié)。本文在分析傳統(tǒng)的外圍電路功能擴展方法的基礎(chǔ)上,提出了一種外圍電路功能擴展的新方法,即充分利用單片機的資源,在同一芯片上實現(xiàn)多種外圍電路功能,建設(shè)成為一個專門用來對外圍電路功能擴展的通用化設(shè)計平。
論文首先闡述了單片機應(yīng)用系統(tǒng)開發(fā)的一些理論知識,隨后在分析微機外圍電路各種擴展方法的基礎(chǔ)上,提出了單片機與PC機串口通信的基本實現(xiàn)方法。之后以設(shè)計單片機與PC機串口通信的硬件平臺為起點,研究了以MCS-51系列單片機為核心串口通信的軟件功能實現(xiàn)及性能分析,并對整個串口通信系統(tǒng)的建立進行了詳細的規(guī)劃設(shè)計,給出了單片機與PC機串口通信平臺的完整實現(xiàn)。
在單片機應(yīng)用系統(tǒng)開發(fā)中利用外圍電路功能的擴展,將大大方便單片機外圍電路的配置,簡化系統(tǒng)的結(jié)構(gòu),增強系統(tǒng)的穩(wěn)定性、適應(yīng)性,有利于單片機應(yīng)用系統(tǒng)的標準化設(shè)計,提高系統(tǒng)開發(fā)的效率。
關(guān)鍵詞:單片機;串口通信;MCS-51
Abstract
Single-chip computer application technology is the most widely used computer control technology, a peripheral circuit function extension is an important link in microcomputer application system development. Based on the analysis of the traditional peripheral circuit function, on the basis of extension method, this paper proposes a new method of peripheral circuit function expansion, namely, make full use of the resources of single chip microcomputer, the function for a variety of peripheral circuit on the same chip, become a dedicated to the construction of the generalized design of peripheral circuit function expansion.
Paper first expounds some theories of the development of singlechip application system, then the analysis of all kinds of computer peripheral circuit on the basis of extension method, puts forward the basic realization method of the MCU and PC serial communication. After the single chip microcomputer and PC serial port communication in order to design the hardware platform as a starting point, studies the serial communication with MCS - 51 series microcontroller as the core software functions and performance analysis, and on the system of serial port communication to establish a detailed planning and design, single-chip microcomputer and PC serial communication platform is given full implementation.
In the single chip microcomputer application system development using the expansion of the peripheral circuit function, will greatly facilitate MCU peripheral circuit configuration, simplify the structure of system, enhance the system's stability, adaptability, is conducive to the standardization of single-chip microcomputer application system design, improve the efficiency of system development.
Keywords:single chip microcomputer; A serial port communication; The MCS
目 錄
摘 要 I
Abstract II
第1章 緒論 1
1.1 課題背景 1
1.2研究意義 2
本章小結(jié): 2
第2章 系統(tǒng)的設(shè)計方案 3
2.1設(shè)計原則及目標 3
2.1.1單片機的概念 3
2.1.2單片機的基本機構(gòu) 3
2.1.3單片機的應(yīng)用領(lǐng)域 5
2.2系統(tǒng)的硬件設(shè)計方案 5
2.2.1串口通信的概念 6
2.2.2串口通信的原理 6
2.2.3 常用的接口方式 7
2.3方案的確定 7
2.3.1通信方式選擇 7
2.4系統(tǒng)的總體方案 8
本章小結(jié): 8
第三章 系統(tǒng)的硬件設(shè)計 9
3.1 硬件電路設(shè)計 9
3.2人機交互模塊 10
3.2.1鍵盤設(shè)計 10
3. 2. 2顯示設(shè)計 10
3.3通信模塊 11
3.4復(fù)位 11
3.5系統(tǒng)硬件電路原理圖 11
本章小結(jié): 12
第四章 系統(tǒng)的軟件設(shè)計 13
4.1單片機系統(tǒng)設(shè)計 13
4.2軟件編程的設(shè)計和編程語言的選擇 14
4.3 PC模塊程序設(shè)計 14
本章小結(jié): 17
5.1 運行調(diào)試 18
本章小結(jié): 19
致 謝 21
參考文獻 22
附錄A 23
-II-
第1章 緒論
單片機是單片微型計算機簡稱,它是一種單片微型化嵌入式的計算機芯片,常用于控制領(lǐng)域方面。它可應(yīng)用于機電一體化產(chǎn)品、測控系統(tǒng)、智能儀表、智能接口、功能集散系統(tǒng)、并行多機控制系統(tǒng)、局部網(wǎng)絡(luò)系統(tǒng)等諸多領(lǐng)域。此外,單片機的芯片技術(shù)也在不斷地發(fā)展。如采用雙CPU結(jié)構(gòu)以提高處理能力;增加數(shù)據(jù)總線寬度,有的將算術(shù)邏輯單元(ALU)做成16位運算部件,內(nèi)部采用16位數(shù)據(jù)總線;采用流水線結(jié)構(gòu),指令以隊列形式出現(xiàn)在CPU中,使運算速度大大提高;串行總線結(jié)構(gòu)等一系列的新技術(shù)使得單片機的性能不斷提高。
1.1 課題背景
在國內(nèi)外,以PC機作為上位機,單片機作為下位機的控制系統(tǒng)中,PC機通常以軟件界面進行人機交互,以串行通信方式與單片機進行積極交互,而單片機系統(tǒng)根據(jù)被控對象配置相應(yīng)的前向,后向信息通道,工作時作為主控機測對象,作為被控機接受PC機監(jiān)督,指揮,定期或受命向上位機提供對象及本身的工作狀態(tài)信息。?
目前,隨著集成電路集成度的增加,電子計算機向微型化和超微型化方向發(fā)展,微型計算機已成為導彈,智能機器人,人類宇宙和太空和太空奧妙復(fù)雜系統(tǒng)不可缺少的智能部件。在一些工業(yè)控制中,經(jīng)常需要以多臺單片機作為下位機執(zhí)行對被控對象的直接控制,以一臺PC機為上位機完成復(fù)雜的數(shù)據(jù)處理,組成一種以集中管理、分散控制為特點的集散控制系統(tǒng)。?
為了提高系統(tǒng)管理的先進性和安全性,計算機工業(yè)自動控制和監(jiān)測系統(tǒng)越來越多地采用集總分算系統(tǒng)。較為常見的形式是由一臺做管理用的上位主計算機(主機)和一臺直接參與控制檢測的下位機(單片機)構(gòu)成的主從式系統(tǒng),主機和從機之間以通訊的方式來協(xié)調(diào)工作。主機的作用一是要向從機發(fā)送各種命令及參數(shù):二是要及時收集、整理和分析從機發(fā)回的數(shù)據(jù),供進一步的決策和報表。從機被動地接受、執(zhí)行主機發(fā)來的命令,并且根據(jù)主機的要求向主機回傳相應(yīng)煩人實時數(shù)據(jù),報告其運行狀態(tài)。?
用串行總線技術(shù)可以使系統(tǒng)的硬件設(shè)計大大簡化、系統(tǒng)的體積減小、可靠性提高。同時,系統(tǒng)的更改和擴充極為容易。MCS-51系列單片機,由于內(nèi)部帶有一個可用于異步通訊的全雙工的穿行通訊接口,陰齒可以很方便的構(gòu)成一個主從式系統(tǒng)。?
串口是計算機上一種非常通用的設(shè)備通訊協(xié)議,大多數(shù)計算機包容兩個基于RS232的串口。串口同時也是儀器儀表設(shè)備通過用的通訊協(xié)議,很多GPIB兼容的設(shè)備也帶有RS-232口。同時串口通訊協(xié)議也可以用于獲取遠程采集設(shè)備數(shù)據(jù)。所以,深入的理解學習和研究串口通信相關(guān)知識是非常必要的。此次畢業(yè)設(shè)計選題為“PC機與MCS-51單片機的串口通訊”,使用51單片機來實現(xiàn)一個主從式的總線通訊系統(tǒng)。通過此次設(shè)計,對串口通訊的原理和應(yīng)用融會貫通,為以后的時間工作儲備知識和研究方法。
1.2研究意義
現(xiàn)代信息網(wǎng)絡(luò)技術(shù)的一個突出特點,就是使工業(yè)控制系統(tǒng)中的所有設(shè)備連接成網(wǎng),從而在一個核心軟件管理下工作,形成一個有機的整體。這種整體網(wǎng)絡(luò)方式在現(xiàn)代工業(yè)控制系統(tǒng)具有傳統(tǒng)獨立控制系統(tǒng)所無法比擬的先進性,不僅能極大地提高工業(yè)設(shè)備的生產(chǎn)效率,還可以大大提高系統(tǒng)的安全性和可靠性。 單片機自誕生以來以其性能穩(wěn)定、價格低廉、功能強大,在智能儀器、工業(yè)裝備以及日用電子消費品中得到了廣泛的應(yīng)用。在單片機的輸入輸出控制中,除直接接上小鍵盤和LCD顯示屏等方法外,一般都通過串口和上位機PC進行通信。這樣不僅能夠?qū)崿F(xiàn)遠程控制,而且能夠利用PC機強大的數(shù)據(jù)處理功能以及友好的控制界面。在一般的利用PC機對單片機進行控制的場合,都是采用Windows作為上位機的平臺,其優(yōu)點是界面友好,編程和操作都比較容易。因此研究PC機與單片機串行通信具有重要的現(xiàn)實及工業(yè)意義。
這種兩者之間的數(shù)據(jù)傳輸就是通信。通信的方式有兩種,即并行通信與串通信。8051單片機具有并行和串行兩種基本通信方式。并行通信是指數(shù)據(jù)的各位同時進行傳送的通信方式。其優(yōu)點是傳送速度快,但所占用的傳送線多,故只適合近距離通信。而串行通信是指數(shù)據(jù)是一位一位按順序傳送的通信方式。其優(yōu)點是只需要一對傳輸線和少數(shù)的控制線,傳輸成本降低,特別適合遠距離通信,但傳送速度較低。
第2章 系統(tǒng)的設(shè)計方案
2.1設(shè)計原則及目標
本系統(tǒng)的總體設(shè)計,遵循可移植性原則、可擴展性原則、經(jīng)濟性原則、操作簡便原則。
2.1.1單片機的概念
單片機是一種集成電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計數(shù)器等功能(可能還包括顯示驅(qū)動電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的微型計算機系統(tǒng),在工業(yè)控制領(lǐng)域廣泛應(yīng)用。從上世紀80年代,由當時的4位、8位單片機,發(fā)展到現(xiàn)在的300M的高速單片機。
單片微型計算機簡稱單片機,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機,單片機又稱單片微控制器,它不是完成某一個邏輯功能的芯片,而是把一個計算機系統(tǒng)集成到一個芯片上。單片機由運算器、控制器、存儲器、輸入輸出設(shè)備構(gòu)成,相當于一個微型的計算機(最小系統(tǒng)),和計算機相比,單片機缺少了外圍設(shè)備等。概括的講:一塊芯片就成了一臺計算機。它的體積小、質(zhì)量輕、價格便宜、為學習、應(yīng)用和開發(fā)提供了便利條件。同時,學習使用單片機是了解計算機原理與結(jié)構(gòu)的最佳選擇。它最早是被用在工業(yè)控制領(lǐng)域。
由于單片機在工業(yè)控制領(lǐng)域的廣泛應(yīng)用,單片機由僅有CPU的專用處理器芯片發(fā)展而來。最早的設(shè)計理念是通過將大量外圍設(shè)備和CPU集成在一個芯片中,使計算機系統(tǒng)更小,更容易集成進復(fù)雜的而對體積要求嚴格的控制設(shè)備當中。
INTEL的8080是最早按照這種思想設(shè)計出的處理器,當時的單片機都是8位或4位的。其中最成功的是INTEL的8051,此后在8051上發(fā)展出了MCS51系列單片機系統(tǒng)。因為簡單可靠而性能不錯獲得了很大的好評。盡管2000年以后ARM已經(jīng)發(fā)展出了32位的主頻超過300M的高端單片機,直到現(xiàn)在基于8051的單片機還在廣泛的使用。在很多方面單片機比專用處理器更適合應(yīng)用于嵌入式系統(tǒng),因此它得到了廣泛的應(yīng)用。事實上單片機是世界上數(shù)量最多處理器,隨著單片機家族的發(fā)展壯大,單片機和專用處理器的發(fā)展便分道揚鑣。
現(xiàn)代人類生活中所用的幾乎每件有電子器件的產(chǎn)品中都會集成有單片機。手機、電話、計算器、家用電器、電子玩具、掌上電腦以及鼠標等電子產(chǎn)品中都含有單片機。 汽車上一般配備40多片單片機,復(fù)雜的工業(yè)控制系統(tǒng)上甚至可能有數(shù)百片單片機在同時工作!單片機的數(shù)量遠遠超過PC機和其他計算機的總和。
2.1.2單片機的基本機構(gòu)
1.運算器
運算器由運算部件——算術(shù)邏輯單元(Arithmetic & Logical Unit,簡稱ALU)、累加器和寄存器等幾部分組成。ALU的作用是把傳來的數(shù)據(jù)進行算術(shù)或邏輯運算,輸入來源為兩個8位數(shù)據(jù),分別來自累加器和數(shù)據(jù)寄存器。ALU能完成對這兩個數(shù)據(jù)進行加、減、與、或、比較大小等操作,最后將結(jié)果存入累加器。例如,兩個數(shù)6和7相加,在相加之前,操作數(shù)6放在累加器中,7放在數(shù)據(jù)寄存器中,當執(zhí)行加法指令時,ALU即把兩個數(shù)相加并把結(jié)果13存入累加器,取代累加器原來的內(nèi)容6。
運算器有兩個功能:
(1) 執(zhí)行各種算術(shù)運算。
(2) 執(zhí)行各種邏輯運算,并進行邏輯測試,如零值測試或兩個值的比較。
運算器所執(zhí)行全部操作都是由控制器發(fā)出的控制信號來指揮的,并且,一個算術(shù)操作產(chǎn)生一個運算結(jié)果,一個邏輯操作產(chǎn)生一個判決。
2.控制器
控制器由程序計數(shù)器、指令寄存器、指令譯碼器、時序發(fā)生器和操作控制器等組成,是發(fā)布命令的“決策機構(gòu)”,即協(xié)調(diào)和指揮整個微機系統(tǒng)的操作。其主要功能有:
(1) 從內(nèi)存中取出一條指令,并指出下一條指令在內(nèi)存中的位置。
(2) 對指令進行譯碼和測試,并產(chǎn)生相應(yīng)的操作控制信號,以便于執(zhí)行規(guī)定的動作。
(3) 指揮并控制CPU、內(nèi)存和輸入輸出設(shè)備之間數(shù)據(jù)流動的方向。
微處理器內(nèi)通過內(nèi)部總線把ALU、計數(shù)器、寄存器和控制部分互聯(lián),并通過外部總線與外部的存儲器、輸入輸出接口電路聯(lián)接。外部總線又稱為系統(tǒng)總線,分為數(shù)據(jù)總線DB、地址總線AB和控制總線CB。通過輸入輸出接口電路,實現(xiàn)與各種外圍設(shè)備連接。
3.主要寄存器
(1)累加器A
圖1-2 單片機組成框圖
累加器A是微處理器中使用最頻繁的寄存器。在算術(shù)和邏輯運算時它有雙功能:運算前,用于保存一個操作數(shù);運算后,用于保存所得的和、差或邏輯運算結(jié)果。
(2)數(shù)據(jù)寄存器DR
數(shù)據(jù)寄存器通過數(shù)據(jù)總線向存儲器和輸入/輸出設(shè)備送(寫)或?。ㄗx)數(shù)據(jù)的暫存單元。它可以保存一條正在譯碼的指令,也可以保存正在送往存儲器中存儲的一個數(shù)據(jù)字節(jié)等等。
(3)指令寄存器IR和指令譯碼器ID
指令包括操作碼和操作數(shù)。
指令寄存器是用來保存當前正在執(zhí)行的一條指令。當執(zhí)行一條指令時,先把它從內(nèi)存中取到數(shù)據(jù)寄存器中,然后再傳送到指令寄存器。當系統(tǒng)執(zhí)行給定的指令時,必須對操作碼進行譯碼,以確定所要求的操作,指令譯碼器就是負責這項工作的。其中,指令寄存器中操作碼字段的輸出就是指令譯碼器的輸入。
(4)程序計數(shù)器PC
PC用于確定下一條指令的地址,以保證程序能夠連續(xù)地執(zhí)行下去,因此通常又被稱為指令地址計數(shù)器。在程序開始執(zhí)行前必須將程序的第一條指令的內(nèi)存單元地址(即程序的首地址)送入PC,使它總是指向下一條要執(zhí)行指令的地址。
(5)地址寄存器AR
地址寄存器用于保存當前CPU所要訪問的內(nèi)存單元或I/O設(shè)備的地址。由于內(nèi)存與CPU之間存在著速度上的差異,所以必須使用地址寄存器來保持地址信息,直到內(nèi)存讀/寫操作完成為止。
顯然,當CPU向存儲器存數(shù)據(jù)、CPU從內(nèi)存取數(shù)據(jù)和CPU從內(nèi)存讀出指令時,都要用到地址寄存器和數(shù)據(jù)寄存器。同樣,如果把外圍設(shè)備的地址作為內(nèi)存地址單元來看的話,那么當CPU和外圍設(shè)備交換信息時,也需要用到地址寄存器和數(shù)據(jù)寄存器。
2.1.3單片機的應(yīng)用領(lǐng)域
1、在家用電器領(lǐng)域的應(yīng)用
現(xiàn)在在家用電器的更新、市場開拓等方面,單片機的應(yīng)用越來越廣泛,比如電子玩具或者高級的電視游戲機中,會應(yīng)用單片機實現(xiàn)其控制功能;而洗衣機可以利用單片機識別衣服的種類與臟污程度,從而自動選擇洗滌強度與洗滌時間;在冰箱冷柜中采用單片機控制可以識別食物的種類與保鮮程度,實現(xiàn)冷藏溫度與冷藏時間的自動選擇;微波爐也可以通過單片機識別食物種類從而自動確定加熱溫度與加熱時間等等,這些家用電器在應(yīng)用單片機技術(shù)后,無論是性能還是功能,與傳統(tǒng)技術(shù)相比均有長足的進步。
2、在醫(yī)用設(shè)備領(lǐng)域的應(yīng)用
現(xiàn)代醫(yī)療條件越來越發(fā)達,人們對醫(yī)療滅菌消毒技術(shù)也越來越重視,但是一些偏遠地區(qū)的小醫(yī)院、小診所其消毒滅菌設(shè)備還十分簡陋,無法有效的控制消毒質(zhì)量。隨著單片機技術(shù)的發(fā)展,其體積較小、功能強大、具有靈活的擴展性、應(yīng)用方便的特點也越來越突出,因此在醫(yī)用呼吸機、分析儀與監(jiān)護儀、超聲診斷設(shè)備、病床呼叫系統(tǒng)等設(shè)備中得到了廣泛的應(yīng)用。
3、在工業(yè)控制領(lǐng)域的應(yīng)用
其實最早的單片機正是從工業(yè)領(lǐng)域開始興起的,至今其在工業(yè)控制領(lǐng)域的應(yīng)用仍然十分廣泛,利用單片機技術(shù)構(gòu)成多種多樣的數(shù)據(jù)采集系統(tǒng)與智能控制系統(tǒng),比如工廠流水線的智能化管理、智能化電梯、報警系統(tǒng)等等,均是通過單片機技術(shù)與計算機聯(lián)網(wǎng)構(gòu)成二級控制系統(tǒng)。
4、在儀器儀表領(lǐng)域的應(yīng)用
上文中也談到單片機具備集成度高、體積小、較強的控制功能與擴展的靈活性等特點,并且處理速度快,具有較高的可靠性,所以在智能儀器儀表領(lǐng)域其應(yīng)用也十分廣泛。從某種程度而言,單片機帶動了傳統(tǒng)測量、控制儀器儀表技術(shù)的一項革命,通過單片機技術(shù)實現(xiàn)了儀器儀表技術(shù)的數(shù)字化、智能化、綜合化以及多功能化,與傳統(tǒng)的電子電路或者數(shù)字電路相比,其功能更強大,綜合性更突出。
2.2系統(tǒng)的硬件設(shè)計方案
本文從串口通信入手,根據(jù)pc機通信原理布局,選擇溫濕度測量模塊、控制模塊、通訊端口、上位機等,根據(jù)測量要求,確定具體設(shè)計方案。由此,系統(tǒng)的總體結(jié)主要有以下四大模塊,即串口通信采集模塊、控制模塊、數(shù)據(jù)處理模塊和通信模塊。
2.2.1串口通信的概念
串行接口是一種可以將接受來自CPU的并行數(shù)據(jù)字符轉(zhuǎn)換為連續(xù)的串行數(shù)據(jù)流發(fā)送出去,同時可將接受的串行數(shù)據(jù)流轉(zhuǎn)換為并行的數(shù)據(jù)字符供給CPU的器件。一般完成這種功能的電路,我們稱為串行接口電路。
串口是計算機上一種非常通用的設(shè)備通信協(xié)議。大多數(shù)計算機(不包括筆記本電腦)包含兩個基于RS-232的串口。串口同時也是儀器儀表設(shè)備通用的通信協(xié)議;很多GPIB兼容的設(shè)備也帶有RS-232口。同時,串口通信協(xié)議也可以用于獲取遠程采集設(shè)備的數(shù)據(jù)。
RS-232(ANSI/EIA-232標準)是IBM-PC及其兼容機上的串行連接標準??捎糜谠S多用途,比如連接鼠標、打印機或者Modem,同時也可以接工業(yè)儀器儀表。用于驅(qū)動和連線的改進,實際應(yīng)用中RS-232的傳輸長度或者速度常常超過標準的值。RS-232只限于PC串口和設(shè)備間點對點的通信。RS-232串口通信最遠距離是50英尺。
2.2.2串口通信的原理
串口通信(Serial Communications)的概念非常簡單,串口按位(bit)發(fā)送和接收字節(jié)。盡管比按字節(jié)(byte)的并行通信慢,但是串口可以在使用一根線發(fā)送數(shù)據(jù)的同時用另一根線接收數(shù)據(jù)。它很簡單并且能夠?qū)崿F(xiàn)遠距離通信。比如IEEE488定義并行通行狀態(tài)時,規(guī)定設(shè)備線總長不得超過20米,并且任意兩個設(shè)備間的長度不得超過2米;而對于串口而言,長度可達1200米。典型地,串口用于ASCII碼字符的傳輸。通信使用3根線完成,分別是地線、發(fā)送、接收。由于串口通信是異步的,端口能夠在一根線上發(fā)送數(shù)據(jù)同時在另一根線上接收數(shù)據(jù)。其他線用于握手,但不是必須的。串口通信最重要的參數(shù)是波特率、數(shù)據(jù)位、停止位和奇偶校驗。對于兩個進行通信的端口,這些參數(shù)必須匹配。
a,波特率:這是一個衡量通信速度的參數(shù)。它表示每秒鐘傳送的位的個數(shù)。例如300波特表示每秒鐘發(fā)送300個位。通常電話線的波特率為14400,28800和36600。波特率可以遠遠大于這些值,但是波特率和距離成反比。高波特率常常用于放置的很近的儀器間的通信,典型的例子就是GPIB設(shè)備的通信。
b,數(shù)據(jù)位:這是衡量通信中實際數(shù)據(jù)位的參數(shù)。當計算機發(fā)送一個信息包,實際的數(shù)據(jù)不會是8位的,標準的值是6、7和8位。如何設(shè)置取決于你想傳送的信息。比如,標準的ASCII碼是0~127(7位)。擴展的ASCII碼是0~255(8位)。如果數(shù)據(jù)使用簡單的文本(標準 ASCII碼),那么每個數(shù)據(jù)包使用7位數(shù)據(jù)。每個包是指一個字節(jié),包括開始/停止位,數(shù)據(jù)位和奇偶校驗位。由于實際數(shù)據(jù)位取決于通信協(xié)議的選取,術(shù)語“包”指任何通信的情況。[2]
c,停止位:用于表示單個包的最后一位。典型的值為1,1.5和2位。由于數(shù)據(jù)是在傳輸線上定時的,并且每一個設(shè)備有其自己的時鐘,很可能在通信中兩臺設(shè)備間出現(xiàn)了小小的不同步。因此停止位不僅僅是表示傳輸?shù)慕Y(jié)束,并且提供計算機校正時鐘同步的機會。適用于停止位的位數(shù)越多,不同時鐘同步的容忍程度越大,但是數(shù)據(jù)傳輸率同時也越慢。
d,奇偶校驗位:在串口通信中一種簡單的檢錯方式。有四種檢錯方式:偶、奇、高和低。當然沒有校驗位也是可以的。對于偶和奇校驗的情況,串口會設(shè)置校驗位(數(shù)據(jù)位后面的一位),用一個值確保傳輸?shù)臄?shù)據(jù)有偶個或者奇?zhèn)€邏輯高位。例如,如果數(shù)據(jù)是011,那么對于偶校驗,校驗位為0,保證邏輯高的位數(shù)是偶數(shù)個。如果是奇校驗,校驗位為1,這樣就有3個邏輯高位。高位和低位不真正的檢查數(shù)據(jù),簡單置位邏輯高或者邏輯低校驗。這樣使得接收設(shè)備能夠知道一個位的狀態(tài),有機會判斷是否有噪聲干擾了通信或者是否傳輸和接收數(shù)據(jù)是否不同步。
2.2.3 常用的接口方式
一、并行接口?
并行接口是指8位數(shù)據(jù)同時通過并行線進行傳送,這樣數(shù)據(jù)的傳輸率能得到極大的提高。但在并行傳輸中,干擾會隨線路長度的增加而增加,產(chǎn)生傳輸錯誤。因此,并行傳輸主要應(yīng)用在近距離數(shù)據(jù)傳輸中,如連接打印機端口。并行接口主要使用36針接頭和25針D形接頭,目前以25針D形接頭為主。?
二、串行接口?
串行口也是計算機的一種標準接口,PC機一般至少有兩個串行口Com1和Com2。串行口不同于并行口,它的數(shù)據(jù)和控制信息是一位接一位在一根傳輸線上傳送的,這樣串行口較并行口能夠進行遠距離傳送信息。串行口通常使用9針D形連接器,有些老式則使用25針D形連接器。?
由于CPU與接口間按并行方式傳輸,接口與外設(shè)之間按串行方式傳輸,因此,在串行接口中,要由接收移位寄存器把串行方式轉(zhuǎn)換成并行方式,由發(fā)送移位寄存器把并行方式轉(zhuǎn)換成串行方式。完成這種轉(zhuǎn)換功能的電路叫做通用異步收發(fā)機UART。
2.3方案的確定
2.3.1通信方式選擇
單片機與PC機的通信方式有串行通信和并行通信方式兩種。并行數(shù)據(jù)通信雖然具有通信速度快,實時性好的優(yōu)點,但是需要多根數(shù)據(jù)線,占用單片機的引腳資源較多,傳輸距離短,線路之間干擾較大。串行通信線路連接簡單,傳輸距離遠,占用單片機的引腳資源較少,適合數(shù)據(jù)量不大的控制系統(tǒng)??紤]到單片機引腳資源有限和設(shè)計成本等問題,本設(shè)計選擇了串行通信工作方式來完成單片機與PC機之間的通信。
2.4系統(tǒng)的總體方案
本設(shè)計由以PC機為主的上位機和以單片機為主的下位機組成。上位機為裝有LabVIEW軟件的PC機,可對采集的數(shù)據(jù)進行處理、顯示、存儲以及監(jiān)控串口通信動態(tài)變化;下位機為單片機及其外圍電路組成,實現(xiàn)數(shù)據(jù)采集和控制功能,系統(tǒng)既可以與PC機配合構(gòu)成兩級控制系統(tǒng),也可由單片機作為一個獨立的系統(tǒng)單獨控制。單片機與PC機之間通過串行通信方式實現(xiàn)數(shù)據(jù)的交換。其中單片機主要完成數(shù)據(jù)的采集、輸出、顯示、參數(shù)設(shè)置和報警等功能;PC機主要完成實時串口通信,并及時向單片機發(fā)布監(jiān)控命令,完成人機界面設(shè)計等任務(wù)。
2.5本章小結(jié)
設(shè)備與設(shè)備之間要進行數(shù)據(jù)通信時,就要規(guī)定一種雙方都認同的同步方式,這樣才能使數(shù)據(jù)在傳輸時不會因為雙方在發(fā)送數(shù)據(jù)的方式?jīng)_突而產(chǎn)生數(shù)據(jù)的錯誤。串行通信的同步方式有兩種:異步方式和同步方式。
第三章 系統(tǒng)的硬件設(shè)計
系統(tǒng)釆用模塊化設(shè)計思想,設(shè)計了控制模塊、數(shù)據(jù)采集模塊、人機交互模塊、通信模塊、復(fù)位模塊。
3.1 硬件電路設(shè)計
硬件設(shè)計的任務(wù)是根據(jù)總體設(shè)計要求,在選擇的機型的基礎(chǔ)上,具體確定系統(tǒng)中所要使用的元器件,設(shè)計出系統(tǒng)的原理框圖、電路原理圖。
在實現(xiàn)單片機與PC機之間通信或單片機與單片機之間遠程距離通信時通常采用標準串行總線通訊接口。比如RS-232C、RS-422、RS485等。在這些串行總線接口標準中,是在異步串行通信中應(yīng)用最廣的標準總線,它實用于短距離或帶調(diào)制解調(diào)器的通信場合。下面以RS-232標準串行總線接口為例,簡單介紹單片機與PC機之間串行通信的硬件實現(xiàn)過程。
?(1)?單片機部分硬件設(shè)計思路:本次設(shè)計單片機部分的硬件框圖如圖3-1所示。
圖3-1 單片機部分硬件框圖
(2)?PC機部分硬件設(shè)計思路:PC機與單片機之間的紅外數(shù)據(jù)收發(fā)裝置的結(jié)構(gòu)非常簡單,其結(jié)構(gòu)框圖如圖3-2所示。PC機及其兼容機的標準串行通信接口RS-232C有一個9芯的D型插座,該紅外收發(fā)裝置便是通過此接口插座與計算機連接,并由計算機通信軟件控制其數(shù)據(jù)的收發(fā),并由計算機通信軟件控制其數(shù)據(jù)的收發(fā)。由于數(shù)據(jù)的傳輸采用了38KHZ信號進行調(diào)制、解調(diào)和發(fā)射、接收,因而更加安全可靠。當51單片機與PC機通過RS-232標準總線串行通信時,由于 RS-232信號電平與51單片機信號電平不一致,因此,必須進行信號電平轉(zhuǎn)換。
圖3-2 PC機部分硬件框圖
3.2人機交互模塊
本設(shè)計的人機交互模塊包括兩部分,即上位計算機控制顯示界面和單片機控制顯示界面,該部分主要介紹單片機人機交互模塊,它主要由鍵盤和8位數(shù)碼管顯示器完成人機交互的功能。鍵盤是溫濕度檢測系統(tǒng)的關(guān)鍵部件,向系統(tǒng)中輸入數(shù)據(jù)和傳送命令。數(shù)碼管顯示器實時顯示所檢測的溫濕度數(shù)據(jù),方便工作人員及時掌握溫濕度設(shè)置情況、千燥箱內(nèi)的情況和繼電器的動作情況。為了使整個系統(tǒng)設(shè)計的更加合理,還加入的了報警模塊、聲光控制模塊和LED狀態(tài)燈指示模塊。
3.2.1鍵盤設(shè)計
本文采用了獨立按鍵方式,共設(shè)計了 5個鍵(KEY1,KEY2,KEY3, KEY4,KEY5),分別占用單片機的P1.2、P1.3、P1.4、P1.5、P1.6端口,主要功能如下:
1) KEY1為模式功能鍵。
2) KEY2為溫濕度選擇鍵。
3) KEY3加減功能鍵。
4) KEY4溫度加減鍵。
5) KEY5濕度加減鍵。
3. 2. 2顯示設(shè)計
檢測系統(tǒng)的運行狀態(tài)與運行結(jié)果顯示選擇8位LED數(shù)碼管顯示器。設(shè)計中需要顯示16路傳感器的序號,溫度或濕度特殊符號以及溫濕度值,八位數(shù)碼管顯示器。八位LED數(shù)碼管顯示器具體顯示內(nèi)容,由左至右依次為:第一、二位用來顯示16路SHT10溫濕度傳感器序號01~16;第三位用來顯示溫度傳感器的特殊符號C或濕度傳感器的特殊符號H;第四位為空字符,無顯示第五位用顯示溫度數(shù)據(jù)或濕度數(shù)據(jù)的百位值;第六位用來顯示溫度數(shù)據(jù)或濕度數(shù)據(jù)的十位值;第七位用顯示溫度數(shù)據(jù)或濕度數(shù)據(jù)的個位值;第八位用來顯示小數(shù)點及小數(shù)位值。采用共陰極接法,顯示內(nèi)容有一個固定的顯示代碼與之對應(yīng),顯示字符與顯示代碼之間的關(guān)系。
3.3通信模塊
本設(shè)計采用了串口通信,在串口通信方式中,只有通信雙方接口標準相同,而且協(xié)議也相同,通信雙方才能正常通信。設(shè)計采用RS-232串行通信接口標準,由于RS-232標準規(guī)定的邏輯電平與TTL數(shù)字電路的邏輯電平不兼容,所以二者之間進行相互連接首先需要電平轉(zhuǎn)換。系統(tǒng)電平轉(zhuǎn)換選擇了 MAX232芯片。MAX232引腳及引腳功能分別RS-232串口一般用于本地設(shè)備間的通信,RS-232是為只有一對收、發(fā)設(shè)備即點對點的通信設(shè)計[2U。本設(shè)計中的7、8、9、10引腳未用到。其中1、3引腳和4、5引腳分別與兩個電容相連,13、14引腳分別與TX和RX兩個引腳相連,11、12引腳分別與STC89C54單片機引腳的TXD和RXD相連。
3.4復(fù)位
單片機在運行時,電源電壓降低或者受到外界環(huán)境的電磁干擾,會引起程序的
失控,出現(xiàn)“死機”或其它不正?,F(xiàn)象,會導致整個系統(tǒng)的癱瘓為了保證系統(tǒng)可靠運行,設(shè)計了復(fù)位電路。單片機STC89C54通常有兩種復(fù)位方式,即上電自動復(fù)位方式和按鍵復(fù)位方式。上電復(fù)位是利用阻容充電電路實現(xiàn)的,在單片機上電的時刻,RST的電位與Vcc相同。隨著充電電流的減小,RST端 電位也會下降,選擇合適的電容和電阻,使RC時間常數(shù)大于復(fù)位時間就可以保證上電復(fù)位。設(shè)計中,將上電復(fù)位和按鍵復(fù)位整合在一起,這樣既能實現(xiàn)上電復(fù)位的功能也能實現(xiàn)按鍵復(fù)位的功能,復(fù)位電路
3.5系統(tǒng)硬件電路原理圖
3.6本章小結(jié)
在做此項不知不覺地學習了很多知識,首先是軟件上,深入的學習了匯編語言和VB,進一步掌握了一些編程技巧,從中體會了編程的艱辛,但也感受了成功的喜悅。其次是硬件上,了解了 MCS-51系列單片機的管腳組成,及其各管腳的功能特性,同時也對89C52和MAX232等芯片有了認識??傊?在此項設(shè)計過程中學習了很多東西,豐富了知識,開闊了視野,為將來的研究打下很好的基礎(chǔ)。由于串行通信的技術(shù)還在不斷的更新,所以我還要不斷的學習。
第四章 系統(tǒng)的軟件設(shè)計
4.1單片機系統(tǒng)設(shè)計
根據(jù)系統(tǒng)功能要求以及單片機硬件電路設(shè)計思路對單片機模塊進行設(shè)計,要使單片機準確的接收與發(fā)送,并且使接收到的數(shù)據(jù)能顯示出來,所以整個單片機部分分為時鐘電路、復(fù)位電路、執(zhí)行元件以及顯示電路四個部分。
單片機部分的執(zhí)行元件我們采用MCS-51T系列的AT89C51(其引腳圖如圖4-1),由于它本身帶有一定的優(yōu)點。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh?Programmable?and?Erasable?Read?Only?Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,?AT89C單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。
時鐘電路是計算機的心臟,它控制著計算機的工作節(jié)奏。MCS-51單片機允許的時鐘頻率是因型號而異的典型值為12MHZ?。MCS-51內(nèi)部都有一個反相放大器,XTAL1、XTAL2分別為反相放大器輸入和輸出端,外接定時反饋元件以后就組成振蕩器,產(chǎn)生時鐘送至單片機內(nèi)部的各個部件。
MCS-51單片機有一個復(fù)位引腳RST,它是史密特觸發(fā)輸入(對于CHMOS單片機,RST引腳的內(nèi)部有一個拉低電阻),當振蕩器起振后,該引腳上出現(xiàn)2個機器周期(即24個時鐘周期)以上的高電平,使器件復(fù)位,只要RST保持高電平,MCS-51保持復(fù)位狀態(tài)。此時ALE、PSEN、P0、P1、P2、P3口都輸出高電平。RST變?yōu)榈碗娖胶螅顺鰪?fù)位,CPU從初始狀態(tài)開始工作。?
顯示電路采用LED數(shù)碼管動態(tài)顯示,LED(Light-Emitting?Diode)是一種外加電壓從而渡過電流并發(fā)出可見光的器件。LED是屬于電流控制器件,使用時必須加限流電阻。LED有單個LED和八段LED之分,也有共陰和共陽兩種。在單片機系統(tǒng)中,LED顯示接口一般采用靜態(tài)驅(qū)動和動態(tài)掃描兩種驅(qū)動方式。靜態(tài)驅(qū)動方式工作原理是每一個LED顯示器有一個I/O端口驅(qū)動,亮度大,占用I/O端口多,顯示位數(shù)多時很少采用;動態(tài)掃描驅(qū)動方式的工作原理是將多個顯示器的段碼同名端連接在一起,位碼分別控制,利用眼睛的余暉暫留效應(yīng),分別顯示。動態(tài)掃描驅(qū)動方式下,只要保證一定的顯示頻率,看起來的效果和一直顯示是一樣的。
圖3-3 單片機系統(tǒng)總體電路
4.2軟件編程的設(shè)計和編程語言的選擇
單片機軟件采用模塊化的設(shè)計思想,既便于調(diào)試、連接,又便于移植、修改和維護。因此在程序編寫時,把每個程序模塊都寫成一個獨立的功能模塊,主程序調(diào)用各子程序模塊,各個任務(wù)之間的資源通過緩沖區(qū)來傳遞.在單片機開發(fā)中,匯編語言和C語言應(yīng)用較多。本文的微控制器為STC89C54單片機,從開發(fā)周期的長短角度考慮,C語言較匯編語言占優(yōu)勢。C語言有較強的可讀性和可移植性。利用Keil編譯器可直接進彳編輯操作。因此單片機軟件選擇使用.C語言進行程序設(shè)計。
4.3 PC模塊程序設(shè)計
在Windows環(huán)境下,利用PC機串口進行通信的常用方法有以下幾種:一是利用Windows?API通信函數(shù);二是利用VC的標準通信函數(shù)_inp、_inpw、_inpd、_outp、_outpw、_outpd等直接對串口進行操作;三是使用Microsoft?Visual?C++的通信控件(MSComm);四是利用第三方編寫的通信類[13]。
PC機發(fā)送數(shù)據(jù)時先發(fā)送被叫單片機地址,被叫單片機對地址進行判斷,地址錯誤就不予理睬,地址正確則向上位機發(fā)送呼叫應(yīng)答信號[16]。PC機在接收到呼叫應(yīng)答信號之后,將向單片機發(fā)出通信命令字符串。以下是PC機的通訊協(xié)議格式。?
表3-1 上位機通訊協(xié)議格式
單片機與PC機串口通信應(yīng)用界面程序流程圖如圖5-4所示。
圖3-3 PC機程序流程圖
源程序代碼如下:?
Dim?hand?As?Boolean?
?'等待回應(yīng)時間到標志位,為FALSE時時間沒有到,TRUE時時間到?
Private?Sub?cancel_Click()?????Unload?Me?????End?End?Sub?
Private?Sub?send_Click()?????'變量定義?
????Dim?strsend$,?strbit$?
????Dim?intsend%??'發(fā)送的字符長度?????
Dim?writebuff?As?Variant?'寫輸出緩沖區(qū)?????
Dim?readbuff$?'讀輸入緩沖區(qū)數(shù)據(jù)????
?strsend?=?txtsend.Text?????intsend?=?Len(strsend)?????
If?intsend?=?0?Then?
????????MsgBox?"請輸入數(shù)字字符!",?,?"錯誤"?????????
Exit?Sub?????End?If?
????'數(shù)據(jù)完整性驗證?
????For?i?=?1?To?intsend?Step?1?????????
strbit?=?Mid(strsend,?i,?1)?????????
Select?Case?strbit????????????
?Case?Is?"0",?Is?>?"9"?
????????????????MsgBox?"輸入的數(shù)據(jù)中存在非數(shù)字字符!"?&?vbCrLf?&?"請重新輸入!",?vbRetryCancel,?"錯誤"?
????????????????txtsend.Text?=?""?????????????????
Exit?Sub?????????
End?Select?????
Next?i?
????On?Error?GoTo?comrserror?????'串行通信口參數(shù)設(shè)置?
?MSComm.CommPort?=?1?'使用Com1做為串行通信口?????
MSComm.Settings?=?"9600,n,8,1"?'串口屬性設(shè)置?????
MSComm.InputLen?=?1?'每次從接收緩沖區(qū)讀取一個字符?
MSComm.InputMode?=?comInputModeText?'以字符形式從緩沖區(qū)中接受字符?????
MSComm.InBufferCount?=?0?'清除輸入緩沖區(qū)?????
MSComm.OutBufferCount?=?0?'清除輸出緩沖區(qū)?????
MSComm.PortOpen?=?True???'打開通行端口?????
txtport.Text?=?"COM"?&?MSComm.CommPort?
txtmsg.Text?=?"串口COM"?&?MSComm.CommPort?&?"打開成功!波特率=9600bps"?
????'發(fā)送握手信號?handle:?
????hand?=?False?'開始發(fā)送握手信號時回應(yīng)標志位為FALSE?????
writebuff?=?Chr$(&HFF)?'準備握手信號&Hffh?????
MSComm.Output?=?writebuff?'發(fā)送握手信號?????
Timer.Enabled?=?True?'啟動應(yīng)答定時器?????
Do????
?DoEvents????
?If?hand?Then?
????????GoTo?handle?'定時時間到未收到回應(yīng)信號重發(fā)握手信號?
????End?If?
????Loop?Until?MSComm.InBufferCount?'等待回應(yīng)?????
'收到對方的回應(yīng)?????Timer.Enabled?=?False?
?'讀取并判斷是否為規(guī)定的聯(lián)絡(luò)信號?????
readbuff?=?MSComm.Input?????
If?Asc(readbuff)?=?255?Then?????????
writebuff?=?Chr$(intsend)?
????????MSComm.Output?=?writebuff?'收到正確的回應(yīng),發(fā)送字符個數(shù)和數(shù)據(jù)?????????
writebuff?=?strsend?
????????MSComm.Output?=?writebuff?
????????MSComm.PortOpen?=?False?'發(fā)送完數(shù)據(jù)關(guān)閉端口?????????
Exit?Sub?????
Else?
????????GoTo?handle?????
End?If?
comrserror
?End?Sub?
Private?Sub?Timer_Timer()?????
Timer.Enabled?=?False?
????hand?=?True?'定時間到關(guān)閉定時器,設(shè)置標志位?
End?Sub?
Private?Sub?txtsend_Click()?????
txtsend.Text?=?""?
收藏