2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  單片機課程設(shè)計</b></p><p>  題 目 : 單片機控制的溫度測試儀的設(shè)計</p><p>  學(xué)院名稱 : 電氣工程學(xué)院</p><p>  班 級 : 本09通信工程02班</p><p>  學(xué) 號 : </p&g

2、t;<p>  學(xué)生姓名 :   </p><p>  指導(dǎo)老師 : </p><p>  教研室主任 : </p><p><b>  二零一二年六月</b></p><p>  單片機控制的溫度測量儀設(shè)計</p>

3、<p><b>  摘要</b></p><p>  由于單片機技術(shù)領(lǐng)域正得到越來越廣泛你的應(yīng)用,世界上許多集成電路生產(chǎn)廠家相繼 </p><p>  推出了各種類型的單片機,其中,STC89C52單片機以優(yōu)越的性能,成熟的技術(shù),迅速占領(lǐng)了相關(guān)市場。STC89C52

4、單片機最小系統(tǒng)主要由STC89C52,RS232串口電路,晶振電路,復(fù)位電路等組成,其優(yōu)點是功能強,體積小,可靠性高,造價低和開發(fā)周期短,在日常中也發(fā)揮了很大的作用。本系統(tǒng)是利用STC89C52單片機,溫度傳感器DS18B20,蜂鳴器等元器件,構(gòu)成一個溫度檢測的單片機小系統(tǒng)。</p><p>  關(guān)鍵字:STC89C52單片機 DS18B20 最小系統(tǒng) 溫度檢測 報警</p><

5、;p><b>  Abstract</b></p><p>  Because single chip technology is getting more and more extensive application of you, many of the world's integrated circuit manufacturers successively Rolled

6、 out of the various types of single chip microcomputer, among them, STC89C52 single-chip microcomputer with superior performance, mature technology, quickly occupied the relevant market. STC89C52 single chip minimize sys

7、tem mainly by the STC89C52, RS232 serial interface circuit, crystals circuit, reset circuit and other components, its adva</p><p>  Keyword: STC89C52 single chip DS18B20 Minimum system Temperature det

8、ection Alarm</p><p><b>  目 錄</b></p><p>  1 系統(tǒng)方案設(shè)計及論證4</p><p>  1.1 設(shè)計任務(wù)與要求4</p><p><b>  1.2設(shè)計分析4</b></p><p>  1.3 各模塊方案論證

9、5</p><p>  1.3.1 控制器模塊5</p><p>  1.3.2 顯示模塊5</p><p>  1.3.3 溫度檢測模塊5</p><p>  2 單元電路介紹6</p><p>  2.1 STC89C52單片機介紹6</p><p>  2.2 溫度傳

10、感器DS18B20介紹10</p><p>  2.2.1 DS18B20測溫原理11</p><p>  2.2.2 DS18B20 的管腳排列及封裝11</p><p>  2.2.3 DS18B20內(nèi)部構(gòu)成12</p><p>  2.3 四位共陽數(shù)碼管介紹13</p><p>  2.4 報

11、警電路14</p><p>  3 系統(tǒng)整體電路圖15</p><p>  3.1 系統(tǒng)原理圖15</p><p>  4 軟件設(shè)計16</p><p>  6 心得體會18</p><p><b>  參考文獻:19</b></p><p><b&

12、gt;  附錄20</b></p><p>  附錄1:元器件清單20</p><p>  附錄2:程序清單21</p><p>  附錄3 任務(wù)書26</p><p>  1 系統(tǒng)方案設(shè)計及論證</p><p>  1.1 設(shè)計任務(wù)與要求</p><p>  題目:一個典

13、型單片機應(yīng)用系統(tǒng)設(shè)計</p><p>  要求:輸入信號為傳感器、電壓、電流、開關(guān)等形式,單片機型號可以自己選擇(51,128,430等),輸出控制信號為模擬電壓或者數(shù)字信號,控制對象可以是電機(直流電機,步進電機)、開關(guān)、顯示器等。</p><p><b>  1.2設(shè)計分析</b></p><p>  要成功實現(xiàn)設(shè)計任務(wù)與要求,系統(tǒng)必須具備

14、以下功能模塊:單片機最小系統(tǒng)、溫度檢測模塊、顯示模塊。本系統(tǒng)由溫度傳感器DS18B20檢測溫度,通過單片機采集分析數(shù)據(jù),然后送到數(shù)碼管上顯示。</p><p><b>  整體系統(tǒng)框圖如下:</b></p><p>  圖1.1 整體系統(tǒng)框圖</p><p>  1.3 各模塊方案論證

15、 </p><p>  1.3.1 控制器模塊</p><p>  方案一:采用FPGA作為主控制器。FPGA內(nèi)部具有獨立的I/O 接口和邏輯單元,使用靈活,適用性強,且相對單片機來說,還有速度快,外圍電路較少,集成度高的特點,因此特別適用于復(fù)雜邏輯電路設(shè)計。但是FPGA的成本偏高,算術(shù)運算能力不強,而且由于本設(shè)計對輸出處理的速度要求不高,所以FPGA高速處理的優(yōu)勢得不到充分體現(xiàn)。&l

16、t;/p><p>  方案二:采用ARM7TDMI-S微控制器LPC2148。32位的LPC2148工作電壓為3.3V,典型工作電流為53mA,工作頻率可高達60MHz,具有45個可承受5V電壓的I/O口,內(nèi)置寬范圍的串行通信接口,采用3級流水線工作模式,具有掉電和空閑兩種低功耗工作模式。</p><p>  方案三:采用STC89C52RC單片機作為主控制器,其有40個引腳,32個獨立的I/

17、O 口,二個外部中斷,三個定時/計數(shù)器,雖然相對FPGA來說在功能和速度上有點差異, 但單片機算術(shù)運算功能強,軟件編程靈活、可用軟件較簡單的實現(xiàn)各種算法和邏輯控制,并且由于其成本低、體積小、技術(shù)成熟和功耗小等優(yōu)點,開發(fā)過程中可以利用的資源和工具豐富。</p><p>  由于是單片機課程設(shè)計,系統(tǒng)擬采用方案三,使用STC89C52RC單片機作為本系統(tǒng)的主控制器。</p><p>  1.3

18、.2 顯示模塊</p><p>  方案一:使用數(shù)碼管進行顯示,按鍵用于切換顯示??刹捎弥芰⒐旧a(chǎn)的ZLG7290芯片來配合控制器對數(shù)碼管和按鍵進行控制,該芯片具有I2C 串行接口,只需占用控制器3個管腳,便可方便地控制數(shù)碼管顯示和檢測按鍵。 </p><p>  方案二:用12864液晶,12864液晶能同時顯示64個字符或32個漢字,工作電壓為5V,顯示內(nèi)容多,操作方便,顯示清晰

19、,不需額外電路。</p><p>  方案選擇:由于不需要顯示漢字,只需要顯示溫度數(shù)字,綜合考慮選擇方案一 </p><p>  1.3.3 溫度檢測模塊</p><p>  方案一:采用熱敏電阻,利用溫度不同其電阻值不同的特性,用A/D轉(zhuǎn)換器測量其兩端的電壓便能知道溫度的高低。這種設(shè)計簡單,但是測量復(fù)雜,不夠精確。</p><p>  方

20、案二:采用溫度和濕度轉(zhuǎn)換器DHT11同時測量溫度和濕度,該芯片的溫度誤差為正負(fù)2度,誤差過大。</p><p>  方案三:采用數(shù)字溫度傳感器DS18B20,耐磨耐碰,體積小,接口電路簡單,測量精度高。通過編程便能完成溫度數(shù)據(jù)的處理</p><p>  綜合分析,本系統(tǒng)擬采用方案三,采用DS18B20完成測溫部分。</p><p><b>  2 單元電

21、路介紹</b></p><p>  2.1 STC89C52單片機介紹</p><p>  STC89C52是一種帶8K字節(jié)閃爍可編程可檫除只讀存儲器(FPEROM-Flash Programable and Erasable Read Only Memory )的低電壓,高性能COMOS8的微處理器,俗稱單片機。該器件采用ATMEL搞密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的

22、MCS-51指令集和輸出管腳相兼容。單片機總控制電路如下圖1—1:</p><p>  圖1—1單片機總控制電路</p><p><b>  1.時鐘電路</b></p><p>  STC89C52內(nèi)部有一個用于構(gòu)成振蕩器的高增益反相放大器,引腳RXD和TXD分別是此放大器的輸入端和輸出端。時鐘可以由內(nèi)部方式產(chǎn)生或外部方式產(chǎn)生。內(nèi)部方式的時鐘

23、電路,在RXD和TXD引腳上外接定時元件,內(nèi)部振蕩器就產(chǎn)生自激振蕩。定時元件通常采用石英晶體和電容組成的并聯(lián)諧振回路。晶體振蕩頻率可以在1.2~12MHz之間選擇,電容值在5~30pF之間選擇,電容值的大小可對頻率起微調(diào)的作用。</p><p>  外部方式的時鐘電路RXD接地,TXD接外部振蕩器。對外部振蕩信號無特殊要求,只要求保證脈沖寬度,一般采用頻率低于12MHz的方波信號。片內(nèi)時鐘發(fā)生器把振蕩頻率兩分頻,

24、產(chǎn)生一個兩相時鐘P1和P2,供單片機使用。</p><p> ?。╝)內(nèi)部方式時鐘電路 (b)外部方式時鐘電路</p><p><b>  圖1—2時鐘電路</b></p><p><b>  2.復(fù)位及復(fù)位電路</b></p><p><b>  (1)復(fù)位操作</b

25、></p><p>  復(fù)位是單片機的初始化操作。其主要功能是把PC初始化為0000H,使單片機從0000H單元開始執(zhí)行程序。除了進入系統(tǒng)的正常初始化之外,當(dāng)由于程序運行出錯或操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,也需按復(fù)位鍵重新啟動。</p><p>  除PC之外,復(fù)位操作還對其他一些寄存器有影響,它們的復(fù)位狀態(tài)如表1-1所示。</p><p>  表

26、1-1 一些寄存器的復(fù)位狀態(tài)</p><p>  (2)復(fù)位信號及其產(chǎn)生</p><p>  RST引腳是復(fù)位信號的輸入端。復(fù)位信號是高電平有效,其有效時間應(yīng)持續(xù)24個振蕩周期(即二個機器周期)以上。若使用頗率為6MHz的晶振,則復(fù)位信號持續(xù)時間應(yīng)超過4us才能完成復(fù)位操作。產(chǎn)生復(fù)位信號的電路邏輯如圖1—3所示:</p><p>  圖1—3復(fù)位信號的電路邏輯圖&

27、lt;/p><p>  整個復(fù)位電路包括芯片內(nèi)、外兩部分。外部電路產(chǎn)生的復(fù)位信號(RST)送至施密特觸發(fā)器,再由片內(nèi)復(fù)位電路在每個機器周期的S5P2時刻對施密特觸發(fā)器的輸出進行采樣,然后才得到內(nèi)部復(fù)位操作所需要的信號。</p><p>  復(fù)位操作有上電自動復(fù)位相按鍵手動復(fù)位兩種方式。</p><p>  上電自動復(fù)位是通過外部復(fù)位電路的電容充電來實現(xiàn)的,其電路如圖1—

28、4(a)所示。這佯,只要電源Vcc的上升時間不超過1ms,就可以實現(xiàn)自動上電復(fù)位,即接通電源就成了系統(tǒng)的復(fù)位初始化。</p><p>  按鍵手動復(fù)位有電平方式和脈沖方式兩種。其中,按鍵電平復(fù)位是通過使復(fù)位端經(jīng)電阻與Vcc電源接通而實現(xiàn)的,其電路如圖1—4(b)所示;而按鍵脈沖復(fù)位則是利用RC微分電路產(chǎn)生的正脈沖來實現(xiàn)的,其電路如圖1—4(c)所示:</p><p> ?。╝)上電復(fù)位

29、 (b)按鍵電平復(fù)位 (c)按鍵脈沖復(fù)位</p><p><b>  圖1—4復(fù)位電路</b></p><p>  STC89C52具體介紹如下:</p><p> ?、?主電源引腳(2根)</p><p>  VCC(Pin40):電源輸入,接+5V電源</p><p>  G

30、ND(Pin20):接地線</p><p>  ②外接晶振引腳(2根)</p><p>  XTAL1(Pin19):片內(nèi)振蕩電路的輸入端</p><p>  XTAL2(Pin20):片內(nèi)振蕩電路的輸出端</p><p><b> ?、劭刂埔_(4根)</b></p><p>  RST/VPP

31、(Pin9):復(fù)位引腳,引腳上出現(xiàn)2個機器周期的高電平將使單片機復(fù)位。</p><p>  ALE/PROG(Pin30):地址鎖存允許信號</p><p>  PSEN(Pin29):外部存儲器讀選通信號</p><p>  EA/VPP(Pin31):程序存儲器的內(nèi)外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內(nèi)部程序存儲器讀指令。</p>

32、;<p>  ④可編程輸入/輸出引腳(32根)</p><p>  STC89C52單片機有4組8位的可編程I/O口,分別位P0、P1、P2、P3口,每個口有8位(8根引腳),共32根。</p><p>  PO口(Pin39~Pin32):8位雙向I/O口線,名稱為P0.0~P0.7</p><p>  P1口(Pin1~Pin8):8位準(zhǔn)雙向I/O

33、口線,名稱為P1.0~P1.7 </p><p>  P2口(Pin21~Pin28):8位準(zhǔn)雙向I/O口線,名稱為P2.0~P2.7 </p><p>  P3口(Pin10~Pin17):8位準(zhǔn)雙向I/O口線,名稱為P3.0~P3.7</p><p>  STC89C52主要功能如表1-2所示:</p><p>  表1-2 STC89C

34、52主要功能</p><p>  2.2 溫度傳感器DS18B20介紹</p><p>  該芯片采用美國DALLAS公司生產(chǎn)的 DS18B20可組網(wǎng)數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。</p><p>  其主要有以下應(yīng)用特點:</p><p> ?、侏毺氐膯?/p>

35、線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。   </p><p> ?、跍y溫范圍 -55℃~+125℃,固有測溫分辨率0.5℃。   </p><p>  ③支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,最多只能并聯(lián)8個,實現(xiàn)多點測溫,如果數(shù)量過多,會使供電電源電壓過低,從而造成信號傳輸?shù)牟环€(wěn)定。   </p&

36、gt;<p>  ④工作電源: 3~5V/DC   </p><p> ?、菰谑褂弥胁恍枰魏瓮鈬?  </p><p>  ⑥測量結(jié)果以9~12位數(shù)字量方式串行傳送   </p><p>  ⑦不銹鋼保護管直徑Φ6   </p><p>  ⑧適用于DN15~25, DN40~DN250各種介質(zhì)工業(yè)管道和狹小空間設(shè)備測溫

37、 ?、針?biāo)準(zhǔn)安裝螺紋 M10X1, M12X1.5, G1/2”任選  </p><p>  ⑩PVC電纜直接出線或德式球型接線盒出線,便于與其它電器設(shè)備連接。</p><p>  DS18B20采用獨特的一線接口,只需要一條口線通信。多點能力,簡化了分布式溫度傳感應(yīng)用,無需外部元件,可用數(shù)據(jù)總線供電,電壓范圍為3.0 V至5.5 V 無需備用電源 測量溫度范圍為-55 ° C至+

38、125 ℃ 。華氏相當(dāng)于是-67 ° F到257華氏度 -10 ° C至+85 ° C范圍內(nèi)精度為±0.5 ° C</p><p>  圖2.2(a) DS18B20溫度格式表</p><p>  圖2.2(b) DS18B20與單片機接口圖</p><p>  2.2.1 DS18B20測溫原理</p&

39、gt;<p>  圖1.2.1 DS18B20 的內(nèi)部測溫電路框圖</p><p>  低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號送給減法計數(shù)器1,為計數(shù)器提供一頻率穩(wěn)定的計數(shù)脈沖。高溫度系數(shù)晶振隨溫度變化其震蕩頻率明顯改變,很敏感的振蕩器,所產(chǎn)生的信號作為減法計數(shù)器2的脈沖輸入,為計數(shù)器2提供一個頻率隨溫度變化的計數(shù)脈沖。圖中還隱含著計數(shù)門,當(dāng)計數(shù)門打開時,DS18B2

40、0就對低溫度系數(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)生的脈沖信號進

41、行計數(shù),如此循環(huán)直到減法計數(shù)器2計數(shù)到0時,停止溫度寄存器值的累加,此時溫度寄存器中的數(shù)值即為所測溫度。斜率累加器用于補償和修正測溫過程中的非線性,其輸出用于修正減法計數(shù)器的預(yù)置值,只要計數(shù)門仍未關(guān)閉就重復(fù)上述過程,直至溫度寄存器值達到被測溫度值。</p><p>  2.2.2 DS18B20 的管腳排列及封裝</p><p>  圖2.2. 2 DS18B20 實物管腳分布圖<

42、/p><p>  DQ為數(shù)字信號輸入/輸出端;GND為電源地;VDD為外接供電電源輸入端,電源</p><p>  電 3.0~5.5V (在寄生電源接線方式時接地)。</p><p>  2.2.3 DS18B20內(nèi)部構(gòu)成</p><p>  DS18B20 內(nèi)部結(jié)構(gòu)主要由四部分組成:64 位光刻 ROM 、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器

43、 TH 和 TL 、配置寄存器。</p><p>  光刻 ROM 中的 64 位序列號是出廠前被光刻好的,它可以看作是該 DS18B20 的地址序列碼。 64 位光刻 ROM 的排列是:開始 8 位(地址: 28H )是產(chǎn)品類型標(biāo)號,接著的 48 位是該 DS18B20 自身的序列號,并且每個 DS18B20 的序列號都不相同,因此它可以看作是該 DS18B20 的地址序列碼;最后 8 位則是前面 56 位的循

44、環(huán)冗余校驗碼( CRC=X8+X5+X4+1 )。由于每一個 DS18B20 的 ROM 數(shù)據(jù)都各不相同,因此微控制器就可以通過單總線對多個 DS18B20 進行尋址,從而實現(xiàn)一根總線上掛接多個 DS18B20的目的</p><p>  圖2.2.3DS18B20內(nèi)部結(jié)構(gòu)圖</p><p>  2.3 四位共陽數(shù)碼管介紹 </p><p>  數(shù)

45、碼管按連接方式分為共陽極數(shù)碼管和共陰極數(shù)碼管。共陽數(shù)碼管是指將所有發(fā)光二極管的陽極接到一起形成公共陽極(COM)的數(shù)碼管。共陽數(shù)碼管在應(yīng)用時應(yīng)將公共極COM接到+5V,當(dāng)某一字段發(fā)光二極管的陰極為低電平時,相應(yīng)字段就點亮。當(dāng)某一字段的陰極為高電平時,相應(yīng)字段就不亮。本系統(tǒng)采用的是共陽數(shù)碼管。下面是其原理圖。 </p><p>  圖3(a)共陽數(shù)管原理圖</p><p>  如圖是一個四

46、位一體共陽數(shù)碼管,BIT1-BIT4是四位數(shù)碼管的正極。A-G分別對應(yīng)個段的負(fù)極。其內(nèi)部框圖如下:</p><p>  圖3(b) 共陽數(shù)碼管內(nèi)部框圖</p><p><b>  2.4 報警電路</b></p><p>  當(dāng)溫度超過程序設(shè)定的最大溫度時,蜂鳴器會發(fā)出報警聲</p><p>  圖4(a)蜂鳴器連接電

47、路 </p><p>  圖4中蜂鳴器使用的是PNP三極管進行驅(qū)動控制的,此蜂鳴器為電磁式有源蜂鳴器。三極管的集電極通過蜂鳴器接5V電源,基極是控制端,發(fā)射極接地,當(dāng)單片機的P2.3輸出低電平時,三極管導(dǎo)通,蜂鳴器發(fā)聲。蜂鳴器為感性原件,也可以在兩端并接一個二極管來起到泄放作用。</p><p>  3 系統(tǒng)整體電路圖</p><p><b>  3.1

48、 系統(tǒng)原理圖</b></p><p><b>  圖3.1系統(tǒng)原理圖</b></p><p>  3.2 系統(tǒng)PCB圖</p><p>  圖3.2系統(tǒng)PCB圖</p><p><b>  4 軟件設(shè)計</b></p><p>  發(fā)送端軟件設(shè)計流程圖如下圖所

49、示。</p><p><b>  5 調(diào)試 </b></p><p>  完成程序下載后進行調(diào)試時,四位數(shù)碼管只有中間兩位顯示,經(jīng)過排查,發(fā)現(xiàn)是由于虛焊導(dǎo)致,重新焊接后,數(shù)碼管能正確顯示溫度,將打火機靠近溫度傳感器DS18B20時,明顯看到數(shù)碼管上溫度數(shù)字不斷升高,當(dāng)超過程序中設(shè)定的35°時發(fā)生報警。</p><p><b&g

50、t;  6 心得體會</b></p><p>  通過兩周的單片機課程設(shè)計我學(xué)到了很多在課本上學(xué)不到的東西,要完成一個設(shè)計,不僅需要豐富的知識,還要有嚴(yán)謹(jǐn)?shù)膽B(tài)度。制作實物毫無疑問增強了自己的動手能力,制作PCB板得整個流程我都完整的經(jīng)歷了一遍,其中的一些細(xì)節(jié)問題還真是不能忽視,比如不小心虛焊了就不能實現(xiàn)功能,還要花很多時間來排查問題??傊ㄟ^這次設(shè)計,我懂得了理論與實踐的相結(jié)合的重要意義,學(xué)會了堅持

51、,耐心和努力,我想這為自己今后的學(xué)習(xí)和工作做出了最好的榜樣。</p><p>  我想單片機這門課程的重要性對于我們專業(yè)來說是不言而喻的。所以通過這樣一次課程設(shè)計我體會到了自己這方面知識還不是很扎實,特別是對于編寫程序方面,我還有很多問題,我還要加強平常的練習(xí)和學(xué)習(xí) ,進一步提高自己。</p><p><b>  參考文獻: </b></p><p

52、>  黃智偉.凌陽單片機課程設(shè)計[M]. 北京:北京航空航天大學(xué)出版社,2007.6</p><p>  胡漢才,單片機原理及其接口技術(shù),清華大學(xué)出版社</p><p>  黃智偉.無線數(shù)字收發(fā)電路設(shè)計[M].北京:電子工業(yè)出版社.2004年</p><p>  黃智偉.全國大學(xué)生電子設(shè)計競賽制作實訓(xùn)[M].北京:北京航空航天大學(xué)出版社,2006.</p

53、><p>  黃智偉.全國大學(xué)生電子設(shè)計競賽 技能訓(xùn)練(第2版)[M].北京:北京航空航天大學(xué)出版社,2011.1,全國大學(xué)生電子設(shè)計競賽“十二五”規(guī)劃教材</p><p>  黃智偉.全國大學(xué)生電子設(shè)計競賽 電路設(shè)計(第2版)[M].北京:北京航空航天大學(xué)出版社,2011.1,全國大學(xué)生電子設(shè)計競賽“十二五”規(guī)劃教材</p><p><b>  附錄<

54、/b></p><p><b>  附錄1:元器件清單</b></p><p><b>  表附-1元器件清單</b></p><p><b>  附錄2:程序清單</b></p><p>  #include < reg51.h ></p>&

55、lt;p>  #include < intrins.h ></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit DQ = P3^7 ; //定義DS18B20端口DQ</p><p>  sbit

56、 BEEP=P3^6 ; //蜂鳴器驅(qū)動線</p><p>  sbit wei1 =P2^4;</p><p>  sbit wei2 =P2^5;</p><p>  sbit wei3 =P2^6;</p><p>  sbit wei4 =P2^7;</p><p>  bit presence ;<

57、/p><p>  unsigned char code ditab[16] = {0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,</p><p>  0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09} ;///*小數(shù)位表,四舍五入*/</p><p>  unsigned char data temp_

58、data[2] = {0x00,0x00} ;</p><p>  unsigned char data display[5] = {0x00,0x00,0x00,0x00,0x00} ;</p><p>  uchar code table[]={0xc0,0xf9,0xa4,0xb0,</p><p>  0x99,0x92,0x82,0xf8,</

59、p><p>  0x80,0x90,0x88,0x83,</p><p>  0xc6,0xa1,0x86,0x8e};</p><p>  uchar code table1[]={0x40,0x79,0x24,0x30,</p><p>  0x19,0x12,0x02,0x78,</p><p>  0x00,0x1

60、0,0x08,0x03,</p><p>  0x46,0x21,0x06,0x0e,0x3f/*(橫杠和小數(shù)點*/,0x7f/*(只顯示小數(shù)點*/};</p><p>  void beep() ;</p><p>  unsigned char code mytab[8] = {0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00}

61、;</p><p>  #define delayNOP() ; {_nop_() ;_nop_() ;_nop_() ;_nop_() ;} ;</p><p>  /**************延時1MS*******************************/</p><p>  void delay_ms(int ms)</p><

62、p><b>  {</b></p><p>  unsigned char y ;</p><p>  while(ms--)</p><p><b>  {</b></p><p>  for(y = 0 ; y<250 ; y++)</p><p><b

63、>  {</b></p><p><b>  _nop_() ;</b></p><p><b>  _nop_() ;</b></p><p><b>  _nop_() ;</b></p><p><b>  _nop_() ;</b>

64、;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /*us級延時函數(shù) */</p><

65、p>  /*******************************************************************/</p><p>  void delay_us(unsigned int num)</p><p><b>  {</b></p><p>  while( --num ) ;</p&g

66、t;<p><b>  }</b></p><p>  /*初始化ds1820 */</p><p>  /*******************************************************************/</p><p&g

67、t;  Init_DS18B20(void)</p><p><b>  {</b></p><p>  //DQ = 1 ; //DQ復(fù)位</p><p>  //Delay(8) ; //稍做延時</p><p>  DQ = 0 ; //單片機將DQ拉低</p><p&

68、gt;  delay_us(600) ; //精確延時 大于 480us</p><p>  DQ = 1 ; //拉高總線</p><p>  delay_us(8) ;</p><p>  presence = DQ ; //如果=0則初始化成功 =1則初始化失敗</p><p>  delay_us(100) ;&

69、lt;/p><p><b>  DQ = 1 ;</b></p><p>  return(presence) ; //返回信號,0=presence,1= no presence</p><p><b>  }</b></p><p>  /* 讀一個字節(jié) */

70、</p><p>  /*******************************************************************/</p><p>  ReadOneChar(void)</p><p><b>  {</b></p><p>  unsigned char i = 0 ;&

71、lt;/p><p>  unsigned char dat = 0 ;</p><p>  for (i = 8 ; i > 0 ; i--)</p><p><b>  {</b></p><p>  DQ = 0 ; // 給脈沖信號</p><p>  dat >>= 1 ;&

72、lt;/p><p>  DQ = 1 ; // 給脈沖信號</p><p><b>  if(DQ)</b></p><p>  dat |= 0x80 ;</p><p>  delay_us(4) ;</p><p><b>  }</b></p><p&

73、gt;  return (dat) ;</p><p><b>  }</b></p><p>  /* 寫一個字節(jié) */</p><p>  /************************************************************

74、*******/</p><p>  void WriteOneChar(unsigned char dat)</p><p><b>  {</b></p><p>  unsigned char i = 0 ;</p><p>  for (i = 8 ; i > 0 ; i--)</p><

75、;p><b>  {</b></p><p><b>  DQ = 0 ;</b></p><p>  DQ = dat&0x01 ;</p><p>  delay_us(5) ;</p><p><b>  DQ = 1 ;</b></p>&l

76、t;p><b>  dat>>=1 ;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  /* 讀取溫度 */</p><p>  /*******

77、************************************************************/</p><p>  void Read_Temperature(void)</p><p><b>  {</b></p><p>  Init_DS18B20() ;</p><p>  Writ

78、eOneChar(0xCC) ; // 跳過讀序號列號的操作</p><p>  WriteOneChar(0x44) ; // 啟動溫度轉(zhuǎn)換</p><p>  Init_DS18B20() ;</p><p>  WriteOneChar(0xCC) ; //跳過讀序號列號的操作</p><p>  WriteOneChar(0xB

79、E) ; //讀取溫度寄存器</p><p>  temp_data[0] = ReadOneChar() ; //溫度低8位</p><p>  temp_data[1] = ReadOneChar() ; //溫度高8位</p><p><b>  }</b></p><p>  /* 數(shù)據(jù)轉(zhuǎn)換與溫度顯示

80、 */</p><p>  /*******************************************************************/</p><p>  void Disp_Temperature()</p><p><b>  {&

81、lt;/b></p><p>  display[4]=temp_data[0]&0x0f ;</p><p>  display[0]=ditab[display[4]] ; //查表得小數(shù)位的值</p><p>  display[4]=((temp_data[0]&0xf0)>>4)|((temp_data[1]&am

82、p;0x0f)<<4) ;</p><p>  display[3]=display[4]/100 ;</p><p>  display[1]=display[4]%100 ;</p><p>  display[2]=display[1]/10 ;</p><p>  display[1]=display[1]%10 ;<

83、;/p><p>  P0 = table[display[3]];</p><p><b>  wei1=0;</b></p><p><b>  wei2=1;</b></p><p><b>  wei3=1;</b></p><p><b>

84、  wei4=1;</b></p><p>  delay_us(100);</p><p><b>  wei1=1;</b></p><p>  P0 = table[display[2]];</p><p><b>  wei1=1;</b></p><p>

85、;<b>  wei2=0;</b></p><p><b>  wei3=1;</b></p><p><b>  wei4=1;</b></p><p>  delay_us(100);</p><p><b>  wei2=1;</b></p&

86、gt;<p>  P0 = table1[display[1]];</p><p><b>  wei1=1;</b></p><p><b>  wei2=1;</b></p><p><b>  wei3=0;</b></p><p><b>  w

87、ei4=1;</b></p><p>  delay_us(100);</p><p><b>  wei3=1;</b></p><p>  P0 = table[display[0]];</p><p><b>  wei1=1;</b></p><p>&l

88、t;b>  wei2=1;</b></p><p><b>  wei3=1;</b></p><p><b>  wei4=0;</b></p><p>  delay_us(100);</p><p><b>  wei4=1;</b></p>

89、<p><b>  }</b></p><p>  /*******************************************************************/</p><p>  /* 蜂鳴器響一聲 */</p><p>  /********************

90、***********************************************/</p><p>  void beep()</p><p><b>  {</b></p><p>  unsigned char y ;</p><p>  for (y=0 ;y<100 ;y++)</p&g

91、t;<p><b>  {</b></p><p>  delay_us(30) ;</p><p>  BEEP=!BEEP ; //BEEP取反</p><p><b>  }</b></p><p>  BEEP=1 ;

92、 //關(guān)閉蜂鳴器</p><p>  //delay_us(40000) ;</p><p><b>  }</b></p><p>  /* 主函數(shù) */</p><p>  /************************************/</p><p>  v

93、oid main()</p><p><b>  {</b></p><p>  uchar warn_temp;</p><p>  Read_Temperature() ;</p><p>  delay_ms(200); //延時200ms,跳過傳感器初始化時的溫度</p><p>

94、<b>  do</b></p><p><b>  {</b></p><p>  Read_Temperature() ;</p><p>  warn_temp=display[2]*10+display[1];</p><p>  if(warn_temp>34) //35度時報

95、警</p><p><b>  {</b></p><p>  Disp_Temperature() ;</p><p><b>  beep() ;</b></p><p><b>  }</b></p><p>  Disp_Temperature(

96、) ; </p><p><b>  }</b></p><p>  while(!presence) ;</p><p><b>  do</b></p><p><b>  {</b></p><p>  Init_DS18B20() ;<

97、/p><p><b>  beep() ;</b></p><p><b>  }</b></p><p>  while(presence) ;</p><p><b>  }</b></p><p><b>  附錄3 任務(wù)書</b&g

98、t;</p><p>  南華大學(xué)電氣工程學(xué)院 </p><p>  《單片機課程設(shè)計》任務(wù)書</p><p>  設(shè)計題目: 一個典型的單片機應(yīng)用系統(tǒng)設(shè)計 </p><p>  專 業(yè): 本09通信01/02班 </p><p>  學(xué)生姓名: 學(xué)

99、 號: </p><p>  起迄日期: 2012年5月27日 ~2012年6月9日 </p><p>  指導(dǎo)教師: </p><p>  教研室主任: </p><p>  《單片機課程設(shè)計》任務(wù)書</p>

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論