版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中北大學(xué)信息商務(wù)學(xué)院課 程 設(shè) 計(jì) 說 明 書學(xué) 院: 信息商務(wù)學(xué)院 專 業(yè): 電子信息工程 題 目:專業(yè)綜合實(shí)踐之單片機(jī)部分: 基于單片機(jī)的電子密碼鎖的設(shè)計(jì)課 程 設(shè) 計(jì) 任 務(wù) 書1設(shè)計(jì)目的:本課程設(shè)計(jì)主要針對(duì)電子信息工程專業(yè)課程體系設(shè)置的要求,安排的一種綜合性的課程設(shè)計(jì)。一方面為了培養(yǎng)學(xué)生在查閱資料、復(fù)習(xí)、學(xué)習(xí)知識(shí)的基礎(chǔ)上,進(jìn)行包括機(jī)、電系統(tǒng)的設(shè)計(jì)、計(jì)算、仿真、編程、調(diào)試等多個(gè)環(huán)節(jié)的綜合能力培養(yǎng);另一方面,也是對(duì)學(xué)生進(jìn)行畢業(yè)設(shè)計(jì)前的一次大型練兵,進(jìn)一步培養(yǎng)學(xué)生獨(dú)立地分析、解決實(shí)際問題的實(shí)際能力。另外還培養(yǎng)學(xué)生用專業(yè)的、簡(jiǎn)潔的文字,清晰的圖表來表達(dá)自己設(shè)計(jì)思想的能力。2設(shè)計(jì)內(nèi)容和要求(包括
2、原始數(shù)據(jù)、技術(shù)參數(shù)、條件、設(shè)計(jì)要求等):?jiǎn)纹瑱C(jī)選用89c51檢測(cè)范圍-55-+125度-10-+85度范圍內(nèi)精度為0.5度三位顯示3設(shè)計(jì)工作任務(wù)及工作量的要求包括課程設(shè)計(jì)計(jì)算說明書(論文)、圖紙、實(shí)物樣品等:(1)提供核心器件的工作原理與應(yīng)用介紹;(2)提供用protel設(shè)計(jì)的電路原理圖,印刷板電路圖;(3)提供用multisim、maxplus、proteus、medwin、keilc等軟件對(duì)電路的仿真、編程與分析;(4)提供符合規(guī)定要求的課程設(shè)計(jì)說明書;(5)提供參考文獻(xiàn)不少于15篇,且必須是相關(guān)的參考文獻(xiàn); 課 程 設(shè) 計(jì) 任 務(wù) 書4主要參考文獻(xiàn):l 要求按國(guó)標(biāo)gb 771487文后參
3、考文獻(xiàn)著錄規(guī)則書寫,例:1 傅承義,陳運(yùn)泰,祁貴中.地球物理學(xué)基礎(chǔ).北京:科學(xué)出版社,1985 (5篇以上)5設(shè)計(jì)成果形式及要求:(1)電路原理圖、程序、仿真結(jié)果、pcb圖;(2)課程設(shè)計(jì)說明書;6工作計(jì)劃及進(jìn)度:2013年12月 30 日 2014年1 月 1 日:查閱資料;2014年:1 月 2 日 1 月 7 日:方案設(shè)計(jì)、實(shí)驗(yàn)驗(yàn)證;1 月 8 日 1 月 9 日:完成課程設(shè)計(jì)說明書; 1 月 10 日:答辯。系主任審查意見: 簽字: 年 月 日設(shè)計(jì)說明書應(yīng)包括以下主要內(nèi)容: (1)封面:課程設(shè)計(jì)題目、班級(jí)、姓名、指導(dǎo)教師、時(shí)間 (2)設(shè)計(jì)任務(wù)書 (3)目錄 (4)設(shè)計(jì)方案簡(jiǎn)介 (5)設(shè)
4、計(jì)條件及主要參數(shù)表 (6)設(shè)計(jì)主要參數(shù)計(jì)算 (7)設(shè)計(jì)結(jié)果 (8)設(shè)計(jì)評(píng)述,設(shè)計(jì)者對(duì)本設(shè)計(jì)的評(píng)述及通過設(shè)計(jì)的收獲體會(huì) (9)參考文獻(xiàn) 目錄1前言.12設(shè)計(jì)任務(wù)及要求.1 2.1設(shè)計(jì)任務(wù).1 3設(shè)計(jì)方案及器材選用分析.2 3.1設(shè)計(jì)總體方案.2 3.1.1方案的總體設(shè)計(jì)框圖.3 3.2器材選用分析.3 3.2.1ds18b20溫度傳感器.3 3.2.2溫度傳感器原理圖及pcb圖.9 3.2.3溫度傳感器仿真程序.11 3.3軟件流程圖.15 3.3.1主程序.15 3.3.2讀溫子程序.16 3.3.3溫度轉(zhuǎn)換子程序.16 3.3.4計(jì)算溫度子程序.174硬件電路的設(shè)計(jì).17 4.1protue
5、s軟件介紹.17 4.1.1protues軟件.17 4.1.2主控制電路at89c51原理圖.18 4.2protues進(jìn)行仿真.194.2.1protues仿真圖.194.2.2 ds18b20顯示程序.214.2.3pcb圖及3d圖.295總結(jié).316參考文獻(xiàn).31 前言本次課程設(shè)計(jì),就是用單片機(jī)實(shí)現(xiàn)溫度控制,傳統(tǒng)的溫度檢測(cè)大多以熱敏電阻為溫度傳感器,但熱敏電阻的可靠性差,測(cè)量溫度準(zhǔn)確率低,而且必須經(jīng)過專門的接口電路轉(zhuǎn)換成數(shù)字信號(hào)才能由單片機(jī)進(jìn)行處理。本次采用ds18b20數(shù)字溫度傳感器來實(shí)現(xiàn)基于51單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)。傳統(tǒng)的溫度計(jì)有反應(yīng)速度慢、讀數(shù)麻煩、測(cè)量精度不高、誤差大等缺點(diǎn)
6、而下面利用集成溫度傳感器ad590設(shè)計(jì)并制作了一款基于at89c51的4位數(shù)碼管顯示的數(shù)字溫度計(jì),其電路簡(jiǎn)單,軟硬件結(jié)構(gòu)模塊化,易于實(shí)現(xiàn)。 該數(shù)字溫度計(jì)利用ad590集成溫度傳感器及其接口電路完成溫度的測(cè)量并轉(zhuǎn)換成模擬電壓信號(hào),經(jīng)由模數(shù)轉(zhuǎn)換器adc0804轉(zhuǎn)換成單片機(jī)能夠處理的數(shù)字信號(hào),然后送到單片機(jī)at89c51中進(jìn)行處理變換,最后將溫度值顯示在d4、d3、d2、d1共4位七段碼led顯示器上。系統(tǒng)以at89c51單片機(jī)為控制核心,加上ad590測(cè)溫電路、adc模數(shù)轉(zhuǎn)換電路、4位溫度數(shù)據(jù)顯示電路以及外圍電源、時(shí)鐘電路等組成。2設(shè)計(jì)任務(wù)及要求2.1設(shè)計(jì)任務(wù)本次采用ds18b20數(shù)字溫度傳感器來
7、實(shí)現(xiàn)基于51單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)。該數(shù)字溫度計(jì)利用ad590集成溫度傳感器及其接口電路完成溫度的測(cè)量并轉(zhuǎn)換成模擬電壓信號(hào),經(jīng)由模數(shù)轉(zhuǎn)換器adc0804轉(zhuǎn)換成單片機(jī)能夠處理的數(shù)字信號(hào),然后送到單片機(jī)at89c51中進(jìn)行處理變換,最后將溫度值顯示在d4、d3、d2、d1共4位七段碼led顯示器上。系統(tǒng)以at89c51單片機(jī)為控制核心,加上ad590測(cè)溫電路、adc模數(shù)轉(zhuǎn)換電路、4位溫度數(shù)據(jù)顯示電路以及外圍電源、時(shí)鐘電路等組成。3課程設(shè)計(jì)方案及器材選用分析3.1設(shè)計(jì)總體方案本數(shù)字溫度計(jì)設(shè)計(jì)采用智能溫度傳感器ds18b20作為檢測(cè)元件,測(cè)溫范圍為-55c至+125c,最大分辨率可達(dá)0.0625c。
8、ds18b20可以直接讀出被測(cè)量的溫度值,而采用三線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由三個(gè)模塊組成:主控制器stc89c51,溫度傳感器ds18b20,驅(qū)動(dòng)顯示電路。總體電路框圖如下:3.1.1總體方案的設(shè)計(jì)框圖溫度計(jì)電路設(shè)計(jì)總體設(shè)計(jì)方框圖如圖3.2所示,控制器采用單片機(jī)at89s51,溫度傳感器采用ds18b20,用3位led數(shù)碼管以串口傳送數(shù)據(jù)實(shí)現(xiàn)溫度顯示。ds18b20 采用3 腳pr-35 封裝或8 腳soic 封裝。主控制器:?jiǎn)纹瑱C(jī)at89s51具有低電壓供電和體積小等特點(diǎn),四個(gè)端口只需要兩個(gè)口就能滿足電路系統(tǒng)的設(shè)計(jì)需要
9、,很適合便攜手持式產(chǎn)品的設(shè)計(jì)使用系統(tǒng)可用二節(jié)電池供電。顯示電路:顯示電路采用3位共陽(yáng)led數(shù)碼管,從p3口rxd,txd串口輸出段碼。3.2器材選用分析3.2.1ds18b20溫度傳感器1. ds18b20的特點(diǎn)本設(shè)計(jì)的測(cè)溫系統(tǒng)采用芯片ds18b20,ds18b20是dallas公司的最新單線數(shù)字溫度傳感器,它的體積更小,適用電壓更寬,更經(jīng)濟(jì)。實(shí)現(xiàn)方法簡(jiǎn)介ds18b20采用外接電源方式工作,一線測(cè)溫一線與stc89c51連接,測(cè)出的數(shù)據(jù)放在寄存器中,將數(shù)據(jù)經(jīng)過bcd碼轉(zhuǎn)換后送到led顯示。 ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom,溫度傳感器,非揮發(fā)的溫度報(bào)警觸發(fā)器th和tl,
10、高速暫存器。64位光刻rom是出廠前被光刻好的,它可以看作是該ds18b20的地址序列號(hào)。不同的器件地址序列號(hào)不同。 64位rom的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的惟一的序號(hào),共有48位,最后8位是前面56位的crc檢驗(yàn)碼,這也是多個(gè)ds18b20可以采用一線進(jìn)行通信的原因。溫度報(bào)警觸發(fā)器和,可通過軟件寫入戶報(bào)警上下限。ds18b20溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)高速暫存ram和一個(gè)非易失性的可電擦除的eeram。高速暫存ram的結(jié)構(gòu)為字節(jié)的存儲(chǔ)器,結(jié)構(gòu)如圖2-3-2所示。頭2個(gè)字節(jié)包含測(cè)得的溫度信息,第3和第4字節(jié)th和tl的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第5個(gè)字節(jié),
11、為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。ds18b20工作時(shí)寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如下圖所示。低5位一直為1,tm是工作模式位,用于設(shè)置ds18b20在工作模式還是在測(cè)試模式,ds18b20出廠時(shí)該位被設(shè)置為0,用戶要去改動(dòng),r1和0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。圖3.5 ds18b20的字節(jié)定義ds18b20高速暫存器共9個(gè)存存單元,如表所示:表3-1 ds18b20的引腳分布圖序號(hào) 寄存器名稱 作 用 序號(hào) 寄存器名稱 0 溫度低字節(jié) 以16位補(bǔ)碼形式存放 4、5 保留字節(jié)1、2 1 溫度高字節(jié) 6 計(jì)數(shù)器余值 2 th/用戶字節(jié)1
12、 存放溫度上限 7 計(jì)數(shù)器/ 3 hl/用戶字節(jié)2 存放溫度下限 8 crc 以12位轉(zhuǎn)化為例說明溫度高低字節(jié)存放形式及計(jì)算:12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲(chǔ)在18b20的兩個(gè)高低兩個(gè)8位的ram中,二進(jìn)制中的前面5位是符號(hào)位。如果測(cè)得的溫度大于0,這5位為0,只要將測(cè)到的數(shù)值乘于0.0625即可得到實(shí)際溫度;如果溫度小于0,這5位為1,測(cè)到的數(shù)值需要取反加1再乘于0.0625才能得到實(shí)際溫度。 高8位 s s s s s 26 25 24 低8位 23 22 21 20 2-1 2-2 2-3 2-4 表3-2 ds18b20的字節(jié)存放表由下圖可以看到,dsl8820的內(nèi)部存儲(chǔ)器是由8個(gè)單
13、元組成,其中第0、1個(gè)存放測(cè)量溫度值,第2、3分別存放報(bào)警溫度的上下限值,第4單元為配置單元,5、6、7單元在dsl8820這里沒有被用到。對(duì)于第4個(gè)寄存器,用戶可以設(shè)置溫度轉(zhuǎn)換精度,系統(tǒng)默認(rèn)12bit轉(zhuǎn)換精度,相當(dāng)于十進(jìn)制的00625,其轉(zhuǎn)換時(shí)間大約為750磷。具體見表2-4-1。圖3.6 內(nèi)部存儲(chǔ)器結(jié)構(gòu)圖表3-3 溫度精度配置r1r0轉(zhuǎn)換精度(16進(jìn)制)轉(zhuǎn)換精度(十進(jìn)制)轉(zhuǎn)換時(shí)間009bit0.593.75ms0110bit0.25187.5ms1011bit0.125375ms1112bit0.0625750ms 由可見,ds18b20溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且分辨率越高,所需要的溫度數(shù)
14、據(jù)轉(zhuǎn)換時(shí)間越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存ram的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的crc碼,可用來檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)ds18b20接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號(hào)擴(kuò)展的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第1、2字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以0.0625lsb形式表示。當(dāng)符號(hào)位s0時(shí),表示測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位s1時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼,再計(jì)算十進(jìn)制數(shù)值。表2-
15、4-2是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。表3-4 溫度精度配置溫度/二進(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.06251111 1110 0110 1
16、111fe6fh-551111 1100 1001 0000fc90hds18b20完成溫度轉(zhuǎn)換后,就把測(cè)得的溫度值與ram中的th、tl字節(jié)內(nèi)容作比較。若tth或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位來計(jì)算crc值,并和存入ds18b20的crc值作比較,以判斷主機(jī)收到的rom數(shù)據(jù)是否正確。ds18b20的測(cè)溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器1;高溫
17、度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器2的脈沖輸入。器件中還有一個(gè)計(jì)數(shù)門,當(dāng)計(jì)數(shù)門打開時(shí),ds18b20就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù)進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測(cè)量前,首先將55所對(duì)應(yīng)的一個(gè)基數(shù)分別置入減法計(jì)數(shù)器1、溫度寄存器中,計(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ù)器計(jì)數(shù)到0時(shí),停止
18、溫度寄存器的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測(cè)溫度值。 另外,由于ds18b20單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì)ds18b20的各種操作按協(xié)議進(jìn)行。操作協(xié)議為:初使化ds18b20(發(fā)復(fù)位脈沖)發(fā)rom功能命令發(fā)存儲(chǔ)器操作命令處理數(shù)據(jù)。 由于ds18b20采用的“一線總線”結(jié)構(gòu),所以數(shù)據(jù)的傳輸與命令的通訊只要通過微處理器的一根雙向io口就可以實(shí)現(xiàn)。dsl8b20約定在每次通信前必須對(duì)其復(fù)位。 圖3.7 復(fù)位時(shí)序圖 本文中有at89s52提供,trstl
19、的最小時(shí)延為,然后釋放總線,檢查dsl8b20的返回信號(hào),看其是否已準(zhǔn)備接受其他操作,其中tpdhigh時(shí)間最小為,最長(zhǎng)不能超過,否則認(rèn)為ds18b20沒有準(zhǔn)備好,主機(jī)應(yīng)繼續(xù)復(fù)位,直到檢測(cè)到返回信號(hào)變?yōu)榈碗娖綖橹埂1?-5 ds18b20的rom操作指令操作指令33h55hcchf0hech含義讀rom匹配rom跳過rom搜索rom報(bào)警搜索rom表3-6 ds18b20的存儲(chǔ)器操作指令操作指令4ehbeh48h44hd8hb4h含義寫讀內(nèi)部復(fù)制溫度轉(zhuǎn)換重新調(diào)出讀電源主機(jī)一旦檢測(cè)到ds18b20的存在,根據(jù)ds18b2的工作協(xié)議,就應(yīng)對(duì)rom進(jìn)行操作,接著對(duì)存儲(chǔ)器操作,最后進(jìn)行數(shù)據(jù)處理。在ds1
20、8b20中規(guī)定了5條對(duì)rom的操作命令。主機(jī)在發(fā)送完rom操作指令之后,就可以對(duì)ds18b20內(nèi)部的存儲(chǔ)器進(jìn)行操作,同樣ds18b20規(guī)定了6條操作指令。 ds18b20的讀、寫時(shí)序圖見圖3.8。圖3.8 ds18b20的讀寫時(shí)序圖2. ds18b20的使用方法由于ds18b20采用的是1wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)at89s51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時(shí)序來完成對(duì)ds18b20芯片的訪問。由于ds18b20是在一根i/o線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。ds18b20有嚴(yán)格的通信協(xié)
21、議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。對(duì)于ds18b20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程。對(duì)于ds18b20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓ds18b20把數(shù)據(jù)傳輸?shù)絾慰偩€上。ds18b20在完成一個(gè)讀時(shí)序過程,至少需要60us才能完成。ds18b20的寫時(shí)序,對(duì)于ds18b20的寫時(shí)序仍然分
22、為寫0時(shí)序和寫1時(shí)序兩個(gè)過程,對(duì)于ds18b20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證ds18b20能夠在15us到45us之間能夠正確地采樣io總線上的“0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單線3.2.2溫度傳感器設(shè)計(jì)原理圖及pcb圖溫度傳感器仿真圖溫度傳感器仿真pcb圖3.2.3溫度傳感器仿真程序#include #include #define uchar unsigned char #define uint unsigned int sbit dq=p27; uchar t; uchar code table= 0x
23、3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f; void delay1(uint z) uint x,y; for(x=z;x0;x-) for(y=110;y0;y-); void delay(uint n)/廷遲時(shí)間為(24+n*16)us int i; for(i=0;in;i+); /* void init() bit flag=1; while (flag) while (flag) dq = 1; _nop_(); dq = 0; delay(50); dq = 1; delay(3); flag = dq; delay(10)
24、; flag = dq; dq=1; /* 兩個(gè)初始換 都可以 /*/ void init() dq=1; delay(0); dq=0; delay(50); /廷遲24+50*16=824us dq=1; delay(3); /48us delay(10); /184us dq=1; void write(uchar date) uint i; for (i=0; i= 1; /右移一位 uchar read() uint i, value=0; dq=1; _nop_(); /一個(gè)機(jī)器周期:(1/11.0952(即晶振頻率)*12=1.085us for (i=0; i1; /15us
25、之內(nèi)必須讀完一位 dq = 0; /設(shè)i=0 :value=0101 0101 1 得到:0010 1010 _nop_(); / 讀到的dq=1,0010 10101000 0000=1010 1010 _nop_(); / i=1: value=01010101 dq = 1; /讀到的dq=0, value=01010101 _nop_(); /i=2: value=0010 1010 _nop_(); if (dq) /先讀最低位 value|=0x80; delay(2); / 56us dq=1; return(value); void display(uchar num) uch
26、ar a,b; a=num/10; b=num%10; p0=tablea; p2=0xfe; delay1(5); p2=0xff; delay1(5); p0=tableb; p2=0xfd; delay1(5); p2=0xff; delay1(5); uchar read_wen_du() uchar hb,lb,temp; init(); / 復(fù)位 write(0xcc); / 跳過rom 即不必讀64位序列號(hào)的rom write(0x44); / 啟動(dòng)溫度轉(zhuǎn)換 init(); write(0xcc); / 跳過rom 即不必讀64位序列號(hào)的rom write(0xbe); / 讀命
27、令 lb=read(); / 低八位 1011 1010 hb=read(); / 高八位 1111 1010 hb=hb4; / (lb&0xf0)=1011 0000 4 :0000 1011 +hb :1010 1011 temp=hb; return temp; / 返回溫度值 void main() while(1) t=read_wen_du(); display(t); 3.3軟件流程圖系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計(jì)算溫度子程序,顯示數(shù)據(jù)刷新子程序等。3.3.1主程序主程序的主要功能是負(fù)責(zé)溫度的實(shí)時(shí)顯示、讀出并處理ds18b20的測(cè)量的當(dāng)前溫度值,
28、溫度測(cè)量每1s進(jìn)行一次。這樣可以在一秒之內(nèi)測(cè)量一次被測(cè)溫度,其程序流程見圖7所示。3.3.2讀溫子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時(shí)需進(jìn)行crc校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖8示3.3.3溫度轉(zhuǎn)換子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時(shí)轉(zhuǎn)換時(shí)間約為750ms,在本程序設(shè)計(jì)中采用1s顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖3.14所示3.3.4計(jì)算溫度子程序計(jì)算溫度子程序?qū)am中讀取值進(jìn)行bcd碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖3.15所示4硬件電路的設(shè)計(jì)4.1protu
29、es軟件介紹4.1.1protues軟件protel99 se 5共分5個(gè)模塊,分別是原理圖設(shè)計(jì)、pcb設(shè)計(jì)(包含信號(hào)完整性分析)、自動(dòng)布線器、原理圖混合信號(hào)仿真、pld設(shè)計(jì)。 以下介紹一些protel99se的部分最新功能: l 可生成30多種格式的電氣連接網(wǎng)絡(luò)表; l 強(qiáng)大的全局編輯功能; l 在原理圖中選擇一級(jí)器件,pcb中同樣的器件也將被選中; l 同時(shí)運(yùn)行原理圖和pcb,在打開的原理圖和pcb圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡(luò) l 既可以進(jìn)行正向注釋元器件標(biāo)號(hào)(由原理圖到pcb),也可以進(jìn)行反向注釋(由pcb到原理圖),以保持電氣原理圖和pcb在設(shè)計(jì)上的一致性; l 滿足國(guó)際化設(shè)
30、計(jì)要求(包括國(guó)標(biāo)標(biāo)題欄輸出,gb4728國(guó)標(biāo)庫(kù)); * 方便易用的數(shù)模混合仿真(兼容spice 3f5); l 支持用cupl語言和原理圖設(shè)計(jì)pld,生成標(biāo)準(zhǔn)的jed下載文件; * pcb可設(shè)計(jì)32個(gè)信號(hào)層,16個(gè)電源-地層和16個(gè)機(jī)加工層; l 片機(jī)文件、測(cè)試點(diǎn)報(bào)告等; l 經(jīng)過充分驗(yàn)證的傳輸線特性和仿真精確計(jì)算的算法,信號(hào)完整性分析直接從pcb啟動(dòng); l 反射和串?dāng)_仿真的波形顯示結(jié)果與便利的測(cè)量工具相結(jié)合; 4.1.2主控制電路at89c51原理圖圖5.16主電路原理圖圖5.17 數(shù)碼管連線圖5.18 系統(tǒng)報(bào)警電路圖5.19電路的pcb圖4.2protues進(jìn)行仿真程序編寫完以后,我們先對(duì)
31、其進(jìn)行仿真,初步驗(yàn)證電路圖和程序的可行性和正確性。4.2.1protues仿真圖4.2.2 ds18b20顯示程序#include #define uint unsigned int#define uchar unsigned char /宏定義sbit p34=p24;sbit p35=p25;sbit p36=p26;sbit dp=p07;sbit p37=p27;sbit dq=p22; /定義ds18b20總線i/osbit set=p31; /定義選擇報(bào)調(diào)整警溫度上限和下限(1為上限,0為下限)/*p3.2和p3.3為調(diào)整溫度報(bào)警增加鍵和減少鍵*/sbit ling=p20; /定
32、義響鈴signed char m; /溫度值全局變量bit sign=0; /外部中斷狀態(tài)標(biāo)志signed char shangxian=38; /上限報(bào)警溫度,默認(rèn)值為38signed char xiaxian=6; /下限報(bào)警溫度,默認(rèn)值為5uchar code leddata=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;/*延時(shí)子程序*/void delay(uint i) while( i- );/*初始化ds18b20*/void init_ds18b20(void) unsigned char x=0; d
33、q=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) unsigned char i=0; unsigned char dat=0; for (i=8;i0;i-) dq=0; / 給脈沖信號(hào) dat=1; dq=1; / 給脈沖信號(hào) if(dq) dat|=0x80; delay(4); return(dat
34、);/*寫一個(gè)字節(jié)*/void writeonechar(unsigned char dat) unsigned char i=0; for (i=8; i0; i-) dq=0; dq=dat&0x01; delay(5); dq=1; dat=1; void tmpchange(void) /發(fā)送溫度轉(zhuǎn)換命令 init_ds18b20(); writeonechar(0xcc); /跳過讀序號(hào)列號(hào)的操作 writeonechar(0x44); /啟動(dòng)溫度轉(zhuǎn)換/*讀取溫度*/unsigned int readtemperature(void) unsigned char a=0; unsig
35、ned char b=0; unsigned int t=0; float tt=0; tmpchange(); init_ds18b20(); writeonechar(0xcc); /跳過讀序號(hào)列號(hào)的操作 writeonechar(0xbe); /讀取溫度寄存器 a=readonechar(); /讀低8位 b=readonechar(); /讀高8位 t=b; tshangxian | mxiaxian) ling=1; /溫度不在范圍內(nèi)報(bào)警 else ling=0;p34=0;p35=0;p36=0;p37=0; p0 =leddatad; /顯示小數(shù)點(diǎn)后兩位 p34=1;p35=0;
36、p36=0;p37=0; delay(300);p34=0;p35=0;p36=0;p37=0; p0 =leddatac; /顯示小數(shù)點(diǎn)后一位p34=0;p35=1;p36=0;p37=0; delay(300);p34=0;p35=0;p36=0;p37=0; p0 =leddatab; /顯示個(gè)位dp=0;p34=0;p35=0;p36=1;p37=0; delay(300);p34=0;p35=0;p36=0;p37=0; p0 =leddataa; /顯示十位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=xiaxian%10;p34=0;p35=0;p36=0;p37=0; p0 =0xc0; /顯示0p34=1;p35=0;p36=0;p37=0; delay(200);p34=0;p35=0;p36=0;p37=0; p0 =0xc0; /顯示0p34=0;p35=1;p36=0;p37=0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度呈現(xiàn)合集【人力資源管理篇】
- 2024年廠年度勞動(dòng)競(jìng)賽的工作總結(jié)
- 《廣告的社會(huì)功能》課件
- 第1單元 中華人民共和國(guó)的成立與鞏固 (B卷·能力提升練)(解析版)
- 《孟子生平簡(jiǎn)介》課件
- 《杜絕校園欺凌》課件
- 超市客服話務(wù)員工作總結(jié)
- 探索生態(tài)之謎
- 2023年項(xiàng)目安全培訓(xùn)考試題(能力提升)
- 2023年項(xiàng)目部治理人員安全培訓(xùn)考試題附完整答案(必刷)
- 道路運(yùn)輸企業(yè)安全生產(chǎn)管理人員安全考核試題題庫(kù)與答案
- 年終抖音運(yùn)營(yíng)述職報(bào)告
- 車間修繕合同模板
- 腦梗死患者的護(hù)理常規(guī)
- 2024年7月國(guó)家開放大學(xué)法律事務(wù)??啤斗勺稍兣c調(diào)解》期末紙質(zhì)考試試題及答案
- 護(hù)士條例解讀
- 醫(yī)務(wù)人員崗前培訓(xùn)課件
- 兒童文學(xué)解讀導(dǎo)論智慧樹知到期末考試答案章節(jié)答案2024年嘉興大學(xué)
- 2023版押品考試題庫(kù)必考點(diǎn)含答案
- 國(guó)際項(xiàng)目管理專業(yè)資質(zhì)認(rèn)證(ipmp)b級(jí)報(bào)告模板
- 計(jì)數(shù)培養(yǎng)基適用性檢查記錄表
評(píng)論
0/150
提交評(píng)論