版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)課程設(shè)計(jì)報(bào)告 課題內(nèi)容 基于80c31的數(shù)字溫度計(jì)設(shè)計(jì) 專(zhuān)業(yè)班級(jí) 05電子1班 姓名 時(shí) 間 16 周 18 周 指導(dǎo)教師 2008 年 1月17日1 設(shè)計(jì)要求基本范圍-50-110精度誤差小于0.5led數(shù)碼直讀顯示2 擴(kuò)展功能實(shí)現(xiàn)語(yǔ)音報(bào)數(shù)可以任意設(shè)定溫度的上下限報(bào)警功能數(shù)字溫度計(jì)摘要:隨著時(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)警。 關(guān)鍵詞:?jiǎn)纹瑱C(jī),數(shù)字控制,溫度計(jì), ds18b20,80c31,74ls37
2、31 引言隨著人們生活水平的不斷提高,單片機(jī)控制無(wú)疑是人們追求的目標(biāo)之一,它所給人帶來(lái)的方便也是不可否定的,其中數(shù)字溫度計(jì)就是一個(gè)典型的例子,但人們對(duì)它的要求越來(lái)越高,要為現(xiàn)代人工作、科研、生活、提供更好的更方便的設(shè)施就需要從數(shù)單片機(jī)技術(shù)入手,一切向著數(shù)字化控制,智能化控制方向發(fā)展。本設(shè)計(jì)所介紹的數(shù)字溫度計(jì)與傳統(tǒng)的溫度計(jì)相比,具有讀數(shù)方便,測(cè)溫范圍廣,測(cè)溫準(zhǔn)確,其輸出溫度采用數(shù)字顯示,主要用于對(duì)測(cè)溫比較準(zhǔn)確的場(chǎng)所,或科研實(shí)驗(yàn)室使用,該設(shè)計(jì)控制器使用單片機(jī)80c31,測(cè)溫傳感器使用ds18b20,用3位共陽(yáng)極led數(shù)碼管以串口傳送數(shù)據(jù),實(shí)現(xiàn)溫度顯示,能準(zhǔn)確達(dá)到以上要求。2 總體設(shè)計(jì)方案2.1數(shù)字
3、溫度計(jì)設(shè)計(jì)方案論證2.1.1方案一由于本設(shè)計(jì)是測(cè)溫電路,可以使用熱敏電阻之類(lèi)的器件利用其感溫效應(yīng),在將隨被測(cè)溫度變化的電壓或電流采集過(guò)來(lái),進(jìn)行a/d轉(zhuǎn)換后,就可以用單片機(jī)進(jìn)行數(shù)據(jù)的處理,在顯示電路上,就可以將被測(cè)溫度顯示出來(lái),這種設(shè)計(jì)需要用到a/d轉(zhuǎn)換電路,感溫電路比較麻煩。2.1.2 方案二 進(jìn)而考慮到用溫度傳感器,在單片機(jī)電路設(shè)計(jì)中,大多都是使用傳感器,所以這是非常容易想到的,在傳統(tǒng)的模擬信號(hào)遠(yuǎn)距離溫度測(cè)量系統(tǒng)中,需要很好的解決引線誤差補(bǔ)償問(wèn)題、多點(diǎn)測(cè)量切換誤差問(wèn)題和放大電路零點(diǎn)漂移誤差問(wèn)題等技術(shù)問(wèn)題,才能夠達(dá)到較高的測(cè)量精度。另外一般監(jiān)控現(xiàn)場(chǎng)的電磁環(huán)境都非常惡劣,各種干擾信號(hào)較強(qiáng),模擬溫
4、度信號(hào)容易受到干擾而產(chǎn)生測(cè)量誤差,影響測(cè)量精度。因此,在溫度測(cè)量系統(tǒng)中,采用抗干擾能力強(qiáng)的新型數(shù)字溫度傳感器是解決這些問(wèn)題的最有效方案,新型數(shù)字溫度傳感器ds18b20具有體積更小、精度更高、適用電壓更寬、采用一線總線、可組網(wǎng)等優(yōu)點(diǎn),在實(shí)際應(yīng)用中取得了良好的測(cè)溫效果。所以可以采用一只溫度傳感器ds18b20,此傳感器,可以很容易直接讀取被測(cè)溫度值,進(jìn)行轉(zhuǎn)換,就可以滿足設(shè)計(jì)要求。從以上兩種方案,很容易看出,采用方案二,電路比較簡(jiǎn)單,軟件設(shè)計(jì)也比較簡(jiǎn)單,故采用了方案二。2.2方案二的總體設(shè)計(jì)框圖溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖1所示,控制器采用單片機(jī)80c31,溫度傳感器采用ds18b20,用3位
5、led數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。主 控 制 器led顯 示溫 度 傳 感 器單片機(jī)復(fù)位時(shí)鐘振蕩報(bào)警點(diǎn)按鍵調(diào)整 圖1總體設(shè)計(jì)方框圖2.2.1 主控制器 1主要特性: 80c31內(nèi)置中央處理單元、128字節(jié)內(nèi)部數(shù)據(jù)存儲(chǔ)器ram、32個(gè)雙向輸入/輸出(i/o)口、2個(gè)16位定時(shí)/計(jì)數(shù)器和5個(gè)兩級(jí)中斷結(jié)構(gòu),一個(gè)全雙工串行通信口,片內(nèi)時(shí)鐘振蕩電路。但80c31片內(nèi)并無(wú)程序存儲(chǔ)器,需外接rom。2管腳說(shuō)明:vcc:供電電壓。gnd:接地。p0口:p0口為一個(gè)8位漏級(jí)開(kāi)路雙向i/o口,每腳可吸收8ttl門(mén)電流。當(dāng)p1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。p0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義
6、為數(shù)據(jù)/地址的第八位。在fiash編程時(shí),p0 口作為原碼輸入口,當(dāng)fiash進(jìn)行校驗(yàn)時(shí),p0輸出原碼,此時(shí)p0外部必須被拉高。p1口:p1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門(mén)電流。p1口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗(yàn)時(shí),p1口作為第八位地址接收。 p2口:p2口為一個(gè)內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個(gè)ttl門(mén)電流,當(dāng)p2口被寫(xiě)“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),p2口的管腳被外部拉低,將輸出電流。這是
7、由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),p2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。p3口:p3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個(gè)ttl門(mén)電流。當(dāng)p3口寫(xiě)入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。p3口也可作為at89c51的一些特殊功能口,如下表所示:口管腳 備選功能p3.0 rxd(串行輸入口
8、)p3.1 txd(串行輸出口)p3.2 /int0(外部中斷0)p3.3 /int1(外部中斷1)p3.4 t0(記時(shí)器0外部輸入)p3.5 t1(記時(shí)器1外部輸入)p3.6 /wr(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)p3.7 /rd(外部數(shù)據(jù)存儲(chǔ)器讀選通)p3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持rst腳兩個(gè)機(jī)器周期的高電平時(shí)間。ale/prog:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時(shí),ale端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸
9、出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時(shí), ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無(wú)效。/psen:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/psen有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/psen信號(hào)將不出現(xiàn)。/ea/vpp:當(dāng)/ea保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000h-ffffh),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/ea將內(nèi)部鎖定為reset;當(dāng)/
10、ea端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。xtal2:來(lái)自反向振蕩器的輸出。3振蕩器特性xtal1和xtal2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,xtal2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過(guò)一個(gè)二分頻觸發(fā)器,因此對(duì)外部時(shí)鐘信號(hào)的脈寬無(wú)任何要求,但必須保證脈沖的高低電平要求的寬度。4芯片擦除 80c31還可工作于低功耗模式,可通過(guò)兩種軟件選擇空閑和掉電模式。在空閑模式下凍結(jié)cpu而ram定時(shí)器、
11、串行口和中斷系統(tǒng)維持其功能。掉電模式下,保存ram數(shù)據(jù),時(shí)鐘振蕩停止,同時(shí)停止芯片內(nèi)其它功能。8031 單片機(jī)內(nèi)部只有數(shù)據(jù)存儲(chǔ)器,而沒(méi)有程序存儲(chǔ)器,它作為一般的最小應(yīng)用系統(tǒng)也必須要進(jìn)行外部程序存儲(chǔ)器的擴(kuò)展,擴(kuò)展中需要使用三態(tài)緩沖芯片74ls373??v橫比較存儲(chǔ)器的各個(gè)方面的特點(diǎn),我選用2864e2 prom 進(jìn)行擴(kuò)展,e2 prom 是電可擦除可編程只讀存儲(chǔ)器,其突出優(yōu)點(diǎn)是能夠在線擦除和改寫(xiě),無(wú)須像eprom 那樣必用紫外線照射才能擦除。較新的e2 prom 產(chǎn)品在寫(xiě)入時(shí)能自動(dòng)完成擦除,且不再需要專(zhuān)用的編程電源,可以直接使用單片機(jī)系統(tǒng)的+5v 電源。e2 prom 既具有rom 的非易失性的優(yōu)
12、點(diǎn),又能像ram 一樣隨機(jī)地進(jìn)行讀/寫(xiě),每個(gè)單元可以重復(fù)進(jìn)行1 萬(wàn)次改寫(xiě),保留信息的時(shí)間長(zhǎng)達(dá)20 年,不存在eprom 在光照下出現(xiàn)信息緩慢丟失的問(wèn)題。e2 prom 既可以擴(kuò)展為片外eprom,也可以擴(kuò)展為片外ram。它使單片機(jī)系統(tǒng)的設(shè)計(jì),特別是調(diào)試實(shí)驗(yàn)顯得非常方便靈活。在調(diào)試程序中,用e2 prom 代替仿真ram,既可方便得修改程序,又能保存調(diào)試好的程序。當(dāng)然,與ram 相比, e2 prom 的操作速度是很慢的。另外,它的擦除/讀寫(xiě)是有壽命限制的,雖然有一萬(wàn)才次之多,但也不宜用在數(shù)據(jù)頻繁更新的場(chǎng)合。因此,應(yīng)注意平均地使用各單元,不然有些單元可能會(huì)提前結(jié)束壽命。2.2.2 顯示電路2.2
13、.2.1 顯示電路工作原理及結(jié)構(gòu)介紹顯示電路采用3位共陽(yáng)led數(shù)碼管,從p3口rxd,txd串口輸出段碼。采用串行輸出的靜態(tài)顯示電路! 80c31單片機(jī)是mcs-51系列單片機(jī)的一種,它廣泛應(yīng)用于各種小型控制系統(tǒng)中。我們知道,80c31單片機(jī)有一個(gè)串行口可用于串行通訊,它在方式0狀態(tài)下,還可以擴(kuò)展并行i/o口,從而實(shí)現(xiàn)多個(gè)led顯示,其中,74ls164為串行輸入、并行輸出移位寄存器,74ls164為單向總線驅(qū)動(dòng)器,led采用5ef1183kr型共陽(yáng)極數(shù)碼管。當(dāng)80c31單片機(jī)復(fù)位時(shí),串行口為方式0狀態(tài),即工作在移位寄存器方式,波特率為振蕩頻率的十二分之一。器件執(zhí)行任何一條將sbuf作為目的寄
14、存器的命令時(shí),數(shù)據(jù)便開(kāi)始從rxd端發(fā)送。在寫(xiě)信號(hào)有效時(shí),相隔一個(gè)機(jī)器周期后發(fā)送控制端p2.0有效,即允許rxd發(fā)送數(shù)據(jù),同時(shí),允許從txd端輸出移位脈沖。第一幀(8位)數(shù)據(jù)發(fā)送完畢時(shí),各控制信號(hào)均恢復(fù)原狀態(tài),只有ti保持高電平,呈中斷申請(qǐng)狀態(tài)。第一個(gè)74ls164把第一幀數(shù)據(jù)并行輸出,led1顯示該數(shù)據(jù)。然后,用軟件將ti清零,發(fā)送第二幀數(shù)據(jù)。第二幀數(shù)據(jù)發(fā)送完畢,led1顯示第二幀數(shù)據(jù),第一幀數(shù)據(jù)串行輸入給第二個(gè)74ls164,led2顯示第一幀數(shù)據(jù)。依此類(lèi)推,直到把數(shù)據(jù)區(qū)內(nèi)所有數(shù)據(jù)發(fā)送出去。應(yīng)該注意,數(shù)據(jù)全部發(fā)送完后,第一幀數(shù)據(jù)在最后一個(gè)led顯示。2.2.2.2 led 845顯示管介紹l
15、ed是發(fā)光二極管的縮寫(xiě),通常所說(shuō)的led顯示器是由7個(gè)發(fā)光二極管組成,按“日”字形排列,也稱(chēng)七段led顯示器。起管腳排列如圖2(a)所示。此外,顯示器中還有一個(gè)圓點(diǎn)型發(fā)光二極管。表示小數(shù)點(diǎn)。圖中以dp表示。 led顯示的有共陽(yáng)和共陰兩種接法。所有發(fā)光二極管的陽(yáng)極連在一起稱(chēng)為共陽(yáng)接法,陰極連在一起稱(chēng)為共陰極接法,分別如圖2(b)(c)所示r是限流電阻當(dāng)選用共陰極的led顯示器的時(shí)候,所有發(fā)光二極管的陰連在一起接地,當(dāng)某個(gè)發(fā)光二極管的陽(yáng)極加如高電平時(shí)候?qū)?yīng)的二極管電亮。加入低電平時(shí)對(duì)應(yīng)的二極管熄滅。當(dāng)選用共陽(yáng)極的led顯示器的時(shí)候,所有發(fā)光二極管的陽(yáng)連在一起接地,當(dāng)某個(gè)發(fā)光二極管的陰極加如高電平時(shí)
16、候?qū)?yīng)的二極管熄滅。加入低電平時(shí)對(duì)應(yīng)的二極管電亮。 圖2(a) 圖2(b) (c)為了在七段led顯示器上顯示不同的數(shù)字和符號(hào),首先要把數(shù)字或字符轉(zhuǎn)換成響應(yīng)的段碼,字符數(shù)據(jù)字與led段碼各代碼的對(duì)應(yīng)關(guān)系如下顯示字符段碼(共陰)段碼(共陽(yáng))顯示字符段碼(共陰)段碼(共陽(yáng))03fhc0h96fh90h106hf9ha77h88h25bha4hb7ch83h34fhb0hc39hc6h466h99hd5eha1h56dh92he79h86h67dh82hf71h8eh707hf8h滅00hffh87fh80h在單片機(jī)應(yīng)用系統(tǒng)中,發(fā)光二極管led顯示器常用兩種驅(qū)動(dòng)方式;靜態(tài)顯示驅(qū)動(dòng)和動(dòng)態(tài)顯示驅(qū)動(dòng)。本次
17、設(shè)計(jì)采用靜態(tài)顯示驅(qū)動(dòng)。2.2.3溫度傳感器 ds18b20溫度傳感器是美國(guó)dallas半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)位的數(shù)字值讀數(shù)方式。由于ds18b20采用的是1wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)at89s51單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)ds18b20芯片的訪問(wèn)。由于ds18b20是在一根i/o線上讀寫(xiě)數(shù)據(jù),因此,對(duì)讀寫(xiě)的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。ds18b20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸
18、的正確性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫(xiě)命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。對(duì)于ds18b20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。對(duì)于ds18b20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓ds18b20把數(shù)據(jù)傳輸?shù)絾慰偩€上。ds18b20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。對(duì)于ds18b20的寫(xiě)時(shí)序仍然分為寫(xiě)0時(shí)序和寫(xiě)1時(shí)序兩個(gè)過(guò)程。對(duì)于ds18b
19、20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序時(shí),單總線要被拉低至少60us,保證ds18b20能夠在15us到45us之間能夠正確地采樣io總線上的“0”電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線 ds18b20的性能特點(diǎn)如下:獨(dú)特的單線接口僅需要一個(gè)端口引腳進(jìn)行通信;多個(gè)ds18b20可以并聯(lián)在惟一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;無(wú)須外部器件;可通過(guò)數(shù)據(jù)線供電,電壓范圍為3.05.5;零待機(jī)功耗;溫度以或位數(shù)字;用戶可定義報(bào)警設(shè)置;報(bào)警搜索命令識(shí)別并標(biāo)志超過(guò)程序限定溫度(溫度報(bào)警條件)的器件;負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作; ds1
20、8b20采用腳pr35封裝或腳soic封裝,其內(nèi)部結(jié)構(gòu)框圖如圖3所示。 c64 位rom和單線接口高速緩存存儲(chǔ)器與控制邏輯溫度傳感器高溫觸發(fā)器th低溫觸發(fā)器tl配置寄存器8位crc發(fā)生器vddi/o 圖3 ds18b20內(nèi)部結(jié)構(gòu) 64位rom的結(jié)構(gòu)開(kāi)始位是產(chǎn)品類(lèi)型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后位是前面56位的crc檢驗(yàn)碼,這也是多個(gè)ds18b20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器和,可通過(guò)軟件寫(xiě)入戶報(bào)警上下限。 ds18b20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存和一個(gè)非易失性的可電擦除的eeram。高速暫存ram的結(jié)構(gòu)為字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖3所示。頭個(gè)字節(jié)包
21、含測(cè)得的溫度信息,第和第字節(jié)和的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第個(gè)字節(jié),為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。ds18b20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如圖4所示。低位一直為,是工作模式位,用于設(shè)置ds18b20在工作模式還是在測(cè)試模式,ds18b20出廠時(shí)該位被設(shè)置為,用戶要去改動(dòng),r1和0決定溫度轉(zhuǎn)換的精度位數(shù),來(lái)設(shè)置分辨率。溫度 lsb溫度 msbth用戶字節(jié)1tl用戶字節(jié)2配置寄存器保留保留保留crc圖4 ds18b20字節(jié)定義 由表1可見(jiàn),ds18b20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此
22、,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存的第、字節(jié)保留未用,表現(xiàn)為全邏輯。第字節(jié)讀出前面所有字節(jié)的crc碼,可用來(lái)檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)ds18b20接收到溫度轉(zhuǎn)換命令后,開(kāi)始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第、字節(jié)。單片機(jī)可以通過(guò)單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625lsb形式表示。當(dāng)符號(hào)位時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。 表1 ds18b
23、20溫度轉(zhuǎn)換時(shí)間表 ds18b20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與ram中的th、t字節(jié)內(nèi)容作比較。若th或ttl,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此,可用多只ds18b20同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。在64位rom的最高有效字節(jié)中存儲(chǔ)有循環(huán)冗余檢驗(yàn)碼(crc)。主機(jī)rom的前56位來(lái)計(jì)算crc值,并和存入ds18b20的crc值作比較,以判斷主機(jī)收到的rom數(shù)據(jù)是否正確。ds18b20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為
24、減法計(jì)數(shù)器的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門(mén),當(dāng)計(jì)數(shù)門(mén)打開(kāi)時(shí),ds18b20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先將55所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器、溫度寄存器中,計(jì)數(shù)器和溫度寄存器被預(yù)置在55所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器的預(yù)置值減到時(shí),溫度寄存器的值將加,減法計(jì)數(shù)器的預(yù)置將重新被裝入,減法計(jì)數(shù)器重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器計(jì)數(shù)到時(shí),停止溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。其輸出用于修正減法計(jì)
25、數(shù)器的預(yù)置值,只要計(jì)數(shù)器門(mén)仍未關(guān)閉就重復(fù)上述過(guò)程,直到溫度寄存器值大致被測(cè)溫度值。表2一部分溫度對(duì)應(yīng)值表溫度/二進(jìn)制表示十六進(jìn)制表示+1250000 0111 1101 000007d0h+850000 0101 0101 00000550h+25.06250000 0001 1001 00000191h+10.1250000 0000 1010 000100a2h+0.50000 0000 0000 00100008h00000 0000 0000 10000000h-0.51111 1111 1111 0000fff8h-10.1251111 1111 0101 1110ff5eh-25.
26、06251111 1110 0110 1111fe6fh-551111 1100 1001 0000fc90h另外,由于ds18b20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫(xiě)時(shí)序很重要。系統(tǒng)對(duì)ds18b20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化ds18b20(發(fā)復(fù)位脈沖)發(fā)rom功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。圖5 ds18b20與單片機(jī)的接口電路2.3 ds18b20溫度傳感器與單片機(jī)的接口電路 ds18b20可以采用兩種方式供電,一種是采用電源供電方式,此時(shí)ds18b20的1腳接地,2腳作為信號(hào)線,3腳接電源。另一種是寄生電源供電方式,如圖5才用第一種方式,同時(shí)可以達(dá)到單
27、點(diǎn)或多點(diǎn)的同測(cè)量。2.4 系統(tǒng)整體硬件電路2.4.1 主板電路系統(tǒng)整體硬件電路包括,傳感器數(shù)據(jù)采集電路,溫度顯示電路,上下限報(bào)警調(diào)整電路,單片機(jī)主板電路等,如圖6所示。圖6中有三個(gè)獨(dú)立式按鍵可以分別調(diào)整溫度計(jì)的上下限報(bào)警設(shè)置,圖中蜂鳴器可以在被測(cè)溫度不在上下限范圍內(nèi)時(shí),發(fā)出報(bào)警鳴叫聲音,同時(shí)led數(shù)碼管將沒(méi)有被測(cè)溫度值顯示,這時(shí)可以調(diào)整報(bào)警上下限,從而測(cè)出被測(cè)的溫度值。圖6 中的按健復(fù)位電路是上電復(fù)位加手動(dòng)復(fù)位,使用比較方便,在程序跑飛時(shí),可以手動(dòng)復(fù)位,這樣就不用在重起單片機(jī)電源,就可以實(shí)現(xiàn)復(fù)位。2.4.2 顯示電路顯示電路是使用的串口顯示,這種顯示最大的優(yōu)點(diǎn)就是使用口資源比較少,只用p3口的
28、rxd,和txd,串口的發(fā)送和接收,四只數(shù)碼管采用74ls164右移寄存器驅(qū)動(dòng),顯示比較清晰。 圖6 單片機(jī)主板電路圖7溫度顯示電路3系統(tǒng)軟件算法分析系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。3.1主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理ds18b20的測(cè)量的當(dāng)前溫度值,溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見(jiàn)圖8所示。y發(fā)ds18b20復(fù)位命令發(fā)跳過(guò)rom命令發(fā)讀取溫度命令讀取操作,crc校驗(yàn)9字節(jié)完?crc校驗(yàn)正?確?移入溫度暫存器結(jié)束nny初始化調(diào)用顯示子程序1s到?初次上電讀出溫度值溫
29、度計(jì)算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開(kāi)始命令nyny圖8 主程序流程圖圖9讀溫度流程圖 3.2讀出溫度子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時(shí)需進(jìn)行crc校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫(xiě)。其程序流程圖如圖9示發(fā)ds18b20復(fù)位命令發(fā)跳過(guò)rom命令發(fā)溫度轉(zhuǎn)換開(kāi)始命令 結(jié)束圖10 溫度轉(zhuǎn)換流程圖3.3溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開(kāi)始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖10所示3.4 計(jì)算溫度子程序計(jì)算溫度子程序?qū)am中讀取值進(jìn)行bcd碼的轉(zhuǎn)換運(yùn)算,并
30、進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖11所示。 開(kāi)始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志計(jì)算小數(shù)位溫度bcd值 計(jì)算整數(shù)位溫度bcd值 結(jié)束置“+”標(biāo)志ny溫度數(shù)據(jù)移入顯示寄存器十位數(shù)0?百位數(shù)0?十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào)) 結(jié)束nnyy 圖11計(jì)算溫度流程圖 圖12顯示數(shù)據(jù)刷新流程圖3.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為0時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖12。4總結(jié)與體會(huì) 經(jīng)過(guò)將近三周的單片機(jī)課程設(shè)計(jì),終于完成了我的數(shù)字溫度計(jì)的設(shè)計(jì),雖然沒(méi)有完全達(dá)到設(shè)計(jì)要求,但從心底里說(shuō),還是高興的,畢竟這次設(shè)
31、計(jì)把實(shí)物都做了出來(lái),高興之余不得不深思呀!在本次設(shè)計(jì)的過(guò)程中,我發(fā)現(xiàn)很多的問(wèn)題,雖然以前還做過(guò)這樣的設(shè)計(jì)但這次設(shè)計(jì)真的讓我長(zhǎng)進(jìn)了很多,單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫(xiě)過(guò)幾次程序,但我覺(jué)的寫(xiě)好一個(gè)程序并不是一件簡(jiǎn)單的事,舉個(gè)例子,以前寫(xiě)的那幾次,數(shù)據(jù)加減時(shí),我用的都是bcd碼,這一次,我全部用的都是16進(jìn)制的數(shù)直接加減,顯示處理時(shí)在用除法去刪分,感覺(jué)效果比較好,有好多的東西,只有我們?nèi)ピ囍隽?,才能真正的掌握,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。從這次的課程設(shè)計(jì)中,我真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際
32、當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的寫(xiě)與讀的過(guò)程中才能提高,這就是我在這次課程設(shè)計(jì)中的最大收獲。5 參考文獻(xiàn)1李朝青.單片機(jī)原理及接口技術(shù)(簡(jiǎn)明修訂版).杭州:北京航空航天大學(xué)出版社,19982李廣弟.單片機(jī)基礎(chǔ).北京:北京航空航天大學(xué)出版社,19943閻石.數(shù)字電子技術(shù)基礎(chǔ)(第三版). 北京:高等教育出版社,19894廖常初.現(xiàn)場(chǎng)總線概述j.電工技術(shù),1999.5 李全利.單片機(jī)原理及應(yīng)用技術(shù).高等教育出版社.20046 付家才.單片機(jī)控制工程實(shí)踐技術(shù).化學(xué)工業(yè)出版社.20047 張洪潤(rùn).單機(jī)片應(yīng)用技術(shù)教程.清華大學(xué)出版社.2003數(shù)字溫度計(jì)程序清單s1ok equ 5fhtempu
33、ter equ 39h temph equ 5eh templequ 5dh ms50 equ 5chsign equ 5bh s1 bit p1.0 s2 bit p1.1 s3 bit p1.2 s4 bit p1.3 org 0000h ljmp main org 000bh ljmp toit org 0030hmain: mov sp, #60h mov tmod, #01h mov th0, #3ch mov tl0, #0b0h setb et0 setb tr0 setb ea mov temph, #30 mov templ, #9 mov temputer, #15 ;溫度
34、最始值 mov s1ok, #00h mov sign, #00h mov 38h, #0bh mov 37h, #0ch mov 36h, #0bh acall disp acall t1s; *; 主程序start: jb s1, net1 acall t12ms jb s1, net1 jnb s1, $ inc sign mov a, sign cjne a, #1, tiao acall tiaotl tiao:cjne a, #2, net1 mov sign, #0 acall tiaoth; * net1: mov a, s1ok cjne a, #1, start mov a
35、, temputer subb a, temph jnb acc.7, alem mov a, temputer subb a, templ jb acc.7, alem setb p2.1 acall wendu acall disp mov s1ok, #00h ajmp start alem: mov 36h, #0ch mov 37h, #0ch mov 38h, #0ch clr p2.1 acall disp acall t1s lcall wendu lcall disp mov s1ok, #00h sjmp start;*tiaotl:mov 50h, temputer mo
36、v 37h, templ acall bin_bcd acall disp acall t12ms acall t12ms acall t12ms acall t12ms mov 36h, #0ah mov 37h, #0ah mov 38h, #0ah acall disp acall t12ms acall t12ms acall t12ms acall t12ms jb s2, add1 acall t12ms jb s2, add1 jnb s2, $ inc templ mov a, templ cjne a, #100, add1 mov templ, #0 add1: jb s3
37、, add2 acall t12ms jb s3, add2 jnb s3, $ dec templ mov a, templ cjne a, #00 , add2 mov templ,#100 add2: jb s4, tiaotl acall t12ms jb s4, tiaotl jnb s4, $ mov temputer, 50h ljmp start ; 高位調(diào)整; *tiaoth:mov 50h, temputer mov 37h, temph acall bin_bcd acall disp acall t12ms acall t12ms acall t12ms acall t
38、12ms mov 36h, #0ah mov 37h, #0ah mov 38h, #0ah acall disp acall t12ms acall t12ms acall t12ms acall t12ms jb s2, add11 acall t12ms jb s2, add11 jnb s2, $ inc temph mov a, temph cjne a, #100, add11 mov temph, #0 add11: jb s3, add22 acall t12ms jb s3, add22 jnb s3, $ dec temph mov a, temph cjne a, #00
39、 , add22 mov temph,#100 add22: jb s4, tiaoth acall t12ms jb s4, tiaoth jnb s4, $ mov temputer, 50h ljmp start; 一秒定時(shí)中段; *toit: push psw push acc mov th0, #3ch mov tl0, #0b0h inc ms50 mov a, ms50 cjne a, #14h, return mov s1ok, #1 mov ms50, #00h return:pop acc pop psw reti; *;溫度總子程序; *wendu: acall init
40、_1820 acall re_config acall get_temper acall temper_cov ret; *;ds18b20初始化程序; * init_1820: setb p2.0 nop clr p2.0 mov r0,#06bh mov r1,#03htsr1: djnz r0,tsr1 ; 延時(shí) mov r0,#6bh djnz r1,tsr1 setb p2.0 nop nop nop mov r0,#25htsr2: jnb p2.0,tsr3 djnz r0,tsr2 ljmp tsr4 ; 延時(shí)tsr3: setb 20h.1 ; 置標(biāo)志位,表示ds1820存在
41、 ljmp tsr5tsr4: clr 20h.1 ; 清標(biāo)志位,表示ds1820不存在 ljmp tsr7tsr5: mov r0,#06bh mov r1,#03htsr6:djnz r0,tsr6 ; 延時(shí) mov r0,#6bh djnz r1,tsr6tsr7:setb p2.0 ret; *; 重新寫(xiě)ds18b20暫存存儲(chǔ)器設(shè)定值; *re_config:jb 20h.1,re_config1 ; 若ds18b20存在,轉(zhuǎn)re_config1 retre_config1: mov a,#0cch ; 發(fā)skip rom命令 lcall write_1820 mov a,#4eh ; 發(fā)寫(xiě)暫存存儲(chǔ)器命令 lcall write_1820 mov a,#00h ; th(報(bào)警上限)中寫(xiě)入00h lcall write_1820 mov a,#00h ; tl(報(bào)警下限)中寫(xiě)入00h lcall write_1820 mov a,#1fh ; 選擇9位溫度分辨率 lcall write_1820 ret; *; 讀出轉(zhuǎn)換后的溫度值; *get_temper: setb p2.0 ; 定時(shí)入口 lcall init_1820 jb 20h.1,tss2 ret ; 若ds18b20不存在則返回tss2: mov a,#0cch ; 跳過(guò)rom
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼源職業(yè)技術(shù)學(xué)院《建筑工業(yè)化與裝配式結(jié)構(gòu)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廊坊職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)通信網(wǎng)絡(luò)》2023-2024學(xué)年第一學(xué)期期末試卷
- 江西水利職業(yè)學(xué)院《汽車(chē)輕量化技術(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 建東職業(yè)技術(shù)學(xué)院《法語(yǔ)二外》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖州學(xué)院《項(xiàng)目設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南國(guó)防工業(yè)職業(yè)技術(shù)學(xué)院《混凝土結(jié)構(gòu)基本原理A》2023-2024學(xué)年第一學(xué)期期末試卷
- 呼倫貝爾職業(yè)技術(shù)學(xué)院《數(shù)量分析方法》2023-2024學(xué)年第一學(xué)期期末試卷
- 自貢職業(yè)技術(shù)學(xué)院《仿真實(shí)訓(xùn)》2023-2024學(xué)年第一學(xué)期期末試卷
- 周口理工職業(yè)學(xué)院《生物化工設(shè)備》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶科創(chuàng)職業(yè)學(xué)院《網(wǎng)絡(luò)課程綜合》2023-2024學(xué)年第一學(xué)期期末試卷
- 清華大學(xué)考生自述
- 甘肅社火100首歌詞
- GB/T 2315-2000電力金具標(biāo)稱(chēng)破壞載荷系列及連接型式尺寸
- 腹主動(dòng)脈瘤的護(hù)理查房
- 內(nèi)部往來(lái)轉(zhuǎn)賬通知單
- iatf16949應(yīng)急計(jì)劃評(píng)審報(bào)告
- 商業(yè)銀行高管問(wèn)責(zé)制度
- 企業(yè)員工培訓(xùn)之風(fēng)險(xiǎn)管理與防范對(duì)策
- 食材配送后續(xù)服務(wù)方案
- 鑄造工廠設(shè)備管理(共21頁(yè))
- 農(nóng)產(chǎn)品收購(gòu)臺(tái)賬(登記經(jīng)營(yíng)單位及個(gè)體經(jīng)營(yíng)者投售的農(nóng)產(chǎn)品
評(píng)論
0/150
提交評(píng)論