單片機(jī)課程設(shè)計(jì)報(bào)告---數(shù)字溫度計(jì)設(shè)計(jì)_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  單片機(jī)課程設(shè)計(jì)報(bào)告</b></p><p><b>  數(shù)字溫度計(jì)</b></p><p>  2009年 9月 15日</p><p><b>  摘要</b></p><p>  本設(shè)計(jì)是一款簡(jiǎn)單實(shí)用的小型數(shù)字溫度計(jì),所采用的主要元件有傳感器1

2、8B20,單片機(jī)AT89S52,,四位共陰極數(shù)碼管一個(gè),電容電阻若干。18B20支持“一線總線”接口,測(cè)量溫度范圍-55°C~+125°C。在-10~+85°C范圍內(nèi),精度為±0.5°C。18B20的精度較差為± 2°C ?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,如:環(huán)境控制、設(shè)備或過程控制、測(cè)溫類消費(fèi)電子產(chǎn)品

3、等。</p><p>  本次數(shù)字溫度計(jì)的設(shè)計(jì)共分為五部分,主控制器,LED顯示部分,傳感器部分,復(fù)位部分,時(shí)鐘電路。主控制器即單片機(jī)部分,用于存儲(chǔ)程序和控制電路;LED顯示部分是指四位共陰極數(shù)碼管,用來顯示溫度;傳感器部分,即溫度傳感器,用來采集溫度,進(jìn)行溫度轉(zhuǎn)換;復(fù)位部分,即復(fù)位電路。測(cè)量的總過程是,傳感器采集到外部環(huán)境的溫度,并進(jìn)行轉(zhuǎn)換后傳到單片機(jī),經(jīng)過單片機(jī)處理判斷后將溫度傳遞到數(shù)碼管顯示。本設(shè)計(jì)能完成的

4、溫度測(cè)量范圍是-55°C~+128°C,由于能力有限,不能實(shí)現(xiàn)報(bào)警功能。</p><p>  隨著時(shí)代的進(jìn)步和發(fā)展,單片機(jī)技術(shù)已經(jīng)普及到我們生活,工作,科研,各個(gè)領(lǐng)域,已經(jīng)成為一種比較成熟的技術(shù),本文將介紹一種基于單片機(jī)控制的數(shù)字溫度計(jì),本溫度計(jì)屬于多功能溫度計(jì),可以設(shè)置上下報(bào)警溫度,當(dāng)溫度不在設(shè)置范圍內(nèi)時(shí),可以報(bào)警。 </p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī),數(shù)字控制,溫

5、度計(jì), DS18B20,AT89S52</p><p><b>  目錄</b></p><p>  1概述...................................................................................................................................

6、........ 3</p><p>  1.1 課程設(shè)計(jì)的目的和意義............................................................................ 3</p><p>  1.2 任務(wù)及要求3</p><p>  2 系統(tǒng)總體方案及硬件設(shè)計(jì)4</p><p>

7、  2.1系統(tǒng)總體方案設(shè)計(jì)4</p><p>  2.2系統(tǒng)硬件電路設(shè)計(jì)5</p><p><b>  3 軟件設(shè)計(jì)12</b></p><p>  3.1系統(tǒng)總體方案設(shè)計(jì)12</p><p>  3.2程序設(shè)計(jì)12</p><p><b>  4實(shí)驗(yàn)仿真15</b&g

8、t;</p><p>  5課程設(shè)計(jì)體會(huì)16</p><p><b>  參考文獻(xiàn)17</b></p><p><b>  附1: 源程序代碼</b></p><p><b>  附2 :系統(tǒng)原理圖</b></p><p><b>  1

9、概述</b></p><p>  1.1 課程設(shè)計(jì)的目的和意義</p><p>  通過課程設(shè)計(jì)使我進(jìn)一步熟悉了單片機(jī)的內(nèi)部結(jié)構(gòu)和工作原理,掌握了單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)的基本方法和步驟;通過利用MCS-51單片機(jī),理解單片機(jī)在自動(dòng)化裝置中的作用以及掌握單片機(jī)的編程調(diào)試方法;通過設(shè)計(jì)一個(gè)簡(jiǎn)單的實(shí)際應(yīng)用輸入控制及顯示系統(tǒng),掌握protues和keil以及各種仿真軟件的使用。</p

10、><p>  目前溫度計(jì)的發(fā)展很快,從原始的玻璃管溫度計(jì)發(fā)展到了現(xiàn)在的熱電阻溫度計(jì)、熱電偶溫度計(jì)、數(shù)字溫度計(jì)、電子溫度計(jì)等等,溫度計(jì)中傳感器是它的重要組成部分,它的精度、靈敏度基本決定了溫度計(jì)的精度、測(cè)量范圍、控制范圍和用途等。傳感器應(yīng)用極其廣泛,目前已經(jīng)研制出多種新型傳感器。但是,作為應(yīng)用系統(tǒng)設(shè)計(jì)人員需要根據(jù)系統(tǒng)要求選用適宜的傳感器,并與自己設(shè)計(jì)的系統(tǒng)連接起來,從而構(gòu)成性能優(yōu)良的監(jiān)控系統(tǒng)。</p>&

11、lt;p>  1.2 任務(wù)及要求</p><p>  設(shè)計(jì)一個(gè)簡(jiǎn)單數(shù)字溫度計(jì),能夠測(cè)量通常環(huán)境下的溫度,能夠?qū)崿F(xiàn)零下溫度的測(cè)量,能夠測(cè)量小數(shù)。</p><p>  2 系統(tǒng)總體方案及硬件設(shè)計(jì)</p><p>  2.1系統(tǒng)總體方案設(shè)計(jì)</p><p>  2..1.1 方案論證</p><p>  方案一: 由

12、于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類的器件利用其感溫效應(yīng),在將隨被測(cè)溫度變化的電壓或電流采集過來,進(jìn)行A/D轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來,這種設(shè)計(jì)需要用到A/D轉(zhuǎn)換電路,感溫電路比較麻煩。</p><p>  方案二:考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,所以可以采用一只溫度傳感器DS18B20,此傳感器,可以很容易

13、直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。</p><p>  從以上兩種方案,很容易看出,采用方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單,故采用了方案二。</p><p><b>  2.1.2原理框圖</b></p><p>  溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)框圖如圖2-1所示,控制器采用單片機(jī)AT89S52,溫度傳感器采用DS18B20,用

14、四位LED數(shù)碼管以并口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。</p><p><b>  圖2-1</b></p><p>  2.1.3功能模塊連接簡(jiǎn)介</p><p>  溫度傳感器的接口2連接單片機(jī)P3.4,用于傳送數(shù)據(jù),接口3連接電源,接口1接地;數(shù)碼管的段碼輸入端連接單片機(jī)的P0端口,公共端接P2.4-P2.7,單片機(jī)的P2.0-P2.3接控制鍵盤,

15、時(shí)鐘電路連接XTAL,復(fù)位電路連接RST。</p><p>  2.2系統(tǒng)硬件電路設(shè)計(jì)</p><p>  2.2.1單片機(jī)的選擇</p><p>  單片機(jī)AT89S52具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要三個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電,此處我們采用USB接口供電,省去了大量空間,更適合于便攜式產(chǎn)品的應(yīng)

16、用。</p><p>  AT89S52主要特性:</p><p>  與MCS-51單片機(jī)產(chǎn)品兼容 4K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器</p><p>  1000次擦寫周期 全靜態(tài)工作:0Hz—33MHz</p><p>  32個(gè)可編程I/O口線 2個(gè)16位

17、定時(shí)器/計(jì)數(shù)器</p><p>  6個(gè)中斷源 全雙工UART串行通道</p><p>  低功耗空閑和掉電模式 掉電后中斷可喚醒</p><p>  看門狗定時(shí)器 雙數(shù)據(jù)指針</p><p>  靈活的ISP編程

18、 4.0---5.5V電壓工作范圍</p><p>  單片機(jī)AT89S52的內(nèi)部結(jié)構(gòu)總框圖。它可以劃分為CPU、存儲(chǔ)器、并行口、串行口、定時(shí)/計(jì)數(shù)器和中斷邏輯幾個(gè)部分。 </p><p>  AT89S52外部引腳功能如圖2-2所示。</p><p><b>  圖2-2 </b></p><p&

19、gt;  本次設(shè)計(jì)需要注意的幾個(gè)端口:</p><p>  P0口(39—32):是一組8位漏極開路行雙向I/O口,也既地址/數(shù)據(jù)總線復(fù)用口??勺鳛檩敵隹谑褂脮r(shí),每位可吸收電流的方式驅(qū)動(dòng)8個(gè)TTL邏輯電路,對(duì)端口寫“1”可作為高阻抗輸入輸入端用。在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。在Flash編程時(shí),PO口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校

20、驗(yàn)時(shí),要求接上拉電阻。</p><p>  P3口(10—17):是一組帶有內(nèi)部上拉電阻的8位雙向I/O口,,P1的輸入緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸出端口。作輸出端口時(shí),被外部拉低的P3口將用上拉電阻輸出電流。P3口除可作為一般的I/O口線外,更重要的用途是它的第二功能,如圖2-3所示:</p><p><

21、b>  圖2-3</b></p><p>  部分控制總線的功能:</p><p>  /Vpp(31):內(nèi)部和外部程序存儲(chǔ)器選擇線。=0時(shí)訪問外部ROM 0000H—FFFFH;=1時(shí),地址0000H—0FFFH空間訪問內(nèi)部ROM,地址1000H—FFFFH空間訪問外部ROM。本次設(shè)計(jì)接高電平。</p><p>  XTAL1(19)和XTAL2

22、(18):使用內(nèi)部振蕩電路時(shí),用來接石英晶體和電容;使用外部時(shí)鐘時(shí),用來輸入時(shí)鐘脈沖。</p><p>  RST/VPD(9):復(fù)位信號(hào)輸入端。AT89S52接能電源后,在時(shí)鐘電路作用下,該腳上出現(xiàn)兩個(gè)機(jī)器周期以上的高電平,使內(nèi)部復(fù)位。第二功能是VPD,即備用電源輸入端。當(dāng)主電源Vcc發(fā)生故障,降低到低電平規(guī)定值時(shí),VPD將為RAM提供備用電源,發(fā)保證存儲(chǔ)在RAM中的信號(hào)不丟失。</p><

23、p>  2.2.2時(shí)鐘電路設(shè)計(jì)</p><p>  AT89S52時(shí)鐘有兩種方式產(chǎn)生,即內(nèi)部方式和外部方式。(如圖2-4所示)AT89C51中有一個(gè)構(gòu)成內(nèi)部震蕩器的高增益反向放大器,引腳XTAL1和XTAL2分別是該放大器的輸入端和輸出端。這個(gè)放大器與作為反饋元件的片外石英或陶瓷震蕩器一起構(gòu)成自激震蕩器震蕩電路如圖。外接石英晶體(或陶瓷部時(shí)鐘,采用外部時(shí)鐘如圖所示。在這種情況下,外部時(shí)鐘脈沖接到XTAL1端

24、,既內(nèi)部時(shí)鐘發(fā)生器的輸入端,XTAL2懸空。由于外部時(shí)鐘信號(hào)是通過一個(gè)2分頻的觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的所以外部時(shí)鐘的占空比沒有特殊要求,但最小高電平持續(xù)的時(shí)間和最大低電平持續(xù)的時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。本次設(shè)計(jì)采用內(nèi)部震蕩電路,瓷片電容采用30P,晶振采用12MHZ</p><p>  內(nèi)部震蕩電路 外部震蕩電路</p><p><b>  圖2-4&

25、lt;/b></p><p>  2.2.3復(fù)位電路設(shè)計(jì)</p><p>  單片機(jī)系統(tǒng)的復(fù)位電路在這里采用的是上電+按鈕復(fù)位電路形式,其中電阻R采用10KΩ的阻值,電容采用電容值為10μ的電解電容。具體連接電路如圖3-5所示:</p><p><b>  圖2-5</b></p><p>  2.2.4 溫度顯示

26、電路</p><p>  四位共陰極數(shù)碼管,能夠顯示小數(shù)和負(fù)溫度。零下時(shí),1和2分別顯示負(fù)號(hào)。當(dāng)溫度超過99.9時(shí),四個(gè)數(shù)碼管全部亮。</p><p>  2.2.5溫度傳感器</p><p>  DS18B20溫度傳感器是美國DALLAS半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過簡(jiǎn)單的

27、編程實(shí)現(xiàn)9~12位的數(shù)字值讀數(shù)方式。DS18B20的性能特點(diǎn)如下:</p><p>  ● 獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;</p><p>  ● 多個(gè)DS18B20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;</p><p>  ● 可通過數(shù)據(jù)線供電,電壓范圍為3.0~5.5V;</p><p>  ● 溫度以9或

28、12位數(shù)字;</p><p>  ● 用戶可定義報(bào)警設(shè)置;</p><p>  ● 報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;</p><p>  ● 負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作; </p><p>  DS18B20采用3腳PR-35封裝或8腳SOIC封裝,其內(nèi)部結(jié)構(gòu)框

29、圖如圖2-6所示。</p><p><b>  圖2-6</b></p><p>  64位ROM的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的CRC檢驗(yàn)碼,這也是多個(gè)DS18B20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器TH和TL,可通過軟件寫入戶報(bào)警上下限。</p><p>  DS18B2

30、0溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存RAM和一個(gè)非易失性的可電擦除的EERAM。高速暫存RAM的結(jié)構(gòu)為8字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖2.3所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)TH和TL的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖2-7所示。低5位一直為1,TM是工作模式位,用于設(shè)置

31、DS18B20在工作模式還是在測(cè)試模式,DS18B20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),R1和R0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。</p><p><b>  圖2-7</b></p><p>  DS18B20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。溫度傳感器18B20匯編程序,采用

32、器件默認(rèn)的12位轉(zhuǎn)化,最大轉(zhuǎn)化時(shí)間750微秒 ,可以將檢測(cè)到的溫度直接顯示到AT89C52的兩個(gè)數(shù)碼管上。 </p><p>  表1 DS18B20溫度轉(zhuǎn)換時(shí)間表</p><p>  高速暫存RAM的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的CRC碼,可用來檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。</p><p>  當(dāng)DS18B20接收

33、到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625℃/LSB式表示。</p><p>  當(dāng)符號(hào)位S=0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位S=1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。</p&g

34、t;<p>  DS18B20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與RAM中的TH、TL字節(jié)內(nèi)容作比較。若T>TH或T<TL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令做出響應(yīng)。因此,可用多只DS18B20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。</p><p>  在64位ROM的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(CRC)。主機(jī)ROM的前56位來計(jì)算CRC值,并和存入DS18B20的CRC值作比較

35、,以判斷主機(jī)收到的ROM數(shù)據(jù)是否正確。</p><p>  另外,由于DS18B20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)DS18B20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化DS18B20(發(fā)復(fù)位脈沖)→發(fā)ROM功能命令→發(fā)存儲(chǔ)器操作命令→處理數(shù)據(jù)。</p><p><b>  分別說明如下:</b></p><

36、p>  1、初始化 單總線的所有處理均從初始化開始。初始化過程是主機(jī)通過向作為從機(jī)的DS18B20芯片發(fā)一個(gè)有時(shí)間寬度要求的初始化脈沖實(shí)現(xiàn)的。初始化后,才可進(jìn)行讀寫操作。</p><p>  2 、ROM操作命令 總線主機(jī)檢測(cè)到DS18B20的存在 便可以發(fā)出ROM操作命令之一 這些命令表.2:</p><p>  表2 ROM操作命令</p><p>

37、;  3、存儲(chǔ)器操作 命令如表.3: </p><p>  表.3 存儲(chǔ)器操作命令</p><p><b>  3 軟件設(shè)計(jì)</b></p><p>  3.1系統(tǒng)總體方案設(shè)計(jì)</p><p>  本次課程設(shè)計(jì)采用的是protues軟件仿真,用Keil軟件進(jìn)行編譯。Protues軟件是英國Labcenter elec

38、tronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿真單片機(jī)及外圍器件的工具。</p><p>  軟件部分由主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序,判斷程序,按鍵檢測(cè)等。</p><p>  圖3-1 主程序流程</p><p><b>  3.

39、2程序設(shè)計(jì)</b></p><p><b>  3.2.1 主程序</b></p><p>  主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理DS18B20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見圖3-1所示。</p><p>  3.2.2 讀出溫度子程序</p>

40、<p>  讀出溫度子程序的主要功能是讀出RAM中的9字節(jié),在讀出時(shí)需進(jìn)行CRC校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖3-2所示</p><p>  圖3-2 讀出溫度子程序流程</p><p>  3.2.3二進(jìn)制轉(zhuǎn)換BCD碼命令子程序 </p><p>  二進(jìn)制轉(zhuǎn)換BCD碼命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)

41、換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。二進(jìn)制轉(zhuǎn)換BCD碼命令子程序流程圖,如圖3-3</p><p>  圖3-3二進(jìn)制轉(zhuǎn)換BCD碼流程圖</p><p>  3.2.4 計(jì)算溫度子程序</p><p>  將RAM中讀取進(jìn)行BCD碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖4-4所示。</p><p

42、>  圖3-4  測(cè)量溫度流程圖 </p><p>  3.2.5溫度數(shù)據(jù)顯示子程序</p><p>  顯示數(shù)據(jù)子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,查表送段碼至LED,開位碼顯示,采用動(dòng)態(tài)掃描方式</p><p><b>  4 實(shí)驗(yàn)仿真</b></p><p><b>  圖4-1<

43、;/b></p><p>  系統(tǒng)仿真圖如圖4-1所示,加上復(fù)位電路和時(shí)鐘電路,在protues構(gòu)成了完整的仿真圖,輸入程序后就能夠進(jìn)行仿真。</p><p><b>  調(diào)試結(jié)果分析:</b></p><p>  本次數(shù)字溫度計(jì)能夠比較精確的測(cè)量一般溫度,測(cè)量范圍是-55~128,并且能夠測(cè)出小數(shù)。</p><p&g

44、t;<b>  5 課程設(shè)計(jì)體會(huì)</b></p><p>  本次的課程設(shè)計(jì)使我們進(jìn)一步鞏固了書本上的知識(shí),做到了學(xué)以致用。這是我們第二次自己動(dòng)手設(shè)計(jì)的電路,通過系統(tǒng)仿真軟件protues和編譯軟件keil,使我們進(jìn)一步了解了單片機(jī)的設(shè)計(jì)制作過程,其中最為困難的是軟件部分,即編程部分,我們上網(wǎng)找了好多資料,雖然經(jīng)過自己的修改,但還是有很多功能不能實(shí)現(xiàn),如報(bào)警和溫度上下限設(shè)置。由于protu

45、es并不是很熟練,在使用的過程中有很多原件的名稱不知道,從而花費(fèi)了大量的時(shí)間在網(wǎng)上查找,今后應(yīng)該在這方面多多努力。最后一步的焊接硬件也遇到了不少麻煩,數(shù)碼管引線太多容易弄混,三級(jí)管放大電路中,三極管容易接反??偨Y(jié)經(jīng)驗(yàn)的時(shí)候我們得出這樣的結(jié)論,學(xué)習(xí)應(yīng)該學(xué)以致用,有目的的去學(xué)習(xí),如果學(xué)了不用等于沒學(xué)。其次,要學(xué)以致用,就要理論聯(lián)系實(shí)際,這樣才會(huì)取得事半功倍的效果。</p><p><b>  參考文獻(xiàn)<

46、;/b></p><p>  [1] 康華光,陳大欽,張林.電子技術(shù)基礎(chǔ) 模擬部分(第五版).高等教育出版社.2006.103-108</p><p>  [2]余發(fā)山.單片機(jī)原理及應(yīng)用技術(shù).中國礦業(yè)大學(xué)出版社,2003.31-32</p><p>  [3] 51單片機(jī)學(xué)習(xí)網(wǎng) http://www.8951.com/TEST/XL1000/xl100062

47、3.htm</p><p><b>  附1 源程序代碼</b></p><p>  #include<reg51.h></p><p>  #include<18b20.h></p><p>  #define H 125 </p><p>  #define L -

48、55</p><p>  unsigned int zhengshu=0;//溫度值 </p><p>  int dingyih=H,dingyil=L,n;//溫度上下限</p><p>  uint m=0,i;//按鍵標(biāo)志位</p><p>  uchar temp;</p><p>  bit biaozh

49、i_1=0,biaozhi_2=0,biaozhi_3=0;</p><p>  sbit gw=P2^4;</p><p>  sbit sw=P2^5;</p><p>  sbit bw=P2^6;</p><p>  sbit qw=P2^7;</p><p>  sbit k1=P2^0;</p>

50、<p>  sbit k2=P2^1;</p><p>  sbit k3=P2^3;</p><p>  sbit k4=P2^2;</p><p>  sbit bj=P3^2;</p><p>  sbit led=P3^1;</p><p>  uchar ge,shi,bai,qian;//顯示

51、位定義</p><p>  uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x76,0x38,0x00};</p><p>  ////////////////0/////1////2////3////4////5////6////7////8////9// - / H / l</p&g

52、t;<p>  void delay(z)</p><p><b>  {</b></p><p><b>  uint i,j;</b></p><p>  for(i=0;i<115;i++)</p><p>  for(j=z;j>0;j--);</p>

53、<p><b>  }</b></p><p>  void xianshi1(uchar ge, shi, bai, qian)</p><p><b>  { </b></p><p><b>  gw=0;</b></p><p><b>  s

54、w=1;</b></p><p><b>  bw=1;</b></p><p><b>  qw=1;</b></p><p>  P0=table[ge];</p><p><b>  delay(1);</b></p><p><

55、b>  gw=1;</b></p><p><b>  sw=0;</b></p><p><b>  bw=1;</b></p><p><b>  qw=1;</b></p><p>  P0=table[shi];</p><p>

56、;<b>  delay(1);</b></p><p><b>  gw=1;</b></p><p><b>  sw=0;</b></p><p><b>  bw=1;</b></p><p><b>  qw=1;</b>&

57、lt;/p><p><b>  P0=0x80;</b></p><p><b>  delay(1);</b></p><p><b>  gw=1;</b></p><p><b>  sw=1;</b></p><p><b

58、>  bw=0;</b></p><p><b>  qw=1;</b></p><p>  P0=table[bai];</p><p><b>  delay(1);</b></p><p><b>  gw=1;</b></p><p

59、><b>  sw=1;</b></p><p><b>  bw=1;</b></p><p><b>  qw=0;</b></p><p>  P0=table[qian];</p><p><b>  delay(1);</b></p&

60、gt;<p><b>  }</b></p><p>  void xianshi2(uchar ge, shi, bai, qian)</p><p><b>  { </b></p><p>  if(bai==0)</p><p><b>  {</b>

61、</p><p><b>  bai=13;</b></p><p>  if(shi==0)</p><p><b>  shi=13;</b></p><p><b>  }</b></p><p><b>  gw=0;</b>

62、;</p><p><b>  sw=1;</b></p><p><b>  bw=1;</b></p><p><b>  qw=1;</b></p><p>  P0=table[ge];</p><p><b>  delay(1);&

63、lt;/b></p><p><b>  gw=1;</b></p><p><b>  sw=0;</b></p><p><b>  bw=1;</b></p><p><b>  qw=1;</b></p><p>  

64、P0=table[shi];</p><p><b>  delay(1);</b></p><p><b>  gw=1;</b></p><p><b>  sw=1;</b></p><p><b>  bw=0;</b></p>&l

65、t;p><b>  qw=1;</b></p><p>  P0=table[bai];</p><p><b>  delay(1);</b></p><p><b>  gw=1;</b></p><p><b>  sw=1;</b></

66、p><p><b>  bw=1;</b></p><p><b>  qw=0;</b></p><p>  P0=table[qian];</p><p><b>  delay(1);</b></p><p><b>  }</b>

67、;</p><p>  void init() //初始化函數(shù)</p><p><b>  {</b></p><p>  TMOD=0x01;</p><p>  TH0=(65536-20000)/256;</p><p>  TL0=(65536-20000)%256;<

68、/p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p>  void main()<

69、/p><p><b>  { </b></p><p><b>  gw=0;</b></p><p><b>  sw=0;</b></p><p><b>  bw=0;</b></p><p><b>  qw=0;&

70、lt;/b></p><p><b>  bj=0;</b></p><p><b>  led=1;</b></p><p><b>  P0=0xff;</b></p><p>  delay(2000);</p><p><b> 

71、 P0=0x00;</b></p><p><b>  P2=0Xff;</b></p><p>  ge=shi=bai=qian=10;</p><p><b>  init();</b></p><p><b>  while(1)</b></p>

72、<p><b>  {</b></p><p>  //////////////////////////////////////////////////////////正負(fù)顯示</p><p><b>  if(m==0)</b></p><p><b>  {</b></p>

73、;<p>  zhengshu=gettemp();</p><p>  n=zhengshu;</p><p>  if(neg_flag==0)</p><p><b>  {</b></p><p>  qian=zhengshu/1000;</p><p>  bai=zhe

74、ngshu%1000/100;</p><p>  shi=zhengshu%100/10;</p><p>  ge=zhengshu%10;</p><p>  if(qian==0)</p><p><b>  {</b></p><p><b>  qian=13;</b&

75、gt;</p><p>  if(bai==0)</p><p><b>  bai=13;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(neg_flag==1)</p>

76、<p><b>  {</b></p><p><b>  qian=10;</b></p><p>  bai=zhengshu%1000/100;</p><p>  shi=zhengshu%100/10;</p><p>  ge=zhengshu%10;</p>

77、<p>  if(bai==0)</p><p><b>  {</b></p><p><b>  qian=13;</b></p><p><b>  bai=10;</b></p><p><b>  }</b></p>&l

78、t;p><b>  }</b></p><p><b>  }</b></p><p>  ///////////////////////////////////////////////////////上下限比較</p><p>  if((n>=dingyih*10)||(n<=dingyil*10))

79、</p><p><b>  {</b></p><p><b>  bj=1;</b></p><p><b>  led=0;</b></p><p>  delay(25);</p><p><b>  bj=~bj;</b>

80、;</p><p><b>  led=~led;</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  bj=0

81、;</b></p><p><b>  led=1;</b></p><p><b>  }</b></p><p>  ///////////////////////////////////////////////////////////按鍵</p><p>  if(m==1)

82、//功能鍵按下</p><p><b>  {</b></p><p>  biaozhi_1=1;</p><p>  while(biaozhi_1) //啟動(dòng)上限設(shè)置</p><p><b>  {</b></p><p><b>  qian=11;<

83、;/b></p><p>  if(dingyih<0)</p><p><b>  { </b></p><p>  ge= (-dingyih)%10;</p><p>  if((-dingyih)%100>=10)</p><p><b>  {</b&

84、gt;</p><p><b>  bai=10;</b></p><p>  shi=(-dingyih)%100/10; </p><p><b>  }</b></p><p><b>  else</b></p>

85、<p><b>  {</b></p><p><b>  bai=13;</b></p><p><b>  shi=10;</b></p><p>  } </p><p><b>  }</b></p>

86、;<p><b>  else </b></p><p><b>  {</b></p><p>  bai=dingyih%1000/100;</p><p>  shi=dingyih%100/10;</p><p>  ge=dingyih%10;</p>&l

87、t;p><b>  }</b></p><p>  if(k2==0) //加</p><p><b>  {</b></p><p>  delay(20);</p><p><b>  if(k2==0)</b></p><p><b&

88、gt;  {</b></p><p>  dingyih++;</p><p>  if(dingyih>=H)</p><p>  dingyih=H;</p><p><b>  }</b></p><p><b>  }</b></p>

89、<p>  if(k4==0) //減</p><p><b>  {</b></p><p>  delay(20);</p><p><b>  if(k4==0)</b></p><p><b>  {</b></p><p>  d

90、ingyih--;</p><p>  if(dingyih<L)</p><p>  dingyih=L;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(k3==0) //取消檢測(cè)及運(yùn)行</p>

91、<p><b>  {</b></p><p>  delay(20);</p><p><b>  if(k3==0)</b></p><p><b>  {</b></p><p>  biaozhi_1=0;</p><p>  bi

92、aozhi_2=0;</p><p><b>  m=0;</b></p><p>  dingyih=H;</p><p>  dingyil=L;</p><p><b>  EA=0;</b></p><p><b>  ge=10;</b><

93、;/p><p><b>  shi=10;</b></p><p><b>  bai=10;</b></p><p><b>  qian=10; </b></p><p><b>  gw=0;</b></p><p><b&

94、gt;  sw=0;</b></p><p><b>  bw=0;</b></p><p><b>  qw=0; </b></p><p><b>  P0=0x40;</b></p><p>  delay(50);</p><p>

95、;<b>  EA=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(m==2) //再次按下了功能鍵,切換到下限設(shè)置</p><p><b>  {</b></p>&

96、lt;p>  biaozhi_1=0;</p><p>  biaozhi_2=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  while(biaozhi_2) //啟動(dòng)下限設(shè)置</p><p><b&g

97、t;  {</b></p><p><b>  qian=12;</b></p><p>  if(dingyil<0)</p><p><b>  {</b></p><p>  ge= (-dingyil)%10;</p><p>  if((-ding

98、yil)%100>=10)</p><p><b>  {</b></p><p><b>  bai=10;</b></p><p>  shi=(-dingyil)%100/10; </p><p><b>  }</b>&

99、lt;/p><p><b>  else</b></p><p><b>  {</b></p><p><b>  bai=13;</b></p><p><b>  shi=10;</b></p><p><b>  }

100、</b></p><p><b>  }</b></p><p>  else //max than zero</p><p><b>  {</b></p><p>  bai=dingyil%1000/100;</p><p>  shi=ding

101、yil%100/10;</p><p>  ge=dingyil%10; </p><p><b>  }</b></p><p>  if(k2==0) //加</p><p><b>  {</b></p><p>  delay(20);</p&

102、gt;<p><b>  if(k2==0)</b></p><p><b>  {</b></p><p>  dingyil++;</p><p>  if(dingyil>=H)</p><p>  dingyil=H;</p><p><b&

103、gt;  }</b></p><p><b>  }</b></p><p>  if(k4==0) //減</p><p><b>  {</b></p><p>  delay(20);</p><p><b>  if(k4==0)</b&

104、gt;</p><p><b>  {</b></p><p>  dingyil--;</p><p>  if(dingyil<L)</p><p>  dingyil=L;</p><p><b>  }</b></p><p>&l

105、t;b>  }</b></p><p>  if(k3==0) //取消檢測(cè)及運(yùn)行</p><p><b>  {</b></p><p>  delay(20);</p><p><b>  if(k3==0)</b></p><p><b>

106、  { </b></p><p>  biaozhi_1=0;</p><p>  biaozhi_2=0;</p><p><b>  m=0;</b></p><p>  dingyih=H;</p><p>  dingyil=L;</p><p>&l

107、t;b>  EA=0;</b></p><p><b>  ge=10;</b></p><p><b>  shi=10;</b></p><p><b>  bai=10;</b></p><p><b>  qian=10; </b>

108、;</p><p><b>  gw=0;</b></p><p><b>  sw=0;</b></p><p><b>  bw=0;</b></p><p><b>  qw=0; </b></p><p><b&g

109、t;  P0=0x40;</b></p><p>  delay(50);</p><p>  EA=1; </p><p><b>  }</b></p><p><b>  }</b></p><p>  if(m==0) //再次按下功能

110、鍵,確定以上設(shè)置</p><p>  { EA=0;</p><p>  biaozhi_1=0;</p><p>  biaozhi_2=0;</p><p><b>  ge=10;</b></p><p><b>  shi=10;</b></p>

111、;<p><b>  bai=10;</b></p><p><b>  qian=10; </b></p><p><b>  gw=0;</b></p><p><b>  sw=0;</b></p><p><b>  bw=

112、0;</b></p><p><b>  qw=0; </b></p><p><b>  P0=0x40;</b></p><p>  delay(500);</p><p>  EA=1;</p><p><b>  } &l

113、t;/b></p><p>  } </p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void timer0() interrup

114、t 1 //定時(shí)器0</p><p><b>  {</b></p><p>  TH0=(65536-20000)/256;</p><p>  TL0=(65536-20000)%256;</p><p><b>  if(m==0)</b></p><p>  xi

115、anshi1(ge,shi,bai,qian);</p><p><b>  if(m!=0)</b></p><p>  xianshi2(ge,shi,bai,qian);</p><p><b>  if(k1==0)</b></p><p><b>  {</b><

116、;/p><p>  delay(20);</p><p><b>  if(k1==0)</b></p><p><b>  {</b></p><p>  while(!k1);</p><p><b>  m++;</b></p><

117、p><b>  if(m>2)</b></p><p><b>  m=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論