基于單片機(jī)的課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩26頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  目 錄</p><p>  1.課程設(shè)計(jì)的目的及意義……………………………………………………1</p><p>  2.工作原理……………………………………………………………………1</p><p>  2.1方案論證……………………………………………………………1</p><p>  2.2系統(tǒng)方案………

2、……………………………………………………3</p><p>  3.硬件電路設(shè)計(jì)………………………………………………………………3</p><p>  3.1 電源…………………………………………………………………3</p><p>  3.2鍵盤(pán)以及顯示電路…………………………………………………4</p><p>  3.3溫度測(cè)試電路……

3、…………………………………………………7</p><p>  3.4 串口通訊電路……………………………………………………10</p><p>  4 軟件設(shè)計(jì)…………………………………………………………………11</p><p>  4.1主程序方案…………………………………………………………11</p><p>  4.2各模塊子程序設(shè)計(jì)

4、………………………………………………12</p><p>  總結(jié)……………………………………………………………………………15</p><p>  參考書(shū)目……………………………………………………………………16</p><p>  附錄……………………………………………………………………………17</p><p>  1.課程設(shè)計(jì)的目的及

5、意義</p><p>  溫度控制無(wú)論是在工業(yè)生產(chǎn)過(guò)程中,還是在日常生活中都起著非常重要的作用,在溫度控制中,由于受到溫度被控對(duì)象特性(如慣性大、滯后大、非線性等)的影響,使得控制性能難以提高,有些工藝過(guò)程其溫度控制的好壞直接影響著產(chǎn)品的質(zhì)量,因而設(shè)計(jì)一種較為理想的溫度控制系統(tǒng)是非常有價(jià)值的。</p><p>  本設(shè)計(jì)運(yùn)用主從分布式思想,由一臺(tái)上位機(jī)(PC微型計(jì)算機(jī)),下位機(jī)(單片機(jī))多

6、點(diǎn)溫度數(shù)據(jù)采集,組成兩級(jí)分布式多點(diǎn)溫度測(cè)量的巡回檢測(cè)系統(tǒng)。該系統(tǒng)采用 RS-232串行通訊標(biāo)準(zhǔn),通過(guò)上位機(jī)(PC)控制下位機(jī)(單片機(jī))進(jìn)行現(xiàn)場(chǎng)溫度采集。溫度值既可以送回主控PC進(jìn)行數(shù)據(jù)處理,由顯示器顯示。也可以由下位機(jī)單獨(dú)工作,實(shí)時(shí)顯示當(dāng)前各點(diǎn)的溫度值,對(duì)各點(diǎn)進(jìn)行控制。</p><p><b>  2.工作原理</b></p><p><b>  2.1方案

7、論證</b></p><p>  溫度檢測(cè)系統(tǒng)有則共同的特點(diǎn):測(cè)量點(diǎn)多、環(huán)境復(fù)雜、布線分散、現(xiàn)場(chǎng)離監(jiān)控室遠(yuǎn)等。若采用一般溫度傳感器采集溫度信號(hào),則需要設(shè)計(jì)信號(hào)調(diào)理電路、A/D 轉(zhuǎn)換及相應(yīng)的接口電路,才能把傳感器輸出的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)送到計(jì)算機(jī)去處理。這樣,由于各種因素會(huì)造成檢測(cè)系統(tǒng)較大的偏差;又因?yàn)闄z測(cè)環(huán)境復(fù)雜、測(cè)量點(diǎn)多、信號(hào)傳輸距離遠(yuǎn)及各種干擾的影響,會(huì)使檢測(cè)系統(tǒng)的穩(wěn)定性和可靠性下降 。所以多

8、點(diǎn)溫度檢測(cè)系統(tǒng)的設(shè)計(jì)的關(guān)鍵在于兩部分:溫度傳感器的選擇和主控單元的設(shè)計(jì)。溫度傳感器應(yīng)用范圍廣泛、使用數(shù)量龐大,也高居各類(lèi)傳感器之首。</p><p>  2.1.1 傳感器部分</p><p><b>  方案一:</b></p><p>  采用熱敏電阻,可滿足40攝氏度至90攝氏度測(cè)量范圍,但熱敏電阻精度、重復(fù)性、可靠性較差,對(duì)于檢測(cè)1攝氏

9、度的信號(hào)是不適用的。而且在溫度測(cè)量系統(tǒng)中,采用單片溫度傳感器,比如AD590,LM35等.但這些芯片輸出的都是模擬信號(hào),必須經(jīng)過(guò)A/D轉(zhuǎn)換后才能送給計(jì)算機(jī),這樣就使得測(cè)溫裝置的結(jié)構(gòu)較復(fù)雜.另外,這種測(cè)溫裝置的一根線上只能掛一個(gè)傳感器,不能進(jìn)行多點(diǎn)測(cè)量.即使能實(shí)現(xiàn),也要用到復(fù)雜的算法,一定程度上也增加了軟件實(shí)現(xiàn)的難度。</p><p><b>  方案二:</b></p><

10、;p>  在多點(diǎn)測(cè)溫系統(tǒng)中,傳統(tǒng)的測(cè)溫方法是將模擬信號(hào)遠(yuǎn)距離采樣進(jìn)行AD轉(zhuǎn)換,而為了獲得較高的測(cè)溫精度,就必須采用措施解決由長(zhǎng)線傳輸,多點(diǎn)測(cè)量切換及放大電路零點(diǎn)漂移等造成的誤差補(bǔ)償問(wèn)題。采用數(shù)字溫度芯片DS18B20測(cè)量溫度,輸出信號(hào)全數(shù)字化。便于單片機(jī)處理及控制,省去傳統(tǒng)的測(cè)溫方法的很多外圍電路。且該芯片的物理化學(xué)性很穩(wěn)定,它能用做工業(yè)測(cè)溫元件,此元件線形較好。在0—100攝氏度時(shí),最大線形偏差小于1攝氏度。DS18B20的最大

11、特點(diǎn)之一采用了單總線的數(shù)據(jù)傳輸,由數(shù)字溫度計(jì)DS1820和微控制器AT89C51構(gòu)成的溫度測(cè)量裝置,它直接輸出溫度的數(shù)字信號(hào),可直接與計(jì)算機(jī)連接。這樣,測(cè)溫系統(tǒng)的結(jié)構(gòu)就比較簡(jiǎn)單,體積也不大,且由于AT89C51可以帶多個(gè)DSB1820,因此可以非常容易實(shí)現(xiàn)多點(diǎn)測(cè)量.輕松的組建傳感器網(wǎng)絡(luò)。</p><p>  采用溫度芯片DS18B20測(cè)量溫度,可以體現(xiàn)系統(tǒng)芯片化這個(gè)趨勢(shì)。部分功能電路的集成,使總體電路更簡(jiǎn)潔,搭建

12、電路和焊接電路時(shí)更快。而且,集成塊的使用,有效地避免外界的干擾,提高測(cè)量電路的精確度。所以集成芯片的使用將成為電路發(fā)展的一種趨勢(shì)。本方案應(yīng)用這一溫度芯片,也是順應(yīng)這一趨勢(shì)。</p><p>  2.1.2主控制部分</p><p><b>  方案一:</b></p><p>  此方案采用PC機(jī)實(shí)現(xiàn)。它可在線編程,可在線仿真的功能,這讓調(diào)試變

13、得方便。且人機(jī)交互友好。但是PC機(jī)輸出信號(hào)不能直接與DS18B20通信。需要通過(guò)RS232電平轉(zhuǎn)換兼容,硬件的合成在線調(diào)試,較為繁瑣,很不簡(jiǎn)便。而且在一些環(huán)境比較惡劣的場(chǎng)合,PC機(jī)的體積大,攜帶安裝不方便,性能不穩(wěn)定,給工程帶來(lái)很多麻煩!</p><p><b>  方案二:</b></p><p>  此方案采用AT89C51八位單片機(jī)實(shí)現(xiàn)。單片機(jī)軟件編程的自由度大

14、,可通過(guò)編程實(shí)現(xiàn)各種各樣的算術(shù)算法和邏輯控制。而且體積小,硬件實(shí)現(xiàn)簡(jiǎn)單,安裝方便。既可以單獨(dú)對(duì)多DS18B20控制工作,還可以與PC機(jī)通信.運(yùn)用主從分布式思想,由一臺(tái)上位機(jī)(PC微型計(jì)算機(jī)),下位機(jī)(單片機(jī))多點(diǎn)溫度數(shù)據(jù)采集,組成兩級(jí)分布式多點(diǎn)溫度測(cè)量的巡回檢測(cè)系統(tǒng),實(shí)現(xiàn)遠(yuǎn)程控制。另外AT89C51在工業(yè)控制上也有著廣泛的應(yīng)用,編程技術(shù)及外圍功能電路的配合使用都很成熟。</p><p><b>  2.

15、2系統(tǒng)方案</b></p><p>  綜上所述,溫度傳感器以及主控部分都采用第二方案。</p><p>  系統(tǒng)采用針對(duì)傳統(tǒng)溫度測(cè)溫系統(tǒng)測(cè)溫點(diǎn)少,系統(tǒng)兼容性及擴(kuò)展性較差的特點(diǎn),運(yùn)用分布式通訊的思想。設(shè)計(jì)一種可以用于大規(guī)模多點(diǎn)溫度測(cè)量的巡回檢測(cè)系統(tǒng)。該系統(tǒng)采用的是RS-232串行通訊的標(biāo)準(zhǔn),通過(guò)下位機(jī)(單片機(jī))進(jìn)行現(xiàn)場(chǎng)的溫度采集,溫度數(shù)據(jù)既可以由下位機(jī)模塊實(shí)時(shí)顯示,也可以送回上

16、位機(jī)進(jìn)行數(shù)據(jù)處理,具有巡檢速度快,擴(kuò)展性好,成本低的特點(diǎn)。</p><p>  實(shí)際采用電路方案如下圖:</p><p><b>  3.硬件電路設(shè)計(jì)</b></p><p>  系統(tǒng)底層電路的功能主要包括:多點(diǎn)溫度測(cè)試及其相關(guān)處理,實(shí)時(shí)顯示溫度信息,與上位機(jī)通訊傳輸溫度數(shù)據(jù)。硬件設(shè)計(jì)主要包括以下幾個(gè)模塊:電源以及看門(mén)狗電路, 鍵盤(pán)以及顯示電路

17、,溫度測(cè)試電路,串口通訊電路。下面對(duì)電路分模塊進(jìn)行說(shuō)明</p><p><b>  3.1 電源</b></p><p><b>  3.1.1電源電路</b></p><p>  因?yàn)閱纹瑱C(jī)工作電源為+5V,且底層電路功耗很小。采用7805三端穩(wěn)壓片即可滿足要求。</p><p><b>

18、;  具體電路圖如下:</b></p><p>  3.1.2看門(mén)狗電路</p><p>  本設(shè)計(jì)為單片機(jī)電路添加一個(gè)外部看門(mén)狗電路。定時(shí)查詢單片機(jī)的工作狀態(tài),一但發(fā)現(xiàn)異常即對(duì)單片機(jī)延時(shí)重起。保證系統(tǒng)安全可靠的運(yùn)行。</p><p>  NE56604能為多種微處理器和邏輯系統(tǒng)提供復(fù)位信號(hào),其門(mén)限電平為4.2V 。在電源突然掉電或電源電壓下降到低于門(mén)限

19、電平時(shí)。NE56604將產(chǎn)生精確的復(fù)位信號(hào)。NE56604內(nèi)置一個(gè)看門(mén)狗定時(shí)器,用于監(jiān)控微處理器,以確保微處理器的正常運(yùn)行??撮T(mén)狗能產(chǎn)生一個(gè)系統(tǒng)復(fù)位信號(hào)用來(lái)終止任何由于微處理器故障而引發(fā)的不正常的系統(tǒng)操作。NE56604的看門(mén)狗的監(jiān)控周期為100mS(典型值)。</p><p>  特性:正負(fù)雙邏輯輸出的有效復(fù)位信號(hào),精準(zhǔn)的門(mén)限電平監(jiān)測(cè),上電復(fù)位內(nèi)部延時(shí),可利用外部電阻調(diào)節(jié)的內(nèi)部看門(mén)狗定時(shí)器,看門(mén)狗定時(shí)器的監(jiān)控周

20、期為100mS 典型值,VCC=0.8VDC時(shí)產(chǎn)生有效的復(fù)位信號(hào)典型值,僅需很少的外圍元件。</p><p><b>  具體電路圖如下:</b></p><p>  3.2鍵盤(pán)以及顯示電路</p><p><b>  鍵盤(pán)電路</b></p><p>  單片機(jī)應(yīng)用系統(tǒng)中除了復(fù)位按鍵有專(zhuān)門(mén)的復(fù)位電

21、路,以及專(zhuān)一的復(fù)位功能外,其它的按鍵或鍵盤(pán)都是以開(kāi)關(guān)狀態(tài)來(lái)設(shè)置控制功能或輸入數(shù)據(jù)。鍵盤(pán)有編碼和非編碼兩種。非編碼鍵盤(pán)硬件電路極為簡(jiǎn)單。故本系統(tǒng)采用撥碼開(kāi)關(guān)來(lái)控制。具體電路如下:</p><p>  A. 開(kāi)關(guān)狀態(tài)的可靠輸入</p><p>  鍵開(kāi)關(guān)狀態(tài)的可靠輸入有兩種解決方法。一種是軟件去抖動(dòng):它是在檢測(cè)到有鍵按下時(shí),執(zhí)行一個(gè)10ms的延時(shí)程序后,再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,如

22、保持閉合狀態(tài)電平則確認(rèn)為真正鍵按下?tīng)顟B(tài),從而消除了抖動(dòng)影響。另一種為硬件去抖動(dòng):即為按鍵添加一個(gè)鎖存器。兩種方法都簡(jiǎn)單易行,本設(shè)計(jì)采用的是硬件去抖。</p><p>  B. 對(duì)按鍵進(jìn)行編碼給定鍵值或給出鍵號(hào)</p><p>  對(duì)于按鍵無(wú)論有無(wú)編碼,以及采用什么編碼,最后都要轉(zhuǎn)換成為與累加器中數(shù)值相對(duì)應(yīng)的鍵值,以實(shí)現(xiàn)按鍵功能程序的散轉(zhuǎn)轉(zhuǎn)移。為使編碼間隔小,散轉(zhuǎn)入口地址安排方便,常采用依次

23、序排列的鍵號(hào)。</p><p>  C. 選擇鍵盤(pán)監(jiān)測(cè)方法</p><p>  對(duì)是否有鍵按下的信息輸入方式有中斷方式與查詢方式兩種。本設(shè)計(jì)采用的查詢法,即在在CPU空閑時(shí)調(diào)用鍵盤(pán)掃描子程序。</p><p><b>  溫度顯示電路</b></p><p>  設(shè)計(jì)采用的是共陰極七段數(shù)碼管。顯示方式有動(dòng)態(tài)掃描和靜態(tài)顯示

24、,兩種方法在本本人采用是節(jié)約硬件資源的動(dòng)態(tài)掃描方式。即用兩塊芯片就可以完成顯示功能。具體電路圖如下:</p><p><b>  3.3溫度測(cè)試電路</b></p><p>  這里我們用到溫度芯片DS18B20。DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器,具有3引腳TO-92小體積封裝形式。測(cè)溫分辨率可達(dá)0.0625℃,被測(cè)溫度用符號(hào)擴(kuò)展的16位數(shù)

25、字量方式串行輸出。其工作電源既可在遠(yuǎn)端引入,也可采用寄生電源方式產(chǎn)生。CPU只需一根端口線就能與諸多DS18B20通信,占用微處理器的端口較少,可節(jié)省大量的引線和邏輯電路。</p><p>  DS18B20支持“一線總線”接口,測(cè)量溫度范圍為 -55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大

26、提高了系統(tǒng)的抗干擾性。</p><p>  DS18B20內(nèi)部結(jié)構(gòu)(1)DS18B20的內(nèi)部結(jié)構(gòu)如下圖所示。</p><p>  DS18B20內(nèi)部結(jié)構(gòu)圖</p><p>  DS18B20有4個(gè)主要的數(shù)據(jù)部件:① 64位激光ROM。64位激光ROM從高位到低位依次為8位CRC、48位序列號(hào)和8位家族代碼(28H)組成。</p><p>

27、<b> ?、?溫度靈敏元件。</b></p><p> ?、?非易失性溫度報(bào)警觸發(fā)器TH和TL??赏ㄟ^(guò)軟件寫(xiě)入用戶報(bào)警上下限值。</p><p> ?、?配置寄存器。配置寄存器為高速暫存存儲(chǔ)器中的第五個(gè)字節(jié)。DS18B20在0工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換成相應(yīng)精度的數(shù)值,其各位定義如圖所示。</p><p>  其中,TM:測(cè)試模式標(biāo)

28、志位,出廠時(shí)被寫(xiě)入0,不能改變;R0、R1:溫度計(jì)分辨率設(shè)置位,其對(duì)應(yīng)四種分辨率如下表所列,出廠時(shí)R0、R1置為缺省值:R0=1,R1=1(即12位分辨率),用戶可根據(jù)需要改寫(xiě)配置寄存器以獲得合適的分辨率。</p><p>  配置寄存器與分辨率關(guān)系表 :</p><p> ?。?)高速暫存存儲(chǔ)器</p><p>  高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如下圖所示。

29、當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式如圖所示。對(duì)應(yīng)的溫度計(jì)算:當(dāng)符號(hào)位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。</p><p>  溫度值格式圖DS18B20 溫度數(shù)據(jù)表:</p><p>  典型對(duì)應(yīng)的溫度值表:<

30、/p><p>  DS18B20最大的特點(diǎn)是單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線來(lái)完成。</p><p>  硬件連接電路如下圖:</p><p>  本系統(tǒng)為多點(diǎn)溫度測(cè)試。DS18B20采用外部供電方式,理論上可以在一根數(shù)據(jù)總線上掛256個(gè)DS18B20,但時(shí)間應(yīng)用中發(fā)現(xiàn),如果掛接25個(gè)以上的DS18B20仍舊有可能產(chǎn)生功耗問(wèn)題。另外單總線長(zhǎng)度也

31、不宜超過(guò)80M,否則也會(huì)影響到數(shù)據(jù)的傳輸。在這種情況下我們可以采用分組的方式,用單片機(jī)的多個(gè)I/O來(lái)驅(qū)動(dòng)多路DS18B20。在實(shí)際應(yīng)用中還可以使用一個(gè)MOSFET將I/O口線直接和電源相連,起到上拉的作用。</p><p>  對(duì)DS18B20的設(shè)計(jì),需要注意以下問(wèn)題</p><p>  (1)對(duì)硬件結(jié)構(gòu)簡(jiǎn)單的單線數(shù)字溫度傳感器DS18B20 進(jìn)行操作,需要用較為復(fù)雜的程序完成。編制程序時(shí)

32、必須嚴(yán)格按芯片數(shù)據(jù)手冊(cè)提供的有關(guān)操作順序進(jìn)行,讀、寫(xiě)時(shí)間片程序要嚴(yán)格按要求編寫(xiě)。尤其在使用DS18B20 的高測(cè)溫分辨力時(shí),對(duì)時(shí)序及電氣特性參數(shù)要求更高。</p><p> ?。?)有多個(gè)測(cè)溫點(diǎn)時(shí),應(yīng)考慮系統(tǒng)能實(shí)現(xiàn)傳感器出錯(cuò)自動(dòng)指示,進(jìn)行自動(dòng)DS18B20 序列號(hào)和自動(dòng)排序,以減少調(diào)試和維護(hù)工作量。</p><p>  (3)測(cè)溫電纜線建議采用屏蔽4 芯雙絞線,其中一對(duì)線接地線與信號(hào)線,另

33、一組接VCC和地線,屏蔽層在源端單點(diǎn)接地。DS18B20 在三線制應(yīng)用時(shí),應(yīng)將其三線焊接牢固;在兩線應(yīng)用時(shí),應(yīng)將VCC與GND接在一起,焊接牢固。若VCC脫開(kāi)未接,傳感器只送85.0 ℃的溫度值。</p><p> ?。?)實(shí)際應(yīng)用時(shí),要注意單線的驅(qū)動(dòng)能力,不能掛接過(guò)多的DS18B20,同時(shí)還應(yīng)注意最遠(yuǎn)接線距離。另外還應(yīng)根據(jù)實(shí)際情況選擇其接線拓?fù)浣Y(jié)構(gòu)。</p><p>  3.4 串口通訊

34、電路</p><p>  AT89C51有一個(gè)全雙工的串行通訊口,所以單片機(jī)和電腦之間可以方便地進(jìn)行串口通訊。進(jìn)行串行通訊時(shí)要滿足一定的條件,比如電腦的串口是RS232電平的,而單片機(jī)的串口是TTL電平的,兩者之間必須有一個(gè)電平轉(zhuǎn)換電路,我們采用了專(zhuān)用芯片MAX232進(jìn)行轉(zhuǎn)換,雖然也可以用幾個(gè)三極管進(jìn)行模擬轉(zhuǎn)換,但是還是用專(zhuān)用芯片更簡(jiǎn)單可靠。</p><p><b>  具體電路

35、如下:</b></p><p>  我們采用了三線制連接串口,也就是說(shuō)和電腦的9針串口只連接其中的3根線:第5腳的GND、第2腳的RXD、第3腳的TXD。這是最簡(jiǎn)單的連接方法,但是對(duì)本設(shè)計(jì)來(lái)說(shuō)已經(jīng)足夠使用了,電路如上圖所示。通信線采用交叉接法,具體連接電路如下:</p><p><b>  4 軟件設(shè)計(jì)</b></p><p>&l

36、t;b>  4.1主程序方案</b></p><p>  主程序調(diào)用了4個(gè)子程序,分別是數(shù)碼管顯示程序、鍵盤(pán)掃描以及按鍵處理程序、溫度測(cè)試程序、中斷控制程序、單片機(jī)與PC機(jī)串口通訊程序。</p><p>  鍵盤(pán)掃描電路及按鍵處理程序:實(shí)現(xiàn)鍵盤(pán)的輸入按鍵的識(shí)別及相關(guān)處理。</p><p>  溫度測(cè)試程序:對(duì)溫度芯片送過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理,進(jìn)行判斷和

37、顯示。</p><p>  數(shù)碼管顯示程序:向數(shù)碼的顯示送數(shù),控制系統(tǒng)的顯示部分。</p><p>  中斷控制程序:實(shí)現(xiàn)循環(huán)顯示功能。</p><p>  串口通訊程序:實(shí)現(xiàn)PC機(jī)與單片機(jī)通訊,將溫度數(shù)據(jù)傳送給PC機(jī)。</p><p>  將各個(gè)功能程序以子程序的形式寫(xiě)好,當(dāng)寫(xiě)主程序的時(shí)候,只需要調(diào)用子程序,然后在寄存器的分配上作一下調(diào)整,

38、消除寄存器沖突和I/O沖突即可。程序應(yīng)該盡可能多的使用調(diào)用指令代替跳轉(zhuǎn)指令。因?yàn)樘D(zhuǎn)指令使得程序難以看懂各程序段之間的結(jié)構(gòu)關(guān)系。而調(diào)用指令則不同,調(diào)用指令使得程序結(jié)構(gòu)清晰,無(wú)論是修改還是維護(hù)都比較方便。將功能程序段寫(xiě)成子程序的形式,除了方便調(diào)用之外,還有一個(gè)好處那就是以后寫(xiě)程序的時(shí)候如果要用到,就可以直接調(diào)用這個(gè)單元功能模塊。</p><p>  主程序流程圖如右圖:</p><p>  

39、4.2各模塊子程序設(shè)計(jì)</p><p>  下面對(duì)主要幾個(gè)子程序的流程圖做介紹:</p><p>  (1)溫度測(cè)試子程序設(shè)計(jì)</p><p>  見(jiàn)附錄一:溫度測(cè)試子程序流程圖</p><p>  (2)中斷控制程序設(shè)計(jì)</p><p><b>  如右圖:</b></p><

40、;p> ?。?)串口通信程序設(shè)</p><p>  本次通訊中,測(cè)控系統(tǒng)分位上位機(jī)和下位機(jī)之間的通信,系統(tǒng)中單片機(jī)負(fù)責(zé)數(shù)據(jù)采集、處理和控制,上位機(jī)進(jìn)行現(xiàn)場(chǎng)可視化檢測(cè),通信協(xié)議采用半雙工異步串行通信方式,通過(guò)RS232的RTS信號(hào)進(jìn)行收發(fā)轉(zhuǎn)換,傳輸數(shù)據(jù)采用二進(jìn)制數(shù)據(jù)。本人采用的VB環(huán)境下PC機(jī)與單片機(jī)之間實(shí)現(xiàn)串行通訊的軟硬件方案。VB是Microsoft公司推出的Windows應(yīng)用程序開(kāi)發(fā)工具,因其具有界面友

41、好,編程簡(jiǎn)便等優(yōu)點(diǎn)而受到廣泛使用,而且Visual Basic 6.0 版本帶有專(zhuān)門(mén)實(shí)現(xiàn)串行通訊的MSCOMM控件。</p><p>  1) MSComm控件的主要屬性和方法 </p><p>  CommPort:設(shè)置或返回串行端口號(hào),其取值范圍為1—99,缺省為1 Setting:設(shè)置或返回串行端口的波特率、奇偶校驗(yàn)位、數(shù)據(jù)位數(shù)、停止位 PortOpen:打開(kāi)或關(guān)閉串行端口

42、。 RThreshold:該屬性為一閥值,它確定當(dāng)接收緩沖區(qū)內(nèi)字節(jié)個(gè)數(shù)達(dá)到或超過(guò)該值后就產(chǎn)生MSComml-OnComm事件。 Input:從接收緩沖區(qū)移走一串字符 Output:向發(fā)送緩沖區(qū)傳送一字符串。 </p><p><b>  軟件流程圖如下:</b></p><p><b>  單片機(jī)程序流程圖</b></p><

43、p><b>  PC通訊程序流程圖</b></p><p>  參數(shù)設(shè)定:通信端口選擇COM1,波特率設(shè)定為1200B/S</p><p>  MSCOmm.CommPort=1</p><p>  MSComm.Setting=“1200, n, 8, 1”。 </p><p>  START:MOVSP,

44、#60H</p><p>  MOVTMOD,#20H</p><p>  MOVTH1,#0E6H</p><p>  MOVTL1,#0E6H ;1200B/S,晶振為12MHZ</p><p>  MOV PCON,#00H</p><p>  MOVSCON,#50H</p>

45、<p><b>  SETBTR1</b></p><p><b>  5.總結(jié)</b></p><p>  本設(shè)計(jì)能夠順利的完成得到了院系領(lǐng)導(dǎo)老師的大力支持和幫助,尤其是我的指導(dǎo)老師馮杰副教授,在百忙之中抽出寶貴的休息時(shí)間,仔細(xì)耐心為我為我指導(dǎo)。設(shè)計(jì)過(guò)程中,馮老師一并幫我分析遇到的種種困難。一直支持,鼓勵(lì)我要有解決問(wèn)題的信心,使設(shè)

46、計(jì)得以順利的完成。在開(kāi)發(fā)的同時(shí),和同學(xué)們之間的相互探討也使我獲益匪淺。在此,對(duì)他們表示由衷的感謝!</p><p>  電子信息技術(shù)日新月異地飛速發(fā)展,人們總是處在不斷學(xué)習(xí)階段,再加上我水平有限,所以本設(shè)計(jì)肯定存在許多不盡如人意的地方,歡迎廣大老師和同學(xué)批評(píng)指正。</p><p>  最后,要感謝所有幫組我的老師,他們精心的栽培為我以后的學(xué)習(xí)工作打下了堅(jiān)實(shí)的基礎(chǔ)。</p>&

47、lt;p><b>  參考文獻(xiàn)</b></p><p>  [1]. 賈振國(guó). DS1820 及高精度溫度測(cè)量的實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2000</p><p>  [2]. 余永權(quán). 單片機(jī)原理及應(yīng)用. 北京:電子工業(yè)出版社, 1997 </p><

48、;p>  [3]. 邦田. 電子電路實(shí)用抗干擾技術(shù). 北京:人民郵電出版社,1994 </p><p>  [4]. Dallas semiconductor inc, programmable resolution 1—wiredigital thermometer 2001[Z] .</p&

49、gt;<p>  [5]. 曲喜貴. 電子元件材料手冊(cè)[ M]. 北京:電子工業(yè)出版社,1989.422-430.</p><p>  [6]. 黃賢武,鄭筱霞,曲波等. 傳感器實(shí)際應(yīng)用電路設(shè)計(jì)[M]. 成都:電子科技大學(xué)出版社,1997.4-10.</p><p>  [7]. 劉君華. 智能傳感器系統(tǒng) [M] . 西安:西安電子科技大學(xué)出版社,1999.</p>

50、;<p>  [8]. 余永權(quán). Flash 單片機(jī)原理及應(yīng)用 [M]. 北京:電子工業(yè)出版社,1997.</p><p>  [9]. 邦田. 電子電路實(shí)用抗干擾技術(shù) [M] . 北京:人民郵電出版社,1994.</p><p>  [10]. 周云波. 由DS18B20單線數(shù)字溫度計(jì)構(gòu)成的單線多點(diǎn)溫度測(cè)量系統(tǒng). 電子技術(shù)應(yīng)用,1996(2):15- 20.</p&

51、gt;<p><b>  附錄</b></p><p>  附錄一:溫度測(cè)試子程序流程圖</p><p><b>  附錄二</b></p><p>  單片機(jī)內(nèi)存分配申明: </p><p>  TEMPESEQU 27H ;用于保存設(shè)定溫度值</p><

52、;p>  TEMPER_LEQU 29H ;用于保存實(shí)際溫度Tr的低8位</p><p>  TEMPER_HEQU 28H ;用于保存實(shí)際溫度Tr的高8位</p><p>  FLAG1EQU 38H ;是否檢測(cè)到DS18B20標(biāo)志未</p><p>  LOEQU #0F60H;定時(shí)器低字節(jié)</p><p>  HI

53、EQU #0F6H ;定時(shí)器高字節(jié)</p><p>  FLAG2EQU 39H ;按鍵標(biāo)志位</p><p>  A_BITEQU 20H ;數(shù)碼管實(shí)際溫度Tr個(gè)位數(shù)存放位置</p><p>  B_BITEQU 21H ;數(shù)碼管實(shí)際溫度Tr十位數(shù)存放位置</p><p>  C_BITEQU 18H ;數(shù)碼管設(shè)定溫度T

54、s個(gè)位數(shù)存放位置</p><p>  D_BITEQU 19H ;數(shù)碼管設(shè)定溫度Ts十位數(shù)存放位置</p><p>  SDWDEQU 30H ;轉(zhuǎn)換后的設(shè)置溫度</p><p>  SJWD EQU 31H ;轉(zhuǎn)換后的實(shí)際溫度</p><p>  SW1EQU P1.1 ;繼電器1控制引腳,加熱繼電器 </p>

55、<p>  SW2EQU P1.7 ;繼電器2控制引腳,降溫繼電器</p><p>  DS18EQU P1.0 ;DS18B20的數(shù)據(jù)引腳</p><p>  SJKEQU FFE8H;8279的數(shù)據(jù)口</p><p>  MLKEQU FFEAH ;8279的命令口</p><p>  8CLKEQU AL

56、K;8279的時(shí)鐘信號(hào)輸入端</p><p><b>  ORG00H </b></p><p><b>  JMPMAIN</b></p><p><b>  ORG0BH</b></p><p>  MAIN:CLRSW1 ;關(guān)繼電器1</p&

57、gt;<p>  CLRSW2 ;關(guān)繼電器2</p><p>  MOVA_BIT,#0</p><p>  MOVB_BIT,#0 </p><p>  MOVC_BIT,#0</p><p>  MOVD_BIT,#0</p><p>  MOVTEMPES,#0</p&

58、gt;<p>  MOVTEMPER_L,#0 </p><p>  MOVTEMPER_H,#0</p><p>  INIT_1820:SETBDS18</p><p><b>  NOP</b></p><p>  CLRDS18;主機(jī)發(fā)出延時(shí)537微妙的復(fù)位低脈沖</p>&

59、lt;p><b>  MOVR1,#3</b></p><p>  TER1:MOVR0,#107</p><p><b>  DJNZR0,$</b></p><p>  DJNZR1,TSR1</p><p>  SETBDS18 ;拉高數(shù)據(jù)線</p><p

60、><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p>  MOVR0,#25H</p><p>  

61、TSR2:JNBDS18,TSR3 ;等待DS18B20回應(yīng)</p><p>  DJNZR0,TSR2 ;延時(shí)</p><p><b>  LJMPTSR4</b></p><p>  TSR3:SETBFLAG1 ;置標(biāo)志位,表示DS18B20存在</p><p><b>  LJMPT

62、SR5</b></p><p>  TSR4:CLRFLAG1 ;清標(biāo)志位,表示DS18B20不存在</p><p><b>  LJMPTSR7</b></p><p>  TSR5:MOVR0,#117</p><p>  TDR6:DJNZR0,TSR6 ;時(shí)序要求延時(shí)一端時(shí)間<

63、/p><p>  TSR7:SETBDS18</p><p><b>  RET</b></p><p>  LP:MOVXA, @DPTR</p><p>  JBACC.7,LP</p><p>  MOV A,#2AH ;S時(shí)鐘十分頻成100KHz</p><

64、p>  MOVX@DPTR,A</p><p>  MOVX@DPTR,#DISHBH ;提示符0000代碼首地址</p><p><b>  LCALLDIS</b></p><p>  MOV27H,#80H</p><p><b>  SETBIT</b></p&g

65、t;<p><b>  SETBEA</b></p><p><b>  SETBEX1</b></p><p>  INIT_TIMTR:MOVTMOD,#22H ;定時(shí)器初始化,使用定時(shí)器0模式2</p><p>  MOVIE,#00H ;啟用定時(shí)器0中斷產(chǎn)生</p><

66、p>  MOVTL0,#L0 ;加載低字節(jié)</p><p>  MOVTH0,#HI ;加載高字節(jié)</p><p>  SETBTR0 ;啟動(dòng)定時(shí)器0開(kāi)始記時(shí)</p><p><b>  SETBEA</b></p><p><b>  SETBET0</b></p&

67、gt;<p><b>  JNBTF0,$</b></p><p><b>  CPL8CLK</b></p><p>  MOVSP,#60H</p><p><b>  CLREA</b></p><p>  MOVDPTR,#MLK</p&g

68、t;<p>  MOVA,#0D1H</p><p>  MOVX@DPTR,A</p><p>  ZHUCHXU:LCALLJPCL</p><p>  LCALLDISPLAY</p><p>  AA:LCALL GET_TEMPER</p><p>  MOVA,SJWD;溫度比

69、較</p><p>  CJNEA,SDWD,PD</p><p>  XD:LCALLDISPLAY</p><p>  LJMPZHUCHXU</p><p>  PD:JCPD1</p><p><b>  SUBA,3</b></p><p>  CJ

70、NEA,SDWD,PD2</p><p><b>  LCALLXD</b></p><p>  PD2:JNCJW</p><p><b>  LCALLXD</b></p><p>  PD1:ADDA,#3</p><p>  CJNEA,SDWD,PD

71、2</p><p><b>  LCALLXD</b></p><p>  PD2:JCSW</p><p><b>  LCALLXD</b></p><p>  SW:SETBSW1</p><p><b>  JMP AA</b>&l

72、t;/p><p>  JW: SETBSW2</p><p><b>  JMP AA</b></p><p><b>  鍵盤(pán)處理子程序: </b></p><p>  JPLC:MOV R1,#2</p><p>  MOV R

73、2,27H</p><p>  JNB IE0,$;等待鍵盤(pán)的輸入</p><p>  MOVX DPTR,MLK</p><p>  MOV A,#40H</p><p>  MOVX DPTR,A</p><p>  MOVX

74、 DPTR,SJK</p><p>  MOVX A,@DPTR</p><p>  ANL A, #3FH</p><p>  MOVX @R2, A</p><p>  INC @R2</p><p>  DJNZ

75、 @R2,JX</p><p>  JMP RET</p><p>  JX: MOV DPTR,#TABLE1</p><p>  MOV R3, #0BH</p><p>  MOVX A,@R2</p><p> 

76、 MOV R4,#TABLE2</p><p>  JM: DJNZ R3, #2</p><p>  AJMP JX</p><p>  CJNE A,@R4,#4</p><p>  MOV R2,@DPTR</p>

77、<p>  AJMP RET</p><p>  INC @R4</p><p>  INC @DPTR</p><p>  DEC @R3</p><p>  AJMP JM</p><p>  TAB

78、LE1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8FH,8DH,90H,BFH,0FFH</p><p>  TABLE2:DB 0H,8H,20H,1H,9H,11H,2H,AH,12H,3H,0BH,23H</p><p>  DS18B20子程序:</p><p>  GET_TEMPER:SETBDS18<

79、;/p><p>  LCALLINIT_1820 ;先復(fù)位DS18B20</p><p>  JBFLAG1,TSS2</p><p>  RET;判斷DS18B20是否存在?若DS18B20 </p><p><b>  不存在則返回</b></p><p>  TSS2:MOV

80、A,#0CCH ;跳過(guò)ROM匹配</p><p>  MOVA,#44H ;發(fā)出溫度轉(zhuǎn)換命令</p><p>  LCALL DISPLAY;這里通過(guò)調(diào)用顯示子程序?qū)崿F(xiàn)延時(shí)一段時(shí)間,等待轉(zhuǎn)換結(jié)束</p><p>  LCALLINIT_1820;準(zhǔn)備讀溫度前先復(fù)位</p><p>  MOVA,#0CCH ;跳過(guò)R

81、OM匹配</p><p>  LCALLWRITE_1820</p><p>  MOVA,#0BEH ;發(fā)出讀溫度命令</p><p>  CALLREAD_1820 ;將讀出的溫度數(shù)據(jù)保存到28H/29H</p><p><b>  RET</b></p><p> ??;讀DS18B

82、20的程序,從DS18B20中讀出兩個(gè)字節(jié)的溫度數(shù)據(jù)</p><p>  READ_1820:MOVR4,#2 ;將溫度高位和低位從DS18B20中讀出</p><p>  MOVR1,29H ;低位存如29H(TEMPER_L)高位存入</p><p>  28H(TEMPER_H)</p><p>  RE00:MOVR

83、2,#8 ;數(shù)據(jù)一共8位</p><p>  RE01:CLRC</p><p><b>  SETBDS18</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>

84、  CLRDS18</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  NOP</b></p><p><b>  SETBDS18</b></p>&l

85、t;p><b>  MOVR3,#9</b></p><p>  RE10:DJNZR3,RE10</p><p>  MOVC,DS18</p><p>  MOVR3,#23</p><p><b>  RRCA</b></p><p>  DJNZR

86、2,RE10</p><p><b>  MOV@R1,A</b></p><p><b>  DECR1</b></p><p>  DJNZR4,RE00</p><p><b>  END</b></p><p><b>  顯示子

87、程序:</b></p><p>  DISPLAY:MOV DPTR,MLK</p><p>  MOVA,#0D1H</p><p>  MOVX@DPTR,A</p><p>  MOVDPTR,MLK</p><p>  MOVA,@0D90H</p><p>  M

88、OVX@DPTR,A</p><p>  MOVA,29H;將29H中的十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制</p><p>  MOVB,#10</p><p><b>  DIVAB</b></p><p>  MOVB_BIT,A;十位在A</p><p>  MOVA_BIT,A;

89、個(gè)位在B</p><p>  MOVDPTR,#NUMTAB;指定查表起始地址</p><p><b>  MOVR0,#4</b></p><p>  DPLOP:MOVA,A_BIT;取個(gè)位數(shù)</p><p>  MOVCA,@A+DPTR;查個(gè)位數(shù)的7段碼</p><p>&

90、lt;b>  PUSHA</b></p><p>  MOVA,#90H</p><p>  MOVDPTR,#MLK</p><p><b>  POPA</b></p><p>  MOVXDPTR,A</p><p>  MOVA, B_BIT;取十位數(shù)<

91、;/p><p>  MOVCA, @A+DPTR;查十位數(shù)的7段碼</p><p><b>  PUSHA</b></p><p>  MOVA,#90H</p><p>  MOVDPTR,#MLK</p><p><b>  POPA</b></p>

92、<p>  MOVXDPTR,A</p><p><b>  RET</b></p><p>  7段數(shù)碼管0~9數(shù)字的共陽(yáng)極顯示代碼</p><p>  TABLE2:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8FH,8DH,90H,BFH,0FFH</p><p><

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論