PB基本語句,循環(huán)語句和PC機(jī)與單片機(jī)實時通信系統(tǒng)的設(shè)計與實現(xiàn)_第1頁
PB基本語句,循環(huán)語句和PC機(jī)與單片機(jī)實時通信系統(tǒng)的設(shè)計與實現(xiàn)_第2頁
PB基本語句,循環(huán)語句和PC機(jī)與單片機(jī)實時通信系統(tǒng)的設(shè)計與實現(xiàn)_第3頁
PB基本語句,循環(huán)語句和PC機(jī)與單片機(jī)實時通信系統(tǒng)的設(shè)計與實現(xiàn)_第4頁
PB基本語句,循環(huán)語句和PC機(jī)與單片機(jī)實時通信系統(tǒng)的設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

PC機(jī)與單片機(jī)實時通信系統(tǒng)的設(shè)計與實現(xiàn)PAGEPAGE1PB基本語句

一、賦值語句

賦值語句用于給變量、對象屬性賦值,這是應(yīng)用程序中使用最頻繁的語句,其語法格式為:variablename=expression

其中:⑴variablename是變量名或?qū)ο髮傩裕?/p>

⑵expression是表達(dá)式,其數(shù)據(jù)類型應(yīng)該與variablename的數(shù)據(jù)類型兼容。

下面是賦值語句的幾個簡單示例:

Address="北京"

TaxRate=.05

Age=30

mle.text="北京歡迎你"

PowerScript的賦值語句不支持多重賦值,也就是說,一條賦值語句只對一個變量賦值,不能同時對多個變量賦值。

下面的語句:A=B=0

在有些編程語言中同時把A和B均賦值0,但PowerScript中,該語句等價于:

A=(B=0)

其意義為,檢查B等于0是否成立,成立時將TRUE賦給變量A,否則把FALSE賦給變量A。如果A不是Boolean類型的變量,則上述語句將引起編譯錯誤。

二、條件語句

IF語句有兩種形式,下面我們按照從簡單到復(fù)雜的次序逐一介紹。

1.單行IF...THEN語句

單行IF...THEN語句的格式為:

IF邏輯表達(dá)式THEN語句1[ELSE語句2]

單行IF...THEN語句書寫時整條語句寫在一行上,當(dāng)邏輯表達(dá)式的結(jié)果為True時執(zhí)行語句1,否則執(zhí)行語句2(如果有該子句的話)。

例如:IFsle_State.text="BJ"THEN

MessageBox("歡迎","北京")

2.多行IF...THEN語句

多行IF...THEN語句的語法格式為:

IF邏輯表達(dá)式1THEN

語句1

[ELSEIF邏輯表達(dá)式2THEN

語句2

...

][ELSE

語句n]

ENDIF

本語句的執(zhí)行過程為:計算邏輯表達(dá)式1,如果其結(jié)果為True,則執(zhí)行語句1,然后離開整個IF語句;否則計算邏輯表達(dá)式2,如果其結(jié)果為True,則執(zhí)行語句2,然后離開整個IF語句;...如果邏輯表達(dá)式的結(jié)果都是False,且存在ELSE子句,則執(zhí)行語句3。

例1:從單行編輯框中輸入考分,按“輸入”按鈕再根據(jù)考分顯示及格或不及格。

Integers

s=integer(sle_1.text)

//sle_1text單行編輯框文本

Ifs<60then

St_1.text=“不及格”

//St_1.text靜態(tài)編輯框文本

Else

St_1.text=“及格”

Endif

例2:從單行編輯框中輸入考分,按“輸入”按鈕后,再根據(jù)考分顯示優(yōu)、良、中、及格或不及格。

Integers

s=integer(sle_1.text)

//sle_1text單行編輯框文本

ifs>=90then

St_1.text=“優(yōu)”

elseifs>=80then

St_1.text=“良”

elseifs>=70then

St_1.text=“中”

elseifs>=60then

St_1.text=“及格”

else

St_1.text=“不及格”

endif

3.CHOOSECASE語句

根據(jù)測試表達(dá)式的值選擇不同的操作,其語法格式為:

CHOOSECASE測試表達(dá)式

CASE判斷表達(dá)式

執(zhí)行語句塊

[CASE判斷表達(dá)式

語句塊

...

CASE判斷表達(dá)式

語句塊]

[CASEELSE

語句塊]

ENDCHOOSE

判斷表達(dá)式可以使用如下的形式:

1.用逗號分隔的一組數(shù)據(jù),例如:2,4,7

2.用TO表示一個區(qū)間范圍,例如:2TO15

3.用IS代表測試值,后跟關(guān)系操作符和比較值,例如:IS>30

4.組合運用上述三種方法,并用逗號進(jìn)行分隔,例如:5,6,8TO12,IS>20

執(zhí)行CHOOSECASE語句時,PowerBuilder將逐條查找CASE,如果找到與測試值相匹配的判斷表達(dá)式,就執(zhí)行該CASE后的語句塊,然后執(zhí)行ENDCHOOSE后的第一條語句。如果CHOOSECASE語句中包含CASEELSE子句,則未找到任何匹配的CASE條件時,執(zhí)行CASEELSE子句中的語句塊。

例3:從單行編輯框中輸入考分,按“輸入”按鈕后,再根據(jù)考分顯示優(yōu)、良、種、及格或不及格。(用choosecase重寫例2)

integerf

Strings

f=integer(sle_1.text)

CHOOSECASEf

CASEIS>=90

//改進(jìn)90to100

S="優(yōu)"

CASE80TO89

S="良"

CASE70TO79

S="中"

CASE60TO69

S="及格"

CASE0TO59

S="不及格"

CASEELSE

S="輸入錯,請重新輸入!"

ENDCHOOSE

St_1.text=string(S)

三、循環(huán)語句

各種語言都提供了自己的循環(huán)語句,PowerScript也不例外,它的循環(huán)語句有三種形式:DO…LOOP、FOR…NEXT、GOTO,將前兩種形式與EXIT和CONTINUE語句配合使用,可以完全拋棄GOTO語句,而且DO…LOOP本身有四種格式,豐富多采的表達(dá)方式為我們編寫清晰流暢的程序提供了有效手段。

下面介紹PowerScript循環(huán)語句的格式、中途退出循環(huán)或中途開始下次循環(huán)的方法、以及循環(huán)嵌套的概念。

1DOLOOP循環(huán)

DOLOOP結(jié)構(gòu)提供了一種基于某個條件的靈活的循環(huán)方法,它有四種形式,分別為:

DOUNTIL<條件>…LOOP

DOWHILE<條件>…LOOP(類似c)

DO…LOOPUNTIL<條件>

DO…LOOPWHILE<條件>(類似c)

DO表示循環(huán)的開始,LOOP表示循環(huán)的結(jié)束,condition表示循環(huán)條件,是個邏輯表達(dá)式,其值為True或False。

(1)DOUNTIL…LOOP的語法格式為:

DOUNTIL<條件>

語句塊

LOOP

其執(zhí)行過程為:先計算條件condition,其結(jié)果為False時,執(zhí)行語句塊,接著再檢查條件,直到條件的結(jié)果為True時退出循環(huán)。

例:按計算按鈕求s=1+2+3+…+10。

解1:

integeri=1,s=0

DOUNTILi>10

s+=i

i++

LOOP

st_1.text=string(s)

(2)DOWHILE…LOOP的語法格式為:

DOWHILE<條件>

語句塊

LOOP

其執(zhí)行過程為:先計算條件,其結(jié)果為True時,執(zhí)行語句塊,接著再檢查條件,直到條件的結(jié)果為False時退出循環(huán)。

例:按計算按鈕求s=1+2+3+…+10。

解2:

integeri=1,s=0

DOWHILEi<=10

s+=i

i++

LOOP

st_1.text=string(s)

(3)DO…LOOPUNTIL的語法格式為:

DO

語句塊

LOOPUNTIL<條件>

其執(zhí)行過程為:先執(zhí)行語句塊,然后計算條件,如果其結(jié)果為False,則繼續(xù)執(zhí)行語句塊,直到條件的結(jié)果為True時退出循環(huán)。

例:按計算按鈕求s=1+2+3+…+10。

解3:解1與解3完全等價

integeri=1,s=0

DO

s+=i

i++

LOOPUNTILi>10

st_1.text=string(s)

(4)DO…LOOPWHILE的語法格式為:

DO

語句塊

LOOPWHILE<條件>

其執(zhí)行過程為:先執(zhí)行語句塊,然后計算條件,如果其結(jié)果為True,則繼續(xù)執(zhí)行語句塊,直到條件的結(jié)果為False時退出循環(huán)。

例:按計算按鈕求s=1+2+3+…+10。

解4:解2與解4完全等價

integeri=1,s=0

DO

s+=i

i++

LOOPWHILEi<=10

st_1.text=string(s)

這四種循環(huán)結(jié)構(gòu)中,前兩種結(jié)構(gòu)可以一次也不執(zhí)行,后兩種結(jié)構(gòu)則至少執(zhí)行一次。

實際上,只需要從前兩種和后兩種結(jié)構(gòu)中各取其一就能表達(dá)所有的邏輯關(guān)系,但為了更清晰地表達(dá)條件,PowerScript還是提供了四種結(jié)構(gòu)。

2FORNEXT循環(huán)

FOR…NEXT是個循環(huán)次數(shù)確定的循環(huán)結(jié)構(gòu),它使循環(huán)體內(nèi)的語句執(zhí)行規(guī)定的次數(shù),其語法結(jié)構(gòu)為:

FORvarname=startTOend[STEPincrement]

Statementblock

NEXT

其中,varname是循環(huán)變量,可以是任意的數(shù)值類型,start、end分別是循環(huán)變量的初值和終值,increment是每次循環(huán)后循環(huán)變量的步長增量(缺省值為1),statementblock是一組語句,稱做循環(huán)體,方括號表示該子句可以省略。

FOR…NEXT語句的執(zhí)行過程為:循環(huán)變量varname從start開始,到end為止,重復(fù)執(zhí)行循環(huán)體,每執(zhí)行一次,varname被重新賦值,新值為:varname+increment。另外,如果start和/或end在循環(huán)體內(nèi)被修改,將影響循環(huán)次數(shù)。

例:按計算按鈕求s=1+2+3+…+10。

解5:

integeri,s=0

fori=1to10

s+=i

next

st_1.text=string(s)

3EXIT(退出循環(huán))

在循環(huán)語句的循環(huán)體中,當(dāng)我們想在中途退出循環(huán)時,使用EXIT語句是個好辦法,執(zhí)行該語句后,程序的控制權(quán)轉(zhuǎn)至循環(huán)語句后的語句,執(zhí)行該語句后,程序的控制權(quán)轉(zhuǎn)至循環(huán)語句后的語句。

在嵌套循環(huán)的情況下,EXIT語句退出當(dāng)前層循環(huán),而不是所有循環(huán)。

功能:執(zhí)行該語句后,程序的控制權(quán)轉(zhuǎn)至循環(huán)語句后的語句。

例:下列程序運行后,變量s中的值是多少?

integeri,j,s=0

fori=1to10

forj=1to10

ifj>6then

exit

endif

next

s=s+i

next

4CONTINUE(繼續(xù)循環(huán))

功能:在循環(huán)語句的循環(huán)體中,遇到CONTINUE語句后,將不執(zhí)行CONTINUE語句后與循環(huán)結(jié)束前的所有語句,而開始新一輪循環(huán)。

四、返回語句與終止程序運行

在編寫事件處理程序或函數(shù)時,使用RETURN語句返回控制給用戶或調(diào)用函數(shù)的地方。當(dāng)希望終止應(yīng)用程序的運行時,使用HALT語句。

1RETURN語句

RETURN語句立即終止事件處理程序或函數(shù)的執(zhí)行,把控制返回到調(diào)用程序。

語法格式:RETURN[表達(dá)式]

功能:RETURN語句立即終止事件處理程序或函數(shù)的執(zhí)行,把控制返回到調(diào)用程序。

表達(dá)式值作為事件處理程序或函數(shù)的返回值返回。

2HALT語句

HALT語句用于終止應(yīng)用程序的運行,其語法為:HALT{CLOSE}

其中CLOSE是個可選項。當(dāng)HALT語句不帶CLOSE選項時,該語句立即終止應(yīng)用程序的運行;當(dāng)HALT語句帶CLOSE選項時,執(zhí)行到該語句后,應(yīng)用程序先執(zhí)行應(yīng)用對象的Close事件處理程序,之后再終止應(yīng)用程序的運行。PC機(jī)與單片機(jī)實時通信系統(tǒng)的設(shè)計與實現(xiàn)摘要:本系統(tǒng)分為上位機(jī)和下位機(jī)兩個部分。下位機(jī)最要由六個部分組成:單片機(jī)控制系統(tǒng)、串口通信系統(tǒng)、溫度采集系統(tǒng)、LED顯示系統(tǒng)、蜂鳴器報警系統(tǒng)和液晶顯示系統(tǒng)。下位機(jī)采用AT89C52單片機(jī)作為控制器件,DS18B20用于采集溫度,1602LCD和發(fā)光二極管作為顯示器件,蜂鳴器作為報警器件;上位機(jī)采用PC機(jī)用VC++編程制作的可視化界面,上位機(jī)可視化界面簡單直觀,易于操作。系統(tǒng)實現(xiàn)的功能:溫度采集,溫度液晶顯示,報警功能,上位機(jī)實時顯示溫度,上位機(jī)顯示溫度波形,上位機(jī)實時控制下位機(jī).上位機(jī)還增加許多小技巧,比如鼠標(biāo)的形狀,圖標(biāo)按鈕,位圖按鈕,背景色控制,退出顯示提示信息等等。關(guān)鍵詞:上位機(jī),單片機(jī)AT89S52,DS18B20,1602LCD,串口通信DesignandImplementofPCandMCUReal-TimeCommunicationSystemAbstract:Thesystemisdividedintotwopartsupperandlowermachine.Lowermachinemadeupofsixdifferentparts:MCUcontrolsystem,Communicationsystem,Measuretemperaturesystem,LEDdisplaysystem,buzzerwarnedsystemandLCDdisplaysystem.LowermachineuseAT89C52MCUascontrolapparatus.DS18B20usedtogettemperature,1602LCDandLEDusedtodisplay.Buzzerisusedasenunciator.UppermachineuseVC++composeprogramtomakeupaninterface.TheinterfaceisVisualandeasytooperate.Systemaccomplishfunctionincludingmeasuretemperature,displaytemperaturewith1602LCD,uppermachinerealtimedisplaytemperature,uppermachinedisplaytemperaturebywave,uppermachinerealtimecontrollowermachine.Upperincreasealotfunction,suchas:theshapeofmousepointer,iconbutton,bmpbutton,backgroundcolor

canchangeandpromptforquitsystem.Keywords:Uppermachine;AT89C52MCU;DS18B20;1602LCD;serialcommunication

1前言隨著科技的不斷發(fā)展,個人電腦在我們生活中的地位和作用已經(jīng)無可替代,許多工作設(shè)計,商業(yè)運作都是通過電腦完成,主要原因就是利用許多簡單操作就可以完成許多實際工作。只需要通過程序編程,制作出一些友好簡單直觀的界面。我們就能夠通過PC機(jī)很輕松地完成許多復(fù)雜的操作。本系統(tǒng)主要通過PC機(jī)與單片機(jī)構(gòu)成小型集散控制系統(tǒng)來進(jìn)行實時通信,既充分利用PC機(jī)豐富的軟硬件資源實現(xiàn)友好的人機(jī)界面,又通過RS-232C/485總線結(jié)構(gòu)與89C52單片機(jī)進(jìn)行通信,對單片機(jī)進(jìn)行數(shù)據(jù)采集和處理。此設(shè)計只需點擊鼠標(biāo)就可以控制下位機(jī)完成許多操作??梢杂糜跈z測一些人難以到達(dá)或環(huán)境比較惡劣的地方進(jìn)行數(shù)據(jù)采集。比如控制機(jī)器人去一些比較深、比較小的洞穴探索和采集數(shù)據(jù),本設(shè)計所涉及的專業(yè)知識較廣,包括VC++可視化編程技術(shù)及應(yīng)用、單片機(jī)原理及應(yīng)用、傳感器原理及應(yīng)用,數(shù)字電子技術(shù),液晶顯示技術(shù)等。上位機(jī)所涉及到的內(nèi)容主要是將下位機(jī)數(shù)據(jù)處理并簡單直觀地通過文本框和溫度波形展示在人們面前;使用者僅需點擊鼠標(biāo)就能夠控制下位機(jī),達(dá)到想要的操作及現(xiàn)象。下位機(jī)所涉及到的內(nèi)容主要是DS18B20實時采集溫度,將溫度數(shù)據(jù)傳給單片機(jī);單片機(jī)將數(shù)據(jù)處理,通過1602LCD顯示出來,并實時將溫度傳輸給上位機(jī);當(dāng)溫度到達(dá)所設(shè)定的報警值時蜂鳴器開始工作,實現(xiàn)報警功能;下位機(jī)實時接收到上位機(jī)發(fā)送來的數(shù)據(jù),根據(jù)數(shù)據(jù)分析做出相應(yīng)的操作和顯示。通過此次畢業(yè)設(shè)計,了解電子系統(tǒng)設(shè)計的基本方法,掌握電子設(shè)計的基本步驟,熟練運用VC++編程。我將大學(xué)四年的所學(xué)的專業(yè)知識,連貫起來作為一個整體做出了這個設(shè)計,理論與實際結(jié)合寫出論文,并做出實物而且調(diào)試成功??吹秸{(diào)試成功的實物和實現(xiàn)所有自己所要求實現(xiàn)的功能,自己內(nèi)心無比驕傲和興奮。大學(xué)四年終究能說學(xué)有所成,而且是自己愛好的電子設(shè)計。2系統(tǒng)總體設(shè)計本系統(tǒng)主要由兩個部分組成:上位機(jī),下位機(jī)。通過USB轉(zhuǎn)串口連接上位機(jī)與下位機(jī)。系統(tǒng)實現(xiàn)的功能:①DS18B20實時采集環(huán)境溫度②單片機(jī)分析DS18B20采集到得數(shù)據(jù),控制1602LCD顯示出實時溫度。③當(dāng)溫度達(dá)到系統(tǒng)設(shè)置的報警值30℃時蜂鳴器報警④單片機(jī)能將DS18B20采集的溫度通過USB串口實時傳給上位機(jī)⑤上位機(jī)能夠利用編輯框?qū)崟r顯示單片機(jī)傳輸?shù)臏囟娶奚衔粰C(jī)能夠通過按鍵控制顯示出溫度的實時波形⑦上位機(jī)可以通過按鍵或發(fā)送編輯框向單片機(jī)發(fā)送數(shù)據(jù),控制單片機(jī)LED的閃爍和1602LCD的顯示,USB轉(zhuǎn)串口下位機(jī)系統(tǒng)上位機(jī)系統(tǒng)USB轉(zhuǎn)串口下位機(jī)系統(tǒng)上位機(jī)系統(tǒng)圖1系統(tǒng)框圖3.下位機(jī)設(shè)計下位機(jī)的設(shè)計主要分為兩個部分:硬件設(shè)計和軟件設(shè)計。3.1下位機(jī)硬件設(shè)計:下位機(jī)最要由六個部分組成:單片機(jī)控制系統(tǒng)、串口通信系統(tǒng)、溫度采集系統(tǒng)、LED顯示系統(tǒng)、蜂鳴器報警系統(tǒng)和液晶顯示系統(tǒng)。工作原理:開機(jī)后所有二極管閃爍一次,蜂鳴器報警一聲。單片機(jī)向18B20發(fā)送數(shù)據(jù),溫度采集系統(tǒng)開始檢測溫度,把采集到的溫度值發(fā)送給單片機(jī),單片機(jī)將數(shù)據(jù)處理后,控制液晶顯示系統(tǒng)顯示出當(dāng)前溫度。系統(tǒng)不斷循環(huán)采集溫度,并實時顯示,而且將實時溫度通過串口通信系統(tǒng)將數(shù)據(jù)發(fā)送給上位機(jī)。當(dāng)所測溫度達(dá)到30℃時,蜂鳴器開始報警,而且二極管全亮。單片機(jī)系統(tǒng)同時通過串口通信系統(tǒng)不斷檢測,如果串口接收到數(shù)據(jù),單片機(jī)會將數(shù)據(jù)處理,并控制LED顯示系統(tǒng)和液晶顯示系統(tǒng)工作。單片機(jī)控制系統(tǒng)LED顯示系統(tǒng)液晶顯示系統(tǒng)串口通信系統(tǒng)單片機(jī)控制系統(tǒng)LED顯示系統(tǒng)液晶顯示系統(tǒng)串口通信系統(tǒng)溫度采集系統(tǒng)蜂鳴報警系統(tǒng)3.1.1單片機(jī)電路:圖3單片機(jī)單元電路圖AT89S52是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。電路結(jié)構(gòu):單片機(jī)P0口接上拉電阻,因為P0口的驅(qū)動電流不大,不能驅(qū)動液晶進(jìn)行顯示。②接1602LCD的數(shù)據(jù)位(7腳——14腳)③P2.0,P2.1,P2.2,分別接1602LCD的4,5,6腳用于控制1602LCD的顯示。④P2.7腳接18B20的數(shù)據(jù)傳輸線。⑤XTAL1,XTAL2分別接晶振的兩個輸出腳。⑥RST接復(fù)位電路輸出腳。⑦/VPP接上高電平。⑧RXD和TXD分別接上串口的9腳和10腳。⑨P3.5接蜂鳴器3.1.2串口電路設(shè)計:圖4串口通信電路圖串口電流主要由MAX232和一個串口頭再加一些電阻組成。J1與上位機(jī)的USB轉(zhuǎn)串口連接,MAX232的9腳和10腳分別接單片機(jī)的RXD,TXD兩端。通過MAX232的電平轉(zhuǎn)換,使單片機(jī)與上位機(jī)通信。3.1.31602LCD電路:圖51602LCD液晶顯示電路圖在單片機(jī)系統(tǒng)中應(yīng)用晶液顯示器作為輸出器件有以下幾個優(yōu)點:顯示質(zhì)量高;數(shù)字式接口;體積小、重量輕;功耗低;液晶顯示簡介.液晶顯示原理:液晶顯示的原理是利用液晶的物理特性,通過電壓對其顯示區(qū)域進(jìn)行控制,有電就有顯示,這樣即可以顯示出圖形。引腳接口說明第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和R/W共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平R/W為高電平時可以讀忙信號,當(dāng)RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。1602LCD的2腳、15腳接電源,1腳和16腳接地。7腳——14腳是1602LCD的數(shù)據(jù)傳輸位,接單片機(jī)的P0腳。4腳——6腳是1602LCD的控制位,接單片機(jī)的P2.0、P2.1、P2.2腳。3腳通過滑動變阻器接地,用于控制液晶的亮度。3.1.4DS18B20電路設(shè)計圖6DS18B20溫度傳感器電路圖數(shù)字溫度傳感器DS18B20介紹DS18B20的主要特性①適應(yīng)電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電.②獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊.③DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫④DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)⑤溫范圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃⑥可編程的分辨率為9~12位,對應(yīng)的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫⑦在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快⑧測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強(qiáng)的抗干擾糾錯能力⑨負(fù)壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。DS18B20引腳定義:(1)DQ為數(shù)字信號輸入/輸出端;(2)GND為電源地;(3)VDD為外接供電電源輸入端(在寄生電源接線方式時接地)。3.1.5蜂鳴器電路設(shè)計圖7蜂鳴器電路圖蜂鳴器是一種一體化結(jié)構(gòu)的電子訊響器,采用直流電壓供電,廣泛應(yīng)用于計算機(jī)、復(fù)印機(jī)、報警器、電子玩具、汽車電子設(shè)備、電話機(jī)、定時器等電子產(chǎn)品中作發(fā)聲器件。蜂鳴器的結(jié)構(gòu)原理⑴.壓電式蜂鳴器壓電式蜂鳴器主要由多諧振蕩器、壓電蜂鳴片、阻抗匹配器及共鳴箱、外殼等組成。多諧振蕩器由晶體管或集成電路構(gòu)成。當(dāng)接通電源后(1.5~15V直流工作電壓),多諧振蕩器起振,輸出1.5~2.5kHZ的音頻信號,阻抗匹配器推動壓電蜂鳴片發(fā)聲。⑵.電磁式蜂鳴器電磁式蜂鳴器由振蕩器、電磁線圈、磁鐵、振動膜片及外殼等組成。接通電源后,振蕩器產(chǎn)生的音頻信號電流通過電磁線圈,使電磁線圈產(chǎn)生磁場。振動膜片在電磁線圈和磁鐵的相互作用下,周期性地振動發(fā)聲。在單片機(jī)應(yīng)用的設(shè)計上,很多方案都會用到蜂鳴器,大部分都是使用蜂鳴器來做提示或報警,比如按鍵按下、開始工作、工作結(jié)束或是故障等等。這里對單片機(jī)在蜂鳴器驅(qū)動上的應(yīng)用作一下描述。驅(qū)動方式:由于自激蜂鳴器是直流電壓驅(qū)動的,不需要利用交流信號進(jìn)行驅(qū)動,只需對驅(qū)動口輸出驅(qū)動電平并通過三極管放大驅(qū)動電流就能使蜂鳴器發(fā)出聲音。單片機(jī)驅(qū)動他激蜂鳴器的方式是利用I/O定時翻轉(zhuǎn)電平產(chǎn)生驅(qū)動波形對蜂鳴器進(jìn)行驅(qū)動。利用I/O定時翻轉(zhuǎn)電平來產(chǎn)生驅(qū)動波形的方式會比較麻煩一點,必須利用定時器來做定時,通過定時翻轉(zhuǎn)電平產(chǎn)生符合蜂鳴器要求的頻率的波形,這個波形就可以用來驅(qū)動蜂鳴器了。3.1.6晶振電路、復(fù)位電路及LED顯示設(shè)計圖8晶振電路和復(fù)位電路XTAL1是片內(nèi)振蕩器的反相放大器輸入端,XTAL2則是輸出端,使用外部振蕩器時,外部振蕩信號應(yīng)直接加到XTAL1,而XTAL2懸空。內(nèi)部方式時,時鐘發(fā)生器對振蕩脈沖二分頻,如晶振為12MHz,時鐘頻率就為6MHz。晶振的頻率可以在1MHz-24MHz內(nèi)選擇。電容取30PF左右。復(fù)位輸入。晶振工作時,RST腳持續(xù)2個機(jī)器周期高電平將使單片機(jī)復(fù)位??撮T狗計時完成后,RST腳輸出96個晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。常用的復(fù)位電路如圖3-4所示。復(fù)位操作不會對內(nèi)部RAM有所影響。LED結(jié)構(gòu)及發(fā)光原理:發(fā)光二極管的核心部分是由P型半導(dǎo)體和N型半導(dǎo)體組成的晶片,在P型半導(dǎo)體和N型半導(dǎo)體之間有一個過渡層,稱為PN結(jié)。在某些半導(dǎo)體材料的PN結(jié)中,注入的少數(shù)載流子與多數(shù)載流子復(fù)合時會把多余的能量以光的形式釋放出來,從而把電能直接轉(zhuǎn)換為光能。PN結(jié)加反向電壓,少數(shù)載流子難以注入,故不發(fā)光。LED光源的特點①電壓:LED使用低壓電源,供電電壓在6-24V之間。②效能:消耗能量較同光效的白熾燈減少80%。③適用性:很小,每個單元LED小片是3-5mm的正方形,所以可以制備成各種形狀的器件,并且適合于易變的環(huán)境。④穩(wěn)定性:10萬小時,光衰為初始的50%。⑤響應(yīng)時間:其白熾燈的響應(yīng)時間為毫秒級,LED燈的響應(yīng)時間為納秒級。圖9發(fā)光二極管電路圖⑥對環(huán)境污染:無有害金屬汞。圖9發(fā)光二極管電路圖⑦價格:LED的價格現(xiàn)在越來越平民化。開始蜂鳴器鳴叫一聲,二極管全亮閃爍一次開始蜂鳴器鳴叫一聲,二極管全亮閃爍一次單片機(jī)向18B20和1602LCD發(fā)送控制信號,并對串口初始化18B20采集溫度,并將溫度值傳輸給單片機(jī)單片機(jī)處理數(shù)據(jù),并控制1602LCD顯示溫度單片機(jī)通過串口將溫度發(fā)送給上位機(jī)檢測是否有數(shù)據(jù)傳入當(dāng)字符”0”傳入當(dāng)字符”1”傳入當(dāng)字符”2”傳入當(dāng)字符”3”傳入當(dāng)字符”4”傳入當(dāng)字符”5”傳入當(dāng)字符”6”傳入當(dāng)字符”7”傳入單數(shù)二極管亮雙數(shù)二極管亮二極管交叉閃爍流水燈廣告燈液晶顯示1液晶顯示2顯示當(dāng)前溫度無有圖10下位機(jī)軟件設(shè)計流程圖:3.2.1DS18B20溫度采集和數(shù)據(jù)處理設(shè)計①DS18B20控制方法DS18B20有六條控制命令,指令約定代碼操作說明溫度轉(zhuǎn)換44H啟動DS18B20進(jìn)行溫度轉(zhuǎn)換讀暫存器BEH讀暫存器9個字節(jié)內(nèi)容寫暫存器4EH將數(shù)據(jù)寫入暫存器的TH、TL字節(jié)復(fù)制暫存器48H把暫存器的TH、TL字節(jié)寫到E2RAM中重新調(diào)E2RAMB8H把E2RAM中的TH、TL字節(jié)寫到暫存器TH、TL字節(jié)讀電源供電方式B4H啟動DS18B20發(fā)送電源供電方式的信號給主CPU②DS18B20的初始化(1)先將數(shù)據(jù)線置為高電平“1”。(2)延時(該時間要求的不是很嚴(yán)格,但是盡可能的短一點)(3)數(shù)據(jù)線拉到低電平“0”。(4)延時750微秒(該時間的時間范圍可以從480到960微秒)。(5)數(shù)據(jù)線拉到高電平“1”。(6)延時等待(如果初始化成功則在15到60毫秒時間之內(nèi)產(chǎn)生一個由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應(yīng)注意不能無限的進(jìn)行等待,不然會使程序進(jìn)入死循環(huán),所以要進(jìn)行超時控制)。(7)若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(5)步的時間算起)最少要480微秒。(8)將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。③DS18B20的寫操作(1)數(shù)據(jù)線先置低電平“0”。(2)延時確定的時間為15微秒。(3)按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。(4)延時時間為45微秒。(5)將數(shù)據(jù)線拉到高電平。(6)重復(fù)上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。(7)最后將數(shù)據(jù)線拉高。④DS18B20的讀操作(1)將數(shù)據(jù)線拉高“1”。(2)延時2微秒。(3)將數(shù)據(jù)線拉低“0”。(4)延時15微秒。(5)將數(shù)據(jù)線拉高“1”。(6)延時15微秒。(7)讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進(jìn)行數(shù)據(jù)處理。(8)延時30微秒。3.2.21602LCD液晶控制和顯示①1602LCD的指令說明及時序1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3.1所示:序號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L**6置功能00001DLNF**7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容表11602LCD控制命令表1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模式設(shè)置I/D:光標(biāo)移動方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo)B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位S/C:高電平時移動顯示的文字,低電平時移動光標(biāo)。指令6:功能設(shè)置命令DL:高電平時為4位總線,低電平時為8位總線N:低電平時為單行顯示,高電平時雙行顯示F:低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。指令7:字符發(fā)生器RAM地址設(shè)置。指令8:DDRAM地址設(shè)置。指令9:讀忙信號和光標(biāo)地址BF:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。圖11讀操作時序圖12寫操作時序②1602LCD的一般初始化(復(fù)位)過程延時15mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)延時5mS寫指令38H(不檢測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需要檢測忙信號寫指令38H:顯示模式設(shè)置寫指令08H:顯示關(guān)閉寫指令01H:顯示清屏寫指令06H:顯示光標(biāo)移動設(shè)置3.2.3串口通信的設(shè)計①IE中斷允許寄存器(串口中斷)可位尋址,地址:A8H如表3-2所示。表2中斷允許寄存器B7B6B5B4B3B2B1B0EA-ET2ESET1EX1ET0EX0EA:EA=0時,所有中斷停用(禁止中斷)EA=1時,各中斷的產(chǎn)生由個別的允許位決定。ET2:定時器/計數(shù)器2(T/C2)溢出中斷允許位。ET2=1,T/C2開中斷ET2=0,T/C2關(guān)中斷。ES:串行口中斷允許位。ES=1串行口開中斷,ES=0串行口關(guān)中斷。ET1:定時器/計數(shù)器1(T/C2)溢出中斷允許位。ET1=1,T/C1開中斷,ET1=0,T/C關(guān)中斷。EX1:外部中斷1的允許位,EX1=1外部中斷1開中斷,EX1=0外部中斷1關(guān)中斷。ET0:定時器/計數(shù)器0(T/C0)溢出中斷允許位。ET0=1,T/C0開中斷,ET0=0,T/C關(guān)中斷。EX0:外部中斷0的允許位。EX0=1外部中斷1開中斷,EX0=0外部中斷1關(guān)中斷。②本設(shè)計的中斷程序所設(shè)計的內(nèi)容是收到上位機(jī)發(fā)送來的數(shù)據(jù),實現(xiàn)不同的操作:當(dāng)接收到上位機(jī)發(fā)送的數(shù)據(jù)“0”時,程序控制單數(shù)發(fā)光二極管亮。當(dāng)接收到上位機(jī)發(fā)送的數(shù)據(jù)“1”時,程序控制雙數(shù)發(fā)光二極管亮。當(dāng)接收到上位機(jī)發(fā)送的數(shù)據(jù)“2”時,程序控制發(fā)光二極管交叉閃爍。當(dāng)接收到上位機(jī)發(fā)送的數(shù)據(jù)“3”時,程序控制發(fā)光二極管亮流水燈式發(fā)光。當(dāng)接收到上位機(jī)發(fā)送的數(shù)據(jù)“4”時,程序控制發(fā)光二極管亮廣告燈式發(fā)光。當(dāng)接收到上位機(jī)發(fā)送的數(shù)據(jù)“5”時,程序控制1602LCD顯示“WANGLUNBIYESHEJI”字樣。當(dāng)接收到上位機(jī)發(fā)送的數(shù)據(jù)“6”時,程序控制1602LCD顯示“XIEXIEGEWEILAOSHI”字樣。當(dāng)接收到上位機(jī)發(fā)送的數(shù)據(jù)“7”時,程序控制1602LCD顯示檢測到的實時溫度。3.2.4蜂鳴器報警程序利用單片機(jī)的P2.7口定時翻轉(zhuǎn)電平來產(chǎn)生驅(qū)動波形,利用編寫好的延時程序來做定時,通過定時翻轉(zhuǎn)電平產(chǎn)生符合蜂鳴器要求的頻率的波形,這個波形就可以用來驅(qū)動蜂鳴器了。4.上位機(jī)的設(shè)計上位機(jī)是指:人可以直接發(fā)出操控命令的計算機(jī),一般是PC,屏幕上顯示各種信號變化(液壓,水位,溫度等)。上位機(jī)發(fā)出的命令首先給下位機(jī),下位機(jī)再根據(jù)此命令解釋成相應(yīng)時序信號直接控制相應(yīng)設(shè)備。下位機(jī)不時讀取設(shè)備狀態(tài)數(shù)據(jù)(一般模擬量),轉(zhuǎn)化成數(shù)字信號反饋給上位機(jī)。簡言之如此,真實情況千差萬別不離其宗。上下位機(jī)都需要編程,都有專門的開發(fā)系統(tǒng)。控制者和提供服務(wù)者是上位機(jī)被控制者和被服務(wù)者是下位機(jī)通常上位機(jī)和下位機(jī)通訊可以采用不同的通訊協(xié)議,可以有RS232的串口通訊,或者采用RS485串行通訊,當(dāng)用計算機(jī)和PLC通訊的時候不但可以采用傳統(tǒng)的D形式的串行通訊,還可以采用更適合工業(yè)控制的雙線的PROFIBUS-DP通訊,采用封裝好的程序開發(fā)工具就可以實現(xiàn)PLC和上位機(jī)的通訊。當(dāng)然可以自己編寫驅(qū)動類的接口協(xié)議控制上位機(jī)和下位機(jī)的通訊。4.1串口通信的編程4.1.1認(rèn)識串口圖12計算機(jī)上的串口圖公頭接線端子排序圖母頭接線端子排序圖圖139針串口的公頭和母頭圖14USB轉(zhuǎn)串口圖公頭接線端子排序圖母頭接線端子排序圖如圖12所示,計算機(jī)上的串口圖中有幾個串口,包括9針的和25針的。9針的串口公頭、母頭如圖14所示。筆記本電腦可以通過USB→串行口通信轉(zhuǎn)換適配器(如圖14所示)。本設(shè)計采用的就是USB→串行口進(jìn)行設(shè)計。用USB轉(zhuǎn)串口易于操作,實驗方便,穩(wěn)定性高,非常適合于筆記本做上位機(jī)的開發(fā)。4.1.2串口標(biāo)準(zhǔn)RS232:RS-232在1962年發(fā)布,命名為EIA-232-E,作為工業(yè)標(biāo)準(zhǔn),以保證不同廠家產(chǎn)品之間的兼容。RS422:RS-422由RS-232發(fā)展而來,它是為彌補(bǔ)RS-232之不足而提出的。為改進(jìn)RS-232通信距離短、速率低的缺點,RS-422定義了一種平衡通信接口,將傳輸速率提高到10Mb/s,傳輸距離延長到4000英尺(速率低于100kb/s時),并允許在一條平衡總線上連接最多10個接收器。RS-422是一種單機(jī)發(fā)送、多機(jī)接收的單向、平衡傳輸規(guī)范,被命名為TIA/EIA-422-A標(biāo)準(zhǔn)。RS485:為擴(kuò)展應(yīng)用范圍,EIA又于1983年在RS-422基礎(chǔ)上制定了RS-485標(biāo)準(zhǔn),增加了多點、雙向通信能力,即允許多個發(fā)送器連接到同一條總線上,同時增加了發(fā)送器的驅(qū)動能力和沖突保護(hù)特性,擴(kuò)展了總線共模范圍,后命名為TIA/EIA-485-A標(biāo)準(zhǔn)。目前RS-232是PC機(jī)與通信工業(yè)中應(yīng)用最廣泛的一種串行接口。RS-232被定義為一種在低速率串行通訊中增加通訊距離的單端標(biāo)準(zhǔn)。串口傳輸數(shù)據(jù)只要有接收數(shù)據(jù)針腳和發(fā)送針腳就能實現(xiàn):同一個串口的接收腳和發(fā)送腳直接用線相連,兩個串口相連或一個串口和多個串口相連。9針串口(DB9)25針串口(DB25)針號功能說明縮寫針號功能說明縮寫1數(shù)據(jù)載波檢測DCD8數(shù)據(jù)載波檢測DCD2接收數(shù)據(jù)RXD3接收數(shù)據(jù)RXD3發(fā)送數(shù)據(jù)TXD2發(fā)送數(shù)據(jù)TXD4數(shù)據(jù)終端準(zhǔn)備DTR20數(shù)據(jù)終端準(zhǔn)備DTR5信號地GND7信號地GND6數(shù)據(jù)設(shè)備準(zhǔn)備好DSR6數(shù)據(jù)準(zhǔn)備好DSR7請求發(fā)送RTS4請求發(fā)送RTS8清除發(fā)送CTS5清除發(fā)送CTS9振鈴指示DELL22振鈴指示DELL表39針和25針串口的引腳功能說明表4.1.3計算機(jī)串口通信編程方式利用CSerialport類實現(xiàn)串口通信:大家都比較熟悉用VC++控件實現(xiàn)串口通信,但由于MSComm控件比較簡單,一般只是用于較簡單的系統(tǒng),串口通信還可以使用WindowsAPI函數(shù)和CSerial類,可以根據(jù)實際情況選擇合適的方法。本設(shè)計需要做很多復(fù)雜的處理,那么放棄簡單的MSComm通訊控件,選擇用這個CserialPort類。此類雖然比較復(fù)雜,但由于類程序可以直接應(yīng)用,省了許多事。CserialPort類實現(xiàn)的功能比MSComm控件強(qiáng)大很多,可以自行選擇端口通信,而且數(shù)據(jù)處理更方便。程序設(shè)計步驟:①利用利用CSerialport類實現(xiàn)串口通信:新建一個基于對話框的工程將CSerialport類復(fù)制到新建號的工程的文件夾下,通過project選項的addtoproject,彈出對話框,選中Serialport.h和Serialport.cpp文件,再單擊添加。CSerialport類就被成功引入。在對話框的頭文件中將CSerialport類的頭文件包含,并添加一個CSerialport類的變量.②打開串口按鈕的程序:按鈕添加的程序都是雙擊添加的按鈕,直接進(jìn)入編寫程序的地方,函數(shù)的映射系統(tǒng)已經(jīng)自己生成。實現(xiàn)的功能:先獲得組合框的端口號、波特率、數(shù)據(jù)位、校驗位和停止位的內(nèi)容,并檢查通信端口是否打開,以及通信狀態(tài)是否正確。如果通信端口沒有打開或被占用則提示“沒有發(fā)現(xiàn)此串口”,如果通信端口設(shè)置正確,通信狀態(tài)正確則亮起通信信號燈。③通信協(xié)議的設(shè)置以及傳輸數(shù)據(jù)處理的函數(shù):如函數(shù)中所示,設(shè)置的通信協(xié)議為:以“/”為終止位,以“a”為起始位。并將中間的數(shù)據(jù)處理在現(xiàn)實A處溫度的編輯框中現(xiàn)實出來。以“/”位終止位,以“b”位起始位。并將中間的數(shù)據(jù)處理在B出顯示出來。首先在對話框的頭文件和源文件中分別添加 afx_msgLONGOnComm(WPARAMch,LPARAMport);和 ON_MESSAGE(WM_COMM_RXCHAR,OnComm)兩個函數(shù)。再在源文件中編輯函數(shù):將“/”設(shè)定為截止位,將“a”設(shè)定為起始位。用一個字符串把“a”和“/”中的數(shù)據(jù)處在字符串中。在利用atof函數(shù),將字符串轉(zhuǎn)換為浮點型數(shù)據(jù)。④關(guān)閉按鈕的程序:單擊關(guān)閉按鈕時關(guān)閉串口,停止通信。關(guān)閉通信信號提示燈。⑤發(fā)送按鈕添加一個按鈕,向下位機(jī)發(fā)送數(shù)據(jù)的程序:先寫程序獲取編輯框的內(nèi)容,再將編輯框的內(nèi)容發(fā)送出去。4.2波形顯示的實現(xiàn)本設(shè)計采用了兩個顯示波形的界面。圖15COScopeCtrl類和CScope類創(chuàng)建的示波器界面如圖所示顯示波形的程序設(shè)計①用COScopeCtrl類顯示圖形將COScopeCtrl類復(fù)制到新建好的工程的文件夾下,通過project選項的addtoproject,彈出對話框,選中OScopeCtrl.h和OScopeCtrl.cpp文件,再單擊添加。COScopeCtrl類就被成功引入。在對話框的頭文件中將COScopeCtrl類的頭文件包含,并添加一個COScopeCtrl類的變量;在對話框中添加一個位圖,添加的位圖位置就是波形顯示的位置。在對話框源文件的OnInitDialog()初始化函數(shù)中添加函數(shù):函數(shù)的作用是設(shè)置顯示區(qū)間為20——40,設(shè)置縱坐標(biāo)為“℃”以及設(shè)置好背景色。再通過classwrizard添加WM_TIMER函數(shù),在函數(shù)中寫入波形顯示程序;寫好程序就可以把采集到的數(shù)據(jù)顯示成波形了。②用CScope類顯示圖形將CScope類復(fù)制到新建好的工程的文件夾下,通過project選項的addtoproject,彈出對話框,選中ScopeCtrl.h和Scope.cpp文件,再單擊添加。CScope類就被成功引入。向?qū)υ捒蛞雰蓚€位圖,做顯示時需要用到。在對話框的頭文件中將CScope類的頭文件包含,并添加一個CScope類的變量;在對話框中添加一個靜態(tài)文本控件設(shè)定控件ID為IDC_SCOPE;在對話框源文件的OnInitDialog()初始化函數(shù)中添加函數(shù):函數(shù)的作用是設(shè)置顯示溫度,設(shè)置縱坐標(biāo)為“溫度”“℃”。再通過classwrizard添加WM_TIMER函數(shù),在函數(shù)中寫入波形運行程序。寫好程序就可以把采集到的數(shù)據(jù)顯示成波形了。4.3上位機(jī)增加的一些小技巧:①設(shè)置圖標(biāo)按鈕:先添加一個圖標(biāo),設(shè)置按鈕為圖標(biāo)屬性,再關(guān)聯(lián)一個按鈕的變量,在初始化時編寫如下程序即可得到按鈕圖標(biāo)。m_button1.SetIcon(AfxGetApp()->LoadIcon(IDI_ICON3));②設(shè)置位圖按鈕先添加一個位圖,設(shè)置按鈕為位圖屬性,再關(guān)聯(lián)一個按鈕的變量,在初始化時編寫如下程序即可得到按鈕圖標(biāo)。HBITMAPhBmp=::LoadBitmap(AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BITMAP3));m_button2.SetBitmap(hBmp);③修改主窗口標(biāo)題AfxGetMainWnd()->SetWindowText(_T("王澤鑫畢業(yè)設(shè)計"));④設(shè)置背景色及文本顏色SetDialogBkColor(RGB(0,55,200),RGB(0,255,55));⑤退出提示信息if(MessageBox("確定要退出嗎?","提示",MB_YESNO|MB_DEFBUTTON2)==IDYES)AfxGetMainWnd()->PostMessage(WM_CLOSE); ⑥打開串口的亮燈提示,關(guān)閉串口熄燈設(shè)置兩個圖像控件并重疊,按鍵下鍵則選擇一個按鈕顯示另一個隱藏。關(guān)串口則相反。GetDlgItem(IDC_STATIC1)->ShowWindow(SW_SHOW);GetDlgItem(IDC_STATIC2)->ShowWindow(SW_HIDE);⑦設(shè)置運行外部顯示圖標(biāo):m_hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME);⑧其中顯示波形包含了一個小技巧:按鍵選擇開始及暫停.

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論