




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
目錄TOC\o"1-4"\u一、引言 二、控制系統(tǒng)的總體設(shè)計(jì) (一)控制系統(tǒng)具體功能該系統(tǒng)的設(shè)計(jì)使用溫度傳感器收集環(huán)境溫度數(shù)據(jù)。它可以通過控制繼電器的關(guān)閉開啟進(jìn)而控制風(fēng)扇,加熱器和其他外部設(shè)備實(shí)時(shí)控制的溫室的溫度。提供最佳的溫度環(huán)境,蔬菜作物的生長(zhǎng)能大大提高蔬菜作物的產(chǎn)量和品質(zhì),以滿足日益增長(zhǎng)的蔬菜作物的需要。本溫控系統(tǒng)的開發(fā)設(shè)計(jì)有以下功能1.根據(jù)不同的作物,不同區(qū)域和不同季節(jié)的實(shí)際需要,不同的溫度控制范圍可以調(diào)節(jié)。2.實(shí)時(shí)采集,并在溫室環(huán)境溫度參數(shù)的顯示。3.根據(jù)用戶需求自動(dòng)調(diào)整在一定范圍內(nèi)在溫室的溫度參數(shù)。該系統(tǒng)可以通過控制外部設(shè)備調(diào)整在溫室到設(shè)定溫度范圍內(nèi)的溫度。4.溫度超過設(shè)定上限報(bào)警。當(dāng)溫室內(nèi)的環(huán)境溫度超過允許范圍時(shí),該系統(tǒng)設(shè)備可以發(fā)出警報(bào),并且可以導(dǎo)出一個(gè)報(bào)警信號(hào)。用戶可以根據(jù)自己的情況連接各種報(bào)警裝置。 (二)控制系統(tǒng)整體結(jié)構(gòu) 本設(shè)計(jì)溫度控制系統(tǒng)由硬件電路模塊和單片機(jī)軟件模塊組成。本溫度控制系統(tǒng)由電源、單片機(jī)、傳感器、鍵盤輸入、晶體管顯示、報(bào)警、復(fù)位、繼電器控制、晶振共八個(gè)部分組成硬件電路模塊,系統(tǒng)框圖如圖2.1所示。圖2.1(三)硬件設(shè)備的選擇1.控制芯片的選擇選擇一:選用STC89C51單片機(jī)作為主控模塊芯片。STC89C51具有8k在線編程一種非易失性(Non-Volatile)內(nèi)存,是一款低功耗、高性能的八位ComplementaryMetalOxideSemiconductor微型處理器。STC89C51單片機(jī)的芯片內(nèi)核使用的是英特爾公司MCS-51系列內(nèi)核,使其指令完全兼容英特爾公司生產(chǎn)的MCS-51系列單片機(jī),該單片機(jī)具有很多英特爾公司MCS-51系列單片機(jī)不具備的功能。該單片機(jī)還集成了4K的帶電可擦可編程只讀存儲(chǔ)器,可以通過下載軟件直接把程序?qū)雴纹瑱C(jī)只讀程序存儲(chǔ)器,在系統(tǒng)無法保持不掉電運(yùn)行時(shí)就不需要在外接存儲(chǔ)器芯片進(jìn)行存儲(chǔ)。STC89C51單片機(jī)在大學(xué)的課程中接觸和使用較多并且具有的開發(fā)簡(jiǎn)單、可在線編程下載、成本低等優(yōu)點(diǎn),如其余方案沒有太大的優(yōu)點(diǎn)優(yōu)先選擇此主控芯片。選擇二:采用PIC16F877A單片機(jī)作為主控芯片。該單片機(jī)具一種電流關(guān)掉后所存儲(chǔ)的數(shù)據(jù)不會(huì)消失的存儲(chǔ)器,屬于PIC系統(tǒng)8位單片機(jī)微機(jī),可反復(fù)擦寫程序。是由美國微芯科技公司所生產(chǎn)開發(fā)的新產(chǎn)品。但是PIC16F877A單片機(jī)相對(duì)STC89C51單片機(jī)開發(fā)成本高,難度較大。選擇三:采用MSP430單片機(jī)作為主控芯片。將多個(gè)不同功能的微處理器、數(shù)字電路邏輯系統(tǒng)和模擬電路系統(tǒng)集成成系統(tǒng)封裝成單個(gè)電氣元件這就是MSP430單片機(jī),該系列單片微控制器是全球最大的數(shù)字信號(hào)處理與模擬技術(shù)半導(dǎo)體供應(yīng)商之一的德州儀器公司一九九六年開始推向市場(chǎng)的一種十六位超低功耗、具有采用多級(jí)指令流水線結(jié)構(gòu)的混合信號(hào)處理器。該系列單片微控制器多應(yīng)用于特殊環(huán)境下無法接入市電便攜式儀器儀表中。MSP430相對(duì)51單片機(jī)價(jià)格昂貴、開發(fā)難度較大。所以在本次設(shè)計(jì)中不宜采用。考慮到資源的利用,節(jié)約成本和降低開發(fā)的難易程度,最后綜合各方案的優(yōu)缺點(diǎn),最終選擇使用具有英特爾公司MCS-51系列內(nèi)核的STC89C51單片機(jī)作為主控芯片。 2.溫度傳感器的選擇溫度數(shù)據(jù)和人們生活密切相關(guān),大多數(shù)人不能直接感知天氣或濕度的變化只能間接感知,但溫度從每天的開始就在時(shí)刻感知它的變化,影響人民生活的方方面面。在蔬菜大棚種植過程中,溫度更是一個(gè)影響蔬菜生長(zhǎng)發(fā)育的關(guān)鍵性數(shù)據(jù)。在各種傳感器中,溫度傳感器是應(yīng)用最廣泛的一種。市面上有多種多樣的溫度傳感器和各種不同的測(cè)量方法,溫度傳感器綜合方案有以下幾種:選擇一:使用熱敏電阻作為傳感器眾所周知溫度的變化會(huì)造成電阻的變化,顧名思義熱敏電阻是對(duì)溫度敏感的電阻,正常電阻會(huì)極力的減小溫度對(duì)阻值的影響,但熱敏電阻卻反其道而行,利用熱敏電阻阻值隨溫度變化而顯著變化的特性,采集這兩個(gè)電阻變化的分壓值,并進(jìn)行模擬信號(hào)轉(zhuǎn)數(shù)字信號(hào)轉(zhuǎn)換。此設(shè)計(jì)方案需用模擬信號(hào)轉(zhuǎn)數(shù)字信號(hào)電路,增加硬件成本。熱敏電阻的阻值和溫度變化曲線特殊轉(zhuǎn)換函數(shù)復(fù)雜,而且模擬信號(hào)在傳輸過程中會(huì)失真經(jīng)過數(shù)模轉(zhuǎn)換后的數(shù)值會(huì)產(chǎn)生不小測(cè)量誤差。選擇二:使用模擬溫度傳感器AD590模擬溫度傳感器AD590需要設(shè)計(jì)復(fù)雜的模擬電路使電流變化轉(zhuǎn)換成電壓的變化,然后通過模擬信號(hào)轉(zhuǎn)換數(shù)字信號(hào)電路轉(zhuǎn)換后接到單片機(jī)中,因?yàn)樵撛敵鲭娏鲿?huì)隨溫度的變化而變化。這種方法焊接電路,而且費(fèi)不低,還容易在線路傳輸、電流電壓轉(zhuǎn)換、模擬信號(hào)轉(zhuǎn)換這些地方產(chǎn)生誤差。選擇三:采用數(shù)字式溫度傳感器DS18B20該傳感器為數(shù)字式傳感器可以使用單獨(dú)的數(shù)據(jù)線和單片機(jī)進(jìn)行串口通訊導(dǎo)入環(huán)境溫度數(shù)據(jù),電路上與單片機(jī)連接單線連接,不需要模擬信號(hào)轉(zhuǎn)換數(shù)字信號(hào)電路,成本低廉,可以顯著的簡(jiǎn)化系統(tǒng)電路,只需要在軟件上多加注意串口通訊程序的細(xì)節(jié)。數(shù)字式溫度傳感器還具有測(cè)量精度高、體積小封裝多樣化等優(yōu)點(diǎn)。綜合各方案的優(yōu)缺點(diǎn)選用DS18B20作為溫度采集芯片。 3.顯示器件的選擇選擇一:采用LCD1602液晶顯示屏。該顯示元件不僅可以使用并行數(shù)據(jù)傳輸,在控制元件引腳不足時(shí)串行數(shù)據(jù)傳輸也可以使用,軟件編程簡(jiǎn)單,只要掌握采用HD44780液晶的軟件編程設(shè)計(jì)就可以熟練編寫程序控制該液晶顯示屏。液晶顯示功能強(qiáng)大,可以同時(shí)顯示出兩行各十六個(gè)字符即三十二個(gè)字符,其中每一個(gè)字符都是由5·7的點(diǎn)陣組成,可包括數(shù)字、字母、符號(hào)、并且可以根據(jù)特殊需要自定義字符。選擇二:采用LCD12864液晶顯示屏。帶中文字庫該顯示模塊最具特色的功能,內(nèi)置八千一百九十二個(gè)16*16點(diǎn)漢字庫,和一百二十八個(gè)分辨率16*8點(diǎn)ASCII字符庫。利用LCD12864液晶顯示屏各類接口方式和指令簡(jiǎn)單,操作方便,它可以形成一個(gè)完整的中文計(jì)算機(jī)交互式圖形界面。可以顯示兩行共三十二個(gè)分辨率十六乘十六點(diǎn)陣的漢字。不僅低電壓低功耗,還可以通過程序的編譯進(jìn)而實(shí)現(xiàn)圖形顯示。LCD12864液晶顯示屏各類功能強(qiáng)大,但所顯示內(nèi)容過大,導(dǎo)致在顯示空間的浪費(fèi),并且該液晶的成本高昂。選擇三:采用LED數(shù)碼管動(dòng)態(tài)掃描顯示。該顯示如果采用靜態(tài)掃描法與單片微控制器連接時(shí)占用單片微控制器的引腳口較多,當(dāng)需求超過一定數(shù)量會(huì)時(shí)造成引腳不夠,并且在較多的元件連接時(shí)單片機(jī)的引腳輸出功率不足,需要額外設(shè)計(jì)一個(gè)三極管放大電路通過該驅(qū)動(dòng)電路放大電流后控制該顯示元件,會(huì)增大額外的焊接風(fēng)險(xiǎn),還有就是采用數(shù)碼管進(jìn)行顯示的話,由于數(shù)碼管引腳較多,顯示的內(nèi)容多了后會(huì)增加元件的使用數(shù)量和成本,并且對(duì)于電路進(jìn)行焊接容易造成虛焊概率增加,焊接錯(cuò)誤概率增大。但是LED數(shù)碼管的價(jià)格便宜,不僅僅可以顯示數(shù)字,還可以進(jìn)行簡(jiǎn)單的字母的顯示,最主要的是熟悉該元件的焊接和編程設(shè)計(jì)。因?yàn)樵诖髮W(xué)的課程中接觸和使用較多,如其余方案沒有太大的優(yōu)點(diǎn)優(yōu)先選擇此元件。結(jié)合本次設(shè)計(jì)中的實(shí)際情況發(fā)現(xiàn)設(shè)計(jì)中的只需要數(shù)字和簡(jiǎn)單字母,因此擇數(shù)碼管進(jìn)行顯示最具有實(shí)際意義。(四)系統(tǒng)工作原理溫度傳感器DS18B20的作用是采集蔬菜大棚內(nèi)的環(huán)境溫度,并進(jìn)行轉(zhuǎn)換為數(shù)字信號(hào)通過串口通訊導(dǎo)入單片機(jī)內(nèi)部。數(shù)字信號(hào)通過過單線接口送入數(shù)字溫度傳感器元件或從數(shù)字溫度傳感器元件送出,該測(cè)溫元件傳感器和數(shù)字轉(zhuǎn)換電路都集成封裝在一起使其成為單個(gè)電器元件,每個(gè)數(shù)字溫度傳感器生產(chǎn)封裝時(shí)都已給定了獨(dú)一無二的六十四位序列號(hào),并且該數(shù)字溫度傳感器只有一個(gè)數(shù)字信號(hào)輸入輸出口,因此,單片機(jī)只需一條信號(hào)導(dǎo)線就能與數(shù)字溫度傳感器進(jìn)行通信,這樣就節(jié)省了數(shù)模轉(zhuǎn)換需要的電子元器件和大量導(dǎo)線。實(shí)時(shí)溫度數(shù)據(jù)通過串口通訊以單線數(shù)字方式傳輸,使得溫控系統(tǒng)極大的減小了信號(hào)失真發(fā)生的概率,適合于大部分環(huán)境和地區(qū)的溫度測(cè)量。因?yàn)樵摐囟扔?jì)使用單個(gè)信號(hào)導(dǎo)線利用串口通訊形式傳輸環(huán)境溫度數(shù)據(jù),故不需要模擬信號(hào)轉(zhuǎn)換數(shù)字信號(hào)轉(zhuǎn)換器。系統(tǒng)主要技術(shù)指標(biāo)如下表所示溫度控制范圍0℃~50℃溫度測(cè)量精度±0.5℃顯示分辨率0.1℃工作電壓3v~5.5v三、溫度控制系統(tǒng)電路設(shè)計(jì)(一)控制模塊電路1.單片機(jī)芯片的內(nèi)部邏輯一個(gè)芯片的微型計(jì)算機(jī)的內(nèi)部結(jié)構(gòu)可以被劃分為四個(gè)部分:處理器CPU,存儲(chǔ)器,并行輸入和輸出接口,定時(shí)和切斷系統(tǒng),如圖3.1所示。圖3.12.單片機(jī)引腳功能STC89C51引腳如圖2.2所示圖3.2電源引腳2個(gè)外接晶體引腳2個(gè)并行I/O引腳32(4個(gè)8位口)控制引腳4個(gè)3.單片機(jī)最小系統(tǒng)單片機(jī)最小系統(tǒng)也可以從字面上進(jìn)行理解就是用最少的電子元器件和電路使其運(yùn)行的系統(tǒng)。單片機(jī)不比得普通的數(shù)字電路邏輯芯片,它通電后并不能直接使用還需要而外的兩個(gè)外部模塊來實(shí)現(xiàn)單片機(jī)的正常運(yùn)行。晶振電路單片機(jī)有兩個(gè)獨(dú)特的引腳分別是XTAL1和XTAL2,它們可以配置內(nèi)部振蕩電路或者由外部時(shí)鐘驅(qū)動(dòng),因?yàn)樗鼈兪禽斎牒洼敵龇聪喾糯笃鳌D2.3中采用的是內(nèi)內(nèi)部振蕩電路,在兩個(gè)引腳上外接特定頻率的石英晶體和兩個(gè)特定大小的電容就可以生成自激振蕩。石英晶體頻率可以在一點(diǎn)二到十二兆赫茲范圍內(nèi)選擇,在本設(shè)計(jì)中用的十二兆赫茲的石英晶振。電容可以在二十到四十皮法范圍內(nèi)選擇通常選取三十皮法瓷電容就可以了。圖3.3(2)復(fù)位電路·上電復(fù)位芯片通電后,使用R和C充電自動(dòng)完成重新上電。當(dāng)使用頻率為六兆赫茲晶體振蕩器,復(fù)位在圖2.4所示電路。圖3.4·上電復(fù)位兼手動(dòng)復(fù)位不僅可以使用上述方式完成芯片復(fù)位,而且還使用該按鈕來控制芯片復(fù)位,從而給與單芯片微計(jì)算機(jī)的復(fù)位引腳超過兩個(gè)芯片機(jī)器周期的高電平來完成手動(dòng)復(fù)位功能。復(fù)位電路如圖2.5所示。圖3.5完整的STC89C51單片機(jī)最小系統(tǒng)電路圖如圖2.6所示。圖3.6(二)控制模塊輸入電路1.DS18B20溫度傳感器設(shè)計(jì)(1)溫度傳感器DS18B20概述該數(shù)字溫度傳感器相比傳統(tǒng)的熱敏電阻測(cè)溫極大的簡(jiǎn)化了電路方便實(shí)際運(yùn)用中的鋪設(shè),并且可根據(jù)實(shí)際要求通過單片機(jī)軟件編程改變R1和R0來設(shè)置傳感器分辨率用戶以實(shí)際需要可以設(shè)置九到十二位分辨率設(shè)置(下表為各分辨率溫度最大轉(zhuǎn)換時(shí)間表2.6)。表3.7R1R0分辨率溫度最大轉(zhuǎn)換時(shí)間009位93.75ms0110位187.5ms1011位375ms1112位750ms(2)DS18B20的性能特點(diǎn)只需要單個(gè)引腳來傳輸環(huán)境溫度數(shù)據(jù)與單片機(jī)雙向通訊;多個(gè)該溫度傳感器可以連接到單片機(jī)單個(gè)通信引腳上,進(jìn)而實(shí)現(xiàn)多點(diǎn)測(cè)控;不需要模擬信號(hào)轉(zhuǎn)換數(shù)字信號(hào)轉(zhuǎn)換器等外部器件;對(duì)電源屬性要求不到,電壓大于三伏小于五點(diǎn)五伏;待機(jī)功耗極低,靜態(tài)電流小于三微安;溫度以九到十二位二進(jìn)制數(shù)字表示;在軟件中可以定義報(bào)警設(shè)置;具有負(fù)壓特性電源反接不容易燒壞;測(cè)量最低為負(fù)五十五攝氏度最高為一百二十五攝氏度;在負(fù)十?dāng)z氏度到八十五攝氏度區(qū)間內(nèi)誤差為零點(diǎn)五攝氏度 (3)DS18B20引腳溫度傳感器DS18B20采用三引腳或八引腳小外形集成電路封裝如圖2.8所示。圖3.8各引腳說明: GND接地I/O 輸入輸出 VDD 外部電源NC 空引腳 (4)DS18D20內(nèi)部結(jié)構(gòu)該傳感器由六十四位只讀存儲(chǔ)器、非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL、溫度傳感器、配置寄存器著這幾部分組成。該溫度傳感器內(nèi)部結(jié)構(gòu)如圖2.9所示。只讀存儲(chǔ)器中的六十四位序列號(hào)在元件生產(chǎn)封裝的過程中刻錄到內(nèi)部,由于只讀存儲(chǔ)器一旦數(shù)據(jù)就無法再將之改變,它和人的身份證號(hào)差不多每個(gè)人的身份證號(hào)碼各不相同,每個(gè)溫度傳感器的六十四位序列號(hào)也不相同。只讀存儲(chǔ)器的作用是使所有的數(shù)字傳感器都各不相同,這樣就可以實(shí)現(xiàn)單個(gè)單片機(jī)引腳上并聯(lián)多個(gè)該溫度傳感器的目的。圖3.9 (5)溫度傳感器DS18B20基本原理根據(jù)該溫度傳感器的通訊協(xié)議,主控模塊控制該傳感器完成環(huán)境數(shù)據(jù)讀取之前需要經(jīng)過下列步驟:首先在任何一次獲取測(cè)控?cái)?shù)據(jù)之前將數(shù)據(jù)線電平變?yōu)榈碗娖揭欢〞r(shí)間然后恢復(fù)使其復(fù)位,然后收到低頻電流復(fù)位成功信號(hào)后發(fā)送一條ROM指令,最后發(fā)送RAM指令,在這之后才能對(duì)該傳感器進(jìn)行操作。復(fù)位要求主控模塊將數(shù)據(jù)線高電平轉(zhuǎn)換為低電平五百微秒然結(jié)束后恢復(fù),當(dāng)傳感器收到控制模塊的反饋后等待十六到七十微秒,后發(fā)出五十到二百四十微秒的低頻電流,主控模塊收到其發(fā)送的低頻電流以后就可以知道復(fù)位成功。下面表2.10為ROM指令表,表2.11位RAM指令表。表3.10DS18B20ROM指令表指令約定代碼功能讀ROM33H讀DS1820溫度傳感器ROM中的編碼(即64位地址)符合ROM55H發(fā)出此命令之后,接著發(fā)出64位ROM編碼,訪問單總線上與該編碼相對(duì)應(yīng)的DS1820使之作出響應(yīng),為下一步對(duì)該DS1820的讀寫作準(zhǔn)備。搜索ROM0FOH用于確定掛接在同一總線上DS1820的個(gè)數(shù)和識(shí)別64位ROM地址。為操作各器件作好準(zhǔn)備。跳過ROM0CCH忽略64位ROM地址,直接向DS1820發(fā)溫度變換命令。適用于單片工作。告警搜索命令0ECH執(zhí)行后只有溫度超過設(shè)定值上限或下限的片子才做出響應(yīng)。表3.11DS18B20RAM指令表指令約定代碼功能溫度變換44H啟動(dòng)DS1820進(jìn)行溫度轉(zhuǎn)換,12位轉(zhuǎn)換時(shí)最長(zhǎng)為750ms(9位為93.75ms)。結(jié)果存入內(nèi)部9字節(jié)RAM中。讀暫存器0BEH讀內(nèi)部RAM中9字節(jié)的內(nèi)容寫暫存器4EH發(fā)出向內(nèi)部RAM的3、4字節(jié)寫上、下限溫度數(shù)據(jù)命令,緊跟該命令之后,是傳送兩字節(jié)的數(shù)據(jù)。復(fù)制暫存器48H將RAM中第3、4字節(jié)的內(nèi)容復(fù)制到EEPROM中。重調(diào)EEPROM0B8H將EEPROM中內(nèi)容恢復(fù)到RAM中的第2、3字節(jié)。讀供電方式0B4H讀DS1820的供電模式。寄生供電時(shí)DS1820發(fā)送“0”,外接電源供電DS1820發(fā)送“1”。DS18B20單總線控制時(shí)序圖如圖3.12所示。圖3.12當(dāng)傳感器完成復(fù)位與主控模塊成功通訊后接收到的溫度轉(zhuǎn)換指令后啟動(dòng)轉(zhuǎn)換。操作完成后單片微控制器通過串行通訊可以讀取此環(huán)境溫度數(shù)據(jù),環(huán)境數(shù)據(jù)值以補(bǔ)碼的十六位二進(jìn)制數(shù)據(jù)保存在Cache的第一第二字節(jié),讀取溫度二進(jìn)制數(shù)據(jù)時(shí)從低位到高位的順序讀取,數(shù)據(jù)格式以零點(diǎn)零六二五攝氏度每最低有效位形式表示。當(dāng)符號(hào)位(二進(jìn)制數(shù)值前五位)數(shù)值為零時(shí),代表測(cè)得環(huán)境溫度數(shù)值大于等于零直接通過進(jìn)制轉(zhuǎn)換函數(shù)將所得的溫度數(shù)據(jù)通過進(jìn)制轉(zhuǎn)換函數(shù)轉(zhuǎn)換為十進(jìn)制;當(dāng)符號(hào)位數(shù)值為一時(shí),代表測(cè)得環(huán)境溫度數(shù)值小于零需要先將補(bǔ)碼通過補(bǔ)碼轉(zhuǎn)換將變成原碼,接下來才能將二進(jìn)制轉(zhuǎn)換為十進(jìn)制。表3.5是一部分溫度值對(duì)應(yīng)的溫度數(shù)據(jù)代碼。溫度值二進(jìn)制輸出十六進(jìn)制輸出+125℃000001111101000007D0h+85℃00000101010100000550h+25.0625℃00000001100100010191h+10.125℃000000001010001000A2h+0.5℃00000000000010000008h0℃00000000000000000000h-0.5℃1111111111111000FFF8h-10.125℃1111111101011110FF5Eh-25.0625℃1111111001101111FF6Fh-55℃1111110010010000FC90h表3.13DS18B20輸出的溫度值圖3.14在使用時(shí)候在數(shù)字溫度傳感器的VCC和I/O引腳之間接一個(gè)上拉電阻。具體的電路圖如圖3.14所示。 (6)DS18B20使用中的注意事項(xiàng)·由于DS18B20傳感器對(duì)比起模擬電路傳感器省略了很多硬件,相輔相成硬件的減少就需要相對(duì)復(fù)雜的軟件。如果無法獲得檢測(cè)溫度數(shù)據(jù)可能是單片機(jī)對(duì)進(jìn)行溫度傳感器進(jìn)行串口通信編程時(shí)沒有嚴(yán)格的保證時(shí)序。·在相關(guān)資料中有提到過多個(gè)BS18B20溫度傳感器相連的設(shè)計(jì),容易讓人誤以為DS18B20可以無限量連接,但當(dāng)連接數(shù)量大于八個(gè)時(shí)就需要處理單片機(jī)總線驅(qū)動(dòng)。本次設(shè)計(jì)只用單個(gè)溫度傳感器完美解決此問題。·在信號(hào)傳送電纜長(zhǎng)度大于一定程度時(shí)需要按照實(shí)際需求使用不同屏蔽等級(jí)的電纜。主要是由電纜達(dá)到一定長(zhǎng)度后會(huì)在線上形成布電容使信號(hào)產(chǎn)生識(shí)別錯(cuò)誤造成的。·在溫度傳感器測(cè)溫的控制程序中,單片機(jī)向溫度傳感器進(jìn)行串行通訊時(shí),當(dāng)信號(hào)發(fā)出后需要等待溫度傳感器的返回信號(hào),一旦溫度傳感器或者傳輸線路損壞可能僅僅是虛焊,當(dāng)單片微控制器與溫度傳感器進(jìn)行通訊時(shí),如果出現(xiàn)線路問題或者傳感器損壞等原因造成沒有返回信號(hào)的情況控制系統(tǒng)程序?qū)⑦M(jìn)入死循環(huán)。這一點(diǎn)在進(jìn)行硬件連接和軟件設(shè)計(jì)時(shí)需要進(jìn)行額外的設(shè)計(jì)減少這種情況的發(fā)生。2.外部控制電路的設(shè)計(jì)本設(shè)計(jì)中設(shè)置有按鍵電路,通過幾個(gè)獨(dú)立按鍵來實(shí)現(xiàn)所控制的環(huán)境溫度參數(shù)范圍的調(diào)節(jié)。按鍵通過一點(diǎn)連接單片機(jī)的輸入輸出端口一端連接電源地。由于單片機(jī)的輸入輸出端口在開路沒有進(jìn)行輸出的情況下是默認(rèn)高電平的,在按鍵沒有按下則相當(dāng)于輸入輸出端口處于開路狀態(tài)。例如按下設(shè)置鍵后P1.0口會(huì)獲得低電平,進(jìn)而主控模塊進(jìn)行不間斷的檢測(cè)P1.0口的電平是否有被拉低,如果拉低可以確認(rèn)設(shè)置鍵被按下。需要注意的是這種按鍵實(shí)際波形不是理想狀態(tài),由于按鍵的設(shè)計(jì)和手速問題在電平轉(zhuǎn)換的邊緣會(huì)出現(xiàn)抖動(dòng)紋波的情況,進(jìn)而需要在程序讀取按鍵數(shù)據(jù)時(shí)加上一定時(shí)間的延時(shí)消抖。具體電路如圖3.15所示。圖3.15獨(dú)立按鍵電路設(shè)置鍵、加值鍵、返回鍵功能:設(shè)置按鍵:首次按下后設(shè)置所控制環(huán)境溫度上限值,數(shù)碼管顯示H+溫度數(shù)據(jù);第二次按下后設(shè)置溫度下限值,數(shù)碼管顯示L+溫度數(shù)據(jù);第三次按下后退出設(shè)置顯示環(huán)境溫度。加值按鍵:按下一或兩次設(shè)置鍵后每按一次對(duì)應(yīng)上下限值加一鍵值按鍵:按下一或兩次設(shè)置鍵后每按一次對(duì)應(yīng)上下限值減一(三)輸出控制控溫設(shè)備電路1.蜂鳴器電路的設(shè)計(jì)本設(shè)計(jì)蜂鳴器采用五伏有源蜂鳴器,由于單片機(jī)輸入輸出端口功率小于蜂鳴器運(yùn)行功率,導(dǎo)致只靠單片機(jī)的引腳無法使蜂鳴器正常工作,要使用三極管電路放大電流來驅(qū)動(dòng)該元件。本處選用的是S8550三極管,它是一個(gè)PNP型的三極管。基極串聯(lián)一個(gè)一千歐姆的電阻連接到單片微控制器輸入輸出端口時(shí)。控制模塊引腳拉低導(dǎo)線電平時(shí)三極管基極接收后導(dǎo)通電路接通,蜂鳴器開始運(yùn)行;當(dāng)控制模塊引腳拉高導(dǎo)線電平時(shí)三極管基極接收后截止電路斷路,蜂鳴器停止運(yùn)行。蜂鳴器電路如下3.16所示。圖3.16蜂鳴器電路2.繼電器驅(qū)動(dòng)電路設(shè)計(jì)繼電器是一個(gè)由電控制的元器件,通電時(shí)通過電生磁原理吸合觸點(diǎn)繼電器導(dǎo)通,經(jīng)常使用在小電流控制大功率電器的電路中。簡(jiǎn)單的說,繼電器就是一個(gè)通過輸入的小電流來控制大電流的輸出的一個(gè)“自動(dòng)開關(guān)”。因此在電路中繼電器起著自動(dòng)調(diào)節(jié)電路、轉(zhuǎn)換電路、保護(hù)電路等作用。當(dāng)溫度到達(dá)最低下限后,單片機(jī)控制繼電器導(dǎo)通,啟動(dòng)熱風(fēng)機(jī)等外接升溫設(shè)備提升大棚內(nèi)環(huán)境溫度。如果使用單片微控制器引腳控制繼電器,因?yàn)檩斎胼敵龆丝谳敵鲭娏髟谒牡蕉涟仓g,而繼電器工作吸合電流大約在四十毫安,所以通過單片微控制器引腳的輸出電流直接控制繼電器不現(xiàn)實(shí)電路中要添加一個(gè)電流放大電路來間接控制。三極管的選擇應(yīng)該符合:功率PCM大于5V*繼電器電流的兩倍最大集電極電流(ICM)大于繼電器吸合電流40mA的兩倍以上耐壓BV(CEO)大于繼電器電壓5V,可選10V以上直流放大倍數(shù)取100圖3.17繼電器驅(qū)動(dòng)電路發(fā)現(xiàn)上文蜂鳴器所用三級(jí)管正好可以滿足需求,為了方便采購和電路焊接選用同種元件很有必要。驅(qū)動(dòng)電路圖如圖3.17所示。(四)系統(tǒng)硬件測(cè)試在焊接電路的時(shí)候不同人、和細(xì)胞之間,存在著很多的可變因素,各類原因加起來造成錯(cuò)誤的概率不可能為零。系統(tǒng)硬件電路的測(cè)試就是為了找出發(fā)生的錯(cuò)誤并且把錯(cuò)誤改正。本次設(shè)計(jì)使用的微動(dòng)開關(guān)具有四個(gè)引腳,由于開關(guān)是方形的各引腳不容易區(qū)分焊接同側(cè)引腳極其容易犯錯(cuò),為了規(guī)避焊接風(fēng)險(xiǎn)采用對(duì)角引腳進(jìn)行焊接。將焊接好無法運(yùn)行的實(shí)物電路板對(duì)照著電路設(shè)計(jì)圖的線路逐個(gè)檢查每一個(gè)元件是否安裝焊接正確,逐條對(duì)照每一條導(dǎo)線是否連接。發(fā)現(xiàn)漏裝元件導(dǎo)線和連接錯(cuò)誤等情況需及時(shí)的重新對(duì)照PCB圖確定漏焊時(shí)及時(shí)的補(bǔ)焊。對(duì)于方向焊接錯(cuò)誤和虛焊這些情況采用數(shù)字萬用表二極管檔位,然后通過萬用表導(dǎo)通鳴叫特性就可以用來檢測(cè)電路的大部分錯(cuò)誤。在需要檢測(cè)的方向性元器件或焊點(diǎn)的兩端用兩根表筆檢測(cè),通過萬用表的蜂鳴器提示就可以判斷二極管或三級(jí)管等方向性元件的引腳接線否正確或者是否虛焊。將得到的信息和電路圖進(jìn)行對(duì)比,在結(jié)合實(shí)際檢測(cè)的現(xiàn)象進(jìn)而判斷電路是否正確。四、系統(tǒng)軟件部分設(shè)計(jì)(一)主函數(shù)主函數(shù)是一個(gè)完整的單片機(jī)程序或者C語言程序必須要包含該函數(shù)。將單片微控制器中需要用到的符號(hào)變量進(jìn)行定義聲明,比如程序語句sbitled=P2^6就是對(duì)P2.6進(jìn)行定義聲明在接下來的編寫中就可以直接使用led不需要再進(jìn)行定義。在主程序的設(shè)計(jì)中需要注意的是主函數(shù)中除了基礎(chǔ)的邏輯代碼外,其余延時(shí)、數(shù)據(jù)讀取等代碼一般都是采用函數(shù)進(jìn)行模塊化設(shè)計(jì)然后在主函數(shù)需要用到此數(shù)值時(shí)調(diào)用,這樣可以更清晰的了解主函數(shù)邏輯和減少了后續(xù)調(diào)試程序的工作量。具體流程圖4.1如下所示。圖4.1主函數(shù)流程圖(二)數(shù)碼管顯示函數(shù)的設(shè)計(jì)此系統(tǒng)使用S8550三極管驅(qū)動(dòng)的顯示模塊采用共陽數(shù)碼管動(dòng)態(tài)顯示。在數(shù)碼管控制程序采用動(dòng)態(tài)顯示的方式,該顯示方式指的是通過程序控制在短時(shí)間內(nèi)切換控制不同的數(shù)碼管,每個(gè)數(shù)碼管顯示不同的的信息。這樣利用人眼的無法察覺在24hz以上的刷新頻率看起來就是全部一起顯示出來的一樣。數(shù)碼管顯示的頻率不能過高也不能過低,過低容易使頻率低于人眼識(shí)別下限,使用著能明顯感覺到閃爍影響觀察和調(diào)節(jié),過高會(huì)低于數(shù)碼管最短反應(yīng)時(shí)間造成無法準(zhǔn)確顯示或者亮度過低。如果不使用動(dòng)態(tài)顯示使用一個(gè)個(gè)數(shù)碼管單獨(dú)顯示的話,只單個(gè)數(shù)碼管就要占用八位端口造成單片機(jī)引腳極大浪費(fèi)。顯示函數(shù)流程圖如4.2所示。(三)DS18B20溫度采集函數(shù)的設(shè)計(jì)首先在主函數(shù)前先對(duì)DS18B20進(jìn)行初始化,初始化是為了設(shè)置傳感器的寄存器讓溫度傳感器DS18B20輸出的二進(jìn)制數(shù)據(jù)精度為12位。初始化完成后才可以運(yùn)用單片機(jī)串行通訊對(duì)DS18B20進(jìn)行操作讀取溫度。通電后先對(duì)溫度傳感器DS18B20進(jìn)行復(fù)位如果在單片機(jī)通訊串口上只有一個(gè)溫度傳感器沒有連接多個(gè)DS18B20的話可以跳過讀傳感器的六十四位系列號(hào)直接啟動(dòng)溫度轉(zhuǎn)換,由于本次設(shè)計(jì)中只運(yùn)用了單個(gè)DS18B20傳感器接下來只需要再進(jìn)行一次復(fù)位再次跳過傳感器六十四位系列號(hào)的匹配,單片機(jī)通過串行通訊發(fā)送讀取溫度指令,然后通過串行通訊讀取溫度寄存器。讀取完后將得到的二進(jìn)制數(shù)據(jù)進(jìn)行轉(zhuǎn)換成實(shí)際溫度數(shù)值即可。具體流程圖如圖4.3所示。圖4.3(四)系統(tǒng)單片機(jī)程序調(diào)試調(diào)試所需的工具:KEIL軟件、單片機(jī)硬件、單片機(jī)程序下載器等。單片機(jī)控制程序KEIL軟件進(jìn)行編寫,KEIL軟件可以將將編寫好的程序生成HEX文件。通過程序下載器將單片微控制器程序設(shè)計(jì)軟件軟件生成的后綴為.HEX文件下載到芯片中。使用熱水和冰水或者其他的方法改變溫度確認(rèn)系統(tǒng)在溫度達(dá)到上下限時(shí)功能能否實(shí)現(xiàn),然后進(jìn)行對(duì)出現(xiàn)的問題進(jìn)行調(diào)試,最終得到一個(gè)完整的系統(tǒng)程序。五、結(jié)論本論文通過對(duì)當(dāng)前溫室環(huán)境現(xiàn)狀分析,根據(jù)大棚內(nèi)作物生長(zhǎng)的需要,以STC89C51單片機(jī)單片機(jī)作為控制核心,以DS18B20數(shù)字溫度傳感器作為測(cè)溫元件,實(shí)現(xiàn)了對(duì)溫室環(huán)境因素中最重要的因素溫度的自動(dòng)控制。用戶可以根據(jù)實(shí)際需要,及時(shí)修改環(huán)境控制參數(shù),最終實(shí)現(xiàn)控制蔬菜大棚溫度的目的。用戶可以采集棚內(nèi)測(cè)控點(diǎn)的環(huán)境參數(shù)值,及時(shí)了解溫室內(nèi)環(huán)境情況。在以往的學(xué)習(xí)中沒有接觸過DS18B20,只能通過查閱芯片資料去學(xué)習(xí)使用它。在前幾次編寫溫控驅(qū)動(dòng)程序時(shí)讀取出來的溫度數(shù)值總是出現(xiàn)問題,于是只能網(wǎng)上看別人是怎么處理的最終發(fā)現(xiàn)是傳感器在開機(jī)后一段時(shí)間內(nèi)會(huì)輸出一個(gè)固定數(shù)值造成顯示錯(cuò)誤,最后使用一條語句進(jìn)行規(guī)避。本蔬菜大棚溫度控制雖然可以控制大棚內(nèi)的環(huán)境溫度給作物提供了一個(gè)舒適的環(huán)境生長(zhǎng),但由于條件的限制不能實(shí)現(xiàn)對(duì)溫室內(nèi)多因子的控制,許多方面還需要改進(jìn)。
參考文獻(xiàn)石海鋒丁書亞馬夢(mèng)彤.基于51單片機(jī)水溫控制系統(tǒng)[J].電子世界,2018(15):1-1.
[2]何曉暉梁貴萍何裕源.基于單片機(jī)的供暖系統(tǒng)的設(shè)計(jì)與分析[J].貴陽學(xué)院學(xué)報(bào)(自然科學(xué)版),2013(02):33-36.
[3]楊茜李書領(lǐng).基于SPCE061A單片機(jī)的紅外測(cè)溫儀設(shè)計(jì)[J].河南科技,2014(09):164-165.
[4]王慧.基于AT89S51的蔬菜大棚溫控系統(tǒng)設(shè)計(jì)[J].農(nóng)業(yè)科技與裝備,2011(08):31-33.
[5]張發(fā)海.基于單片機(jī)STC89C52的LED數(shù)碼管溫度顯示及報(bào)警器的實(shí)現(xiàn)[J].科技信息,2009(35):97-98.
[6]應(yīng)錕.基于單片機(jī)的電子萬年歷設(shè)計(jì)[J].中國科技博覽,2011(15):1-1.
[7]李娣娜馬惠鋮王海軍.一種智能窗簾控制系統(tǒng)的設(shè)計(jì)[J].電子制作,2018(17):3-3.
[8]趙浪濤趙永花.DS18B20芯片在溫度測(cè)量系統(tǒng)中的應(yīng)用[J].蘭州工業(yè)高等專科學(xué)校學(xué)報(bào),2009(04):6-9.
[9]馮偉.基于51單片機(jī)的時(shí)間溫度顯示系統(tǒng)[J].現(xiàn)代顯示,2008(12):53-57.
[10]易麗華黃俊.基于AT89C51單片機(jī)與DS18B20的溫度測(cè)量系統(tǒng)[J].電子與封裝,2009(05):43-47.謝辭本論文的順利完成,離不開各位老師、同學(xué)和朋友的關(guān)心和幫助。在此,表示深深的感謝。沒有他們的幫助和支持,我是沒有辦法完成我的畢業(yè)論文的。首先誠摯的感謝我的論文指導(dǎo)老師齊連眾老師。他在忙碌的教學(xué)工作中擠出時(shí)間來審查、修改我的論文。還有教過我的所有老師們,你們嚴(yán)謹(jǐn)細(xì)致、一絲不茍的作風(fēng)一直是我工作、學(xué)習(xí)中的榜樣;他們循循循善誘的教導(dǎo)和不拘一格的思路給予我無盡的啟迪。感謝所有慷慨提供文獻(xiàn)的編寫者,感謝那些在個(gè)人博客中開放源程序的單片機(jī)愛好者。感謝我的同學(xué)和朋友們,在學(xué)習(xí)期間和課題研究期間正是有你們的關(guān)懷和幫助,才使我增添了無盡的動(dòng)力,讓我滿懷信心完成這篇畢業(yè)之作。附錄一:總原理圖附錄二:系統(tǒng)程序#include<reg52.h> #include<SMG.h>#include<DS18B20.h>#include<EEPROM.h>#defineucharunsignedchar //宏定義#defineuintunsignedint/*****************燈、蜂鳴器、按鍵引腳定義*******************/sbitled_shang=P3^2; //紅色LED燈sbitled_xia=P3^3; //綠色LED燈sbitrelay =P3^7; //繼電器sbitbuzz=P2^4; //蜂鳴器sbitkey_set=P1^0; //設(shè)置鍵sbitkey_jia=P1^3; //加值鍵sbitkey_jian=P1^6; //減值鍵/*********************全局變量定義***************************/ucharTemperature_up,Temperature_down;//存儲(chǔ)溫度上、下限值ucharset_f;//設(shè)置選擇標(biāo)記,=0非設(shè)置,=1設(shè)置上限,=2設(shè)置下限。/***********************毫秒延時(shí)函數(shù)************************/voiddelayms(uintms){ unsignedchari=100,j; for(;ms;ms--) { while(--i) { j=10; while(--j); } }}/********************************************************函數(shù)名稱:voidscan(void)函數(shù)作用:按鍵檢測(cè)處理函數(shù)********************************************************/voidscan(void){ //設(shè)置鍵,不支持連按 if(key_set==0) //按鍵按下 { delayms(7); //延時(shí)消抖 if(key_set==0) //再次確認(rèn)按下按鍵 { led_shang=1;//關(guān)閉上限報(bào)警燈 led_xia=1; //關(guān)閉下限報(bào)警燈 buzz=1; //關(guān)閉蜂鳴器 relay=1; //關(guān)閉繼電器 set_f++; //設(shè)置變量+1 if(set_f==3)//如果設(shè)置完成,退出設(shè)置 { set_f=0;//重置設(shè)置變量 EEPROM_delete(0x2002); //擦除扇區(qū) EEPROM_write(0x2002,Temperature_up);//寫入【溫度上限值】數(shù)據(jù)保存 EEPROM_delete(0x2202); //擦除扇區(qū) EEPROM_write(0x2202,Temperature_down);//寫入【溫度下限值】數(shù)據(jù)保存 } } while(!key_set);//等待按鍵松開 } //加值鍵,支持連按 if(key_jia==0&&set_f!=0) //按鍵按下 { delayms(7); //延時(shí)消抖 if(key_jia==0) //再次確認(rèn)按下按鍵 { if(set_f==1)//設(shè)置溫度上限值 { if(Temperature_up<125)//最大值可設(shè)置125℃ Temperature_up++;//溫度上限值+1℃ } if(set_f==2)//設(shè)置溫度下限值 { if(Temperature_down<125&&Temperature_down+1<Temperature_up)//最大值可設(shè)置125℃,并且下限不可超過上限 Temperature_down++;//溫度下限值+1℃ } } } //減值鍵,支持連按 if(key_jian==0&&set_f!=0) //按鍵按下 { delayms(7); //延時(shí)消抖 if(key_jian==0) //再次確認(rèn)按下按鍵 { if(set_f==1)//設(shè)置溫度上限值 { if(Temperature_up>0&&Temperature_up>Temperature_down+1)//最小值可設(shè)置0℃,并且上限得比下限大 Temperature_up--;//溫度上限值-1℃ } if(set_f==2)//設(shè)置溫度下限值 { if(Temperature_down>0)//最小值可設(shè)置0℃ Temperature_down--;//溫度下限值-1℃ } } }}/********************************************************函數(shù)名稱:voidmain()函數(shù)作用:主函數(shù)********************************************************/voidmain(){ ucharnum=149; //循環(huán)計(jì)數(shù)變量 buzz=1; //開機(jī)關(guān)閉蜂鳴器 led_shang=1; //開機(jī)關(guān)閉上限報(bào)警燈 led_xia=1; //開機(jī)關(guān)閉下限報(bào)警燈 relay=1; //開機(jī)關(guān)閉繼電器 if(key_jian==0) { led_shang=0; //紅色LED燈 led_xia=0; //綠色LED燈 relay =0; //繼電器 buzz=0; //蜂鳴? delayms(100); if(key_jian==0) { EEPROM_delete(0x2002); //擦除扇區(qū) EEPROM_write(0x2002,38);//寫入【溫度上限值】數(shù)據(jù)保存 EEPROM_delete(0x2202); //擦除扇區(qū) EEPROM_write(0x2202,12);//寫入【溫度下限值】數(shù)據(jù)保存 } led_shang=1; //紅色LED燈 led_xia=1; //綠色LED燈 relay =1; //繼電器 buzz=1; //蜂鳴? } Temperature_up=EEPROM_read(0x2002); //讀取存儲(chǔ)的【溫度上限值】數(shù)據(jù) Temperature_down=EEPROM_read(0x2202);//讀取存儲(chǔ)的【溫度下限值】數(shù)據(jù) DS18B20_init(); //DS18B20初始化 for(num=0;num<150;num++) //上電先等待DS18B20溫度傳感器進(jìn)入正常工作。 { DS18B20_Read_Temperature(); //讀取溫度 DS18B20_Temperature(); //將溫度數(shù)據(jù)轉(zhuǎn)換成實(shí)際溫度 display2(12,12,12,12); //顯示“” } while(1) { scan(); //進(jìn)行按鍵檢測(cè) if(set_f==0)//正常顯示溫度 { num++; //循序次數(shù)+1 if(num>=150) //每循環(huán)>=150次,進(jìn)入讀取溫度 { num=0; //重置循環(huán)變量 DS18B20_Read_Temperature();//讀取溫度數(shù)據(jù) DS18B20_Temperature(); //將溫度數(shù)據(jù)轉(zhuǎn)換成實(shí)際溫度 } if(presence==0) //判斷溫度讀取正常 { if(Temperature>=Temperature_up||Temperature<Temperature_down)//判斷實(shí)際溫度是否【大于等于上限】或【小于下限值】 { if(Temperature==85&&temp_d[2]==0&&temp_d[3]==0);//避免開機(jī)一小段時(shí)間讀取為85 else { if(Temperature>=Temperature_up)//實(shí)際溫度【大于等于上限】 { led_shang=0; //打開上限報(bào)警燈 relay=1; //關(guān)閉繼電器 if( (Temperature-1)>=Temperature_up) buzz=0; //蜂鳴器報(bào)警 } else //否則,實(shí)際溫度【小于下限值】 { led_xia=0; //打開下限報(bào)警燈 relay=0; //打開繼電器 if(( Temperature+1)<Temperature_down) buzz=0; //蜂鳴器報(bào)警 } } } else//實(shí)測(cè)溫度處于上、下限值之間 { buzz=1; //關(guān)閉蜂鳴器 led_shang=1; //關(guān)閉上限報(bào)警燈 led_xia=1; //關(guān)閉下限報(bào)警燈 } display(temp_d[0],temp_d[1],temp_d[2],temp_d[3]);//顯示實(shí)際溫度 } else //否則,溫度讀取不正常【可能傳感器沒有接】 { led_shang=1; //關(guān)閉上限報(bào)警燈 led_xia=1; //關(guān)閉下限報(bào)警燈 relay=1; //關(guān)閉繼電器 display2(12,12,12,12);//顯示“” } } if(set_f!=0)//設(shè)置模式顯示 { if(set_f==1) //顯示溫度上限值"Hxxx" display2(10,Temperature_up%1000/100,Temperature_up%100/10,Temperature_up%10); if(set_f==2) //顯示溫度下限值"Lxxx" display2(11,Temperature_down%1000/100,Temperature_down%100/10,Temperature_down%10); } }}/*************************************************************數(shù)碼管頭文件實(shí)現(xiàn)功能:數(shù)碼管的控制***************************************************************/#ifndef_SMG_H_#define_SMG_H_#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint/*****************數(shù)碼管引腳定義*******************/#defineduanP0sbitw1=P2^0;sbitw2=P2^1;sbitw3=P2^2;sbitw4=P2^3;/*****************數(shù)碼管變量定義*******************/ucharcodewei1[]={0xa0,0xbb,0x62,0x2a,0x39,0x2c,0x24,0xba,0x20,0x28,0x31,0xe5,0x7f}; //數(shù)碼管顯示段碼ucharcodewei2[]={0x80,0x9b,0x42,0x0a,0x19,0x0c,0x04,0x9a,0x00,0x08}; //數(shù)碼管顯示段碼,帶小數(shù)點(diǎn)/*****************數(shù)碼管函數(shù)定義*********************/voidDelay(unsignedintnum); //延時(shí)函數(shù)voiddisplay(uchara,ucharb,ucharc,uchard);//溫度顯示函數(shù)voiddisplay2(uchara,ucharb,ucharc,uchard);//設(shè)置顯示函數(shù)/********************************************************函數(shù)名稱:voidDelay(unsignedintnum)函數(shù)作用:US延時(shí)函數(shù)********************************************************/voidDelay(unsignedintnum){while(--num);}/********************************************************函數(shù)名稱:voiddisplay(uchara,ucharb,ucharc,uchard)函數(shù)作用:正常顯示溫度函數(shù)參數(shù)說明:a:十位,b:個(gè)位,c:十分位,d:百分位********************************************************/voiddisplay(uchara,ucharb,ucharc,uchard){ duan=wei1[a]; //不帶小數(shù)點(diǎn) w1=0; Delay(300); w1=1; duan=wei2[b]; //帶小數(shù)點(diǎn) w2=0; Delay(300); w2=1;duan=wei1[c]; //不帶小數(shù)點(diǎn) w3=0; Delay(300); w3=1; duan=wei1[d]; //不帶小數(shù)點(diǎn) w4=0; Delay(300); w4=1;}/********************************************************函數(shù)名稱:voiddisplay(uchara,ucharb,ucharc,uchard)函數(shù)作用:設(shè)置模式時(shí)顯示函數(shù)參數(shù)說明:a:千位,b:百位,c:十位,d:個(gè)位********************************************************/voiddisplay2(uchara,ucharb,ucharc,uchard){ duan=wei1[a]; //不帶小數(shù)點(diǎn) w1=0; Delay(100); w1=1; duan=wei1[b]; //不帶小數(shù)點(diǎn) w2=0; Delay(100); w2=1; duan=wei1[c]; //不帶小數(shù)點(diǎn) w3=0; Delay(100); w3=1; duan=wei1[d]; //不帶小數(shù)點(diǎn) w4=0; Delay(100); w4=1;}#endif/*************************************************************單片機(jī)內(nèi)部EEPROM頭文件實(shí)現(xiàn)功能:?jiǎn)纹瑱C(jī)內(nèi)部EEPROM的控制***************************************************************/#ifndef_EEPROM_H_#define_EEPROM_H_#include<reg52.h>#include<intrins.h>#defineucharunsignedchar#defineuintunsignedint/*****************STC內(nèi)部EEPROM控制寄存器定義*******************/sfrISP_DATA=0xe2;sfrISP_ADDRH=0xe3;sfrISP_ADDRL=0xe4;sfrISP_CMD=0xe5;sfrISP_TRIG=0xe6;sfrISP_CONTR=0xe7;/*******************STC內(nèi)部EEPROM函數(shù)定義***********************/voidEEPROM_delete(uintaddr); //擦除一個(gè)扇區(qū)voidEEPROM_write(uintaddr,uchardat);//往addr地址寫入數(shù)據(jù)ucharEEPROM_read(uintaddr); //向addr地址讀取一個(gè)數(shù)據(jù)voidISP_off(); //關(guān)閉ISP操作/***************************************************************函數(shù):擦除某一扇區(qū)(每個(gè)扇區(qū)512字節(jié))入口:addr=某一扇區(qū)首地址 ***************************************************************/voidEEPROM_delete(uintaddr){ //打開IAP功能(ISP_CONTR.7)=1:允許編程改變Flash,設(shè)置Flash操作等待時(shí)間ISP_CONTR=0x81;ISP_CMD=0x03; //用戶可以對(duì)"DataFlash/EEPROM區(qū)"進(jìn)行扇區(qū)擦除ISP_ADDRL=addr;//ISP/IAP操作時(shí)的地址寄存器低八位,ISP_ADDRH=addr>>8;//ISP/IAP操作時(shí)的地址寄存器高八位。 EA=0;ISP_TRIG=0x46;//在ISPEN(ISP_CONTR.7)=1時(shí),對(duì)ISP_TRIG先寫入46h,ISP_TRIG=0xB9;//再寫入B9h,ISP/IAP命令才會(huì)生效。_nop_(); EA=1;ISP_off(); //關(guān)閉ISP/IAP}/***************************************************************函數(shù):寫一字節(jié)入口:addr=扇區(qū)單元地址,dat=待寫入數(shù)據(jù)***************************************************************/voidEEPROM_write(uintaddr,uchardat){ISP_CONTR=0x81; ISP_CMD=0x02; //用戶可以對(duì)"DataFlash/EEPROM區(qū)"進(jìn)行字節(jié)編程ISP_ADDRL=addr;ISP_ADDRH=addr>>8;ISP_DATA=dat;//數(shù)據(jù)進(jìn)ISP_DATAEA=0;ISP_TRIG=0x46;ISP_TRIG=0xB9;_nop_(); EA=1;ISP_off(); //關(guān)閉ISP/IAP}/***************************************************************函數(shù):讀一字節(jié)入口:addr=扇區(qū)單元地址出口:dat=讀出的數(shù)據(jù)***************************************************************/ucharEEPROM_read(uintaddr){uchardat; ISP_CONTR=0x81; ISP_CMD=0x01;//用戶可以對(duì)"DataFlash/EEPROM區(qū)"進(jìn)行字節(jié)讀ISP_ADDRL=addr;ISP_ADDRH=addr>>8;EA=0;ISP_TRIG=0x46;ISP_TRIG=0xB9;_nop_();dat=ISP_DATA; //取出數(shù)據(jù) ISP_off(); //關(guān)閉ISP/IAP EA=1; returndat;}/***************************************************************函數(shù):關(guān)閉ISP/IAP操作***************************************************************/voidISP_off(){ISP_CONTR=0;//關(guān)閉IAP功能ISP_CMD=0;//待機(jī)模式,無ISP操作ISP_TRIG=0;//關(guān)閉IAP功能,清與ISP有關(guān)的特殊功能寄存器 ISP_ADDRH=0; ISP_ADDRL=0;}#endif/*************************************************************DS18B20頭文件實(shí)現(xiàn)功能:DS18B20的控制***************************************************************/#ifndef_DS18B20_H_#define_DS18B20_H_#include<reg52.h>#include<SMG.h>#defineucharunsignedchar#defineuintunsignedint/*****************DS18B20引腳定義*******************/sbitDQ=P3^4;//定義DS18B20端口DQ/*****************DS18B20變量定義*******************/uchartemp_data[2];//存儲(chǔ)讀回的數(shù)字溫度uchartemp_d[4];//存儲(chǔ)轉(zhuǎn)換完后的溫度bitpresence; //檢測(cè)18b20是否插好ucharTemperature;//存儲(chǔ)溫度整數(shù)部分值/*****************DS18B20函數(shù)定義*********************/voidDelay(unsignedintnum); //us延時(shí)voidDS18B20_init(void); //DS18B20初始化bitDS18B20_res(void); //DS18B20復(fù)位ucharDS18B20_ReadOneChar(void); //DS18B20讀一個(gè)字節(jié)voidDS18B20_WriteOneChar(unsignedchardat);//DS18B20寫一個(gè)字節(jié)voidDS18B20_Read_Temperature(void); //DS18B20讀取溫度voidDS18B20_Temperature(void);//DS18B20溫度轉(zhuǎn)換/********************************************************函數(shù)名稱:bitDS18B20_res(void)函數(shù)作用:DS18B20復(fù)位函數(shù)參數(shù)說明:返回0=復(fù)位成功,1=復(fù)位不成功********************************************************/bitDS18B20_res(void){DQ=1;//DQ復(fù)位Delay(8);//稍做延時(shí)DQ=0;//單片機(jī)將DQ拉低Delay(90);//精確延時(shí)大于480usDQ=1;//拉高總線Delay(5);presence=DQ;//如果=0則初始化成功=1則初始化失敗Delay(100);DQ=1;return(presence);//返回信號(hào),0=presence,1=nopresence}/********************************************************函數(shù)名稱:voidDS18B20_init(void)函數(shù)作用:DS18B20初始化函數(shù)********************************************************/voidDS18B20_init(void){DS18B20_res(); //復(fù)位DS18B20_WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作DS18B20_WriteOneChar(0x4e);//寫暫存 DS18B20_WriteOneChar(0x5f);//配置轉(zhuǎn)換精度為12位 DS18B20_WriteOneChar(0x00); DS18B20_WriteOneChar(0x7f);}/********************************************************函數(shù)名稱:ucharDS18B20_ReadOneChar(void)函數(shù)作用:DS18B20讀一個(gè)字節(jié)數(shù)據(jù)********************************************************/ucharDS18B20_ReadOneChar(void){ unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) { DQ=0;//給脈沖信號(hào) dat>>=1; DQ=1;//給脈沖信號(hào) if(DQ) dat|=0x80; Delay(15); }return(dat);}/********************************************************函數(shù)名稱:voidDS18B20_WriteOneChar(unsignedchardat)函數(shù)作用:DS18B20寫一個(gè)字節(jié)數(shù)據(jù)********************************************************/voidDS18B20_WriteOneChar(unsignedchardat){ unsignedchari=0; for(i=8;i>0;i--) { DQ=0; DQ=dat&0x01; Delay(5); DQ=1; dat>>=1; }}/********************************************************函數(shù)名稱:voidDS18B20_Read_Temperature(void)函數(shù)作用:DS18B20讀取溫度********************************************************/voidDS18B20_Read_Temperature(void){DS18B20_res(); //復(fù)位DS18B20_WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作DS18B20_WriteOneChar(0x44);//啟動(dòng)溫度轉(zhuǎn)換DS18B20_res();DS18B20_WriteOneChar(0xCC);//跳過讀序號(hào)列號(hào)的操作DS18B20_WriteOneChar(0xBE);//讀取溫度寄存器temp_data[0]=DS18B20_ReadOneChar();//溫度低8位temp_data[1]=DS18B20_ReadOneChar();//溫度高8位}/********************************************************函數(shù)名稱:voidDS18B20_Temperature(void)函數(shù)作用:DS18B20溫度轉(zhuǎn)換********************************************************/voidDS18B20_Temperature(void){ uchartemp; inttemp_i; temp=temp_data[1]&0xf0; if(temp==0xf0)//判斷是否為負(fù)溫度,滿足為負(fù)溫度,進(jìn)行取反加一 { if(temp_data[0]==0) //判斷是否低位取反后有進(jìn)位 { temp_data[0]=~temp_data[0]+1; temp_data[1]=~temp_data[1]+1; } else { temp_data[0]=~temp_data[0]+1; temp_data[1]=~temp_data[1]; } } //整數(shù)部分 temp=(temp_data[1]<<4)|(temp_data[0]>>4);//取高字節(jié)低4位,低字節(jié)高4位 //本項(xiàng)目由于顯示空間的顯示,我們只提取出溫度的十位和個(gè)位進(jìn)行顯示 temp_d[0]=temp%100/10; //取十位 temp_d[1]=temp%10; //取個(gè)位 Temperature=temp;//整數(shù)部分 //小數(shù)部分 temp=temp_data[0]&0x0f;//取低字節(jié)的低4位 temp_i=temp*625;//625=0.0625*10000,先將小數(shù)放大10000倍進(jìn)行處理 temp_d[2]=temp_i/1000; //取十分位 temp_d[3]=temp_i%1000/100; //取百分位}#endif
電腦不啟動(dòng)故障診治了解電腦啟動(dòng)的過程在諸多電腦故障中,無法正常啟動(dòng)是最令用戶頭痛的事了。筆者長(zhǎng)期從事維護(hù)電腦的工作,在這個(gè)方面積累了一些經(jīng)驗(yàn),現(xiàn)在就將這些經(jīng)驗(yàn)整理歸納出來與朋友們分享。本文將以家用電腦和windows98操作系統(tǒng)為基礎(chǔ),介紹電腦無法正常啟動(dòng)故障的診治。要想準(zhǔn)確地診斷電腦不啟動(dòng)故障,首先要了解的起動(dòng)過程,當(dāng)我們按下電源開關(guān)時(shí),電源就開始向主板和其它設(shè)備供電,此時(shí)電壓還沒有完全穩(wěn)定,主板控制芯片組會(huì)根據(jù)CMOS中的CPU主頻設(shè)置向CPU發(fā)出一個(gè)Reset(重置)信號(hào),讓CPU初始化,電壓完全穩(wěn)定后,芯片組會(huì)撤去Reset信號(hào),CPU馬上從地址FFFF0H處執(zhí)行一條跳轉(zhuǎn)指令,跳到系統(tǒng)BIOS中真正的啟動(dòng)代碼處。系統(tǒng)BIOS首先要做的事情就是進(jìn)行POST(PowerOnSelfTest,加電自檢)。POST的主要任務(wù)是檢測(cè)系統(tǒng)中的一些關(guān)鍵設(shè)備(電源、CPU芯片、BIOS芯片、定時(shí)器芯片、數(shù)據(jù)收發(fā)邏輯電路、DMA控制器、中斷控制器以及基本的64K內(nèi)存和內(nèi)存刷新電路等)是否存在和能否正常工作,如內(nèi)存和顯卡等。自檢通過后,系統(tǒng)BIOS將查找顯示卡的BIOS,由顯卡BIOS來完成顯示卡的初始化,顯示器開始有顯示,自此,系統(tǒng)就具備了最基本的運(yùn)行條件,可以對(duì)主板上的其它部分進(jìn)行診斷和測(cè)試,再發(fā)現(xiàn)故障時(shí),屏幕上會(huì)有提示,但一般不死機(jī),接著系統(tǒng)BIOS將檢測(cè)CPU的類型和工作頻率,然后開始測(cè)試主機(jī)所有的內(nèi)存容量,內(nèi)存測(cè)試通過之后,系統(tǒng)BIOS將開始檢測(cè)系統(tǒng)中安裝的一些標(biāo)準(zhǔn)硬件設(shè)備,這些設(shè)備包括:硬盤、CD-ROM、軟驅(qū)、串行接口和并行接口等連接的設(shè)備,大多數(shù)新版本的系統(tǒng)BIOS在這一過程中還要自動(dòng)檢測(cè)和設(shè)置內(nèi)存的相關(guān)參數(shù)、硬盤參數(shù)和訪問模式等。標(biāo)準(zhǔn)設(shè)備檢測(cè)完畢后,系統(tǒng)BIOS內(nèi)部的支持即插即用的代碼將開始檢測(cè)和配置系統(tǒng)中已安裝的即插即用設(shè)備。每找到一個(gè)設(shè)備之后,系統(tǒng)BIOS都會(huì)在屏幕上顯示出設(shè)備的名稱和型號(hào)等信息,同時(shí)為該設(shè)備分配中斷、DMA通道和I/O端口等資源。最后系統(tǒng)BIOS將更新ESCD(ExtendedSystemConfigurationData,擴(kuò)展系統(tǒng)配置數(shù)據(jù))。ESCD數(shù)據(jù)更新完畢后,系統(tǒng)BIOS的啟動(dòng)代碼將進(jìn)行它的最后一項(xiàng)工作,即根據(jù)用戶指定的啟動(dòng)順序從軟盤、硬盤或光驅(qū)啟動(dòng)。以從C盤啟動(dòng)為例,系統(tǒng)BIOS將讀取并執(zhí)行硬盤上的主引導(dǎo)記錄,主引導(dǎo)記錄接著從分區(qū)表中找到第一個(gè)活動(dòng)分區(qū),然后讀取并執(zhí)行這個(gè)活動(dòng)分區(qū)的分區(qū)引導(dǎo)記錄,而分區(qū)引導(dǎo)記錄將負(fù)責(zé)讀取并執(zhí)行IO.SYS,這是Windows最基本的系統(tǒng)文件。IO.SYS首先要初始化一些重要的系統(tǒng)數(shù)據(jù),然后就顯示出我們熟悉的藍(lán)天白云,在這幅畫面之下,Windows將繼續(xù)進(jìn)行DOS部分和GUI(圖形用戶界面)部分的引導(dǎo)和初始化工作,一切順利結(jié)束,電腦正常啟動(dòng)。根據(jù)故障現(xiàn)象診治了解電腦啟動(dòng)的過程,故障就好判斷了,下面我們就根據(jù)故障現(xiàn)象開始診治了:現(xiàn)象一:系統(tǒng)完全不能啟動(dòng),見不到電源指示燈亮,也聽不到冷卻風(fēng)扇的聲音。這時(shí),基本可以認(rèn)定是電源部分故障,檢查:電源線和插座是否有電、主板電源插頭是否連好,UPS是否正常供電,再確認(rèn)電源是否有故障,最簡(jiǎn)單的就是替換法,但一般用戶家中不可能備有電源等備件,這時(shí)可以嘗試使用下面的方法(注意:要慎重):先把硬盤,CPU風(fēng)扇,或者CDROM連好,然后把ATX主板電源插頭用一根導(dǎo)線連接兩個(gè)插腳(把插頭的一側(cè)突起對(duì)著自己,上層插腳從左數(shù)第4個(gè)和下層插腳從右數(shù)第3個(gè),方向一定要正確),然后把ATX電源的開關(guān)打開,如果電源風(fēng)扇轉(zhuǎn)動(dòng),說明電源正常,否則電源損壞。如果電源沒問題直接短接主板上電源開關(guān)的跳線,如果正常,說明機(jī)箱面板的電源開關(guān)損壞。現(xiàn)象二:電源批示燈亮,風(fēng)扇轉(zhuǎn),但沒有明顯的系統(tǒng)動(dòng)作。這種情況如果出現(xiàn)在新組裝電腦上應(yīng)該首先檢查CPU是否插牢或更換CPU,而正在使用的電腦的CPU損壞的情況比較少見(人為損壞除外),損壞時(shí)一般多帶有焦糊味,如果剛剛升級(jí)了BIOS或者遭遇了CIH病毒攻擊,這要考慮BIOS損壞問題(BIOS莫名其妙的損壞也是有的),修復(fù)BIOS的方法很多雜志都介紹過就不重復(fù)了;確認(rèn)CPU和BIOS沒問題后,就要考慮CMOS設(shè)置問題,如果CPU主頻設(shè)置不正確也會(huì)出現(xiàn)這種故障,解決方法就是將CMOS信息清除,既要將CMOS放電,一般主板上都有一個(gè)CMOS放電的跳線,如果找不到這個(gè)跳線可以將CMOS電池取下來,放電時(shí)間不要低于5分鐘,然后將跳線恢復(fù)原狀或重新安裝好電池即可;如果CPU、BIOS和CMOS都沒問題還要考慮電源問題:PC機(jī)電源有一個(gè)特殊的輸出信號(hào),稱為POWERGOOD(PG)信號(hào),如果PG信號(hào)的低電平持續(xù)時(shí)間不夠或沒有低電平時(shí)間,PC機(jī)將無法啟動(dòng)。如果PG信號(hào)一直為低電平,則PC機(jī)系統(tǒng)始終處于復(fù)位狀態(tài)。這時(shí)PC機(jī)也出現(xiàn)黑屏、無聲響等死機(jī)現(xiàn)象。但這需要專業(yè)的維修工具外加一些維修經(jīng)驗(yàn),因此,建議采用替換法;電源沒有問題就要檢查是否有短路,確保主板表面不和金屬(特別是機(jī)箱的安裝固定點(diǎn))接觸。把主板和電源拿出機(jī)箱,放在絕緣體表面,如果能啟動(dòng),說明主板有短路現(xiàn)象;如果還是不能啟動(dòng)則要考慮主板問題,主板故障較為復(fù)雜,可以使用替換法確認(rèn),然后更換主板。現(xiàn)象三:電源指示燈亮,系統(tǒng)能啟動(dòng),但系統(tǒng)在初始化時(shí)停住了,而且可以聽到嗽叭的鳴叫聲(沒有視頻):根據(jù)峰鳴代碼可以判斷出故障的部位。ccid_page/AwardBIOS1短聲:說明系統(tǒng)正常啟動(dòng)。表明機(jī)器沒有問題。2短聲:說明CMOS設(shè)置錯(cuò)誤,重新設(shè)置不正確選項(xiàng)。1長(zhǎng)1短:說明內(nèi)存或主板出錯(cuò),換一個(gè)內(nèi)存條試試。1長(zhǎng)2短:說明顯示器或顯示卡存在錯(cuò)誤。檢查顯卡和顯示器插頭等部位是否接觸良好或用替換法確定顯卡和顯示器是否損壞。1長(zhǎng)3短:說明鍵盤控制器錯(cuò)誤,應(yīng)檢查主板。1長(zhǎng)9短:說明主板FlashRAM、EPROM錯(cuò)誤或BIOS損壞,更換FlashRAM。重復(fù)短響:說明主板電源有問題。不間斷的長(zhǎng)聲:說明系統(tǒng)檢測(cè)到內(nèi)存條有問題,重新安裝內(nèi)存條或更換新內(nèi)存條重試。AMIBIOS1短:說明內(nèi)存刷新失敗。更換內(nèi)存條。2短:說明內(nèi)存ECC較驗(yàn)錯(cuò)誤。在CMOS中將內(nèi)存ECC校驗(yàn)的選項(xiàng)設(shè)為Disabled或更換內(nèi)存。3短:說明系統(tǒng)基本內(nèi)存檢查失敗。換內(nèi)存。4短:說明系統(tǒng)時(shí)鐘出錯(cuò)。更換芯片或CMOS電池。5短:說明CPU出現(xiàn)錯(cuò)誤。檢查CPU是否插好。6短:說明鍵盤控制器錯(cuò)誤。應(yīng)檢查主板。7短:說明系統(tǒng)實(shí)模式錯(cuò)誤,不能切換到保護(hù)模式。8短:說明顯示內(nèi)存錯(cuò)誤。顯示內(nèi)存有問題,更換顯卡試試。9短:說明BIOS芯片檢驗(yàn)和錯(cuò)誤。1長(zhǎng)3短:說明內(nèi)存錯(cuò)誤。內(nèi)存損壞,更換。1長(zhǎng)8短:說明顯示測(cè)試錯(cuò)誤。顯示器數(shù)據(jù)線沒插好或顯示卡沒插牢。現(xiàn)象四:系統(tǒng)能啟動(dòng),有視頻,出現(xiàn)故障提示,這時(shí)可以根據(jù)提示來判斷故障部位。下面就是一些常見的故障提示的判斷:一、提示“CMOSBatteryStateLow”原因:CMOS參數(shù)丟失,有時(shí)可以啟動(dòng),使用一段時(shí)間后死機(jī),這種現(xiàn)象大多是CMOS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025建筑工程滲漏維修合同示范文本
- 2025企業(yè)與個(gè)人之間的借款合同范本大全
- 加壓泵房、消防水池、深井泵房分包合同
- 股權(quán)投資轉(zhuǎn)讓協(xié)議
- 2025混凝土澆筑施工合同(大清包)
- 自愿贈(zèng)與所有財(cái)產(chǎn)合同
- 建筑工程三方付款協(xié)議書范本
- 設(shè)立公司房屋租賃合同范本
- 2025大連煤炭產(chǎn)品代理合同范本
- 2025鄉(xiāng)村聯(lián)合住宅開發(fā)合同
- 機(jī)器學(xué)習(xí) 課件 第7章 集成學(xué)習(xí)
- 視頻剪輯課件范文
- 健身房健身器材使用手冊(cè)
- 3.2有約必守 違約有責(zé) 課件-高中政治統(tǒng)編版選擇性必修二法律與生活
- 主管護(hù)師預(yù)測(cè)卷兒科護(hù)理專業(yè)實(shí)踐能力含答案
- 承包商入廠安全培訓(xùn)試題附參考答案【完整版】
- 第23課《得道多助失道寡助》說課稿 統(tǒng)編版語文八年級(jí)上冊(cè)
- 江蘇省南京市鼓樓區(qū)2023-2024學(xué)年八年級(jí)下學(xué)期期中考試物理試題(解析版)
- 2024年司法考試歷年證據(jù)法試題
- HG-T 5367.5-2022 軌道交通車輛用涂料 第5部分:防結(jié)冰涂料
- 體育運(yùn)動(dòng)器材售后服務(wù)承諾書
評(píng)論
0/150
提交評(píng)論