單片機(jī)課程設(shè)計(jì)報(bào)告 一個(gè)數(shù)字溫度的控制檢測的電路板產(chǎn)品設(shè)計(jì)
《單片機(jī)課程設(shè)計(jì)報(bào)告 一個(gè)數(shù)字溫度的控制檢測的電路板產(chǎn)品設(shè)計(jì)》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)課程設(shè)計(jì)報(bào)告 一個(gè)數(shù)字溫度的控制檢測的電路板產(chǎn)品設(shè)計(jì)(35頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、 第一章: 概 述 1 第二章: 課程設(shè)計(jì)功能描述 2 第三章: 課程設(shè)計(jì)分析設(shè)計(jì) 3 3.1. 溫度采集系統(tǒng) 3 3.2. DS18B20單線數(shù)字溫度傳感器 3 3.2.1.DS18B20的管腳 4 3.2.2.DS18B20存儲(chǔ)器 5 3.2.3.DS18B20高速暫存存儲(chǔ)器 5 3.2.4.DS18B20有4個(gè)主要的數(shù)據(jù)部件 6 3.2.5.DS18B20和電源的接線方式 7 3.3. DS18B20的工作原理 8 3.3.1.DS18B20的初始化 8 3.3.2.對DS18B20寫和讀 9 3.3.3.DS18B20在應(yīng)用中應(yīng)注意的事項(xiàng) 12 3.4.
2、 AT89S52單片機(jī)簡介 13 3.4.1. AT89S52主要功能列舉如下 13 3.4.2. AT89S52各引腳功能介紹 13 第四章:繪制硬件電路圖并對硬件電路圖進(jìn)行說明 16 4.1.PROTUEL軟件簡介 16 4.2.PROTUEL軟件特色 17 第五章:繪制軟件流程圖和對軟件流程圖的介紹 19 第六章:上機(jī)調(diào)試及運(yùn)行結(jié)果 21 6.1.對proteus的簡介 21 6.2.proteus功能特點(diǎn) 21 6.3.電路仿真 22 6.4.調(diào)試遇到的問題分析 22 6.5. PRTEUS原理圖 22 總結(jié) 23 參考文獻(xiàn) 24 附錄 25 第
3、一章: 概 述 大學(xué)本科學(xué)生動(dòng)手能力的培養(yǎng)和提高是大學(xué)本科教育的一個(gè)重要內(nèi)容。如何讓學(xué)生在學(xué)好基礎(chǔ)知識的同時(shí),迅速掌握應(yīng)用技術(shù),實(shí)驗(yàn)與課程設(shè)計(jì)環(huán)節(jié)起著非常重要的作用。 單片機(jī)是一種集成在電路芯片,是采用超大規(guī)模集成電路技術(shù)把具有數(shù)據(jù)處理能力的中央處理器CPU隨機(jī)存儲(chǔ)器RAM、只讀存儲(chǔ)器ROM、多種I/O口和中斷系統(tǒng)、定時(shí)器/計(jì)時(shí)器等功能(可能還包括顯示驅(qū)動(dòng)電路、脈寬調(diào)制電路、模擬多路轉(zhuǎn)換器、A/D轉(zhuǎn)換器等電路)集成到一塊硅片上構(gòu)成的一個(gè)小而完善的計(jì)算機(jī)系統(tǒng)。 目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域,幾乎很難找到哪個(gè)領(lǐng)域沒有單片機(jī)的蹤跡。導(dǎo)彈的導(dǎo)航裝置,飛機(jī)上各種儀表的控制,計(jì)算機(jī)的網(wǎng)絡(luò)通訊
4、與數(shù)據(jù)傳輸,工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統(tǒng),錄像機(jī)、攝像機(jī)、全自動(dòng)洗衣機(jī)的控制,以及程控玩具、電子寵物等等,這些都離不開單片機(jī)。更不用說自動(dòng)控制領(lǐng)域的機(jī)器人、智能儀表、醫(yī)療器械以及各種智能機(jī)械了。因此,單片機(jī)的學(xué)習(xí)、開發(fā)與應(yīng)用將造就一批計(jì)算機(jī)應(yīng)用與智能化控制的科學(xué)家、工程師。 基于單片機(jī)的強(qiáng)大功能和重要作用,也為了提高我們的動(dòng)手能力,使我們能把理論學(xué)習(xí)和實(shí)踐操作結(jié)合起來,加深對理論學(xué)習(xí)的理解。我們在10—11學(xué)年的下半學(xué)期第十四、十五和十六周進(jìn)行了單片機(jī)應(yīng)用這樣的課程設(shè)計(jì)。 課設(shè)的具體內(nèi)容是通過DS18B20這個(gè)一總線數(shù)字傳感器,用
5、C52控制實(shí)現(xiàn)對溫度的實(shí)時(shí)監(jiān)測,并且超過設(shè)定的最高或最低溫度時(shí)可以自動(dòng)報(bào)警,這個(gè)最高和最低溫度可以通過對單片機(jī)的控制來隨意設(shè)置。 第二章: 課程設(shè)計(jì)功能描述 本次單片機(jī)應(yīng)用的課程設(shè)計(jì)要求是運(yùn)用AT89S52,DS18B20和四個(gè)開關(guān)以及若干導(dǎo)線、電阻、三極管設(shè)計(jì)并制作一個(gè)數(shù)字溫度的控制檢測的電路板產(chǎn)品其具體實(shí)現(xiàn)的功能如下: 1.能過實(shí)現(xiàn)運(yùn)用DS18B20這一溫度傳感器可以實(shí)時(shí)準(zhǔn)確的檢測出當(dāng)前的溫度,并將檢測的溫度清楚準(zhǔn)確的顯示在四位集成數(shù)碼管上。 2.能夠運(yùn)用AT89S52可以控制DS18B20的檢測的過程,在數(shù)碼管上可以初始化顯示。 3.能夠設(shè)置最高溫度和最低溫
6、度,并且通過開關(guān)控制AT89S52可以把最高溫度和最高溫度可以顯示在數(shù)碼管上。 4.能夠通過開關(guān)控制AT89S52,可以調(diào)整最高溫度和最低溫度。 5.能過實(shí)現(xiàn)當(dāng)檢測的實(shí)際溫度高于最高溫度或低于最低溫度時(shí)都能夠報(bào)警提示。 第三章: 課程設(shè)計(jì)分析設(shè)計(jì) 3.1. 溫度采集系統(tǒng) 如圖3.1所示為溫度采集報(bào)警系統(tǒng)框圖。該課程設(shè)計(jì)將以單片機(jī)控制的溫度采集系統(tǒng)為主,利用單片機(jī)完成對溫度的檢測,實(shí)現(xiàn)安全溫度內(nèi)正常顯示溫度值,超出設(shè)定溫度則進(jìn)行報(bào)警。 系統(tǒng)在溫度采集時(shí)主要應(yīng)用DS18B20芯片,該器件經(jīng)過初始化后單片機(jī)首先進(jìn)行ROM匹配,當(dāng)收到測溫器件發(fā)回的信號時(shí)證明該器
7、件正常工作,接著單片機(jī)發(fā)出溫度轉(zhuǎn)換命令進(jìn)行溫度采集,測溫的精確度很高,設(shè)計(jì)中用三極管進(jìn)行數(shù)碼管顯示驅(qū)動(dòng)。 圖3.1 系統(tǒng)圖框 3.2. DS18B20單線數(shù)字溫度傳感器 DS18B20、 DS1822 “一線總線”數(shù)字化溫度傳感器是DALLAS最新單線數(shù)字溫度傳感器, 同DS1820一樣,DS18B20也 支持“一線總線”接口,測量溫度范圍為 -55C~+125C,在-10~+85C范圍內(nèi),精度為0.5C。DS1822的精度較差為 2C ?,F(xiàn)場溫度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。適合于惡劣環(huán)境的現(xiàn)場溫度測量,與前一代產(chǎn)品不同,新的產(chǎn)品支持3V~5.5V的電
8、壓范圍,使系統(tǒng)設(shè)計(jì)更靈活、方便。而且新一代產(chǎn)品更便宜,體積更小。 DS18B20可以程序設(shè)定9~12位的分辨率,精度為0.5C??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設(shè)定,及用戶設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中,掉電后依然保存。DS18B20的性能是新一代產(chǎn)品中最好的!性能價(jià)格比也非常出色! DS1822與 DS18B20軟件兼容,是DS18B20的簡化版本。省略了存儲(chǔ)用戶定義報(bào)警溫度、分辨率參數(shù)的EEPROM,精度降低為2C,適用于對性能要求不高,成本控制嚴(yán)格的應(yīng)用,是經(jīng)濟(jì)型產(chǎn)品。 繼“一線總線”的早期產(chǎn)品后,DS1820開辟了溫度傳感器技術(shù)的新概念。DS18B20和D
9、S1822使電壓、特性及封裝有更多的選擇,讓我們可以構(gòu)建適合自己的經(jīng)濟(jì)的測溫系統(tǒng)。 圖3.2 DS18B20內(nèi)部結(jié)構(gòu)圖 3.2.1.DS18B20的管腳 DS18B20內(nèi)部結(jié)構(gòu)主要有四部分組成:64位光刻ROM、溫度傳感器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、配置寄存器。DS18B20的管腳排列如下: DQ為數(shù)字信號輸入/輸出端 GND為電源地 VDD為外接電源輸入端 圖3.3 DS18B20 3.2.2.DS18B20存儲(chǔ)器 DS18B20的存儲(chǔ)器包括高速暫存器RAM和可電擦除RAM,可電擦除RAM又包括溫度觸發(fā)器TH和TL,
10、以及一個(gè)配置寄存器。存儲(chǔ)器能完整的確定一線端口的通訊,數(shù)字開始用寫寄存器的命令寫進(jìn)寄存器,接著也可以用讀寄存器的命令來確認(rèn)這些數(shù)字。當(dāng)確認(rèn)以后就可以用復(fù)制寄存器的命令來將這些數(shù)字轉(zhuǎn)移到可電擦除RAM中。當(dāng)修改過寄存器中的數(shù)時(shí),這個(gè)過程能確保數(shù)字的完整性。 高速暫存器RAM是由8個(gè)字節(jié)的存儲(chǔ)器組成;第一和第二個(gè)字節(jié)是溫度的顯示位。第三和第四個(gè)字節(jié)是復(fù)制TH和TL,同時(shí)第三和第四個(gè)字節(jié)的數(shù)字可以更新;第五個(gè)字節(jié)是復(fù)制配置寄存器,同時(shí)第五個(gè)字節(jié)的數(shù)字可以更新;六、七、八三個(gè)字節(jié)是計(jì)算機(jī)自身使用。用讀寄存器的命令能讀出第九個(gè)字節(jié),這個(gè)字節(jié)是對前面的八個(gè)字節(jié)進(jìn)行校驗(yàn)。 3.2.3.DS18B20高
11、速暫存存儲(chǔ)器 高速暫存存儲(chǔ)器由9個(gè)字節(jié)組成,其分配如表5所示。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得的溫度值以二字節(jié)補(bǔ)碼形式存放在 高速暫存存儲(chǔ)器的第0和第1個(gè)字節(jié)。單片機(jī)可通過單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后,數(shù)據(jù)格式如表1所示。對應(yīng)的溫度計(jì)算: 當(dāng)符號位S=0時(shí),直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1時(shí),先將補(bǔ)碼變?yōu)樵a,再計(jì)算十進(jìn)制值。表3.1是對應(yīng)的一部分溫度值。第九個(gè)字節(jié)是 冗余檢驗(yàn)字節(jié)。 表3.1 DS18B20暫存寄存器分布 根據(jù)DS18B20的通訊協(xié)議,主機(jī)(單片機(jī))控制DS18B20完成溫度轉(zhuǎn)換必須經(jīng)過三個(gè)步驟:每一次讀寫之前
12、都要對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ù)位成功。 3.2.4.DS18B20有4個(gè)主要的數(shù)據(jù)部件 光刻ROM中的64位序列號是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼。64位光刻ROM的排列是:開始8位 (28H)是產(chǎn)品類型標(biāo)號,接著的48位是該DS18B20自身的序列號,最后8位是前面56位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5
13、+X4+1)。光刻ROM的作用 是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。 DS18B20中的溫度傳感器可完成對溫度的測量,以12位轉(zhuǎn)化為例:用16位符號擴(kuò)展的二進(jìn)制補(bǔ)碼讀數(shù)形式提供,以 0.0625℃/LSB形式表達(dá),其中S為符號位。 圖3.4 DS18B20測溫原理框圖 3.2.5.DS18B20和電源的接線方式 DS18B20可以使用外部電源VDD,也可以使用內(nèi)部的寄生電源。當(dāng)VDD端口接3.0V—5.5V的電壓時(shí)是使用外部電源;當(dāng)VDD端口接地時(shí)使用了內(nèi)部的寄生電源。無論是內(nèi)部寄生電源還是外部供電
14、,I/O口線要接5KΩ左右的上拉電阻。 圖3.5 DS18B20寄生電源供電方式 此次課設(shè)我們用的是外部電源供電方式,在外部電源供電方式下,DS18B20工作電源由VDD引腳接入,此時(shí)I/O線不需要強(qiáng)上拉,不存在電源電流不足的問題,可以保證轉(zhuǎn)換精度,同時(shí)在總線上理論可以掛接任意多個(gè)DS18B20傳感器,組成多點(diǎn)測溫系統(tǒng)。注意:在外部供電的方式下,DS18B20的GND引腳不能懸空 ,否則不能轉(zhuǎn)換溫度,讀取的溫度總是85℃。 圖3.6 DS18B20外接電源供電方式 3.3. DS18B20的工作原理 DS18B20的
15、讀寫時(shí)序和測溫原理與DS1820相同,只是得到的溫度值的位數(shù)因分辨率不同而不同,且溫度轉(zhuǎn)換時(shí)的延時(shí)時(shí)間由2s 減為750ms。 DS18B20測溫原理如圖3.4所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度影響很小,用于產(chǎn)生固定頻率的脈沖信號送給計(jì)數(shù)器1。高溫度系數(shù)晶振 隨溫度變化其振蕩率明顯改變,所產(chǎn)生的信號作為計(jì)數(shù)器2的脈沖輸入。計(jì)數(shù)器1和溫度寄存器被預(yù)置在-55℃所對應(yīng)的一個(gè)基數(shù)值。計(jì)數(shù)器1對 低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行減法計(jì)數(shù),當(dāng)計(jì)數(shù)器1的預(yù)置值減到0時(shí),溫度寄存器的值將加1,計(jì)數(shù)器
16、1的預(yù)置將重新被裝入,計(jì)數(shù)器1重 新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進(jìn)行計(jì)數(shù),如此循環(huán)直到計(jì)數(shù)器2計(jì)數(shù)到0時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值即 為所測溫度。圖3中的斜率累加器用于補(bǔ)償和修正測溫過程中的非線性,其輸出用于修正計(jì)數(shù)器1的預(yù)置值。 3.3.1.DS18B20的初始化 主機(jī)首先發(fā)出一個(gè)480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖?,并在隨后的480微秒時(shí)間內(nèi)對總線進(jìn)行檢測,如果有低電平出現(xiàn)說明總線上有器件已做出應(yīng)答。若無低電平出現(xiàn)一直都是高電平說明總線上無器件應(yīng)答。 做為從器件的DS18B20在一上電后就一直在檢測總線上是否有480-960微秒
17、的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒有檢測到就一直在檢測等待。 圖3.7初始化時(shí)序圖 3.3.2.對DS18B20寫和讀 接下來就是主機(jī)發(fā)出各種操作命令,但各種操作命令都是向DS18B20寫0和寫1組成的命令字節(jié),接收數(shù)據(jù)時(shí)也是從DS18B20讀取0或1的過程。因此首先要搞清主機(jī)是如何進(jìn)行寫0、寫1、讀0和讀1的。 寫周期最少為60微秒,最長不超過120微秒。寫周期一開始做為主機(jī)先把總線拉低1微秒表示寫周期開始。隨后若主機(jī)想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,
18、然后釋放總線為高電平。若主機(jī)想寫1,在一開始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機(jī)的DS18B20則在檢測到總線被拉底后等待15微秒然后從15us到45us開始對總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。 圖3.8寫操作的時(shí)序圖 對于讀數(shù)據(jù)操作時(shí)序也分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程。讀時(shí)隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測到總線被拉低1微秒后,便開始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開
19、始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時(shí)間內(nèi)完成對總線進(jìn)行采樣檢測,采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個(gè)讀時(shí)序過程,至少需要60us才能完成 圖3.9讀操作的時(shí)序圖 DS18B20 單線通信功能是分時(shí)完成的,他有嚴(yán)格的時(shí)隙概念,如果出現(xiàn)序列混亂, 1-WIRE 器件將不響應(yīng)主機(jī),因此讀寫時(shí)序很重要。系統(tǒng)對 DS18B20 的各種操作必須按協(xié)議進(jìn)行。根據(jù) DS18B20 的協(xié)議規(guī)定,微控制器控制 DS18B20 完成溫度的轉(zhuǎn)換必須經(jīng)過以下 3個(gè)步驟 : (1)每次讀寫前對 DS18B20 進(jìn)行復(fù)位初始化。復(fù)位
20、要求主 CPU 將數(shù)據(jù)線 下拉 500us ,然后釋放, DS18B20 收到信號后等待 16us~60us 左右,然后發(fā)出60us~240us 的存在低脈沖,主 CPU 收到此信號后表示復(fù)位成功。 (2)發(fā)送一條 ROM 指令 (3)發(fā)送存儲(chǔ)器指令 表3.2 DS18B20的ROM指令集 表3.3 DS18B20的RAM指令集 現(xiàn)在我們要做的是讓DS18B20進(jìn)行一次溫度的轉(zhuǎn)換,那具體的操作就是: 1、主機(jī)先作個(gè)復(fù)位操作, 2、主機(jī)再寫跳過ROM的操作(CCH)命令, 3、然后主機(jī)接著寫個(gè)轉(zhuǎn)換溫度的操作命令,后面釋放總線至少一秒,讓DS18B20完成轉(zhuǎn)換的操作。
21、在這里要注意的是每個(gè)命令字節(jié)在寫的時(shí)候都是低字節(jié)先寫,例如CCH的二進(jìn)制為11001100,在寫到總線上時(shí)要從低位開始寫,寫的順序是“零、零、壹、壹、零、零、壹、壹”。 讀取RAM內(nèi)的溫度數(shù)據(jù)。同樣,這個(gè)操作也要接照三個(gè)步驟。 1、主機(jī)發(fā)出復(fù)位操作并接收DS18B20的應(yīng)答(存在)脈沖。 2、主機(jī)發(fā)出跳過對ROM操作的命令(CCH)。 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ù)也是低位在前的。 在這里說明一下
22、,第二步跳過對ROM操作的命令是在總線上只有一個(gè)器件時(shí),為節(jié)省時(shí)間而簡化的操作,若總線上不止一個(gè)器件,那么跳過ROM操作命令將會(huì)使幾器件同時(shí)響應(yīng),這樣就會(huì)出現(xiàn)數(shù)據(jù)沖突。 3.3.3.DS18B20在應(yīng)用中應(yīng)注意的事項(xiàng) DS1820雖然具有測溫系統(tǒng)簡單、測溫精度高、連接方便、占用口線少等優(yōu)點(diǎn),但在實(shí)際應(yīng)用中也應(yīng)注意以下幾方面的問題: 1. 較小的硬件開銷需要相對復(fù)雜的軟件進(jìn)行補(bǔ)償,由于DS1820與微處理器間采用串行數(shù)據(jù)傳送,因此 ,在對DS1820進(jìn)行讀寫編程時(shí),必須嚴(yán)格的保證讀寫時(shí)序,否則將無法讀取測溫結(jié)果。在使用PL/M、C等高級語言進(jìn)行系統(tǒng)程序設(shè)計(jì)時(shí),對 DS1820操作部分最
23、好采用匯編語言實(shí)現(xiàn)。 2. 在DS1820的有關(guān)資料中均未提及單總線上所掛DS1820數(shù)量問題,容易使人誤認(rèn)為可以掛任意多個(gè) DS1820,在實(shí)際應(yīng)用中并非如此。當(dāng)單總線上所掛DS1820超過8個(gè)時(shí),就需要解決微處理器的總線驅(qū)動(dòng)問題,這一點(diǎn)在進(jìn)行多點(diǎn)測溫系統(tǒng)設(shè)計(jì)時(shí) 要加以注意。 3. 連接DS1820的總線電纜是有長度限制的。試驗(yàn)中,當(dāng)采用普通信號電纜傳輸長度超過50m時(shí),讀取的 測溫?cái)?shù)據(jù)將發(fā)生錯(cuò)誤。當(dāng)將總線電纜改為雙絞線帶屏蔽電纜時(shí),正常通訊距離可達(dá)150m,當(dāng)采用每米絞合次數(shù)更多的雙絞線帶屏蔽電纜時(shí),正 常通訊距離進(jìn)一步加長。這種情況主要是由總線分布電容使信號波形產(chǎn)生畸變造成的。因此,
24、在用DS1820進(jìn)行長距離測溫系統(tǒng)設(shè)計(jì)時(shí)要充分考 慮總線分布電容和阻抗匹配問題。 4. 在DS1820測溫程序設(shè)計(jì)中,向DS1820發(fā)出溫度轉(zhuǎn)換命令后,程序總要等待DS1820的返回信號,一旦 某個(gè)DS1820接觸不好或斷線,當(dāng)程序讀該DS1820時(shí),將沒有返回信號,程序進(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行DS1820硬件連接和軟件設(shè)計(jì)時(shí)也要給予 一定的重視。 測溫電纜線建議采用屏蔽4芯雙絞線,其中一對線接地線與信號線,另一組接VCC和地線,屏蔽層在源端單點(diǎn)接地 3.4. AT89S52單片機(jī)簡介 AT89S52為 ATMEL 所生產(chǎn)的一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Fl
25、sah存儲(chǔ)器。 3.4.1. AT89S52主要功能列舉如下 1、擁有靈巧的8位CPU和在系統(tǒng)可編程Flash 2、晶片內(nèi)部具時(shí)鐘振蕩器(傳統(tǒng)最高工作頻率可至 12MHz) 3、內(nèi)部程序存儲(chǔ)器(ROM)為 8KB 4、內(nèi)部數(shù)據(jù)存儲(chǔ)器(RAM)為 256字節(jié) 5、32 個(gè)可編程I/O 口線 6、8 個(gè)中斷向量源 7、三個(gè) 16 位定時(shí)器/計(jì)數(shù)器 8、三級加密程序存儲(chǔ)器 9、全雙工UART串行通道 3.4.2. AT89S52各引腳功能介紹 VCC: AT89S52電源正端輸入,接+5V。 VSS: 電源地端。 XTAL1: 單芯片系統(tǒng)時(shí)鐘的反相放大器輸入端。
26、XTAL2: 系統(tǒng)時(shí)鐘的反相放大器輸出端,一般在設(shè)計(jì)上只要在 XTAL1 和 XTAL2 上接上一只石英振蕩晶體系統(tǒng)就可以動(dòng)作了,此外可以在兩引腳與地之間加入一 20PF 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機(jī)。 RESET: AT89S52的重置引腳,高電平動(dòng)作,當(dāng)要對晶片重置時(shí),只要對此引腳電平提升至高電平并保持兩個(gè)機(jī)器周期以上的時(shí)間,AT89S51便能完成系統(tǒng)重置的各項(xiàng)動(dòng)作,使得內(nèi)部特殊功能寄存器之內(nèi)容均被設(shè)成已知狀態(tài),并且至地址0000H處開始讀入程序代碼而執(zhí)行程序。 EA/Vpp: "EA"為英文"External Access"的縮寫,表示存取外部程序代碼之意,低
27、電平動(dòng)作,也就是說當(dāng)此引腳接低電平后,系統(tǒng)會(huì)取用外部的程序代碼(存于外部EPROM中)來執(zhí)行程序。因此在8031及8032中,EA引腳必須接低電平,因?yàn)槠鋬?nèi)部無程序存儲(chǔ)器空間。如果是使用 8751 內(nèi)部程序空間時(shí),此引腳要接成高電平。此外,在將程序代碼燒錄至8751內(nèi)部EPROM時(shí),可以利用此引腳來輸入21V的燒錄高壓(Vpp)。 ALE/PROG: ALE是英文"Address Latch Enable"的縮寫,表示地址鎖存器啟用信號。AT89S52可以利用這支引腳來觸發(fā)外部的8位鎖存器(如74LS373),將端口0的地址總線(A0~A7)鎖進(jìn)鎖存器中,因?yàn)锳T89S52是以多工的方式送
28、出地址及數(shù)據(jù)。平時(shí)在程序執(zhí)行時(shí)ALE引腳的輸出頻率約是系統(tǒng)工作頻率的1/6,因此可以用來驅(qū)動(dòng)其他周邊晶片的時(shí)基輸入。此外在燒錄8751程序代碼時(shí),此引腳會(huì)被當(dāng)成程序規(guī)劃的特殊功能來使用。 PSEN: 此為"Program Store Enable"的縮寫,其意為程序儲(chǔ)存啟用,當(dāng)8051被設(shè)成為讀取外部程序代碼工作模式時(shí)(EA=0),會(huì)送出此信號以便取得程序代碼,通常這支腳是接到EPROM的OE腳。AT89S52可以利用PSEN及RD引腳分別啟用存在外部的RAM與EPROM,使得數(shù)據(jù)存儲(chǔ)器與程序存儲(chǔ)器可以合并在一起而共用64K的定址范圍。 PORT0(P0.0~P0.7): 端口0是一個(gè)
29、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~A7,再配合端口2所送出的A8~A15合成一完整的16位地址總線,而定址到64K的外部存儲(chǔ)器空間。 PORT2(P2.0~P2.7): 端口2是具有內(nèi)部提升電路的雙向I
30、/O端口,每一個(gè)引腳可以推動(dòng)4個(gè)LS的TTL負(fù)載,若將端口2的輸出設(shè)為高電平時(shí),此端口便能當(dāng)成輸入端口來使用。P2除了當(dāng)做一般I/O端口使用外,若是在AT89S52擴(kuò)充外接程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),也提供地址總線的高字節(jié)A8~A15,這個(gè)時(shí)候P2便不能當(dāng)做I/O來使用了。 PORT1(P1.0~P1.7): 端口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.1可以有T2EX功能,可以做外部中斷輸入的觸發(fā)腳位。 P
31、ORT3(P3.0~P3.7): 端口3也具有內(nèi)部提升電路的雙向I/O端口,其輸出緩沖器可以推動(dòng)4個(gè)TTL負(fù)載,同時(shí)還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計(jì)時(shí)計(jì)數(shù)控制及外部數(shù)據(jù)存儲(chǔ)器內(nèi)容的讀取或?qū)懭肟刂频裙δ堋? 其引腳分配如下: P3.0:RXD,串行通信輸入。 P3.1:TXD,串行通信輸出。 P3.2:INT0,外部中斷0輸入。 P3.3:INT1,外部中斷1輸入。 P3.4:T0,計(jì)時(shí)計(jì)數(shù)器0輸入。 P3.5:T1,計(jì)時(shí)計(jì)數(shù)器1輸入。 P3.6:WR:外部數(shù)據(jù)存儲(chǔ)器的寫入信號。 P3.7:RD,外部數(shù)據(jù)存儲(chǔ)器的讀取信號。 RST:復(fù)位輸入。當(dāng)
32、振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 /PSEN:外部程序存儲(chǔ)器的
33、選通信號。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2:來自反向振蕩器的輸出。 第四章:繪制硬件電路圖并對硬件電路圖進(jìn)行說明 4.1.PROTUEL軟件簡介
34、 早期的PROTEL主要作為印制板自動(dòng)布線工具使用,運(yùn)行在DOS環(huán)境,對硬件的要求很低,在無硬盤286機(jī)的1M內(nèi)存下就能運(yùn)行,但它的功能也較少,只有電原理圖繪制與印制板設(shè)計(jì)功能,其印制板自動(dòng)布線的布通率也低,而現(xiàn)今的PROTEL已發(fā)展到PROTEL99(網(wǎng)絡(luò)上可下載到它的測試板),是個(gè)龐大的EDA軟件,完全安裝有200多M,它工作在WINDOWS95環(huán)境下,是個(gè)完整的板級全方位電子設(shè)計(jì)系統(tǒng),它包含了電路原理圖繪制、模擬電路與數(shù)字電路混合信號仿真、多層印制電路板設(shè)計(jì)(包含印制電路板自動(dòng)布線)、可編程邏輯器件設(shè)計(jì)、圖表生成、電子表格生成、支持宏操作等功能,并具有Client/Server(客戶/服
35、務(wù)器)體系結(jié)構(gòu),同時(shí)還兼容一些其它設(shè)計(jì)軟件的文件格式,如ORCAD,PSPICE,EXCEL等,其多層印制線路板的自動(dòng)布線可實(shí)現(xiàn)高密度PCB的100%布通率。在國內(nèi)PROTEL軟件較易買到,有關(guān)PROTEL軟件和使用說明的書也有很多,這為它的普及提供了基礎(chǔ)。想更多地了解PROTEL的軟件功能或者下載PROTEL99的試用版,可以在INTERNET上。 4.2.PROTUEL軟件特色 Protel99 SE共分5個(gè)模塊,分別是原理圖設(shè)計(jì)、PCB設(shè)計(jì)(包含信號完整性分析)、自動(dòng)布線器、原理圖混合信號仿真、PLD設(shè)計(jì)。 以下介紹一些Protel99SE的部分最新功能: 1,可生成30多種格式的
36、電氣連接網(wǎng)絡(luò)表; 2,強(qiáng)大的全局編輯功能; 3,在原理圖中選擇一級器件,PCB中同樣的器件也將被選中; 4,同時(shí)運(yùn)行原理圖和PCB,在打開的原理圖和PCB圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡(luò) 5,既可以進(jìn)行正向注釋元器件標(biāo)號(由原理圖到PCB),也可以進(jìn)行反向注釋(由PCB到原理圖),以保持電氣原理圖和PCB在設(shè)計(jì)上的一致性; 6,滿足國際化設(shè)計(jì)要求(包括國標(biāo)標(biāo)題欄輸出,GB4728國標(biāo)庫); * 方便易用的數(shù)?;旌戏抡妫嫒軸PICE 3f5); , 7,方便的打印預(yù)覽功能,不用修改PCB文件就可以直接控制打印結(jié)果; 8,獨(dú)特
37、的3D顯示可以在制板之前看到裝配事物的效果; 9,強(qiáng)大的CAM處理使您輕松實(shí)現(xiàn)輸出光繪文件、材料清單、鉆孔文件、貼片機(jī)文件、測試點(diǎn)報(bào)告等; 在原理圖部分,新增加“靈巧粘帖”可以將一些不同的對象拷貝到原理圖當(dāng)中,比如一些網(wǎng)絡(luò)標(biāo)號, 一頁圖紙的BOM表,都可以拷貝粘帖到原理圖當(dāng)中。原理圖文件切片,多個(gè)器件集體操作,文本筐的直接編輯,箭頭的添加,器件精確移動(dòng),總線走線,自動(dòng)網(wǎng)標(biāo)選擇等! 強(qiáng)大的前端將多層次、多通道的原理圖輸入、VHDL開發(fā)和功能仿真、布線前后的信號完整性分析功能。在信號仿真部分,提供完善的混合信號仿真,在對XSPICE 標(biāo)準(zhǔn)的支持之外,還支持對Pspice模型和電路的仿真
38、。對FPGA設(shè)計(jì)提供了豐富的IP內(nèi)核,包括各種處理器、存儲(chǔ)器、外設(shè)、接口、以及虛擬儀器 。 在PCB部分,除了Protel2004中的多通道復(fù)制;實(shí)時(shí)的、阻抗控制布線功能;SitusTM自動(dòng)布線器等新功能以外,Altium Designer 6.0還著重在:差分對布線,F(xiàn)PGA器件差分對管腳的動(dòng)態(tài)分配, PCB和FPGA之間的全面集成,從而實(shí)現(xiàn)了自動(dòng)引腳優(yōu)化和非凡的布線效果。還有PCB文件切片,PCB多個(gè)器件集體操作,在PCB文件中支持多國語言(中文、英文、德文、法文、日文),任意字體和大小的漢字字符輸入,光標(biāo)跟隨在線信息顯示功能,光標(biāo)點(diǎn)可選器件列表,復(fù)雜BGA器件的多層自動(dòng)扇出,提供了對高
39、密度封裝(如BGA)的交互布線功能, 總線布線功能,器件精確移動(dòng),快速鋪銅等功能。 圖4.1 PROTEL原理圖 圖4.2 PCB板 第五章:繪制軟件流程圖和對軟件流程圖的介紹 首先啟動(dòng)系統(tǒng),然后初始化DS18B20,初始化的目的是檢測單片機(jī)的外部連接的DS18B20和單片機(jī)的連接狀態(tài)是否良好并且檢測DS18B20是否處于正常工作狀態(tài)。 DS18B20處于正常工作的狀態(tài)并且單片機(jī)得到DS18B20的應(yīng)答,那么接這就跳過ROM,跳過對ROM操作的命令是在總線上只有一個(gè)器件時(shí),為節(jié)省時(shí)間而簡化的操作,若總線上不止一個(gè)器件,那么跳過ROM操作命令將會(huì)使幾器件同時(shí)響應(yīng),這樣就會(huì)出
40、現(xiàn)數(shù)據(jù)沖突。 接著單片機(jī)發(fā)出溫度轉(zhuǎn)換命令,DS18B20開始進(jìn)行溫度的檢測和轉(zhuǎn)換,將檢測的結(jié)果顯示在數(shù)碼管上,這時(shí)單片機(jī)根據(jù)DS18B20傳來的數(shù)據(jù)進(jìn)行判斷,如果檢測的溫度大于設(shè)定的最高溫度或低于設(shè)定的最低溫度,此時(shí)進(jìn)行報(bào)警,報(bào)警后返回初始化。如果沒有超過設(shè)定溫度直接返回初始化。 圖5.1 流程圖 第六章:上機(jī)調(diào)試及運(yùn)行結(jié)果 6.1.對proteus的簡介 軟件是英國Labcenter electronics公司出版的EDA工具軟件。它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機(jī)及
41、外圍器件。它是目前最好的仿真單片機(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ì)平臺,其處理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年即將增加Cortex和DSP系列處理器,并持續(xù)增加其他
42、系列處理器模型。在編譯方面,它也支持IAR、Keil和MPLAB等多種編譯器 6.2.proteus功能特點(diǎn) 原理布圖 自動(dòng)或人工布線 SPICE電路仿真 革命性的特點(diǎn) (1)互動(dòng)的電路仿真 用戶甚至可以實(shí)時(shí)采用諸如RAM,ROM,鍵盤,馬達(dá),LED,LCD,AD/DA,部分SPI器件,部分IIC器件。 (2)仿真處理器及其外圍電路 可以仿真51系列、AVR、PIC、ARM、等常用主流單片機(jī)。還可以直接在基于原理圖的虛擬原型 上編程,再配合顯示及輸出,能看到運(yùn)行后輸入輸出的效果。配合系統(tǒng)配置的虛擬邏輯分析儀、示波器等,Proteus建立了完備的電子設(shè)計(jì)開發(fā)環(huán)境。 6.
43、3.電路仿真 在PROTEUS繪制好原理圖后,調(diào)入已編譯好的目標(biāo)代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模擬的實(shí)物運(yùn)行狀態(tài)和過程。 PROTEUS不僅可將許多單片機(jī)實(shí)例功能形象化,也可將許多單片機(jī)實(shí)例運(yùn)行過程形象化。前者可在相當(dāng)程度上得到實(shí)物演示實(shí)驗(yàn)的效果,后者則是實(shí)物演示實(shí)驗(yàn)難以達(dá)到的效果。 它的元器件、連接線路等卻和傳統(tǒng)的單片機(jī)實(shí)驗(yàn)硬件高度對應(yīng)。這在相當(dāng)程度上替代了傳統(tǒng)的單片機(jī)實(shí)驗(yàn)教學(xué)的功能,例:元器件選擇、電路連接、電路檢測、電路修改、軟件調(diào)試、運(yùn)行結(jié)果等。 由于PROTEUS提供了實(shí)驗(yàn)室無法相比的大量的元器件庫,提供了修改電路設(shè)計(jì)的靈活性、提供了實(shí)驗(yàn)室在數(shù)量、質(zhì)
44、量上難以相比的虛擬儀器、儀表,因而也提供了培養(yǎng)學(xué)生實(shí)踐精神、創(chuàng)造精神的平臺。 隨著科技的發(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)用。 使用Proteus 軟件進(jìn)行單片機(jī)系統(tǒng)仿真設(shè)計(jì), 是虛擬仿真技術(shù)和計(jì)算機(jī)多媒體技術(shù)相結(jié)合的綜合運(yùn)用,有利于培養(yǎng)學(xué)生的電路設(shè)計(jì)能力及仿真軟件的操作能力;實(shí)踐證明,在使用 Proteus 進(jìn)行系統(tǒng)仿真開發(fā)成功之后再進(jìn)行實(shí)際制作,能極大提高單片機(jī)系統(tǒng)設(shè)計(jì)效率。因此,Proteus 有較高
45、的推廣利用價(jià)值。 6.4.調(diào)試遇到的問題分析 我們在調(diào)試的過程中遇到了很多問題,整個(gè)調(diào)試的過程實(shí)際上就是解決這些問題的過程。 首先我們仿真的時(shí)候我們發(fā)現(xiàn)數(shù)碼管根本不會(huì)顯示,我們很失望,后來經(jīng)過分析發(fā)現(xiàn)三極管接反了,本來是三極管的發(fā)射極與集成數(shù)碼管的位相連接,集電極接電源,而我們正好接反了,后來改正后數(shù)碼管可以顯示了。 接著我們遇到的問題就是我們的數(shù)碼管顯示錯(cuò)誤,我們認(rèn)真的檢查后發(fā)現(xiàn)我們的程序和所用的數(shù)碼管不一致,我們程序是共陽極的,但是我們在選器件的時(shí)候選成了共陰極,后來我們改正了錯(cuò)誤。 改完后發(fā)現(xiàn)數(shù)碼管的四位數(shù)字顯示的順序正好相反,我們分析后覺得是單片機(jī)和集成數(shù)碼管的位連接的時(shí)候位
46、接反了。 我們在調(diào)試的過程中是把改我們的原理圖和改程序結(jié)合者進(jìn)行調(diào)試的最終達(dá)到了我們的期望得到的結(jié)果。 6.5. PRTEUS原理圖 圖6.1 PROTEUS仿真圖 圖6.2 焊接產(chǎn)品 總結(jié) 本次課程設(shè)計(jì)的寫作是在老師的指導(dǎo)下進(jìn)行的。針對在寫作過程中遇到許多的難題老師都給以認(rèn)真的解釋,為此,向老師表示最衷心的謝意。我在這次課程設(shè)計(jì)中,學(xué)會(huì)了怎么去發(fā)現(xiàn)問題,解決問題。遇到不明白的問題都會(huì)積極的去詢問老師,或者去找尋相關(guān)的資料。從中學(xué)到了很多知識。這次課程設(shè)計(jì)使我們有機(jī)會(huì)把我們的課堂理論知識運(yùn)用到實(shí)際生活中,貼近生活,實(shí)現(xiàn)我們的人生價(jià)值。并且通過對知識的綜合利用,加入個(gè)人的
47、分析和比較,加深了了我們對理論知識的理解和運(yùn)用。
參考文獻(xiàn)
【1】倪曉軍 單片機(jī)原理與接口技術(shù) 北京:清華大學(xué)大學(xué)出版社
2009.9
【2】 廖常初 PLC 編程及應(yīng)用 北京:機(jī)械工業(yè)出版社
2010.1
【3】 胡學(xué)林 可編程控制器教程 北京:電子工業(yè)出版社
2008.6
附錄
#include
48、 unsigned int #define uchar unsigned char //宏定義 sbit p34=P2^4; sbit p35=P2^5; sbit p36=P2^6; sbit dp=P0^7; sbit p37=P2^7; sbit DQ=P2^2; //定義DS18B20總線I/O sbit SET=P3^1; //定義選擇報(bào)調(diào)整警溫度上限和下限(1為上限,0為下限) /****P3.2和P3.3為調(diào)整溫度報(bào)警增加鍵和減少鍵******/ sbit LING=P2^0; //定義響鈴 signed char m; //溫
49、度值全局變量 bit sign=0; //外部中斷狀態(tài)標(biāo)志 signed char shangxian=38; //上限報(bào)警溫度,默認(rèn)值為38 signed char xiaxian=6; //下限報(bào)警溫度,默認(rèn)值為5 uchar code LEDData[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf}; /*****延時(shí)子程序*****/ void Delay(uint i) { while( i-- ); } /*****初始化DS18B20*****/ void Ini
50、t_DS18B20(void) { unsigned char x=0; DQ=1; Delay(8); //稍做延時(shí) DQ=0; //單片機(jī)將DQ拉低 Delay(80); //精確延時(shí),大于480us DQ=1; //拉高總線 Delay(14); x=DQ; //稍做延時(shí)后,如果x=0則初始化成功,x=1則初始化失敗 Delay(20); } /*****讀一個(gè)字節(jié)*****/ unsigned char ReadOneChar(void) {
51、 unsigned char i=0; unsigned char dat=0; for (i=8;i>0;i--) { DQ=0; // 給脈沖信號 dat>>=1; DQ=1; // 給脈沖信號 if(DQ) dat|=0x80; Delay(4); } return(dat); } /*****寫一個(gè)字節(jié)*****/ void WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0
52、; i--) { DQ=0; DQ=dat&0x01; Delay(5); DQ=1; dat>>=1; } } void Tmpchange(void) //發(fā)送溫度轉(zhuǎn)換命令 { Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0x44); //啟動(dòng)溫度轉(zhuǎn)換 } /*****讀取溫度*****/ unsigned int ReadTemperature(void) { unsigned char a=0; u
53、nsigned char b=0; unsigned int t=0; float tt=0; Tmpchange(); Init_DS18B20(); WriteOneChar(0xCC); //跳過讀序號列號的操作 WriteOneChar(0xBE); //讀取溫度寄存器 a=ReadOneChar(); //讀低8位 b=ReadOneChar(); //讀高8位 t=b; t<<=8; t=t|a; tt=t*0.0625; t= tt*100+0.5; //放大10倍輸出并四舍五
54、入 return(t); } /*****顯示開機(jī)初始化等待畫面*****/ Disp_init() { P0 = 0x80; //顯示- p34=1;p35=0;p36=0;p37=0; Delay(200); P0 = 0x80; p34=0;p35=1;p36=0;p37=0; Delay(200); P0 = 0x80; p34=0;p35=0;p36=1;p37=0; Delay(200); P0 = 0x80; p34=0;p35=0;p36=0;p37=1; Delay(200); P0 = 0
55、x80;
}
/*****顯示溫度子程序*****/
Disp_Temperature() //顯示溫度
{
uint a,b,c,d,e;
e=ReadTemperature(); //獲取溫度值
a=e/1000; //計(jì)算得到十位數(shù)字
b=e/100-a*10; //計(jì)算得到個(gè)位數(shù)字
d=e%10; //計(jì)算得到小數(shù)點(diǎn)后兩位
c=(e%100)/10; //計(jì)算得到小數(shù)點(diǎn)后一位
m=e/100;
if(m>shangxian || m 56、n) LING=1; //溫度不在范圍內(nèi)報(bào)警
else LING=0;
p34=0;p35=0;p36=0;p37=0;
P0 =LEDData[d]; //顯示小數(shù)點(diǎn)后兩位
p34=1;p35=0;p36=0;p37=0;
Delay(300);
p34=0;p35=0;p36=0;p37=0;
P0 =LEDData[c]; //顯示小數(shù)點(diǎn)后一位
p34=0;p35=1;p36=0;p37=0;
Delay(300);
p34=0;p35=0;p36=0;p37=0;
P0 =LEDData[b]; // 57、顯示個(gè)位
dp=0;
p34=0;p35=0;p36=1;p37=0;
Delay(300);
p34=0;p35=0;p36=0;p37=0;
P0 =LEDData[a]; //顯示十位
p34=0;p35=0;p36=0;p37=1;
Delay(300);
p34=0;p35=0;p36=0;p37=0; //關(guān)閉顯示
}
disptiaozheng()
{
uchar f,g,j,k;
f=shangxian/10;
g=shangxian%10;
j=xiaxian/10;
k=xiaxi 58、an%10;
p34=0;p35=0;p36=0;p37=0;
P0 =0xc0; //顯示0
p34=1;p35=0;p36=0;p37=0;
Delay(200);
p34=0;p35=0;p36=0;p37=0;
P0 =0xc0; //顯示0
p34=0;p35=1;p36=0;p37=0;
Delay(200);
p34=0;p35=0;p36=0;p37=0;
if(SET==1)
{
P0 =LEDData[g];
dp=0; //顯示上限溫度個(gè)位
}
else
{
59、P0 =LEDData[k];
dp=0;
}
p34=0;p35=0;p36=1;p37=0;
Delay(200);
p34=0;p35=0;p36=0;p37=0;
if(SET==1) P0 =LEDData[f]; //顯示上限溫度十位
else
{
if(f==0) P0=0x00; //不顯示下限溫度十位
else P0 =LEDData[j]; //顯示下限溫度十位
}
p34=0;p35=0;p36=0;p37=1;
Delay(200);
p34=0;p35=0;p36=0;p37=0; 60、 //關(guān)閉顯示
Delay(20);
}
/*****外部中斷0服務(wù)程序*****/
void int0(void) interrupt 0
{
EX0=0; //關(guān)外部中斷0
sign=1;
if(SET==1) shangxian++;
else xiaxian++;
Delay(500);
EX0=1;
}
/*****外部中斷1服務(wù)程序*****/
void int1(void) interrupt 2
{
EX1=0; //關(guān)外部中斷0
sign=1;
if(SET==1) sha 61、ngxian--;
else xiaxian--;
Delay(500);
EX1=1;
}
/*****主函數(shù)*****/
void main(void)
{
uint z;
IT0=1;
IT1=1;
EX0=1;
EX1=1;
EA=1;
ReadTemperature();
LING=0;
for(z=0;z<100;z++)
{
Disp_init();
}
while(1)
{
Disp_Temperature();
if(sign==1)
{
for(z=0;z<300;z++)
disptiaozheng();
sign=0;
}
}
}
參考文獻(xiàn)
【1】倪曉軍 單片機(jī)原理與接口技術(shù) 北京:清華大學(xué)大學(xué)出版社
2009.9
【2】 霍孟友 王愛群 單片機(jī)原理與應(yīng)用學(xué)習(xí)概要及題解 機(jī)械工業(yè)出版社
2005.3
【3】 賈好來 MCS-51單片機(jī)原理及應(yīng)用 機(jī)械工業(yè)出版社
2007.6
34
- 溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 6.煤礦安全生產(chǎn)科普知識競賽題含答案
- 2.煤礦爆破工技能鑒定試題含答案
- 3.爆破工培訓(xùn)考試試題含答案
- 2.煤礦安全監(jiān)察人員模擬考試題庫試卷含答案
- 3.金屬非金屬礦山安全管理人員(地下礦山)安全生產(chǎn)模擬考試題庫試卷含答案
- 4.煤礦特種作業(yè)人員井下電鉗工模擬考試題庫試卷含答案
- 1 煤礦安全生產(chǎn)及管理知識測試題庫及答案
- 2 各種煤礦安全考試試題含答案
- 1 煤礦安全檢查考試題
- 1 井下放炮員練習(xí)題含答案
- 2煤礦安全監(jiān)測工種技術(shù)比武題庫含解析
- 1 礦山應(yīng)急救援安全知識競賽試題
- 1 礦井泵工考試練習(xí)題含答案
- 2煤礦爆破工考試復(fù)習(xí)題含答案
- 1 各種煤礦安全考試試題含答案