版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 第一章: 概 述1</p><p> 第二章: 課程設(shè)計(jì)功能描述2</p><p> 第三章: 課程設(shè)計(jì)分析設(shè)計(jì)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存儲(chǔ)器5</p><p> 3.2.3.DS18B20高速暫存存儲(chǔ)器5</p><p> 3.2.4.DS18B20有4個(gè)主要的數(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.對(duì)DS18B20寫和讀9</p><p> 3.3.3.DS18B20在應(yīng)用中應(yīng)注意的事項(xiàng)12</p><p> 3.4. AT89S52單片機(jī)簡(jiǎn)介13</p><p> 3.4.1. AT89S52主要功能
4、列舉如下13</p><p> 3.4.2. AT89S52各引腳功能介紹13</p><p> 第四章:繪制硬件電路圖并對(duì)硬件電路圖進(jìn)行說明16</p><p> 4.1.PROTUEL軟件簡(jiǎn)介16</p><p> 4.2.PROTUEL軟件特色17</p><p> 第五章:繪制軟件流程圖和對(duì)
5、軟件流程圖的介紹19</p><p> 第六章:上機(jī)調(diào)試及運(yùn)行結(jié)果21</p><p> 6.1.對(duì)proteus的簡(jiǎn)介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é)生動(dòng)手能力的培養(yǎng)和提高是大學(xué)本科教育的一個(gè)重要內(nèi)容。如何讓學(xué)生在學(xué)好基礎(chǔ)知識(shí)的同時(shí),迅速掌握應(yīng)用技術(shù),實(shí)驗(yàn)與課程設(shè)計(jì)環(huán)節(jié)起著非常重要的作用。</p><p> 單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、
8、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。</p><p> 目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這
9、些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械以及各種智能機(jī)械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。</p><p> 基于單片機(jī)的強(qiáng)大功能和重要作用,也為了提高我們的動(dòng)手能力,使我們能把理論學(xué)習(xí)和實(shí)踐操作結(jié)合起來,加深對(duì)理論學(xué)習(xí)的理解。我們?cè)?0—11學(xué)年的下半學(xué)期第十四、十五和十六周進(jìn)行了單片機(jī)應(yīng)用這樣的課程設(shè)計(jì)。</p>&l
10、t;p> 課設(shè)的具體內(nèi)容是通過DS18B20這個(gè)一總線數(shù)字傳感器,用C52控制實(shí)現(xiàn)對(duì)溫度的實(shí)時(shí)監(jiān)測(cè),并且超過設(shè)定的最高或最低溫度時(shí)可以自動(dòng)報(bào)警,這個(gè)最高和最低溫度可以通過對(duì)單片機(jī)的控制來隨意設(shè)置。</p><p> 第二章: 課程設(shè)計(jì)功能描述</p><p> 本次單片機(jī)應(yīng)用的課程設(shè)計(jì)要求是運(yùn)用AT89S52,DS18B20和四個(gè)開關(guān)以及若干導(dǎo)線、電阻、三極管設(shè)計(jì)并制作一個(gè)數(shù)字
11、溫度的控制檢測(cè)的電路板產(chǎn)品其具體實(shí)現(xiàn)的功能如下:</p><p> 1.能過實(shí)現(xiàn)運(yùn)用DS18B20這一溫度傳感器可以實(shí)時(shí)準(zhǔn)確的檢測(cè)出當(dāng)前的溫度,并將檢測(cè)的溫度清楚準(zhǔn)確的顯示在四位集成數(shù)碼管上。</p><p> 2.能夠運(yùn)用AT89S52可以控制DS18B20的檢測(cè)的過程,在數(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)檢測(cè)的實(shí)際溫度高于最高溫度或低于最低溫度時(shí)都能夠報(bào)警提示。</p><p> 第三章: 課程設(shè)計(jì)分析設(shè)計(jì)</p><p> 3.1. 溫度采集系統(tǒng)<
13、/p><p> 如圖3.1所示為溫度采集報(bào)警系統(tǒng)框圖。該課程設(shè)計(jì)將以單片機(jī)控制的溫度采集系統(tǒng)為主,利用單片機(jī)完成對(duì)溫度的檢測(cè),實(shí)現(xiàn)安全溫度內(nèi)正常顯示溫度值,超出設(shè)定溫度則進(jìn)行報(bào)警。</p><p> 系統(tǒng)在溫度采集時(shí)主要應(yīng)用DS18B20芯片,該器件經(jīng)過初始化后單片機(jī)首先進(jìn)行ROM匹配,當(dāng)收到測(cè)溫器件發(fā)回的信號(hào)時(shí)證明該器件正常工作,接著單片機(jī)發(fā)出溫度轉(zhuǎn)換命令進(jìn)行溫度采集,測(cè)溫的精確度很高,
14、設(shè)計(jì)中用三極管進(jìn)行數(shù)碼管顯示驅(qū)動(dòng)。</p><p><b> 圖3.1 系統(tǒng)圖框</b></p><p> 3.2. DS18B20單線數(shù)字溫度傳感器</p><p> DS18B20、 DS1822 “一線總線”數(shù)字化溫度傳感器是DALLAS最新單線數(shù)字溫度傳感器, 同DS1820一樣,DS18B20也 支持“一線總線”接口,測(cè)量溫度范
15、圍為 -55°C~+125°C,在-10~+85°C范圍內(nèi),精度為±0.5°C。DS1822的精度較差為± 2°C ?,F(xiàn)場(chǎng)溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場(chǎng)溫度測(cè)量,與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。 DS18B20可以程序設(shè)定9~
16、12位的分辨率,精度為±0.5°C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價(jià)格比也非常出色! DS1822與 DS18B20軟件兼容,是DS18B20的簡(jiǎn)化版本。省略了存儲(chǔ)用戶定義報(bào)警溫度、分辨率參數(shù)的EEPROM,精度降低為±2°C,適用于對(duì)性能要求不高,成本控制嚴(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ā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如下:</p><
18、;p> DQ為數(shù)字信號(hào)輸入/輸出端</p><p><b> GND為電源地</b></p><p> VDD為外接電源輸入端</p><p> 圖3.3 DS18B20</p><p> 3.2.2.DS18B20存儲(chǔ)器</p><p> DS18B20的存儲(chǔ)器包括高速暫存器R
19、AM和可電擦除RAM,可電擦除RAM又包括溫度觸發(fā)器TH和TL,以及一個(gè)配置寄存器。存儲(chǔ)器能完整的確定一線端口的通訊,數(shù)字開始用寫寄存器的命令寫進(jìn)寄存器,接著也可以用讀寄存器的命令來確認(rèn)這些數(shù)字。當(dāng)確認(rèn)以后就可以用復(fù)制寄存器的命令來將這些數(shù)字轉(zhuǎn)移到可電擦除RAM中。當(dāng)修改過寄存器中的數(shù)時(shí),這個(gè)過程能確保數(shù)字的完整性。 </p><p> 高速暫存器RAM是由8個(gè)字節(jié)的存儲(chǔ)器組成;第一和第二個(gè)字節(jié)是溫度的顯示位。
20、第三和第四個(gè)字節(jié)是復(fù)制TH和TL,同時(shí)第三和第四個(gè)字節(jié)的數(shù)字可以更新;第五個(gè)字節(jié)是復(fù)制配置寄存器,同時(shí)第五個(gè)字節(jié)的數(shù)字可以更新;六、七、八三個(gè)字節(jié)是計(jì)算機(jī)自身使用。用讀寄存器的命令能讀出第九個(gè)字節(jié),這個(gè)字節(jié)是對(duì)前面的八個(gè)字節(jié)進(jìn)行校驗(yàn)。</p><p> 3.2.3.DS18B20高速暫存存儲(chǔ)器</p><p> 高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)
21、換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在 高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式如表1所示。對(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)制值。表3.1是對(duì)應(yīng)的一部分溫度值。第九個(gè)字節(jié)是 冗余檢驗(yàn)字節(jié)。</p><p> 表3.1 DS18B20暫存寄存器分布</p><p&g
22、t; 根據(jù)DS18B20的通訊協(xié)議,主機(jī)(單片機(jī))控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個(gè)步驟:每一次讀寫之前都要對(duì)DS18B20進(jìn)行 復(fù)位操作,復(fù)位成功后發(fā)送一條ROM指令,最后發(fā)送RAM指令,這樣才能對(duì)DS18B20進(jìn)行預(yù)定的操作。復(fù)位要求主CPU將數(shù)據(jù)線下拉500微秒,然后 釋放,當(dāng)DS18B20收到信號(hào)后等待16~60微秒左右,后發(fā)出60~240微秒的存在低脈沖,主CPU收到此信號(hào)表示復(fù)位成功。</p><
23、;p> 3.2.4.DS18B20有4個(gè)主要的數(shù)據(jù)部件</p><p> 光刻ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位 (28H)是產(chǎn)品類型標(biāo)號(hào),接著的48位是該DS18B20自身的序列號(hào),最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5+X4+1)。光刻ROM的作用 是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)
24、一根總線上掛接多個(gè)DS18B20的目的。</p><p> DS18B20中的溫度傳感器可完成對(duì)溫度的測(cè)量,以12位轉(zhuǎn)化為例:用16位符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 0.0625℃/LSB形式表達(dá),其中S為符號(hào)位。</p><p> 圖3.4 DS18B20測(cè)溫原理框圖</p><p> 3.2.5.DS18B20和電源的接線方式</p>
25、<p> DS18B20可以使用外部電源VDD,也可以使用內(nèi)部的寄生電源。當(dāng)VDD端口接3.0V—5.5V的電壓時(shí)是使用外部電源;當(dāng)VDD端口接地時(shí)使用了內(nèi)部的寄生電源。無論是內(nèi)部寄生電源還是外部供電,I/O口線要接5KΩ左右的上拉電阻。</p><p> 圖3.5 DS18B20寄生電源供電方式</p><p> 此次課設(shè)我們用的是外部電源供電方式,在外部電源供電方式下,
26、DS18B20工作電源由VDD引腳接入,此時(shí)I/O線不需要強(qiáng)上拉,不存在電源電流不足的問題,可以保證轉(zhuǎn)換精度,同時(shí)在總線上理論可以掛接任意多個(gè)DS18B20傳感器,組成多點(diǎn)測(cè)溫系統(tǒng)。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空 ,否則不能轉(zhuǎn)換溫度,讀取的溫度總是85℃。</p><p> 圖3.6 DS18B20外接電源供電方式</p><p> 3.3. DS18B2
27、0的工作原理</p><p> DS18B20的讀寫時(shí)序和測(cè)溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s 減為750ms。 DS18B20測(cè)溫原理如圖3.4所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給計(jì)數(shù)器1。高溫度系數(shù)晶
28、振 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號(hào)作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對(duì)應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器1對(duì) 低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器1的預(yù)置將重新被裝入,計(jì)數(shù)器1重 新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即 為所測(cè)溫度。圖3中的斜率累加器用于補(bǔ)償和修正
29、測(cè)溫過程中的非線性,其輸出用于修正計(jì)數(shù)器1的預(yù)置值。 </p><p> 3.3.1.DS18B20的初始化</p><p> 主機(jī)首先發(fā)出一個(gè)480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時(shí)間內(nèi)對(duì)總線進(jìn)行檢測(cè),如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。 做為從器件的DS18B20在一上電后就一直
30、在檢測(cè)總線上是否有480-960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒有檢測(cè)到就一直在檢測(cè)等待。 </p><p> 圖3.7初始化時(shí)序圖</p><p> 3.3.2.對(duì)DS18B20寫和讀</p><p> 接下來就是主機(jī)發(fā)出各種操作命令,但各種操作命令
31、都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時(shí)也是從DS18B20讀取0或1的過程。因此首先要搞清主機(jī)是如何進(jìn)行寫0、寫1、讀0和讀1的。</p><p> 寫周期最少為60微秒,最長(zhǎng)不超過120微秒。寫周期一開始做為主機(jī)先把總線拉低1微秒表示寫周期開始。隨后若主機(jī)想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直
32、到寫周期結(jié)束。而做為從機(jī)的DS18B20則在檢測(cè)到總線被拉底后等待15微秒然后從15us到45us開始對(duì)總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。</p><p> 圖3.8寫操作的時(shí)序圖</p><p> 對(duì)于讀數(shù)據(jù)操作時(shí)序也分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程。讀時(shí)隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾?/p>
33、總線上。DS18B20在檢測(cè)到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個(gè)讀時(shí)序過程,至少需要60us才能完成</p><p> 圖3.9讀操作的時(shí)序圖<
34、;/p><p> DS18B20 單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,如果出現(xiàn)序列混亂, 1-WIRE 器件將不響應(yīng)主機(jī),因此讀寫時(shí)序很重要。系統(tǒng)對(duì) DS18B20 的各種操作必須按協(xié)議進(jìn)行。根據(jù) DS18B20 的協(xié)議規(guī)定,微控制器控制 DS18B20 完成溫度的轉(zhuǎn)換必須經(jīng)過以下 3個(gè)步驟 :</p><p> ?。?)每次讀寫前對(duì) DS18B20 進(jìn)行復(fù)位初始化。復(fù)位要求主 C
35、PU 將數(shù)據(jù)線</p><p> 下拉 500us ,然后釋放, DS18B20 收到信號(hào)后等待 16us~60us 左右,然后發(fā)出60us~240us 的存在低脈沖,主 CPU 收到此信號(hào)后表示復(fù)位成功。</p><p> (2)發(fā)送一條 ROM 指令</p><p> ?。?)發(fā)送存儲(chǔ)器指令</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ī)先作個(gè)復(fù)位操作,</p><p> 2、主機(jī)再寫跳過ROM的操作(CCH)命令,</p><p> 3、然后主機(jī)接著寫
37、個(gè)轉(zhuǎn)換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉(zhuǎn)換的操作。在這里要注意的是每個(gè)命令字節(jié)在寫的時(shí)候都是低字節(jié)先寫,例如CCH的二進(jìn)制為11001100,在寫到總線上時(shí)要從低位開始寫,寫的順序是“零、零、壹、壹、零、零、壹、壹”。</p><p> 讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個(gè)操作也要接照三個(gè)步驟。</p><p> 1、主機(jī)發(fā)出復(fù)位操作并接收DS18B20的應(yīng)答(
38、存在)脈沖。</p><p> 2、主機(jī)發(fā)出跳過對(duì)ROM操作的命令(CCH)。</p><p> 3、主機(jī)發(fā)出讀取RAM的命令(BEH),隨后主機(jī)依次讀取DS18B20發(fā)出的從第0一第8,共九個(gè)字節(jié)的數(shù)據(jù)。如果只想讀取溫度數(shù)據(jù),那在讀完第0和第1個(gè)數(shù)據(jù)后就不再理會(huì)后面DS18B20發(fā)出的數(shù)據(jù)即可。同樣讀取數(shù)據(jù)也是低位在前的。</p><p> 在這里說明一下,
39、第二步跳過對(duì)ROM操作的命令是在總線上只有一個(gè)器件時(shí),為節(jié)省時(shí)間而簡(jiǎn)化的操作,若總線上不止一個(gè)器件,那么跳過ROM操作命令將會(huì)使幾器件同時(shí)響應(yīng),這樣就會(huì)出現(xiàn)數(shù)據(jù)沖突。</p><p> 3.3.3.DS18B20在應(yīng)用中應(yīng)注意的事項(xiàng)</p><p> DS1820雖然具有測(cè)溫系統(tǒng)簡(jiǎn)單、測(cè)溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題:</p>
40、<p> 1. 較小的硬件開銷需要相對(duì)復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此 ,在對(duì)DS1820進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無法讀取測(cè)溫結(jié)果。在使用PL/M、C等高級(jí)語言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對(duì) DS1820操作部分最好采用匯編語言實(shí)現(xiàn)。</p><p> 2. 在DS1820的有關(guān)資料中均未提及單總線上所掛DS1820數(shù)量問題,容易使人誤認(rèn)為可以掛
41、任意多個(gè) DS1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛DS1820超過8個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問題,這一點(diǎn)在進(jìn)行多點(diǎn)測(cè)溫系統(tǒng)設(shè)計(jì)時(shí) 要加以注意。</p><p> 3. 連接DS1820的總線電纜是有長(zhǎng)度限制的。試驗(yàn)中,當(dāng)采用普通信號(hào)電纜傳輸長(zhǎng)度超過50m時(shí),讀取的 測(cè)溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時(shí),正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時(shí),正
42、 常通訊距離進(jìn)一步加長(zhǎng)。這種情況主要是由總線分布電容使信號(hào)波形產(chǎn)生畸變?cè)斐傻摹R虼?,在用DS1820進(jìn)行長(zhǎng)距離測(cè)溫系統(tǒng)設(shè)計(jì)時(shí)要充分考 慮總線分布電容和阻抗匹配問題。</p><p> 4. 在DS1820測(cè)溫程序設(shè)計(jì)中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號(hào),一旦 某個(gè)DS1820接觸不好或斷線,當(dāng)程序讀該DS1820時(shí),將沒有返回信號(hào),程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS1820硬件
43、連接和軟件設(shè)計(jì)時(shí)也要給予 一定的重視。 測(cè)溫電纜線建議采用屏蔽4芯雙絞線,其中一對(duì)線接地線與信號(hào)線,另一組接VCC和地線,屏蔽層在源端單點(diǎn)接地</p><p> 3.4. AT89S52單片機(jī)簡(jiǎn)介</p><p> AT89S52為 ATMEL 所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flsah存儲(chǔ)器。</p><p> 3.4.1
44、. AT89S52主要功能列舉如下</p><p> 1、擁有靈巧的8位CPU和在系統(tǒng)可編程Flash</p><p> 2、晶片內(nèi)部具時(shí)鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz)</p><p> 3、內(nèi)部程序存儲(chǔ)器(ROM)為 8KB</p><p> 4、內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM)為 256字節(jié)</p><p
45、> 5、32 個(gè)可編程I/O 口線</p><p> 6、8 個(gè)中斷向量源</p><p> 7、三個(gè) 16 位定時(shí)器/計(jì)數(shù)器</p><p> 8、三級(jí)加密程序存儲(chǔ)器</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)時(shí)鐘的反相放大器輸入端。</p><p><b> XTAL2:</b></p><p> 系統(tǒng)時(shí)鐘的反相放大器輸出端,一般在設(shè)計(jì)上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統(tǒng)就可以動(dòng)作了,此外可以在兩引腳與地之間加入一 20PF 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機(jī)。</p>
48、<p><b> RESET:</b></p><p> AT89S52的重置引腳,高電平動(dòng)作,當(dāng)要對(duì)晶片重置時(shí),只要對(duì)此引腳電平提升至高電平并保持兩個(gè)機(jī)器周期以上的時(shí)間,AT89S51便能完成系統(tǒng)重置的各項(xiàng)動(dò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)作,也就是說當(dāng)此引腳接低電平后,系統(tǒng)會(huì)取用外部的程序代碼(存于外部EPROM中)來執(zhí)行程序。因此在8031及8032中,EA引腳必須接低電平,因?yàn)槠鋬?nèi)部無程序存儲(chǔ)器空間。如果是使用 8751 內(nèi)部程序空間時(shí),此引腳要接成高電平。此外
50、,在將程序代碼燒錄至8751內(nèi)部EPROM時(shí),可以利用此引腳來輸入21V的燒錄高壓(Vpp)。</p><p><b> ALE/PROG:</b></p><p> ALE是英文"Address Latch Enable"的縮寫,表示地址鎖存器啟用信號(hào)。AT89S52可以利用這支引腳來觸發(fā)外部的8位鎖存器(如74LS373),將端口0的地址總
51、線(A0~A7)鎖進(jìn)鎖存器中,因?yàn)锳T89S52是以多工的方式送出地址及數(shù)據(jù)。平時(shí)在程序執(zhí)行時(shí)ALE引腳的輸出頻率約是系統(tǒng)工作頻率的1/6,因此可以用來驅(qū)動(dòng)其他周邊晶片的時(shí)基輸入。此外在燒錄8751程序代碼時(shí),此引腳會(huì)被當(dāng)成程序規(guī)劃的特殊功能來使用。</p><p><b> PSEN:</b></p><p> 此為"Program Store Ena
52、ble"的縮寫,其意為程序儲(chǔ)存啟用,當(dāng)8051被設(shè)成為讀取外部程序代碼工作模式時(shí)(EA=0),會(huì)送出此信號(hào)以便取得程序代碼,通常這支腳是接到EPROM的OE腳。AT89S52可以利用PSEN及RD引腳分別啟用存在外部的RAM與EPROM,使得數(shù)據(jù)存儲(chǔ)器與程序存儲(chǔ)器可以合并在一起而共用64K的定址范圍。</p><p> PORT0(P0.0~P0.7):</p><p> 端
53、口0是一個(gè)8位寬的開路汲極(Open Drain)雙向輸出入端口,共有8個(gè)位,P0.0表示位0,P0.1表示位1,依此類推。其他三個(gè)I/O端口(P1、P2、P3)則不具有此電路組態(tài),而是內(nèi)部有一提升電路,P0在當(dāng)做I/O用時(shí)可以推動(dòng)8個(gè)LS的TTL負(fù)載。如果當(dāng)EA引腳為低電平時(shí)(即取用外部程序代碼或數(shù)據(jù)存儲(chǔ)器),P0就以多工方式提供地址總線(A0~A7)及數(shù)據(jù)總線(D0~D7)。設(shè)計(jì)者必須外加一鎖存器將端口0送出的地址栓鎖住成為A0~A
54、7,再配合端口2所送出的A8~A15合成一完整的16位地址總線,而定址到64K的外部存儲(chǔ)器空間。</p><p> PORT2(P2.0~P2.7):</p><p> 端口2是具有內(nèi)部提升電路的雙向I/O端口,每一個(gè)引腳可以推動(dòng)4個(gè)LS的TTL負(fù)載,若將端口2的輸出設(shè)為高電平時(shí),此端口便能當(dāng)成輸入端口來使用。P2除了當(dāng)做一般I/O端口使用外,若是在AT89S52擴(kuò)充外接程序存儲(chǔ)器或數(shù)
55、據(jù)存儲(chǔ)器時(shí),也提供地址總線的高字節(jié)A8~A15,這個(gè)時(shí)候P2便不能當(dāng)做I/O來使用了。</p><p> PORT1(P1.0~P1.7):</p><p> 端口1也是具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動(dòng)4個(gè)LS TTL負(fù)載,同樣地若將端口1的輸出設(shè)為高電平,便是由此端口來輸入數(shù)據(jù)。如果是使用8052或是8032的話,P1.0又當(dāng)做定時(shí)器2的外部脈沖輸入腳,而P1.
56、1可以有T2EX功能,可以做外部中斷輸入的觸發(fā)腳位。</p><p> PORT3(P3.0~P3.7):</p><p> 端口3也具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動(dòng)4個(gè)TTL負(fù)載,同時(shí)還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計(jì)時(shí)計(jì)數(shù)控制及外部數(shù)據(jù)存儲(chǔ)器內(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,計(jì)時(shí)計(jì)數(shù)器0輸入。<
58、;/p><p> P3.5:T1,計(jì)時(shí)計(jì)數(shù)器1輸入。</p><p> P3.6:WR:外部數(shù)據(jù)存儲(chǔ)器的寫入信號(hào)。</p><p> P3.7:RD,外部數(shù)據(jù)存儲(chǔ)器的讀取信號(hào)。</p><p> RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。</p><p> ALE/PROG:當(dāng)
59、訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理
60、器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。</p><p> /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。</p><p> /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定
61、為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。</p><p> XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。</p><p> XTAL2:來自反向振蕩器的輸出。</p><p> 第四章:繪制硬件電路圖并對(duì)硬件電路圖進(jìn)行說明</p><p>
62、 4.1.PROTUEL軟件簡(jiǎn)介</p><p> 早期的PROTEL主要作為印制板自動(dòng)布線工具使用,運(yùn)行在DOS環(huán)境,對(duì)硬件的要求很低,在無硬盤286機(jī)的1M內(nèi)存下就能運(yùn)行,但它的功能也較少,只有電原理圖繪制與印制板設(shè)計(jì)功能,其印制板自動(dòng)布線的布通率也低,而現(xiàn)今的PROTEL已發(fā)展到PROTEL99(網(wǎng)絡(luò)上可下載到它的測(cè)試板),是個(gè)龐大的EDA軟件,完全安裝有200多M,它工作在WINDOWS95環(huán)境下,是個(gè)
63、完整的板級(jí)全方位電子設(shè)計(jì)系統(tǒng),它包含了電路原理圖繪制、模擬電路與數(shù)字電路混合信號(hào)仿真、多層印制電路板設(shè)計(jì)(包含印制電路板自動(dòng)布線)、可編程邏輯器件設(shè)計(jì)、圖表生成、電子表格生成、支持宏操作等功能,并具有Client/Server(客戶/服務(wù)器)體系結(jié)構(gòu),同時(shí)還兼容一些其它設(shè)計(jì)軟件的文件格式,如ORCAD,PSPICE,EXCEL等,其多層印制線路板的自動(dòng)布線可實(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個(gè)模塊,分別是原理圖設(shè)計(jì)、PCB設(shè)計(jì)(包含信號(hào)完整性分析)、自動(dòng)布線器、原理圖混合信號(hào)仿真、PLD設(shè)計(jì)。 以下介紹一些Protel99SE的部
65、分最新功能:</p><p> 1,可生成30多種格式的電氣連接網(wǎng)絡(luò)表; </p><p> 2,強(qiáng)大的全局編輯功能; </p><p> 3,在原理圖中選擇一級(jí)器件,PCB中同樣的器件也將被選中; </p><p> 4,同時(shí)運(yùn)行原理圖和PCB,在打開的原理圖和PCB圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡(luò) </p>&
66、lt;p> 5,既可以進(jìn)行正向注釋元器件標(biāo)號(hào)(由原理圖到PCB),也可以進(jìn)行反向注釋(由PCB到原理圖),以保持電氣原理圖和PCB在設(shè)計(jì)上的一致性; </p><p> 6,滿足國際化設(shè)計(jì)要求(包括國標(biāo)標(biāo)題欄輸出,GB4728國標(biāo)庫); * 方便易用的數(shù)?;旌戏抡妫嫒軸PICE 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ī)文件、測(cè)試點(diǎn)報(bào)告等; </p><p> 在原理圖部分,新增加“靈巧粘帖”可以將一些不同的對(duì)象拷貝到原理圖
68、當(dāng)中,比如一些網(wǎng)絡(luò)標(biāo)號(hào), 一頁圖紙的BOM表,都可以拷貝粘帖到原理圖當(dāng)中。原理圖文件切片,多個(gè)器件集體操作,文本筐的直接編輯,箭頭的添加,器件精確移動(dòng),總線走線,自動(dòng)網(wǎng)標(biāo)選擇等! 強(qiáng)大的前端將多層次、多通道的原理圖輸入、VHDL開發(fā)和功能仿真、布線前后的信號(hào)完整性分析功能。在信號(hào)仿真部分,提供完善的混合信號(hào)仿真,在對(duì)XSPICE 標(biāo)準(zhǔn)的支持之外,還支持對(duì)Pspice模型和電路的仿真。對(duì)FPGA設(shè)計(jì)提供了豐富的IP內(nèi)核,包括各種處理器、存
69、儲(chǔ)器、外設(shè)、接口、以及虛擬儀器 。</p><p> 在PCB部分,除了Protel2004中的多通道復(fù)制;實(shí)時(shí)的、阻抗控制布線功能;SitusTM自動(dòng)布線器等新功能以外,Altium Designer 6.0還著重在:差分對(duì)布線,F(xiàn)PGA器件差分對(duì)管腳的動(dòng)態(tài)分配, PCB和FPGA之間的全面集成,從而實(shí)現(xiàn)了自動(dòng)引腳優(yōu)化和非凡的布線效果。還有PCB文件切片,PCB多個(gè)器件集體操作,在PCB文件中支持多國語言(中
70、文、英文、德文、法文、日文),任意字體和大小的漢字字符輸入,光標(biāo)跟隨在線信息顯示功能,光標(biāo)點(diǎn)可選器件列表,復(fù)雜BGA器件的多層自動(dòng)扇出,提供了對(duì)高密度封裝(如BGA)的交互布線功能, 總線布線功能,器件精確移動(dòng),快速鋪銅等功能。</p><p> 圖4.1 PROTEL原理圖</p><p><b> 圖4.2 PCB板</b></p><p&
71、gt; 第五章:繪制軟件流程圖和對(duì)軟件流程圖的介紹</p><p> 首先啟動(dòng)系統(tǒng),然后初始化DS18B20,初始化的目的是檢測(cè)單片機(jī)的外部連接的DS18B20和單片機(jī)的連接狀態(tài)是否良好并且檢測(cè)DS18B20是否處于正常工作狀態(tài)。</p><p> DS18B20處于正常工作的狀態(tài)并且單片機(jī)得到DS18B20的應(yīng)答,那么接這就跳過ROM,跳過對(duì)ROM操作的命令是在總線上只有一個(gè)器件時(shí)
72、,為節(jié)省時(shí)間而簡(jiǎn)化的操作,若總線上不止一個(gè)器件,那么跳過ROM操作命令將會(huì)使幾器件同時(shí)響應(yīng),這樣就會(huì)出現(xiàn)數(shù)據(jù)沖突。</p><p> 接著單片機(jī)發(fā)出溫度轉(zhuǎn)換命令,DS18B20開始進(jìn)行溫度的檢測(cè)和轉(zhuǎn)換,將檢測(cè)的結(jié)果顯示在數(shù)碼管上,這時(shí)單片機(jī)根據(jù)DS18B20傳來的數(shù)據(jù)進(jìn)行判斷,如果檢測(cè)的溫度大于設(shè)定的最高溫度或低于設(shè)定的最低溫度,此時(shí)進(jìn)行報(bào)警,報(bào)警后返回初始化。如果沒有超過設(shè)定溫度直接返回初始化。</p&
73、gt;<p><b> 圖5.1 流程圖</b></p><p> 第六章:上機(jī)調(diào)試及運(yùn)行結(jié)果</p><p> 6.1.對(duì)proteus的簡(jiǎn)介</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è)計(jì),真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì)。是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái),其處理器模型支持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、 自動(dòng)或人工布線 </b></p><p><b> SPICE電路仿真</b></p><p><b> 革命性的特點(diǎn)</b></p><p> ?。?)互動(dòng)的電路仿真</p><p> 用戶甚至可以實(shí)時(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è)計(jì)開發(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)硬件高度對(duì)應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測(cè)、電路修改、軟件調(diào)試、運(yùn)行結(jié)果等。</p><p> 由于PROTEUS提供了實(shí)驗(yàn)室無法相比的大量的元器件庫,提供了修改電路設(shè)計(jì)的靈活性、提供了實(shí)驗(yàn)室在數(shù)量、質(zhì)量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)
80、學(xué)生實(shí)踐精神、創(chuàng)造精神的平臺(tái)。</p><p> 隨著科技的發(fā)展,“計(jì)算機(jī)仿真技術(shù)”已成為許多設(shè)計(jì)部門重要的前期設(shè)計(jì)手段。它具有設(shè)計(jì)靈活,結(jié)果、過程的統(tǒng)一的特點(diǎn)??墒乖O(shè)計(jì)時(shí)間大為縮短、耗資大為減少,也可降低工程制造的風(fēng)險(xiǎn)。相信在單片機(jī)開發(fā)應(yīng)用中PROTEUS也能茯得愈來愈廣泛的應(yīng)用。</p><p> 使用Proteus 軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計(jì), 是虛擬仿真技術(shù)和計(jì)算機(jī)多媒體技術(shù)相
81、結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計(jì)能力及仿真軟件的操作能力;實(shí)踐證明,在使用 Proteus 進(jìn)行系統(tǒng)仿真開發(fā)成功之后再進(jìn)行實(shí)際制作,能極大提高單片機(jī)系統(tǒng)設(shè)計(jì)效率。因此,Proteus 有較高的推廣利用價(jià)值。</p><p> 6.4.調(diào)試遇到的問題分析</p><p> 我們?cè)谡{(diào)試的過程中遇到了很多問題,整個(gè)調(diào)試的過程實(shí)際上就是解決這些問題的過程。</p><
82、;p> 首先我們仿真的時(shí)候我們發(fā)現(xiàn)數(shù)碼管根本不會(huì)顯示,我們很失望,后來經(jīng)過分析發(fā)現(xiàn)三極管接反了,本來是三極管的發(fā)射極與集成數(shù)碼管的位相連接,集電極接電源,而我們正好接反了,后來改正后數(shù)碼管可以顯示了。</p><p> 接著我們遇到的問題就是我們的數(shù)碼管顯示錯(cuò)誤,我們認(rèn)真的檢查后發(fā)現(xiàn)我們的程序和所用的數(shù)碼管不一致,我們程序是共陽極的,但是我們?cè)谶x器件的時(shí)候選成了共陰極,后來我們改正了錯(cuò)誤。</p&
83、gt;<p> 改完后發(fā)現(xiàn)數(shù)碼管的四位數(shù)字顯示的順序正好相反,我們分析后覺得是單片機(jī)和集成數(shù)碼管的位連接的時(shí)候位接反了。</p><p> 我們?cè)谡{(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è)計(jì)的寫作是在老師的指導(dǎo)下進(jìn)行的。針對(duì)在寫作過程中遇到許多的難題老師都給以認(rèn)真的解釋,為此,向老師表示最衷心的謝意。我在這次課程設(shè)計(jì)中,學(xué)會(huì)了怎么去發(fā)現(xiàn)問題,解決問題。遇到不明白的問題都會(huì)積極的去詢問老師,或者去
85、找尋相關(guān)的資料。從中學(xué)到了很多知識(shí)。這次課程設(shè)計(jì)使我們有機(jī)會(huì)把我們的課堂理論知識(shí)運(yùn)用到實(shí)際生活中,貼近生活,實(shí)現(xiàn)我們的人生價(jià)值。并且通過對(duì)知識(shí)的綜合利用,加入個(gè)人的分析和比較,加深了了我們對(duì)理論知識(shí)的理解和運(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; //定義選擇報(bào)調(diào)整警溫度上限和下限(1為上限,0為下限)</p><p> /****P3.2和P3.3為調(diào)整溫度報(bà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; //上限報(bào)警溫度,默認(rèn)值為38</p><p> signed char xiaxian=6; //下限報(bào)警溫度,默認(rèn)值為5</p>&
91、lt;p> uchar code LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};</p><p> /*****延時(shí)子程序*****/</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); //稍做延時(shí)</p><p> DQ=0; //單片機(jī)將DQ拉低</p><p> Delay(80); //精確延時(shí),大于480us&l
94、t;/p><p> DQ=1; //拉高總線</p><p> Delay(14);</p><p> x=DQ; //稍做延時(shí)后,如果x=0則初始化成功,x=1則初始化失敗</p><p> Delay(20);</p><p><b> }</b>&l
95、t;/p><p> /*****讀一個(gè)字節(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; // 給脈沖信號(hào)</p><p><b> dat>>=1;</b></p><p> DQ=1; // 給脈
97、沖信號(hào)</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> /*****寫一個(gè)字節(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); //跳過讀序號(hào)列號(hào)的操作</p><p> WriteOneChar(0x44); //啟動(dòng)溫度轉(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); //跳過讀序號(hào)列號(hào)的操作</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; //計(jì)算得到十位數(shù)字</p><p> b=e/100-a*10; //計(jì)算得到個(gè)位數(shù)字</p><p> d=e%10;
111、 //計(jì)算得到小數(shù)點(diǎn)后兩位</p><p> c=(e%100)/10; //計(jì)算得到小數(shù)點(diǎn)后一位</p><p><b> m=e/100;</b></p><p> if(m>shangxian || m<xiaxian) LING=1; //溫度不在范圍內(nèi)報(bào)警</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]; //顯示個(gè)位</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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)報(bào)告 (2)
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 《單片機(jī)課程設(shè)計(jì)》報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)數(shù)字時(shí)鐘
- 單片機(jī)課程設(shè)計(jì) (2)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)秒表系統(tǒng)設(shè)計(jì)
- 單片機(jī)及dsp課程設(shè)計(jì)報(bào)告 (2)
- 單片機(jī)課程設(shè)計(jì)報(bào)告——單片機(jī)控制步進(jìn)電機(jī)
- 單片機(jī)課程設(shè)計(jì)報(bào)告---單片機(jī)控制秒表系統(tǒng)
- 單片機(jī)課程設(shè)計(jì)報(bào)告doc
- 單片機(jī)課程設(shè)計(jì)課題報(bào)告
- btec單片機(jī)課程設(shè)計(jì)報(bào)告
- 單片機(jī)應(yīng)用課程設(shè)計(jì)報(bào)告
- 單片機(jī)課程設(shè)計(jì)報(bào)告-日歷
評(píng)論
0/150
提交評(píng)論