基于單片機的電子密碼鎖的設(shè)計課程設(shè)計任務(wù)書1_第1頁
基于單片機的電子密碼鎖的設(shè)計課程設(shè)計任務(wù)書1_第2頁
基于單片機的電子密碼鎖的設(shè)計課程設(shè)計任務(wù)書1_第3頁
基于單片機的電子密碼鎖的設(shè)計課程設(shè)計任務(wù)書1_第4頁
基于單片機的電子密碼鎖的設(shè)計課程設(shè)計任務(wù)書1_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、中北大學(xué)信息商務(wù)學(xué)院課 程 設(shè) 計 說 明 書學(xué) 院: 信息商務(wù)學(xué)院 專 業(yè): 電子信息工程 題 目:專業(yè)綜合實踐之單片機部分: 基于單片機的電子密碼鎖的設(shè)計課 程 設(shè) 計 任 務(wù) 書1設(shè)計目的:本課程設(shè)計主要針對電子信息工程專業(yè)課程體系設(shè)置的要求,安排的一種綜合性的課程設(shè)計。一方面為了培養(yǎng)學(xué)生在查閱資料、復(fù)習(xí)、學(xué)習(xí)知識的基礎(chǔ)上,進行包括機、電系統(tǒng)的設(shè)計、計算、仿真、編程、調(diào)試等多個環(huán)節(jié)的綜合能力培養(yǎng);另一方面,也是對學(xué)生進行畢業(yè)設(shè)計前的一次大型練兵,進一步培養(yǎng)學(xué)生獨立地分析、解決實際問題的實際能力。另外還培養(yǎng)學(xué)生用專業(yè)的、簡潔的文字,清晰的圖表來表達自己設(shè)計思想的能力。2設(shè)計內(nèi)容和要求(包括

2、原始數(shù)據(jù)、技術(shù)參數(shù)、條件、設(shè)計要求等):單片機選用89c51檢測范圍-55-+125度-10-+85度范圍內(nèi)精度為0.5度三位顯示3設(shè)計工作任務(wù)及工作量的要求包括課程設(shè)計計算說明書(論文)、圖紙、實物樣品等:(1)提供核心器件的工作原理與應(yīng)用介紹;(2)提供用protel設(shè)計的電路原理圖,印刷板電路圖;(3)提供用multisim、maxplus、proteus、medwin、keilc等軟件對電路的仿真、編程與分析;(4)提供符合規(guī)定要求的課程設(shè)計說明書;(5)提供參考文獻不少于15篇,且必須是相關(guān)的參考文獻; 課 程 設(shè) 計 任 務(wù) 書4主要參考文獻:l 要求按國標(biāo)gb 771487文后參

3、考文獻著錄規(guī)則書寫,例:1 傅承義,陳運泰,祁貴中.地球物理學(xué)基礎(chǔ).北京:科學(xué)出版社,1985 (5篇以上)5設(shè)計成果形式及要求:(1)電路原理圖、程序、仿真結(jié)果、pcb圖;(2)課程設(shè)計說明書;6工作計劃及進度:2013年12月 30 日 2014年1 月 1 日:查閱資料;2014年:1 月 2 日 1 月 7 日:方案設(shè)計、實驗驗證;1 月 8 日 1 月 9 日:完成課程設(shè)計說明書; 1 月 10 日:答辯。系主任審查意見: 簽字: 年 月 日設(shè)計說明書應(yīng)包括以下主要內(nèi)容: (1)封面:課程設(shè)計題目、班級、姓名、指導(dǎo)教師、時間 (2)設(shè)計任務(wù)書 (3)目錄 (4)設(shè)計方案簡介 (5)設(shè)

4、計條件及主要參數(shù)表 (6)設(shè)計主要參數(shù)計算 (7)設(shè)計結(jié)果 (8)設(shè)計評述,設(shè)計者對本設(shè)計的評述及通過設(shè)計的收獲體會 (9)參考文獻 目錄1前言.12設(shè)計任務(wù)及要求.1 2.1設(shè)計任務(wù).1 3設(shè)計方案及器材選用分析.2 3.1設(shè)計總體方案.2 3.1.1方案的總體設(shè)計框圖.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計算溫度子程序.174硬件電路的設(shè)計.17 4.1protue

5、s軟件介紹.17 4.1.1protues軟件.17 4.1.2主控制電路at89c51原理圖.18 4.2protues進行仿真.194.2.1protues仿真圖.194.2.2 ds18b20顯示程序.214.2.3pcb圖及3d圖.295總結(jié).316參考文獻.31 前言本次課程設(shè)計,就是用單片機實現(xiàn)溫度控制,傳統(tǒng)的溫度檢測大多以熱敏電阻為溫度傳感器,但熱敏電阻的可靠性差,測量溫度準(zhǔn)確率低,而且必須經(jīng)過專門的接口電路轉(zhuǎn)換成數(shù)字信號才能由單片機進行處理。本次采用ds18b20數(shù)字溫度傳感器來實現(xiàn)基于51單片機的數(shù)字溫度計的設(shè)計。傳統(tǒng)的溫度計有反應(yīng)速度慢、讀數(shù)麻煩、測量精度不高、誤差大等缺點

6、而下面利用集成溫度傳感器ad590設(shè)計并制作了一款基于at89c51的4位數(shù)碼管顯示的數(shù)字溫度計,其電路簡單,軟硬件結(jié)構(gòu)模塊化,易于實現(xiàn)。 該數(shù)字溫度計利用ad590集成溫度傳感器及其接口電路完成溫度的測量并轉(zhuǎn)換成模擬電壓信號,經(jīng)由模數(shù)轉(zhuǎn)換器adc0804轉(zhuǎn)換成單片機能夠處理的數(shù)字信號,然后送到單片機at89c51中進行處理變換,最后將溫度值顯示在d4、d3、d2、d1共4位七段碼led顯示器上。系統(tǒng)以at89c51單片機為控制核心,加上ad590測溫電路、adc模數(shù)轉(zhuǎn)換電路、4位溫度數(shù)據(jù)顯示電路以及外圍電源、時鐘電路等組成。2設(shè)計任務(wù)及要求2.1設(shè)計任務(wù)本次采用ds18b20數(shù)字溫度傳感器來

7、實現(xiàn)基于51單片機的數(shù)字溫度計的設(shè)計。該數(shù)字溫度計利用ad590集成溫度傳感器及其接口電路完成溫度的測量并轉(zhuǎn)換成模擬電壓信號,經(jīng)由模數(shù)轉(zhuǎn)換器adc0804轉(zhuǎn)換成單片機能夠處理的數(shù)字信號,然后送到單片機at89c51中進行處理變換,最后將溫度值顯示在d4、d3、d2、d1共4位七段碼led顯示器上。系統(tǒng)以at89c51單片機為控制核心,加上ad590測溫電路、adc模數(shù)轉(zhuǎn)換電路、4位溫度數(shù)據(jù)顯示電路以及外圍電源、時鐘電路等組成。3課程設(shè)計方案及器材選用分析3.1設(shè)計總體方案本數(shù)字溫度計設(shè)計采用智能溫度傳感器ds18b20作為檢測元件,測溫范圍為-55c至+125c,最大分辨率可達0.0625c。

8、ds18b20可以直接讀出被測量的溫度值,而采用三線制與單片機相連,減少了外部的硬件電路,具有低成本和易使用的特點。按照系統(tǒng)設(shè)計功能的要求,確定系統(tǒng)由三個模塊組成:主控制器stc89c51,溫度傳感器ds18b20,驅(qū)動顯示電路。總體電路框圖如下:3.1.1總體方案的設(shè)計框圖溫度計電路設(shè)計總體設(shè)計方框圖如圖3.2所示,控制器采用單片機at89s51,溫度傳感器采用ds18b20,用3位led數(shù)碼管以串口傳送數(shù)據(jù)實現(xiàn)溫度顯示。ds18b20 采用3 腳pr-35 封裝或8 腳soic 封裝。主控制器:單片機at89s51具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統(tǒng)的設(shè)計需要

9、,很適合便攜手持式產(chǎn)品的設(shè)計使用系統(tǒng)可用二節(jié)電池供電。顯示電路:顯示電路采用3位共陽led數(shù)碼管,從p3口rxd,txd串口輸出段碼。3.2器材選用分析3.2.1ds18b20溫度傳感器1. ds18b20的特點本設(shè)計的測溫系統(tǒng)采用芯片ds18b20,ds18b20是dallas公司的最新單線數(shù)字溫度傳感器,它的體積更小,適用電壓更寬,更經(jīng)濟。實現(xiàn)方法簡介ds18b20采用外接電源方式工作,一線測溫一線與stc89c51連接,測出的數(shù)據(jù)放在寄存器中,將數(shù)據(jù)經(jīng)過bcd碼轉(zhuǎn)換后送到led顯示。 ds18b20內(nèi)部結(jié)構(gòu)主要由四部分組成:64位光刻rom,溫度傳感器,非揮發(fā)的溫度報警觸發(fā)器th和tl,

10、高速暫存器。64位光刻rom是出廠前被光刻好的,它可以看作是該ds18b20的地址序列號。不同的器件地址序列號不同。 64位rom的結(jié)構(gòu)開始8位是產(chǎn)品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的crc檢驗碼,這也是多個ds18b20可以采用一線進行通信的原因。溫度報警觸發(fā)器和,可通過軟件寫入戶報警上下限。ds18b20溫度傳感器的內(nèi)部存儲器還包括一個高速暫存ram和一個非易失性的可電擦除的eeram。高速暫存ram的結(jié)構(gòu)為字節(jié)的存儲器,結(jié)構(gòu)如圖2-3-2所示。頭2個字節(jié)包含測得的溫度信息,第3和第4字節(jié)th和tl的拷貝,是易失的,每次上電復(fù)位時被刷新。第5個字節(jié),

11、為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。ds18b20工作時寄存器中的分辨率轉(zhuǎn)換為相應(yīng)精度的溫度數(shù)值。該字節(jié)各位的定義如下圖所示。低5位一直為1,tm是工作模式位,用于設(shè)置ds18b20在工作模式還是在測試模式,ds18b20出廠時該位被設(shè)置為0,用戶要去改動,r1和0決定溫度轉(zhuǎn)換的精度位數(shù),來設(shè)置分辨率。圖3.5 ds18b20的字節(jié)定義ds18b20高速暫存器共9個存存單元,如表所示:表3-1 ds18b20的引腳分布圖序號 寄存器名稱 作 用 序號 寄存器名稱 0 溫度低字節(jié) 以16位補碼形式存放 4、5 保留字節(jié)1、2 1 溫度高字節(jié) 6 計數(shù)器余值 2 th/用戶字節(jié)1

12、 存放溫度上限 7 計數(shù)器/ 3 hl/用戶字節(jié)2 存放溫度下限 8 crc 以12位轉(zhuǎn)化為例說明溫度高低字節(jié)存放形式及計算:12位轉(zhuǎn)化后得到的12位數(shù)據(jù),存儲在18b20的兩個高低兩個8位的ram中,二進制中的前面5位是符號位。如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625才能得到實際溫度。 高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)部存儲器是由8個單

13、元組成,其中第0、1個存放測量溫度值,第2、3分別存放報警溫度的上下限值,第4單元為配置單元,5、6、7單元在dsl8820這里沒有被用到。對于第4個寄存器,用戶可以設(shè)置溫度轉(zhuǎn)換精度,系統(tǒng)默認(rèn)12bit轉(zhuǎn)換精度,相當(dāng)于十進制的00625,其轉(zhuǎn)換時間大約為750磷。具體見表2-4-1。圖3.6 內(nèi)部存儲器結(jié)構(gòu)圖表3-3 溫度精度配置r1r0轉(zhuǎn)換精度(16進制)轉(zhuǎn)換精度(十進制)轉(zhuǎn)換時間009bit0.593.75ms0110bit0.25187.5ms1011bit0.125375ms1112bit0.0625750ms 由可見,ds18b20溫度轉(zhuǎn)換的時間比較長,而且分辨率越高,所需要的溫度數(shù)

14、據(jù)轉(zhuǎn)換時間越長。因此,在實際應(yīng)用中要將分辨率和轉(zhuǎn)換時間權(quán)衡考慮。高速暫存ram的第6、7、8字節(jié)保留未用,表現(xiàn)為全邏輯1。第9字節(jié)讀出前面所有8字節(jié)的crc碼,可用來檢驗數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng)ds18b20接收到溫度轉(zhuǎn)換命令后,開始啟動轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以16位帶符號擴展的二進制補碼形式存儲在高速暫存存儲器的第1、2字節(jié)。單片機可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時低位在先,高位在后,數(shù)據(jù)格式以0.0625lsb形式表示。當(dāng)符號位s0時,表示測得的溫度值為正值,可以直接將二進制位轉(zhuǎn)換為十進制;當(dāng)符號位s1時,表示測得的溫度值為負值,要先將補碼變成原碼,再計算十進制數(shù)值。表2-

15、4-2是一部分溫度值對應(yīng)的二進制溫度數(shù)據(jù)。表3-4 溫度精度配置溫度/二進制表示十六進制表示+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)換后,就把測得的溫度值與ram中的th、tl字節(jié)內(nèi)容作比較。若tth或ttl,則將該器件內(nèi)的報警標(biāo)志位置位,并對主機發(fā)出的報警搜索命令作出響應(yīng)。因此,可用多只ds18b20同時測量溫度并進行報警搜索。在64位rom的最高有效字節(jié)中存儲有循環(huán)冗余檢驗碼(crc)。主機rom的前56位來計算crc值,并和存入ds18b20的crc值作比較,以判斷主機收到的rom數(shù)據(jù)是否正確。ds18b20的測溫原理是這這樣的,器件中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1;高溫

17、度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入。器件中還有一個計數(shù)門,當(dāng)計數(shù)門打開時,ds18b20就對低溫度系數(shù)振蕩器產(chǎn)生的時鐘脈沖進行計數(shù)進而完成溫度測量。計數(shù)門的開啟時間由高溫度系數(shù)振蕩器來決定,每次測量前,首先將55所對應(yīng)的一個基數(shù)分別置入減法計數(shù)器1、溫度寄存器中,計數(shù)器1和溫度寄存器被預(yù)置在55所對應(yīng)的一個基數(shù)值。減法計數(shù)器1對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行減法計數(shù),當(dāng)減法計數(shù)器1的預(yù)置值減到0時,溫度寄存器的值將加1,減法計數(shù)器1的預(yù)置將重新被裝入,減法計數(shù)器1重新開始對低溫度系數(shù)晶振產(chǎn)生的脈沖信號進行計數(shù),如此循環(huán)直到減法計數(shù)器計數(shù)到0時,停止

18、溫度寄存器的累加,此時溫度寄存器中的數(shù)值就是所測溫度值。其輸出用于修正減法計數(shù)器的預(yù)置值,只要計數(shù)器門仍未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值大致被測溫度值。 另外,由于ds18b20單線通信功能是分時完成的,它有嚴(yán)格的時隙概念,因此讀寫時序很重要。系統(tǒng)對ds18b20的各種操作按協(xié)議進行。操作協(xié)議為:初使化ds18b20(發(fā)復(fù)位脈沖)發(fā)rom功能命令發(fā)存儲器操作命令處理數(shù)據(jù)。 由于ds18b20采用的“一線總線”結(jié)構(gòu),所以數(shù)據(jù)的傳輸與命令的通訊只要通過微處理器的一根雙向io口就可以實現(xiàn)。dsl8b20約定在每次通信前必須對其復(fù)位。 圖3.7 復(fù)位時序圖 本文中有at89s52提供,trstl

19、的最小時延為,然后釋放總線,檢查dsl8b20的返回信號,看其是否已準(zhǔn)備接受其他操作,其中tpdhigh時間最小為,最長不能超過,否則認(rèn)為ds18b20沒有準(zhǔn)備好,主機應(yīng)繼續(xù)復(fù)位,直到檢測到返回信號變?yōu)榈碗娖綖橹埂1?-5 ds18b20的rom操作指令操作指令33h55hcchf0hech含義讀rom匹配rom跳過rom搜索rom報警搜索rom表3-6 ds18b20的存儲器操作指令操作指令4ehbeh48h44hd8hb4h含義寫讀內(nèi)部復(fù)制溫度轉(zhuǎn)換重新調(diào)出讀電源主機一旦檢測到ds18b20的存在,根據(jù)ds18b2的工作協(xié)議,就應(yīng)對rom進行操作,接著對存儲器操作,最后進行數(shù)據(jù)處理。在ds1

20、8b20中規(guī)定了5條對rom的操作命令。主機在發(fā)送完rom操作指令之后,就可以對ds18b20內(nèi)部的存儲器進行操作,同樣ds18b20規(guī)定了6條操作指令。 ds18b20的讀、寫時序圖見圖3.8。圖3.8 ds18b20的讀寫時序圖2. ds18b20的使用方法由于ds18b20采用的是1wire總線協(xié)議方式,即在一根數(shù)據(jù)線實現(xiàn)數(shù)據(jù)的雙向傳輸,而對at89s51單片機來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時序來完成對ds18b20芯片的訪問。由于ds18b20是在一根i/o線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴(yán)格的時序要求。ds18b20有嚴(yán)格的通信協(xié)

21、議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時序:初始化時序、讀時序、寫時序。所有時序都是將主機作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機主動啟動寫時序開始,如果要求單總線器件回送數(shù)據(jù),在進行寫命令后,主機需啟動讀時序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。對于ds18b20的讀時序分為讀0時序和讀1時序兩個過程。對于ds18b20的讀時隙是從主機把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓ds18b20把數(shù)據(jù)傳輸?shù)絾慰偩€上。ds18b20在完成一個讀時序過程,至少需要60us才能完成。ds18b20的寫時序,對于ds18b20的寫時序仍然分

22、為寫0時序和寫1時序兩個過程,對于ds18b20寫0時序和寫1時序的要求不同,當(dāng)要寫0時序時,單總線要被拉低至少60us,保證ds18b20能夠在15us到45us之間能夠正確地采樣io總線上的“0”電平,當(dāng)要寫1時序時,單總線被拉低之后,在15us之內(nèi)就得釋放單線3.2.2溫度傳感器設(shè)計原理圖及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)/廷遲時間為(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; /* 兩個初始換 都可以 /*/ 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_(); /一個機器周期:(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位序列號的rom write(0x44); / 啟動溫度轉(zhuǎn)換 init(); write(0xcc); / 跳過rom 即不必讀64位序列號的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)換命令子程序,計算溫度子程序,顯示數(shù)據(jù)刷新子程序等。3.3.1主程序主程序的主要功能是負責(zé)溫度的實時顯示、讀出并處理ds18b20的測量的當(dāng)前溫度值,

28、溫度測量每1s進行一次。這樣可以在一秒之內(nèi)測量一次被測溫度,其程序流程見圖7所示。3.3.2讀溫子程序讀出溫度子程序的主要功能是讀出ram中的9字節(jié),在讀出時需進行crc校驗,校驗有錯時不進行溫度數(shù)據(jù)的改寫。其程序流程圖如圖8示3.3.3溫度轉(zhuǎn)換子程序溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用12位分辨率時轉(zhuǎn)換時間約為750ms,在本程序設(shè)計中采用1s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如上圖,圖3.14所示3.3.4計算溫度子程序計算溫度子程序?qū)am中讀取值進行bcd碼的轉(zhuǎn)換運算,并進行溫度值正負的判定,其程序流程圖如圖3.15所示4硬件電路的設(shè)計4.1protu

29、es軟件介紹4.1.1protues軟件protel99 se 5共分5個模塊,分別是原理圖設(shè)計、pcb設(shè)計(包含信號完整性分析)、自動布線器、原理圖混合信號仿真、pld設(shè)計。 以下介紹一些protel99se的部分最新功能: l 可生成30多種格式的電氣連接網(wǎng)絡(luò)表; l 強大的全局編輯功能; l 在原理圖中選擇一級器件,pcb中同樣的器件也將被選中; l 同時運行原理圖和pcb,在打開的原理圖和pcb圖間允許雙向交叉查找元器件、引腳、網(wǎng)絡(luò) l 既可以進行正向注釋元器件標(biāo)號(由原理圖到pcb),也可以進行反向注釋(由pcb到原理圖),以保持電氣原理圖和pcb在設(shè)計上的一致性; l 滿足國際化設(shè)

30、計要求(包括國標(biāo)標(biāo)題欄輸出,gb4728國標(biāo)庫); * 方便易用的數(shù)?;旌戏抡妫嫒輘pice 3f5); l 支持用cupl語言和原理圖設(shè)計pld,生成標(biāo)準(zhǔn)的jed下載文件; * pcb可設(shè)計32個信號層,16個電源-地層和16個機加工層; l 片機文件、測試點報告等; l 經(jīng)過充分驗證的傳輸線特性和仿真精確計算的算法,信號完整性分析直接從pcb啟動; l 反射和串?dāng)_仿真的波形顯示結(jié)果與便利的測量工具相結(jié)合; 4.1.2主控制電路at89c51原理圖圖5.16主電路原理圖圖5.17 數(shù)碼管連線圖5.18 系統(tǒng)報警電路圖5.19電路的pcb圖4.2protues進行仿真程序編寫完以后,我們先對

31、其進行仿真,初步驗證電路圖和程序的可行性和正確性。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; /定義選擇報調(diào)整警溫度上限和下限(1為上限,0為下限)/*p3.2和p3.3為調(diào)整溫度報警增加鍵和減少鍵*/sbit ling=p20; /定

32、義響鈴signed char m; /溫度值全局變量bit sign=0; /外部中斷狀態(tài)標(biāo)志signed char shangxian=38; /上限報警溫度,默認(rèn)值為38signed char xiaxian=6; /下限報警溫度,默認(rèn)值為5uchar code leddata=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf;/*延時子程序*/void delay(uint i) while( i- );/*初始化ds18b20*/void init_ds18b20(void) unsigned char x=0; d

33、q=1; delay(8); /稍做延時 dq=0; /單片機將dq拉低 delay(80); /精確延時,大于480us dq=1; /拉高總線 delay(14); x=dq; /稍做延時后,如果x=0則初始化成功,x=1則初始化失敗 delay(20);/*讀一個字節(jié)*/unsigned char readonechar(void) unsigned char i=0; unsigned char dat=0; for (i=8;i0;i-) dq=0; / 給脈沖信號 dat=1; dq=1; / 給脈沖信號 if(dq) dat|=0x80; delay(4); return(dat

34、);/*寫一個字節(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); /跳過讀序號列號的操作 writeonechar(0x44); /啟動溫度轉(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); /跳過讀序號列號的操作 writeonechar(0xbe); /讀取溫度寄存器 a=readonechar(); /讀低8位 b=readonechar(); /讀高8位 t=b; tshangxian | mxiaxian) ling=1; /溫度不在范圍內(nèi)報警 else ling=0;p34=0;p35=0;p36=0;p37=0; p0 =leddatad; /顯示小數(shù)點后兩位 p34=1;p35=0;

36、p36=0;p37=0; delay(300);p34=0;p35=0;p36=0;p37=0; p0 =leddatac; /顯示小數(shù)點后一位p34=0;p35=1;p36=0;p37=0; delay(300);p34=0;p35=0;p36=0;p37=0; p0 =leddatab; /顯示個位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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論