2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p>  第一章: 概 述1</p><p>  第二章: 課程設(shè)計功能描述2</p><p>  第三章: 課程設(shè)計分析設(shè)計3</p><p>  3.1. 溫度采集系統(tǒng)3</p><p>  3.2. DS18B20單線數(shù)字溫度傳感器3</p><p>  3.2.1.DS18B20的管腳

2、4</p><p>  3.2.2.DS18B20存儲器5</p><p>  3.2.3.DS18B20高速暫存存儲器5</p><p>  3.2.4.DS18B20有4個主要的數(shù)據(jù)部件6</p><p>  3.2.5.DS18B20和電源的接線方式7</p><p>  3.3. DS18B20的工作原

3、理8</p><p>  3.3.1.DS18B20的初始化8</p><p>  3.3.2.對DS18B20寫和讀9</p><p>  3.3.3.DS18B20在應(yīng)用中應(yīng)注意的事項(xiàng)12</p><p>  3.4. AT89S52單片機(jī)簡介13</p><p>  3.4.1. AT89S52主要功能

4、列舉如下13</p><p>  3.4.2. AT89S52各引腳功能介紹13</p><p>  第四章:繪制硬件電路圖并對硬件電路圖進(jìn)行說明16</p><p>  4.1.PROTUEL軟件簡介16</p><p>  4.2.PROTUEL軟件特色17</p><p>  第五章:繪制軟件流程圖和對

5、軟件流程圖的介紹19</p><p>  第六章:上機(jī)調(diào)試及運(yùn)行結(jié)果21</p><p>  6.1.對proteus的簡介21</p><p>  6.2.proteus功能特點(diǎn)21</p><p>  6.3.電路仿真22</p><p>  6.4.調(diào)試遇到的問題分析22</p><

6、;p>  6.5. PRTEUS原理圖22</p><p><b>  總結(jié)23</b></p><p><b>  參考文獻(xiàn)24</b></p><p><b>  附錄25</b></p><p><b>  第一章: 概 述</b>

7、;</p><p>  大學(xué)本科學(xué)生動手能力的培養(yǎng)和提高是大學(xué)本科教育的一個重要內(nèi)容。如何讓學(xué)生在學(xué)好基礎(chǔ)知識的同時,迅速掌握應(yīng)用技術(shù),實(shí)驗(yàn)與課程設(shè)計環(huán)節(jié)起著非常重要的作用。</p><p>  單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統(tǒng)、定時器/計時器等功能(可能還包括顯示驅(qū)動電路、

8、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個小而完善的計算機(jī)系統(tǒng)。</p><p>  目前單片機(jī)滲透到我們生活的各個領(lǐng)域,幾乎很難找到哪個領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動化過程的實(shí)時控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這

9、些都離不開單片機(jī)。更不用說自動控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械以及各種智能機(jī)械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。</p><p>  基于單片機(jī)的強(qiáng)大功能和重要作用,也為了提高我們的動手能力,使我們能把理論學(xué)習(xí)和實(shí)踐操作結(jié)合起來,加深對理論學(xué)習(xí)的理解。我們在10—11學(xué)年的下半學(xué)期第十四、十五和十六周進(jìn)行了單片機(jī)應(yīng)用這樣的課程設(shè)計。</p>&l

10、t;p>  課設(shè)的具體內(nèi)容是通過DS18B20這個一總線數(shù)字傳感器,用C52控制實(shí)現(xiàn)對溫度的實(shí)時監(jiān)測,并且超過設(shè)定的最高或最低溫度時可以自動報警,這個最高和最低溫度可以通過對單片機(jī)的控制來隨意設(shè)置。</p><p>  第二章: 課程設(shè)計功能描述</p><p>  本次單片機(jī)應(yīng)用的課程設(shè)計要求是運(yùn)用AT89S52,DS18B20和四個開關(guān)以及若干導(dǎo)線、電阻、三極管設(shè)計并制作一個數(shù)字

11、溫度的控制檢測的電路板產(chǎn)品其具體實(shí)現(xiàn)的功能如下:</p><p>  1.能過實(shí)現(xiàn)運(yùn)用DS18B20這一溫度傳感器可以實(shí)時準(zhǔn)確的檢測出當(dāng)前的溫度,并將檢測的溫度清楚準(zhǔn)確的顯示在四位集成數(shù)碼管上。</p><p>  2.能夠運(yùn)用AT89S52可以控制DS18B20的檢測的過程,在數(shù)碼管上可以初始化顯示。</p><p>  3.能夠設(shè)置最高溫度和最低溫度,并且通過開

12、關(guān)控制AT89S52可以把最高溫度和最高溫度可以顯示在數(shù)碼管上。</p><p>  4.能夠通過開關(guān)控制AT89S52,可以調(diào)整最高溫度和最低溫度。</p><p>  5.能過實(shí)現(xiàn)當(dāng)檢測的實(shí)際溫度高于最高溫度或低于最低溫度時都能夠報警提示。</p><p>  第三章: 課程設(shè)計分析設(shè)計</p><p>  3.1. 溫度采集系統(tǒng)<

13、/p><p>  如圖3.1所示為溫度采集報警系統(tǒng)框圖。該課程設(shè)計將以單片機(jī)控制的溫度采集系統(tǒng)為主,利用單片機(jī)完成對溫度的檢測,實(shí)現(xiàn)安全溫度內(nèi)正常顯示溫度值,超出設(shè)定溫度則進(jìn)行報警。</p><p>  系統(tǒng)在溫度采集時主要應(yīng)用DS18B20芯片,該器件經(jīng)過初始化后單片機(jī)首先進(jìn)行ROM匹配,當(dāng)收到測溫器件發(fā)回的信號時證明該器件正常工作,接著單片機(jī)發(fā)出溫度轉(zhuǎn)換命令進(jìn)行溫度采集,測溫的精確度很高,

14、設(shè)計中用三極管進(jìn)行數(shù)碼管顯示驅(qū)動。</p><p><b>  圖3.1 系統(tǒng)圖框</b></p><p>  3.2. DS18B20單線數(shù)字溫度傳感器</p><p>  DS18B20、 DS1822 “一線總線”數(shù)字化溫度傳感器是DALLAS最新單線數(shù)字溫度傳感器, 同DS1820一樣,DS18B20也 支持“一線總線”接口,測量溫度范

15、圍為 -55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C。DS1822的精度較差為± 2°C ?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。 DS18B20可以程序設(shè)定9~

16、12位的分辨率,精度為±0.5°C。可選更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報警溫度存儲在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價格比也非常出色! DS1822與 DS18B20軟件兼容,是DS18B20的簡化版本。省略了存儲用戶定義報警溫度、分辨率參數(shù)的EEPROM,精度降低為±2°C,適用于對性能要求不高,成本控制嚴(yán)格的應(yīng)用,是經(jīng)

17、濟(jì)型產(chǎn)品。 繼“一線總線”的早期產(chǎn)品后,DS1820開辟了溫</p><p>  圖3.2 DS18B20內(nèi)部結(jié)構(gòu)圖</p><p>  3.2.1.DS18B20的管腳</p><p>  DS18B20內(nèi)部結(jié)構(gòu)主要有四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如下:</p><

18、;p>  DQ為數(shù)字信號輸入/輸出端</p><p><b>  GND為電源地</b></p><p>  VDD為外接電源輸入端</p><p>  圖3.3 DS18B20</p><p>  3.2.2.DS18B20存儲器</p><p>  DS18B20的存儲器包括高速暫存器R

19、AM和可電擦除RAM,可電擦除RAM又包括溫度觸發(fā)器TH和TL,以及一個配置寄存器。存儲器能完整的確定一線端口的通訊,數(shù)字開始用寫寄存器的命令寫進(jìn)寄存器,接著也可以用讀寄存器的命令來確認(rèn)這些數(shù)字。當(dāng)確認(rèn)以后就可以用復(fù)制寄存器的命令來將這些數(shù)字轉(zhuǎn)移到可電擦除RAM中。當(dāng)修改過寄存器中的數(shù)時,這個過程能確保數(shù)字的完整性。 </p><p>  高速暫存器RAM是由8個字節(jié)的存儲器組成;第一和第二個字節(jié)是溫度的顯示位。

20、第三和第四個字節(jié)是復(fù)制TH和TL,同時第三和第四個字節(jié)的數(shù)字可以更新;第五個字節(jié)是復(fù)制配置寄存器,同時第五個字節(jié)的數(shù)字可以更新;六、七、八三個字節(jié)是計算機(jī)自身使用。用讀寄存器的命令能讀出第九個字節(jié),這個字節(jié)是對前面的八個字節(jié)進(jìn)行校驗(yàn)。</p><p>  3.2.3.DS18B20高速暫存存儲器</p><p>  高速暫存存儲器由9個字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)

21、換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在 高速暫存存儲器的第0和第1個字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時低位在前,高位在后,數(shù)據(jù)格式如表1所示。對應(yīng)的溫度計算: 當(dāng)符號位S=0時,直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時,先將補(bǔ)碼變?yōu)樵a,再計算十進(jìn)制值。表3.1是對應(yīng)的一部分溫度值。第九個字節(jié)是 冗余檢驗(yàn)字節(jié)。</p><p>  表3.1 DS18B20暫存寄存器分布</p><p&g

22、t;  根據(jù)DS18B20的通訊協(xié)議,主機(jī)(單片機(jī))控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個步驟:每一次讀寫之前都要對DS18B20進(jìn)行 復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后 釋放,當(dāng)DS18B20收到信號后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號表示復(fù)位成功。</p><

23、;p>  3.2.4.DS18B20有4個主要的數(shù)據(jù)部件</p><p>  光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位 (28H)是產(chǎn)品類型標(biāo)號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用 是使每一個DS18B20都各不相同,這樣就可以實(shí)現(xiàn)

24、一根總線上掛接多個DS18B20的目的。</p><p>  DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 0.0625℃/LSB形式表達(dá),其中S為符號位。</p><p>  圖3.4 DS18B20測溫原理框圖</p><p>  3.2.5.DS18B20和電源的接線方式</p>

25、<p>  DS18B20可以使用外部電源VDD,也可以使用內(nèi)部的寄生電源。當(dāng)VDD端口接3.0V—5.5V的電壓時是使用外部電源;當(dāng)VDD端口接地時使用了內(nèi)部的寄生電源。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電阻。</p><p>  圖3.5 DS18B20寄生電源供電方式</p><p>  此次課設(shè)我們用的是外部電源供電方式,在外部電源供電方式下,

26、DS18B20工作電源由VDD引腳接入,此時I/O線不需要強(qiáng)上拉,不存在電源電流不足的問題,可以保證轉(zhuǎn)換精度,同時在總線上理論可以掛接任意多個DS18B20傳感器,組成多點(diǎn)測溫系統(tǒng)。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空 ,否則不能轉(zhuǎn)換溫度,讀取的溫度總是85℃。</p><p>  圖3.6 DS18B20外接電源供電方式</p><p>  3.3. DS18B2

27、0的工作原理</p><p>  DS18B20的讀寫時序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時的延時時間由2s 減為750ms。 DS18B20測溫原理如圖3.4所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計數(shù)器1。高溫度系數(shù)晶

28、振 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計數(shù)器2的脈沖輸入。計數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個基數(shù)值。計數(shù)器1對 低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計數(shù),當(dāng)計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,計數(shù)器1的預(yù)置將重新被裝入,計數(shù)器1重 新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計數(shù),如此循環(huán)直到計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即 為所測溫度。圖3中的斜率累加器用于補(bǔ)償和修正

29、測溫過程中的非線性,其輸出用于修正計數(shù)器1的預(yù)置值。 </p><p>  3.3.1.DS18B20的初始化</p><p>  主機(jī)首先發(fā)出一個480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時間內(nèi)對總線進(jìn)行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。 做為從器件的DS18B20在一上電后就一直

30、在檢測總線上是否有480-960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒有檢測到就一直在檢測等待。 </p><p>  圖3.7初始化時序圖</p><p>  3.3.2.對DS18B20寫和讀</p><p>  接下來就是主機(jī)發(fā)出各種操作命令,但各種操作命令

31、都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時也是從DS18B20讀取0或1的過程。因此首先要搞清主機(jī)是如何進(jìn)行寫0、寫1、讀0和讀1的。</p><p>  寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機(jī)先把總線拉低1微秒表示寫周期開始。隨后若主機(jī)想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直

32、到寫周期結(jié)束。而做為從機(jī)的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。</p><p>  圖3.8寫操作的時序圖</p><p>  對于讀數(shù)據(jù)操作時序也分為讀0時序和讀1時序兩個過程。讀時隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾?/p>

33、總線上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時間內(nèi)完成對總線進(jìn)行采樣檢測,采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個讀時序過程,至少需要60us才能完成</p><p>  圖3.9讀操作的時序圖<

34、;/p><p>  DS18B20 單線通信功能是分時完成的,他有嚴(yán)格的時隙概念,如果出現(xiàn)序列混亂, 1-WIRE 器件將不響應(yīng)主機(jī),因此讀寫時序很重要。系統(tǒng)對 DS18B20 的各種操作必須按協(xié)議進(jìn)行。根據(jù) DS18B20 的協(xié)議規(guī)定,微控制器控制 DS18B20 完成溫度的轉(zhuǎn)換必須經(jīng)過以下 3個步驟 :</p><p>  (1)每次讀寫前對 DS18B20 進(jìn)行復(fù)位初始化。復(fù)位要求主 C

35、PU 將數(shù)據(jù)線</p><p>  下拉 500us ,然后釋放, DS18B20 收到信號后等待 16us~60us 左右,然后發(fā)出60us~240us 的存在低脈沖,主 CPU 收到此信號后表示復(fù)位成功。</p><p> ?。?)發(fā)送一條 ROM 指令</p><p>  (3)發(fā)送存儲器指令</p><p>  表3.2 DS18B2

36、0的ROM指令集</p><p>  表3.3 DS18B20的RAM指令集</p><p>  現(xiàn)在我們要做的是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換,那具體的操作就是:</p><p>  1、主機(jī)先作個復(fù)位操作,</p><p>  2、主機(jī)再寫跳過ROM的操作(CCH)命令,</p><p>  3、然后主機(jī)接著寫

37、個轉(zhuǎn)換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉(zhuǎn)換的操作。在這里要注意的是每個命令字節(jié)在寫的時候都是低字節(jié)先寫,例如CCH的二進(jìn)制為11001100,在寫到總線上時要從低位開始寫,寫的順序是“零、零、壹、壹、零、零、壹、壹”。</p><p>  讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個操作也要接照三個步驟。</p><p>  1、主機(jī)發(fā)出復(fù)位操作并接收DS18B20的應(yīng)答(

38、存在)脈沖。</p><p>  2、主機(jī)發(fā)出跳過對ROM操作的命令(CCH)。</p><p>  3、主機(jī)發(fā)出讀取RAM的命令(BEH),隨后主機(jī)依次讀取DS18B20發(fā)出的從第0一第8,共九個字節(jié)的數(shù)據(jù)。如果只想讀取溫度數(shù)據(jù),那在讀完第0和第1個數(shù)據(jù)后就不再理會后面DS18B20發(fā)出的數(shù)據(jù)即可。同樣讀取數(shù)據(jù)也是低位在前的。</p><p>  在這里說明一下,

39、第二步跳過對ROM操作的命令是在總線上只有一個器件時,為節(jié)省時間而簡化的操作,若總線上不止一個器件,那么跳過ROM操作命令將會使幾器件同時響應(yīng),這樣就會出現(xiàn)數(shù)據(jù)沖突。</p><p>  3.3.3.DS18B20在應(yīng)用中應(yīng)注意的事項(xiàng)</p><p>  DS1820雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題:</p>

40、<p>  1. 較小的硬件開銷需要相對復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此 ,在對DS1820進(jìn)行讀寫編程時,必須嚴(yán)格的保證讀寫時序,否則將無法讀取測溫結(jié)果。在使用PL/M、C等高級語言進(jìn)行系統(tǒng)程序設(shè)計時,對 DS1820操作部分最好采用匯編語言實(shí)現(xiàn)。</p><p>  2. 在DS1820的有關(guān)資料中均未提及單總線上所掛DS1820數(shù)量問題,容易使人誤認(rèn)為可以掛

41、任意多個 DS1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛DS1820超過8個時,就需要解決微處理器的總線驅(qū)動問題,這一點(diǎn)在進(jìn)行多點(diǎn)測溫系統(tǒng)設(shè)計時 要加以注意。</p><p>  3. 連接DS1820的總線電纜是有長度限制的。試驗(yàn)中,當(dāng)采用普通信號電纜傳輸長度超過50m時,讀取的 測溫數(shù)據(jù)將發(fā)生錯誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時,正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時,正

42、 常通訊距離進(jìn)一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,在用DS1820進(jìn)行長距離測溫系統(tǒng)設(shè)計時要充分考 慮總線分布電容和阻抗匹配問題。</p><p>  4. 在DS1820測溫程序設(shè)計中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號,一旦 某個DS1820接觸不好或斷線,當(dāng)程序讀該DS1820時,將沒有返回信號,程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS1820硬件

43、連接和軟件設(shè)計時也要給予 一定的重視。 測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC和地線,屏蔽層在源端單點(diǎn)接地</p><p>  3.4. AT89S52單片機(jī)簡介</p><p>  AT89S52為 ATMEL 所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flsah存儲器。</p><p>  3.4.1

44、. AT89S52主要功能列舉如下</p><p>  1、擁有靈巧的8位CPU和在系統(tǒng)可編程Flash</p><p>  2、晶片內(nèi)部具時鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz)</p><p>  3、內(nèi)部程序存儲器(ROM)為 8KB</p><p>  4、內(nèi)部數(shù)據(jù)存儲器(RAM)為 256字節(jié)</p><p

45、>  5、32 個可編程I/O 口線</p><p>  6、8 個中斷向量源</p><p>  7、三個 16 位定時器/計數(shù)器</p><p>  8、三級加密程序存儲器</p><p>  9、全雙工UART串行通道</p><p>  3.4.2. AT89S52各引腳功能介紹</p>&

46、lt;p><b>  VCC:</b></p><p>  AT89S52電源正端輸入,接+5V。</p><p><b>  VSS:</b></p><p><b>  電源地端。</b></p><p><b>  XTAL1:</b><

47、/p><p>  單芯片系統(tǒng)時鐘的反相放大器輸入端。</p><p><b>  XTAL2:</b></p><p>  系統(tǒng)時鐘的反相放大器輸出端,一般在設(shè)計上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統(tǒng)就可以動作了,此外可以在兩引腳與地之間加入一 20PF 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機(jī)。</p>

48、<p><b>  RESET:</b></p><p>  AT89S52的重置引腳,高電平動作,當(dāng)要對晶片重置時,只要對此引腳電平提升至高電平并保持兩個機(jī)器周期以上的時間,AT89S51便能完成系統(tǒng)重置的各項(xiàng)動作,使得內(nèi)部特殊功能寄存器之內(nèi)容均被設(shè)成已知狀態(tài),并且至地址0000H處開始讀入程序代碼而執(zhí)行程序。</p><p><b>  E

49、A/Vpp:</b></p><p>  "EA"為英文"External Access"的縮寫,表示存取外部程序代碼之意,低電平動作,也就是說當(dāng)此引腳接低電平后,系統(tǒng)會取用外部的程序代碼(存于外部EPROM中)來執(zhí)行程序。因此在8031及8032中,EA引腳必須接低電平,因?yàn)槠鋬?nèi)部無程序存儲器空間。如果是使用 8751 內(nèi)部程序空間時,此引腳要接成高電平。此外

50、,在將程序代碼燒錄至8751內(nèi)部EPROM時,可以利用此引腳來輸入21V的燒錄高壓(Vpp)。</p><p><b>  ALE/PROG:</b></p><p>  ALE是英文"Address Latch Enable"的縮寫,表示地址鎖存器啟用信號。AT89S52可以利用這支引腳來觸發(fā)外部的8位鎖存器(如74LS373),將端口0的地址總

51、線(A0~A7)鎖進(jìn)鎖存器中,因?yàn)锳T89S52是以多工的方式送出地址及數(shù)據(jù)。平時在程序執(zhí)行時ALE引腳的輸出頻率約是系統(tǒng)工作頻率的1/6,因此可以用來驅(qū)動其他周邊晶片的時基輸入。此外在燒錄8751程序代碼時,此引腳會被當(dāng)成程序規(guī)劃的特殊功能來使用。</p><p><b>  PSEN:</b></p><p>  此為"Program Store Ena

52、ble"的縮寫,其意為程序儲存啟用,當(dāng)8051被設(shè)成為讀取外部程序代碼工作模式時(EA=0),會送出此信號以便取得程序代碼,通常這支腳是接到EPROM的OE腳。AT89S52可以利用PSEN及RD引腳分別啟用存在外部的RAM與EPROM,使得數(shù)據(jù)存儲器與程序存儲器可以合并在一起而共用64K的定址范圍。</p><p>  PORT0(P0.0~P0.7):</p><p>  端

53、口0是一個8位寬的開路汲極(Open Drain)雙向輸出入端口,共有8個位,P0.0表示位0,P0.1表示位1,依此類推。其他三個I/O端口(P1、P2、P3)則不具有此電路組態(tài),而是內(nèi)部有一提升電路,P0在當(dāng)做I/O用時可以推動8個LS的TTL負(fù)載。如果當(dāng)EA引腳為低電平時(即取用外部程序代碼或數(shù)據(jù)存儲器),P0就以多工方式提供地址總線(A0~A7)及數(shù)據(jù)總線(D0~D7)。設(shè)計者必須外加一鎖存器將端口0送出的地址栓鎖住成為A0~A

54、7,再配合端口2所送出的A8~A15合成一完整的16位地址總線,而定址到64K的外部存儲器空間。</p><p>  PORT2(P2.0~P2.7):</p><p>  端口2是具有內(nèi)部提升電路的雙向I/O端口,每一個引腳可以推動4個LS的TTL負(fù)載,若將端口2的輸出設(shè)為高電平時,此端口便能當(dāng)成輸入端口來使用。P2除了當(dāng)做一般I/O端口使用外,若是在AT89S52擴(kuò)充外接程序存儲器或數(shù)

55、據(jù)存儲器時,也提供地址總線的高字節(jié)A8~A15,這個時候P2便不能當(dāng)做I/O來使用了。</p><p>  PORT1(P1.0~P1.7):</p><p>  端口1也是具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個LS TTL負(fù)載,同樣地若將端口1的輸出設(shè)為高電平,便是由此端口來輸入數(shù)據(jù)。如果是使用8052或是8032的話,P1.0又當(dāng)做定時器2的外部脈沖輸入腳,而P1.

56、1可以有T2EX功能,可以做外部中斷輸入的觸發(fā)腳位。</p><p>  PORT3(P3.0~P3.7):</p><p>  端口3也具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動4個TTL負(fù)載,同時還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計時計數(shù)控制及外部數(shù)據(jù)存儲器內(nèi)容的讀取或?qū)懭肟刂频裙δ堋?lt;/p><p><b>  其

57、引腳分配如下:</b></p><p>  P3.0:RXD,串行通信輸入。</p><p>  P3.1:TXD,串行通信輸出。</p><p>  P3.2:INT0,外部中斷0輸入。</p><p>  P3.3:INT1,外部中斷1輸入。</p><p>  P3.4:T0,計時計數(shù)器0輸入。<

58、;/p><p>  P3.5:T1,計時計數(shù)器1輸入。</p><p>  P3.6:WR:外部數(shù)據(jù)存儲器的寫入信號。</p><p>  P3.7:RD,外部數(shù)據(jù)存儲器的讀取信號。</p><p>  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平時間。</p><p>  ALE/PROG:當(dāng)

59、訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時,ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時, ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理

60、器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p>  /PSEN:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/PSEN信號將不出現(xiàn)。</p><p>  /EA/VPP:當(dāng)/EA保持低電平時,則在此期間外部程序存儲器(0000H-FFFFH),不管是否有內(nèi)部程序存儲器。注意加密方式1時,/EA將內(nèi)部鎖定

61、為RESET;當(dāng)/EA端保持高電平時,此間內(nèi)部程序存儲器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。</p><p>  XTAL2:來自反向振蕩器的輸出。</p><p>  第四章:繪制硬件電路圖并對硬件電路圖進(jìn)行說明</p><p> 

62、 4.1.PROTUEL軟件簡介</p><p>  早期的PROTEL主要作為印制板自動布線工具使用,運(yùn)行在DOS環(huán)境,對硬件的要求很低,在無硬盤286機(jī)的1M內(nèi)存下就能運(yùn)行,但它的功能也較少,只有電原理圖繪制與印制板設(shè)計功能,其印制板自動布線的布通率也低,而現(xiàn)今的PROTEL已發(fā)展到PROTEL99(網(wǎng)絡(luò)上可下載到它的測試板),是個龐大的EDA軟件,完全安裝有200多M,它工作在WINDOWS95環(huán)境下,是個

63、完整的板級全方位電子設(shè)計系統(tǒng),它包含了電路原理圖繪制、模擬電路與數(shù)字電路混合信號仿真、多層印制電路板設(shè)計(包含印制電路板自動布線)、可編程邏輯器件設(shè)計、圖表生成、電子表格生成、支持宏操作等功能,并具有Client/Server(客戶/服務(wù)器)體系結(jié)構(gòu),同時還兼容一些其它設(shè)計軟件的文件格式,如ORCAD,PSPICE,EXCEL等,其多層印制線路板的自動布線可實(shí)現(xiàn)高密度PCB的100%布通率。在國內(nèi)PROTEL軟件較易買到,有關(guān)PROTE

64、L軟件和使用說明的書也有很多,這為它的普及提供了基礎(chǔ)。想更多地了解PROTEL的軟件功能或者下載PROTEL99的試用版,可以在INTERNET上。</p><p>  4.2.PROTUEL軟件特色</p><p>  Protel99 SE共分5個模塊,分別是原理圖設(shè)計、PCB設(shè)計(包含信號完整性分析)、自動布線器、原理圖混合信號仿真、PLD設(shè)計。 以下介紹一些Protel99SE的部

65、分最新功能:</p><p>  1,可生成30多種格式的電氣連接網(wǎng)絡(luò)表; </p><p>  2,強(qiáng)大的全局編輯功能; </p><p>  3,在原理圖中選擇一級器件,PCB中同樣的器件也將被選中; </p><p>  4,同時運(yùn)行原理圖和PCB,在打開的原理圖和PCB圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡(luò) </p>&

66、lt;p>  5,既可以進(jìn)行正向注釋元器件標(biāo)號(由原理圖到PCB),也可以進(jìn)行反向注釋(由PCB到原理圖),以保持電氣原理圖和PCB在設(shè)計上的一致性; </p><p>  6,滿足國際化設(shè)計要求(包括國標(biāo)標(biāo)題欄輸出,GB4728國標(biāo)庫); * 方便易用的數(shù)模混合仿真(兼容SPICE 3f5); </p><p><b>  , </b></p>

67、<p>  7,方便的打印預(yù)覽功能,不用修改PCB文件就可以直接控制打印結(jié)果; </p><p>  8,獨(dú)特的3D顯示可以在制板之前看到裝配事物的效果; </p><p>  9,強(qiáng)大的CAM處理使您輕松實(shí)現(xiàn)輸出光繪文件、材料清單、鉆孔文件、貼片機(jī)文件、測試點(diǎn)報告等; </p><p>  在原理圖部分,新增加“靈巧粘帖”可以將一些不同的對象拷貝到原理圖

68、當(dāng)中,比如一些網(wǎng)絡(luò)標(biāo)號, 一頁圖紙的BOM表,都可以拷貝粘帖到原理圖當(dāng)中。原理圖文件切片,多個器件集體操作,文本筐的直接編輯,箭頭的添加,器件精確移動,總線走線,自動網(wǎng)標(biāo)選擇等! 強(qiáng)大的前端將多層次、多通道的原理圖輸入、VHDL開發(fā)和功能仿真、布線前后的信號完整性分析功能。在信號仿真部分,提供完善的混合信號仿真,在對XSPICE 標(biāo)準(zhǔn)的支持之外,還支持對Pspice模型和電路的仿真。對FPGA設(shè)計提供了豐富的IP內(nèi)核,包括各種處理器、存

69、儲器、外設(shè)、接口、以及虛擬儀器 。</p><p>  在PCB部分,除了Protel2004中的多通道復(fù)制;實(shí)時的、阻抗控制布線功能;SitusTM自動布線器等新功能以外,Altium Designer 6.0還著重在:差分對布線,F(xiàn)PGA器件差分對管腳的動態(tài)分配, PCB和FPGA之間的全面集成,從而實(shí)現(xiàn)了自動引腳優(yōu)化和非凡的布線效果。還有PCB文件切片,PCB多個器件集體操作,在PCB文件中支持多國語言(中

70、文、英文、德文、法文、日文),任意字體和大小的漢字字符輸入,光標(biāo)跟隨在線信息顯示功能,光標(biāo)點(diǎn)可選器件列表,復(fù)雜BGA器件的多層自動扇出,提供了對高密度封裝(如BGA)的交互布線功能, 總線布線功能,器件精確移動,快速鋪銅等功能。</p><p>  圖4.1 PROTEL原理圖</p><p><b>  圖4.2 PCB板</b></p><p&

71、gt;  第五章:繪制軟件流程圖和對軟件流程圖的介紹</p><p>  首先啟動系統(tǒng),然后初始化DS18B20,初始化的目的是檢測單片機(jī)的外部連接的DS18B20和單片機(jī)的連接狀態(tài)是否良好并且檢測DS18B20是否處于正常工作狀態(tài)。</p><p>  DS18B20處于正常工作的狀態(tài)并且單片機(jī)得到DS18B20的應(yīng)答,那么接這就跳過ROM,跳過對ROM操作的命令是在總線上只有一個器件時

72、,為節(jié)省時間而簡化的操作,若總線上不止一個器件,那么跳過ROM操作命令將會使幾器件同時響應(yīng),這樣就會出現(xiàn)數(shù)據(jù)沖突。</p><p>  接著單片機(jī)發(fā)出溫度轉(zhuǎn)換命令,DS18B20開始進(jìn)行溫度的檢測和轉(zhuǎn)換,將檢測的結(jié)果顯示在數(shù)碼管上,這時單片機(jī)根據(jù)DS18B20傳來的數(shù)據(jù)進(jìn)行判斷,如果檢測的溫度大于設(shè)定的最高溫度或低于設(shè)定的最低溫度,此時進(jìn)行報警,報警后返回初始化。如果沒有超過設(shè)定溫度直接返回初始化。</p&

73、gt;<p><b>  圖5.1 流程圖</b></p><p>  第六章:上機(jī)調(diào)試及運(yùn)行結(jié)果</p><p>  6.1.對proteus的簡介</p><p>  軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及外圍器件。它是目前最好的仿

74、真單片機(jī)及外圍器件的工具。雖然目前國內(nèi)推廣剛起步,但已受到單片機(jī)愛好者、從事單片機(jī)教學(xué)的教師、致力于單片機(jī)開發(fā)應(yīng)用的科技工作者的青睞。Proteus是世界上著名的EDA工具(仿真軟件),從原理圖布圖、代碼調(diào)試到單片機(jī)與外圍電路協(xié)同仿真,一鍵切換到PCB設(shè)計,真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計。是目前世界上唯一將電路仿真軟件、PCB設(shè)計軟件和虛擬模型仿真軟件三合一的設(shè)計平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/

75、24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器</p><p>  6.2.proteus功能特點(diǎn)</p><p><b>  原理布圖 </b></p><p><b>

76、  自動或人工布線 </b></p><p><b>  SPICE電路仿真</b></p><p><b>  革命性的特點(diǎn)</b></p><p>  (1)互動的電路仿真</p><p>  用戶甚至可以實(shí)時采用諸如RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI

77、器件,部分IIC器件。</p><p>  (2)仿真處理器及其外圍電路</p><p>  可以仿真51系列、AVR、PIC、ARM、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型</p><p>  上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設(shè)計開發(fā)環(huán)境。</p>

78、<p><b>  6.3.電路仿真</b></p><p>  在PROTEUS繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過程。</p><p>  PROTEUS不僅可將許多單片機(jī)實(shí)例功能形象化,也可將許多單片機(jī)實(shí)例運(yùn)行過程形象化。前者可在相當(dāng)程度上得到實(shí)物演示實(shí)驗(yàn)的效果,后者則是實(shí)物

79、演示實(shí)驗(yàn)難以達(dá)到的效果。</p><p>  它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實(shí)驗(yàn)硬件高度對應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調(diào)試、運(yùn)行結(jié)果等。</p><p>  由于PROTEUS提供了實(shí)驗(yàn)室無法相比的大量的元器件庫,提供了修改電路設(shè)計的靈活性、提供了實(shí)驗(yàn)室在數(shù)量、質(zhì)量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)

80、學(xué)生實(shí)踐精神、創(chuàng)造精神的平臺。</p><p>  隨著科技的發(fā)展,“計算機(jī)仿真技術(shù)”已成為許多設(shè)計部門重要的前期設(shè)計手段。它具有設(shè)計靈活,結(jié)果、過程的統(tǒng)一的特點(diǎn)。可使設(shè)計時間大為縮短、耗資大為減少,也可降低工程制造的風(fēng)險。相信在單片機(jī)開發(fā)應(yīng)用中PROTEUS也能茯得愈來愈廣泛的應(yīng)用。</p><p>  使用Proteus 軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計, 是虛擬仿真技術(shù)和計算機(jī)多媒體技術(shù)相

81、結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計能力及仿真軟件的操作能力;實(shí)踐證明,在使用 Proteus 進(jìn)行系統(tǒng)仿真開發(fā)成功之后再進(jìn)行實(shí)際制作,能極大提高單片機(jī)系統(tǒng)設(shè)計效率。因此,Proteus 有較高的推廣利用價值。</p><p>  6.4.調(diào)試遇到的問題分析</p><p>  我們在調(diào)試的過程中遇到了很多問題,整個調(diào)試的過程實(shí)際上就是解決這些問題的過程。</p><

82、;p>  首先我們仿真的時候我們發(fā)現(xiàn)數(shù)碼管根本不會顯示,我們很失望,后來經(jīng)過分析發(fā)現(xiàn)三極管接反了,本來是三極管的發(fā)射極與集成數(shù)碼管的位相連接,集電極接電源,而我們正好接反了,后來改正后數(shù)碼管可以顯示了。</p><p>  接著我們遇到的問題就是我們的數(shù)碼管顯示錯誤,我們認(rèn)真的檢查后發(fā)現(xiàn)我們的程序和所用的數(shù)碼管不一致,我們程序是共陽極的,但是我們在選器件的時候選成了共陰極,后來我們改正了錯誤。</p&

83、gt;<p>  改完后發(fā)現(xiàn)數(shù)碼管的四位數(shù)字顯示的順序正好相反,我們分析后覺得是單片機(jī)和集成數(shù)碼管的位連接的時候位接反了。</p><p>  我們在調(diào)試的過程中是把改我們的原理圖和改程序結(jié)合者進(jìn)行調(diào)試的最終達(dá)到了我們的期望得到的結(jié)果。</p><p>  6.5. PRTEUS原理圖</p><p>  圖6.1 PROTEUS仿真圖</p&g

84、t;<p><b>  圖6.2 焊接產(chǎn)品</b></p><p><b>  總結(jié)</b></p><p>  本次課程設(shè)計的寫作是在老師的指導(dǎo)下進(jìn)行的。針對在寫作過程中遇到許多的難題老師都給以認(rèn)真的解釋,為此,向老師表示最衷心的謝意。我在這次課程設(shè)計中,學(xué)會了怎么去發(fā)現(xiàn)問題,解決問題。遇到不明白的問題都會積極的去詢問老師,或者去

85、找尋相關(guān)的資料。從中學(xué)到了很多知識。這次課程設(shè)計使我們有機(jī)會把我們的課堂理論知識運(yùn)用到實(shí)際生活中,貼近生活,實(shí)現(xiàn)我們的人生價值。并且通過對知識的綜合利用,加入個人的分析和比較,加深了了我們對理論知識的理解和運(yùn)用。</p><p><b>  參考文獻(xiàn)</b></p><p>  【1】倪曉軍 單片機(jī)原理與接口技術(shù) 北京:清華大學(xué)大學(xué)出版社 </p>

86、<p><b>  2009.9</b></p><p>  【2】 廖常初 PLC 編程及應(yīng)用 北京:機(jī)械工業(yè)出版社</p><p><b>  2010.1</b></p><p>  【3】 胡學(xué)林 可編程控制器教程 北京:電子工業(yè)出版社 </p><p>&

87、lt;b>  2008.6</b></p><p><b>  附錄</b></p><p>  #include <reg51.h> </p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char

88、//宏定義</p><p>  sbit p34=P2^4;</p><p>  sbit p35=P2^5;</p><p>  sbit p36=P2^6;</p><p>  sbit dp=P0^7;</p><p>  sbit p37=P2^7;</p><p>  sbit DQ

89、=P2^2; //定義DS18B20總線I/O</p><p>  sbit SET=P3^1; //定義選擇報調(diào)整警溫度上限和下限(1為上限,0為下限)</p><p>  /****P3.2和P3.3為調(diào)整溫度報警增加鍵和減少鍵******/</p><p>  sbit LING=P2^0; //定義響鈴</p><p>

90、;  signed char m; //溫度值全局變量</p><p>  bit sign=0; //外部中斷狀態(tài)標(biāo)志</p><p>  signed char shangxian=38; //上限報警溫度,默認(rèn)值為38</p><p>  signed char xiaxian=6; //下限報警溫度,默認(rèn)值為5</p>&

91、lt;p>  uchar code LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};</p><p>  /*****延時子程序*****/</p><p>  void Delay(uint i)</p><p><b>  {</b>&l

92、t;/p><p>  while( i-- );</p><p><b>  }</b></p><p>  /*****初始化DS18B20*****/</p><p>  void Init_DS18B20(void)</p><p><b>  {</b></p>

93、;<p>  unsigned char x=0;</p><p><b>  DQ=1;</b></p><p>  Delay(8); //稍做延時</p><p>  DQ=0; //單片機(jī)將DQ拉低</p><p>  Delay(80); //精確延時,大于480us&l

94、t;/p><p>  DQ=1; //拉高總線</p><p>  Delay(14);</p><p>  x=DQ; //稍做延時后,如果x=0則初始化成功,x=1則初始化失敗</p><p>  Delay(20);</p><p><b>  }</b>&l

95、t;/p><p>  /*****讀一個字節(jié)*****/</p><p>  unsigned char ReadOneChar(void)</p><p><b>  {</b></p><p>  unsigned char i=0;</p><p>  unsigned char dat=0;&

96、lt;/p><p>  for (i=8;i>0;i--)</p><p><b>  {</b></p><p>  DQ=0; // 給脈沖信號</p><p><b>  dat>>=1;</b></p><p>  DQ=1; // 給脈

97、沖信號</p><p><b>  if(DQ)</b></p><p>  dat|=0x80;</p><p><b>  Delay(4);</b></p><p><b>  }</b></p><p>  return(dat);</p&

98、gt;<p><b>  }</b></p><p>  /*****寫一個字節(jié)*****/</p><p>  void WriteOneChar(unsigned char dat)</p><p><b>  {</b></p><p>  unsigned char i=0;&

99、lt;/p><p>  for (i=8; i>0; i--)</p><p><b>  {</b></p><p><b>  DQ=0;</b></p><p>  DQ=dat&0x01;</p><p><b>  Delay(5);</b

100、></p><p><b>  DQ=1;</b></p><p><b>  dat>>=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void

101、 Tmpchange(void) //發(fā)送溫度轉(zhuǎn)換命令</p><p><b>  {</b></p><p>  Init_DS18B20();</p><p>  WriteOneChar(0xCC); //跳過讀序號列號的操作</p><p>  WriteOneChar(0x44); //啟動溫度轉(zhuǎn)換<

102、/p><p><b>  }</b></p><p>  /*****讀取溫度*****/</p><p>  unsigned int ReadTemperature(void)</p><p><b>  {</b></p><p>  unsigned char a=0;&

103、lt;/p><p>  unsigned char b=0;</p><p>  unsigned int t=0;</p><p>  float tt=0;</p><p>  Tmpchange();</p><p>  Init_DS18B20();</p><p>  WriteOneCh

104、ar(0xCC); //跳過讀序號列號的操作</p><p>  WriteOneChar(0xBE); //讀取溫度寄存器</p><p>  a=ReadOneChar(); //讀低8位</p><p>  b=ReadOneChar(); //讀高8位</p><p><b>  t=b;</b>

105、;</p><p><b>  t<<=8;</b></p><p><b>  t=t|a;</b></p><p>  tt=t*0.0625;</p><p>  t= tt*100+0.5; //放大10倍輸出并四舍五入</p><p>  ret

106、urn(t);</p><p><b>  }</b></p><p>  /*****顯示開機(jī)初始化等待畫面*****/</p><p>  Disp_init() </p><p><b>  {</b></p><p>  P0 = 0x80; //顯示

107、-</p><p>  p34=1;p35=0;p36=0;p37=0;</p><p>  Delay(200);</p><p>  P0 = 0x80;</p><p>  p34=0;p35=1;p36=0;p37=0;</p><p>  Delay(200);</p><p>  P

108、0 = 0x80; </p><p>  p34=0;p35=0;p36=1;p37=0;</p><p>  Delay(200);</p><p>  P0 = 0x80;</p><p>  p34=0;p35=0;p36=0;p37=1;</p><p>  Delay(200);</p><

109、;p>  P0 = 0x80;</p><p><b>  }</b></p><p>  /*****顯示溫度子程序*****/</p><p>  Disp_Temperature() //顯示溫度</p><p><b>  {</b></p><p> 

110、 uint a,b,c,d,e;</p><p>  e=ReadTemperature(); //獲取溫度值</p><p>  a=e/1000; //計算得到十位數(shù)字</p><p>  b=e/100-a*10; //計算得到個位數(shù)字</p><p>  d=e%10;

111、 //計算得到小數(shù)點(diǎn)后兩位</p><p>  c=(e%100)/10; //計算得到小數(shù)點(diǎn)后一位</p><p><b>  m=e/100;</b></p><p>  if(m>shangxian || m<xiaxian) LING=1; //溫度不在范圍內(nèi)報警</p><p>

112、;  else LING=0;</p><p>  p34=0;p35=0;p36=0;p37=0; </p><p>  P0 =LEDData[d]; //顯示小數(shù)點(diǎn)后兩位 </p><p>  p34=1;p35=0;p36=0;p37=0; </p><p>  Delay(300);</p>&l

113、t;p>  p34=0;p35=0;p36=0;p37=0; </p><p>  P0 =LEDData[c]; //顯示小數(shù)點(diǎn)后一位</p><p>  p34=0;p35=1;p36=0;p37=0;</p><p>  Delay(300);</p><p>  p34=0;p35=0;p36=0;p37=0; &l

114、t;/p><p>  P0 =LEDData[b]; //顯示個位</p><p><b>  dp=0;</b></p><p>  p34=0;p35=0;p36=1;p37=0;</p><p>  Delay(300);</p><p>  p34=0;p35=0;p36=0;p37=0

115、; </p><p>  P0 =LEDData[a]; //顯示十位</p><p>  p34=0;p35=0;p36=0;p37=1;</p><p>  Delay(300);</p><p>  p34=0;p35=0;p36=0;p37=0; //關(guān)閉顯示</p><p><b&

116、gt;  }</b></p><p>  disptiaozheng()</p><p><b>  {</b></p><p>  uchar f,g,j,k;</p><p>  f=shangxian/10;</p><p>  g=shangxian%10;</p>

117、<p>  j=xiaxian/10;</p><p>  k=xiaxian%10;</p><p>  p34=0;p35=0;p36=0;p37=0; </p><p>  P0 =0xc0; //顯示0</p><p>  p34=1;p35=0;p36=0;p37=0;</p>&l

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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

提交評論