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