基于stc89c52單片機(jī)的智能紅外遙控系統(tǒng)畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩45頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  本科畢業(yè)論文</b></p><p>  基于STC89C52單片機(jī)的智能紅外遙控系統(tǒng)</p><p>  所在學(xué)院信息科學(xué)技術(shù)學(xué)院</p><p>  專業(yè)名稱自動(dòng)化</p><p>  申請(qǐng)學(xué)士學(xué)位所屬學(xué)科工 學(xué)</p>

2、<p>  年 級(jí) </p><p>  學(xué)生姓名、學(xué)號(hào) </p><p>  指導(dǎo)教師姓名、職稱************</p><p>  完成日期二〇一三年五月</p><p><b>  摘 要</b><

3、/p><p>  隨著科技的發(fā)展,特別是微電子技術(shù)的發(fā)展,單片機(jī)的應(yīng)用已經(jīng)深入到生活的各個(gè)領(lǐng)域。本文以STCC89C52為控制芯片,DS1302為時(shí)鐘芯片,DS18B20為溫度傳感器,HS0038紅外一體接收頭作為紅外接收器,以此接收并處理遙控器按鍵信號(hào)并用來(lái)矯正時(shí)鐘時(shí)間。同時(shí),該項(xiàng)目還加入了定時(shí)和設(shè)定溫度上下限的功能,當(dāng)達(dá)到預(yù)設(shè)時(shí)間時(shí)執(zhí)行開(kāi)關(guān)燈命令,當(dāng)溫度低于溫度下限或高于溫度上限時(shí)執(zhí)行開(kāi)空調(diào)命令,開(kāi)關(guān)器件為兩個(gè)大

4、功率電磁繼電器。整個(gè)項(xiàng)目的所有數(shù)據(jù)顯示于LCD12864液晶,形成一個(gè)良好的用戶界面。硬件電路圖和PCB用Protel99SE繪制,軟件開(kāi)發(fā)環(huán)境為KeilV3,項(xiàng)目實(shí)物為萬(wàn)用板焊接電路,經(jīng)調(diào)試各項(xiàng)功能均已正常實(shí)現(xiàn)。</p><p>  關(guān)鍵詞:紅外遙控,單片機(jī),DS1302,DS18B20,LCD12864</p><p><b>  ABSTRACT</b><

5、/p><p>  With the development of science and technology, especially the development of microelectronics technology, SCM applications have been deeply into all areas of life. Taking STCC89C52 as control chip, fo

6、r DS1302 clock chip, DS18B20 as temperature collector, HS0038 infrared receiving head as integrated infrared receiver, signal receiving and processing the remote control buttons, in order to correct the clock time. At th

7、e same time, the project also joined the function of timing, and setting temper</p><p>  Key words:infrared remote control, microcontroller, DS1302, DS18B20, LCD12864目 錄</p><p><b>  第1章 緒

8、論1</b></p><p>  第2章 單片機(jī)介紹1</p><p>  2.1 單片機(jī)簡(jiǎn)介及歷史1</p><p>  2.2 單片機(jī)應(yīng)用發(fā)展趨勢(shì)2</p><p>  第3章 硬件設(shè)計(jì)2</p><p>  3.1 STC89C52單片機(jī)介紹2</p><p>  

9、3.1.1 STC89C52引腳簡(jiǎn)介2</p><p>  3.1.2 STC89C52RC主要功能特點(diǎn)4</p><p>  3.2 DS18B20溫度傳感器介紹5</p><p>  3.2.1 DS18B20引腳及特點(diǎn)5</p><p>  3.2.2 DS18B20內(nèi)部結(jié)構(gòu)及寄存器介紹7</p><p&g

10、t;  3.3 DS1302時(shí)鐘芯片介紹9</p><p>  3.3.1 DS1302引腳及內(nèi)部寄存器簡(jiǎn)介9</p><p>  3.3.2 DS1302讀寫(xiě)時(shí)序10</p><p>  3.4 HS0038紅外一體接收器介紹11</p><p>  3.4.1 HS0038特點(diǎn)介紹11</p><p> 

11、 3.4.2 HS0038電路及應(yīng)用11</p><p>  3.5 LCD12864液晶介紹12</p><p>  3.5.1 LCD12864性能概述及引腳功能12</p><p>  3.5.2 LCD12864讀寫(xiě)時(shí)序及用戶指令集13</p><p>  3.6 其他硬件電路14</p><p> 

12、 3.6.1 STC89C52RC最小系統(tǒng)的設(shè)計(jì)14</p><p>  3.6.2 系統(tǒng)電源電路的設(shè)計(jì)15</p><p>  第4章 軟件開(kāi)發(fā)平臺(tái)及軟件15</p><p>  4.1 開(kāi)發(fā)環(huán)境介紹及程序總體結(jié)構(gòu)15</p><p>  4.1.1 開(kāi)發(fā)環(huán)境介紹15</p><p>  4.1.2 程序總

13、體結(jié)構(gòu)15</p><p>  4.2 DS18B20溫度程序模塊16</p><p>  4.2.1 DS18B20操作流程16</p><p>  4.2.2 DS18B20部分程序代碼17</p><p>  4.3 DS1302時(shí)間程序模塊20</p><p>  4.3.1 DS1302總體操作及基

14、本讀寫(xiě)功能函數(shù)20</p><p>  4.3.2 讀取時(shí)間數(shù)據(jù)并轉(zhuǎn)化成字符串23</p><p>  4.4 LCD12864液晶驅(qū)動(dòng)程序24</p><p>  4.4.1 LCD12864初始化24</p><p>  4.4.2 寫(xiě)數(shù)據(jù)到LCD12864功能函數(shù)25</p><p>  4.5 HS0

15、038紅外解碼程序模塊26</p><p>  4.5.1 紅外遙控器編碼介紹26</p><p>  4.5.2 紅外解碼程序流程及重要代碼分析27</p><p>  4.6 定時(shí)定溫功能的程序?qū)崿F(xiàn)29</p><p>  第5章 系統(tǒng)調(diào)試及項(xiàng)目總結(jié)33</p><p>  5.1 系統(tǒng)調(diào)試33<

16、/p><p>  5.1.1 最小系統(tǒng)調(diào)試33</p><p>  5.1.2 其他各模塊調(diào)試過(guò)程33</p><p><b>  5.2 總結(jié)34</b></p><p><b>  參考文獻(xiàn)36</b></p><p><b>  致 謝37</b&

17、gt;</p><p><b>  附 錄38</b></p><p>  附錄1 整體電路原理圖38</p><p>  附錄2 PCB版圖38</p><p>  附錄3 Protel99SE生成的效果圖39</p><p><b>  緒 論</b></p

18、><p>  20世紀(jì)以來(lái),電子技術(shù)發(fā)展迅速,特別是近幾年來(lái),現(xiàn)代電子產(chǎn)品以及各種消費(fèi)電子產(chǎn)品已經(jīng)滲透到了生活各方面,電子技術(shù)的發(fā)展推動(dòng)力社會(huì)發(fā)展科技進(jìn)步并且提高了人們的生活水平。以單片機(jī)為核心的多功能系統(tǒng)正在飛快的改變著人們的生活,特別是一些家用智能產(chǎn)品,不但方便了人們的生活,更加豐富了人們的生活方式。以本文中的家用智能紅外遙控系統(tǒng)為例,該項(xiàng)目除了具有一般的日歷功能外,還增加了溫度檢測(cè)功能,但其能成為“智能”之處并

19、不在于此,而是他可以通過(guò)遙控按鍵設(shè)定時(shí)間值和溫度值,接著程序就會(huì)按照這些數(shù)值自動(dòng)的控制繼電器,從而達(dá)到了定時(shí)開(kāi)關(guān)燈,定溫開(kāi)關(guān)空調(diào)的目的。</p><p>  在享受越來(lái)越智能化的電子產(chǎn)品的時(shí)候,我們還要再次感謝電子技術(shù)的發(fā),集成化的功能模塊已使編程和硬件設(shè)計(jì)變得非常方便。以溫度采集模塊為例,經(jīng)典的溫度采集系統(tǒng)由模擬量溫度傳感器、經(jīng)過(guò)A/D轉(zhuǎn)換和各種單片機(jī)電路組成。由于溫度傳感器輸出模擬量那么信號(hào)需要經(jīng)過(guò)A/D轉(zhuǎn)換

20、,轉(zhuǎn)換為數(shù)字量后才能與單片機(jī)等數(shù)字接口進(jìn)行通信,從而使電路變得比較復(fù)雜,提高了成本。而DS18B20集成了模數(shù)轉(zhuǎn)換功能,通過(guò)封裝只留出一個(gè)數(shù)據(jù)接口,這樣就可以直接輸出數(shù)字量,從而單片機(jī)連接變得非常簡(jiǎn)單,提高了靈活度,降低了成本增加了應(yīng)用價(jià)值。另外HS0038紅外一體接受頭,更是能把紅外信號(hào)直接轉(zhuǎn)變?yōu)殡妷盒盘?hào),省去了大量的外圍電路,方便了程序編寫(xiě)。</p><p><b>  單片機(jī)介紹</b>

21、;</p><p><b>  單片機(jī)簡(jiǎn)介及歷史</b></p><p>  單片機(jī)是一種超大規(guī)模集成電路芯片,把CPU,RAM存儲(chǔ)器、ROM存儲(chǔ)器、中斷系統(tǒng),多種I/O口、定時(shí)器/計(jì)時(shí)器等(還可以集成液晶控制器,SIP模塊,IIC模塊),集成到一塊硅片電路板上構(gòu)成的一個(gè)完善的微型計(jì)算機(jī)系統(tǒng)。</p><p>  單片機(jī)最早出現(xiàn)于1971年,大

22、致經(jīng)歷了SCM、MCU、SoC三個(gè)階段,早期的單片機(jī)是8位或4位的。其中影響最大的的是INTEL的8031,此后在此基礎(chǔ)上上研制出了MCS51系列單片機(jī)系統(tǒng)。由于其良好的性能和較高的性價(jià)比,該型號(hào)的單片機(jī)當(dāng)今仍在廣泛使用。隨著工程項(xiàng)目復(fù)雜度的提高和對(duì)控制精確度要求的提高,16位單片機(jī)隨之出現(xiàn),但是16位單片機(jī)和51系列相比性價(jià)比優(yōu)勢(shì)不大,所以應(yīng)用不太廣泛。90年代以來(lái)隨著消費(fèi)電子產(chǎn)品需求增大,單片機(jī)技術(shù)乘勢(shì)發(fā)展。隨著ARM系列的廣泛使用

23、,32位單片機(jī)快速替代了16位單片機(jī)引領(lǐng)高端產(chǎn)品。</p><p><b>  單片機(jī)應(yīng)用發(fā)展趨勢(shì)</b></p><p>  當(dāng)今世界的單片機(jī)領(lǐng)域可以說(shuō)是百花齊放,世界各大芯片商先后都退出了自己的8位,16位,32位單片機(jī)。有的于主流兼容有的則獨(dú)樹(shù)一幟,他們各具特色相互補(bǔ)充??傮w看來(lái),單片機(jī)發(fā)展的趨勢(shì)大致有以下方面:</p><p>  高低

24、搭配,分工明確。高端單片機(jī)低端單片機(jī)并行于世,各自發(fā)揮各自的功能,特別是在工業(yè)控制方面,各有各自的側(cè)重點(diǎn),如有的側(cè)重運(yùn)算速度有的則強(qiáng)調(diào)豐富的外設(shè)接口。</p><p>  低功耗。最初基于MCS-51的8013功耗達(dá)到630mW,而現(xiàn)在流行的單片機(jī)都在100mW上下。隨著CMOS和CHMOS工藝的應(yīng)用,單片機(jī)會(huì)變得速度更高功耗更低。</p><p>  體積更小?,F(xiàn)代的電子產(chǎn)品大都要求體積

25、小更便攜。這就要求在最求高速低功耗的同時(shí)還要注重減小體積,很多單片機(jī)廠商在封裝上下起了功夫,其中表面封裝(SMD)得到了普遍認(rèn)可。使得單片機(jī)邁向微型化。</p><p><b>  硬件設(shè)計(jì)</b></p><p>  STC89C52單片機(jī)介紹</p><p>  STC89C52引腳簡(jiǎn)介</p><p>  STC8

26、9C52管腳如圖1所示。</p><p>  圖 1 STC89C52管腳圖</p><p>  圖 2 STC89C52實(shí)物圖</p><p><b>  電源引腳(2根)</b></p><p>  GND(20腳):接地線;VCC(40腳):接+5V電源</p><p>  外接晶振引腳(2

27、根)</p><p>  XTAL0(18腳):蕩電路的輸入端;XTAL1(19腳):振蕩電路的輸出端</p><p><b>  控制引腳(4根)</b></p><p>  ALE/PROG(30腳):地址鎖存允許信號(hào);EA/VPP(31腳):片內(nèi)外程序存儲(chǔ)器選擇,低電平讀取外部存儲(chǔ)器指令,高電平讀片內(nèi)程序指令;RST/VPP(9腳):復(fù)位

28、引腳2個(gè)機(jī)器周期以上的高電平單片機(jī)復(fù)位;PSEN(29腳):外部存儲(chǔ)器讀選通信號(hào)</p><p><b>  I/O口(32根)</b></p><p>  該單片機(jī)有4組(P0、P1、P2、P3)I/O口,每組8位,共32根引腳。</p><p>  P0口(39腳~32腳)是一個(gè)具有8位漏極開(kāi)路的雙向I/O口。當(dāng)輸出口使用時(shí),每位能驅(qū)動(dòng)8路

29、TTL電平。</p><p>  P1口(1腳~8腳)是一個(gè)8 位雙向I/O 口且具有上拉電阻??梢杂脕?lái)驅(qū)動(dòng)TLL邏輯電平。</p><p>  P2口(21腳~28腳)是一個(gè)8 位雙向I/O 口且具有內(nèi)部上拉電阻,P2 口可以用來(lái)驅(qū)動(dòng) TTL 邏輯電平。</p><p>  P3口(10腳~17腳)是8位準(zhǔn)雙向I/O口,同時(shí)P3口具有復(fù)用功能,P3.0 串行輸入(

30、RXD)、P3.1 串行輸出(TXD) 、P3.2 外部中斷0(INT0)、P3.3 外中斷1(INT1)、P3.4 定時(shí)/計(jì)數(shù)器0、P3.5 定時(shí)/計(jì)數(shù)器1、P3.6 外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通、P3.7 外部數(shù)據(jù)存儲(chǔ)器讀選通</p><p>  STC89C52RC主要功能特點(diǎn)</p><p>  STC89C52是宏晶科技生產(chǎn)的一種高性價(jià)比低功耗的8位單片機(jī),片內(nèi)集成8KFlash程序存儲(chǔ)

31、器,STC89C52使用經(jīng)典的MCS-51內(nèi)核,程序上完全兼容。但該單片機(jī)還是做了不少改進(jìn),縮短了指令執(zhí)行周期,增加了定時(shí)器2,增加了看門(mén)狗功能。在單芯片上,8位的CPU配合8K的程序存儲(chǔ)器,使得STC89C52能滿足基本的控制需要不需要再外擴(kuò)存儲(chǔ)器。 以下是STC89C52的基本特點(diǎn):</p><p>  相對(duì)于一個(gè)機(jī)器周期占12個(gè)機(jī)器周期的8051增加6時(shí)鐘/機(jī)器周期功能。</p><p&

32、gt;  工作電壓寬度在5.5V - 3.4V。</p><p>  工作頻率0 – 40 MHz最高可達(dá)到48MHz</p><p>  片內(nèi)集成8K字節(jié)的程序存儲(chǔ)器和512B的RAM</p><p>  通用I/O口(32個(gè)),復(fù)位后為P1~P4是準(zhǔn)雙向口并帶有弱上拉電阻,P0口是開(kāi)漏輸出,作為地址線使用時(shí)不用接上拉電阻而作為普通I/O口使用時(shí)必須使用上拉電阻。

33、</p><p>  具有3個(gè)16位定時(shí)器/計(jì)數(shù)器,定時(shí)器0可以拆分成兩個(gè)8位使用</p><p>  具有四個(gè)外部中斷,可以設(shè)置成下降沿或低電平模式觸發(fā),掉電模式下外部中斷的低電平模式可以喚醒系統(tǒng)。</p><p>  具有一個(gè)通用同步串口,如有需要可以通過(guò)普通I/O口模擬串口進(jìn)行擴(kuò)展。</p><p>  正常工作溫度范圍0 - 75℃,

34、 本項(xiàng)目為PDIP-40封裝。 </p><p>  DS18B20溫度傳感器介紹</p><p>  DS18B20引腳及特點(diǎn)</p><p>  DS18B20的引腳及封裝如圖3所示:</p><p>  圖 3 DS18B20引腳及封裝</p><p>  DS18B20的引腳:1.DQ 輸入/輸出端口;2.

35、GND 為電源地;3. VDD +5V(寄生電源模式下該位接地即可)</p><p>  DS18B20 的主要特性:</p><p>  DS18B20適應(yīng)的溫度范圍為3.0~5.5v,可以直接與3v或5v單片機(jī)相連,如果使用寄生電源模式兩個(gè)電源引腳可以直接接地,DS18B20與單片機(jī)連接只需要一根數(shù)據(jù)線,通過(guò)一定的時(shí)序操作可以實(shí)現(xiàn)讀和寫(xiě)的雙向通信,另外DS18B20還有一大特色,一條數(shù)

36、據(jù)線可以連接多個(gè)傳感器 ,在不增加I/O口的情況下實(shí)現(xiàn)網(wǎng)多點(diǎn)測(cè)溫的需求,DS18B20 設(shè)計(jì)精巧實(shí)用方便,整個(gè)功能電路集成在只有三個(gè)引腳的芯片內(nèi),形如三家管 ,其溫度測(cè)量范圍-55℃~+125℃,溫度測(cè)量分辨率為 9~12 位出廠設(shè)置為12位精度,這樣在默認(rèn)設(shè)置下只要把測(cè)得并轉(zhuǎn)化后的溫度值乘以0.0625即可得實(shí)際溫度值。</p><p>  DS18B20與單片機(jī)的連接有兩種方法,外部電源供電和寄生電源供電方式

37、,在實(shí)際使用時(shí)只需要在數(shù)據(jù)線上接上4.7kΩ的上拉電阻即可。本項(xiàng)目采用外部電源供電方式如圖4所示:</p><p>  圖 4 DS18B20外部供電電路圖</p><p>  DS18B20內(nèi)部結(jié)構(gòu)及寄存器介紹</p><p>  DS18B20的內(nèi)部結(jié)構(gòu)如圖5所示:</p><p>  圖 5 DS18B20內(nèi)部結(jié)構(gòu)圖</p>

38、<p>  DS18B20的四大數(shù)據(jù)組成部分:</p><p>  光刻 ROM 中的 64 位序列號(hào),用于實(shí)現(xiàn)一根總線上掛接多個(gè) DS18B20 的目的。</p><p>  溫度靈敏原件,用于接收最初的溫度模擬量</p><p>  非易失性溫度報(bào)警觸發(fā)器(EEPROM)TH和TL。可通過(guò)軟件寫(xiě)入用戶報(bào)警上下限值。</p><p

39、>  配置寄存器,通過(guò)R0,R1位設(shè)置,溫度分辨率,出廠時(shí)R0=1,R1=1(即12位分辨率)具體設(shè)置方法如圖6所示:</p><p>  圖 6 分辨率設(shè)置寄存器</p><p>  DS18B20高速暫存存儲(chǔ)器介紹:</p><p>  高速RAM由9個(gè)字節(jié)組成如表1所示:</p><p>  表1 DS18B20存儲(chǔ)器映像<

40、/p><p>  溫度轉(zhuǎn)換命令(44H)發(fā)出后在最長(zhǎng)750ms的時(shí)間內(nèi),二進(jìn)制溫度值被存放于溫度高位和溫度低位(即高速RAM的第0和1字節(jié))。這時(shí)單片機(jī)按照低位在前,高位在后的方式讀取兩字節(jié)數(shù)據(jù),就可以通過(guò)一定的轉(zhuǎn)換規(guī)則得到十進(jìn)制溫度。在轉(zhuǎn)換時(shí)應(yīng)注意,當(dāng)S=0(正溫度)時(shí),根據(jù)分辨率位數(shù)直接轉(zhuǎn)換為十進(jìn)制;當(dāng)S=1(負(fù)溫度)時(shí),應(yīng)先將補(bǔ)碼取反加一,再進(jìn)行十進(jìn)制轉(zhuǎn)換。數(shù)據(jù)格式如圖7所示:</p><p

41、>  圖 7 溫度值格式圖</p><p>  DS1302時(shí)鐘芯片介紹</p><p>  DS1302引腳及內(nèi)部寄存器簡(jiǎn)介</p><p>  DS1302是美國(guó)達(dá)拉斯公司推出的一款功耗低功能全的實(shí)時(shí)時(shí)鐘芯片,RTC寄存器可提供年、月、日、時(shí)、分、秒、及周的時(shí)間值,另有31字節(jié)靜態(tài)RAM,采用串行三線接口與單片機(jī)進(jìn)行通信,突發(fā)方式下,可以一次性傳送多個(gè)字節(jié)

42、的數(shù)據(jù)或時(shí)鐘信號(hào)。工作電壓寬度2.5~5V ,用來(lái)保持片內(nèi)數(shù)據(jù)時(shí)功率控制在1毫瓦內(nèi)。具有備用電源引腳,也可以通過(guò)寄存器設(shè)置備用電源充電方式。DS1302的引腳如圖8所示:</p><p>  圖 8 DS1302引腳圖</p><p>  其中X1、X2外接32.768KHz晶振;GND接地;CE信號(hào)使能端,數(shù)據(jù)傳輸時(shí)必須保持高電平,;I/O 數(shù)據(jù)輸入/輸出引腳;SCLK串行時(shí)鐘,Vcc1

43、,Vcc2電源供電管腳。</p><p>  DS1302關(guān)于時(shí)間和日期的寄存器如圖9所示,共有12個(gè),編程時(shí)注意讀和寫(xiě)的地址有所不同。</p><p>  圖 9 DS1302RTC寄存器</p><p>  DS1302控制字,如表2-2所示:</p><p>  表2-2 DS1302控制字</p><p>  

44、控制字從低位開(kāi)始輸出,在下一個(gè)時(shí)鐘上升沿,寫(xiě)入數(shù)據(jù),而在指令后的下一個(gè)時(shí)鐘下降沿,讀出數(shù)據(jù)。</p><p>  DS1302讀寫(xiě)時(shí)序</p><p>  DS1302讀寫(xiě)時(shí)序如圖10所示:</p><p>  圖 10 DS1302讀寫(xiě)時(shí)序</p><p>  CE高電平開(kāi)啟數(shù)據(jù)傳送功能,數(shù)據(jù)傳輸時(shí),數(shù)據(jù)在時(shí)鐘上升沿輸入,時(shí)鐘下降沿輸出。&

45、lt;/p><p>  HS0038紅外一體接收器介紹</p><p>  HS0038特點(diǎn)介紹</p><p>  紅外通信有紅外發(fā)射裝置和接收裝置組成,本項(xiàng)目紅外發(fā)射裝置為載波38KHz的普通紅外遙控器。HS0038能夠接受紅外信號(hào),并能對(duì)信號(hào)放大,檢波,整形輸出單片機(jī)可以識(shí)別的TTL電平。單片機(jī)經(jīng)過(guò)一定的算法把接收到的數(shù)據(jù)進(jìn)行解碼。便可以得到遙控器鍵值。應(yīng)當(dāng)注意H

46、S0038輸出的數(shù)據(jù)正好和發(fā)射端的電平反向。</p><p>  HS0038電路及應(yīng)用</p><p>  HS0038引腳及封裝如圖11所示:</p><p>  圖 11 HS0038實(shí)物圖</p><p>  從左到右,引腳依次是:I/O數(shù)據(jù)端口、GND接地、VCC接+5V電源。</p><p>  HS003

47、8在單片機(jī)系統(tǒng)中常用的電路如圖12所示</p><p>  圖 12 HS0038應(yīng)用電路圖</p><p>  LCD12864液晶介紹</p><p>  LCD12864性能概述及引腳功能</p><p>  本項(xiàng)目采用帶漢字字庫(kù)的液晶模塊,內(nèi)置8192個(gè)漢字128個(gè)字符還具有64*256的GDRAM可以用來(lái)繪制圖形。液晶正常工作的點(diǎn)壓

48、寬度為3.3~5V,顯示分辨率為128×64。應(yīng)用中可以通過(guò)寫(xiě)入命令字來(lái)實(shí)現(xiàn)多種功能,如:開(kāi)關(guān)光標(biāo),反白顯示,屏幕移位,睡眠 模式等。LCD12864具有20個(gè)引腳功能如表2所示:</p><p>  表 2 LCD12864引腳功能圖</p><p>  該液晶20個(gè)引腳與單片機(jī)的連接如圖13所示。</p><p>  圖 13 LCD12864與單片機(jī)

49、連接圖</p><p>  由于本項(xiàng)目采用8位并行數(shù)據(jù)傳輸方式,故其第15引腳PSB直接接高電平即可。</p><p>  LCD12864讀寫(xiě)時(shí)序及用戶指令集</p><p>  對(duì)LCD12864液晶的操作不外乎通過(guò)單片機(jī)不斷進(jìn)行讀寫(xiě),單片機(jī)寫(xiě)數(shù)據(jù)到液晶模塊的時(shí)序圖如圖14所示</p><p>  圖 14 單片機(jī)寫(xiě)數(shù)據(jù)到液晶模塊<

50、/p><p>  單片機(jī)讀取液晶模塊數(shù)據(jù)的時(shí)序圖如圖15所示。</p><p>  圖 15 單片機(jī)讀取液晶模塊數(shù)據(jù)</p><p>  由圖2-15可知寫(xiě)數(shù)據(jù)或命令的操作大致如下,RS為高時(shí)寫(xiě)數(shù)據(jù)RS為低時(shí)寫(xiě)指令;RW引腳為低電平進(jìn)行寫(xiě)操作;E引腳設(shè)置為高允許數(shù)據(jù)傳送,接著便把所傳數(shù)據(jù)放于數(shù)據(jù)引腳,E引腳再次拉低變完成了寫(xiě)操作。</p><p>

51、;  LCD12864有兩種指令集,基本指令集(RE=0)和擴(kuò)充指令集(RE=1),寫(xiě)指令時(shí)RS=0,RW=0。通過(guò)正確的時(shí)序?qū)懼噶羁梢栽O(shè)置LCD12864的很多功能,如寫(xiě)入0x01指令即可清屏并把DDRAM地址計(jì)數(shù)器調(diào)整為“00H”,再如寫(xiě)入指令“0xc”即可打開(kāi)顯示關(guān)閉游標(biāo)。</p><p><b>  其他硬件電路</b></p><p>  STC89C52R

52、C最小系統(tǒng)的設(shè)計(jì)</p><p>  本項(xiàng)目的單片機(jī)最小系統(tǒng)主要包括,STC89C52單片機(jī),12M外接晶振,上電復(fù)位電路三個(gè)部分。</p><p>  最小系統(tǒng)晶振電路如圖16所示。</p><p><b>  圖 16 晶振電路</b></p><p>  晶振兩個(gè)引腳分別接與單片機(jī)的XTAL0和XTAL1引腳,電容

53、值的選擇范圍為5~30PF,電容對(duì)晶振頻率具有微調(diào)作用。</p><p>  最小系統(tǒng)復(fù)位電路如圖17所示。</p><p>  圖 17 上電復(fù)位電路</p><p>  單片機(jī)復(fù)位電路的設(shè)計(jì)必須能滿足上電震蕩穩(wěn)定后,保持至少兩個(gè)周期的高電平。本最小系統(tǒng)采用10uf的電容,經(jīng)驗(yàn)證完全滿足要求。由于本電路上電即可以使單片機(jī)復(fù)位,又具有電源開(kāi)關(guān),故省去了按鍵復(fù)位開(kāi)關(guān)。

54、</p><p>  另外,由于本項(xiàng)目采用單片機(jī)內(nèi)部存儲(chǔ)器存儲(chǔ)程序,故單片機(jī)的第31引腳(EA)接高電平,用來(lái)訪問(wèn)片內(nèi)程序。</p><p><b>  系統(tǒng)電源電路的設(shè)計(jì)</b></p><p>  由于所選用單片機(jī)為5V單片機(jī),為得到較穩(wěn)定的5V電壓,本項(xiàng)目采用了L7805cv三端集成穩(wěn)壓管。輸出電壓4.75-5.25V,最大輸入電壓35v

55、,壓差3-5v時(shí)工作在理想狀態(tài)。輸出電流可達(dá)1.5A(需做好散熱),同時(shí)L7805cv內(nèi)部含有限流保護(hù)電路和過(guò)熱保護(hù)電路,防止負(fù)載過(guò)大溫度過(guò)高燒壞器件。本項(xiàng)目中L7805cv的應(yīng)用電路如圖18所示。</p><p>  圖 18 L7805cv穩(wěn)壓電路圖</p><p><b>  軟件開(kāi)發(fā)平臺(tái)及軟件</b></p><p>  開(kāi)發(fā)環(huán)境介紹及

56、程序總體結(jié)構(gòu)</p><p><b>  開(kāi)發(fā)環(huán)境介紹</b></p><p>  本項(xiàng)目采用KEIL C51集成開(kāi)發(fā)環(huán)境,它具有有好的界面,使用極為方便。支持匯編語(yǔ)言,C語(yǔ)言及其混合編程,能夠兼容絕大多數(shù)51系列單片機(jī)的程序設(shè)計(jì)和仿真。</p><p><b>  程序總體結(jié)構(gòu)</b></p><p&

57、gt;  由于整個(gè)系統(tǒng)涉及到的外設(shè)模塊較多,故采用了多文件模塊化編程,這樣大大提高了程序的可讀性,也為以后可能遇到的程序移植和升級(jí)提供了方便。整個(gè)項(xiàng)目的程序結(jié)構(gòu)如圖19所示。</p><p>  圖 19 程序結(jié)構(gòu)圖</p><p>  其中,main.c是項(xiàng)目主函數(shù)包含了各種外設(shè)的初始化及其功能函數(shù)的調(diào)用,DS18B20.c、IR.c、DS1302.c、LCD12864.c分別為溫度傳感

58、器、紅外接收器、時(shí)鐘芯片和液晶的驅(qū)動(dòng)程序,SET.c是用來(lái)定時(shí)、定溫的功能模塊。</p><p>  DS18B20溫度程序模塊</p><p>  DS18B20操作流程</p><p>  DS18B20操作流程如圖20所示。</p><p>  圖 20 DS18B20操作流程</p><p>  DS18B20

59、部分程序代碼</p><p>  /**********************************************************?</p><p>  *DS18B20初始化</p><p>  **********************************************************/</p><

60、;p>  void DS18B20_Init()</p><p><b>  {</b></p><p>  DS1820_RSET();</p><p>  DS1820_WData(0xCC); //跳過(guò)ROM</p><p>  DS1820_WData(0x4E); //寫(xiě)暫存器</p

61、><p>  DS1820_RSET();</p><p><b>  }</b></p><p>  /**********************************************************</p><p><b>  *DS1820復(fù)位</b></p>&

62、lt;p>  **********************************************************/</p><p>  bit DS1820_RSET()</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p&

63、gt;<b>  bit flag;</b></p><p>  DS1820_bit=0;</p><p>  for(i=230;i>0;i--); //延時(shí)480微秒,產(chǎn)生復(fù)位脈沖</p><p>  DS1820_bit=1; //釋放總線</p><p>  for(i=40;i&g

64、t;0;i--); //延時(shí)80微秒</p><p>  flag=DS1820_bit; //得到引腳電平</p><p>  for(i=200;i>0;i--); //延時(shí)400微秒等待總線恢復(fù)</p><p>  return (flag); //如有需要測(cè)試flag==0,則器件正常</p><p&g

65、t;<b>  }</b></p><p>  /**********************************************************</p><p>  *寫(xiě)數(shù)據(jù)到DS1820</p><p>  *********************************************************

66、*/</p><p>  void DS1820_WData(uchar wData)</p><p><b>  {</b></p><p>  uchar i,j;</p><p>  for(i=8;i>0;i--)</p><p><b>  {</b><

67、/p><p>  DS1820_bit=0; //低電平,產(chǎn)生寫(xiě)信號(hào)</p><p>  for(j=2;j>0;j--); //延時(shí)</p><p>  DS1820_bit=wData&0x01; //發(fā)送1位</p><p>  for(j=30;j>0;j--); //延時(shí)&

68、lt;/p><p>  DS1820_bit=1; //釋放總線</p><p>  wData>>=1; //右移一位寫(xiě)下一位</p><p><b>  }</b></p><p><b>  }</b></p><p&g

69、t;  /**********************************************************</p><p>  *從DS1820中讀出數(shù)據(jù)</p><p>  **********************************************************/</p><p>  uchar DS1820_RDa

70、ta()</p><p><b>  {</b></p><p>  uchar i,j,Tmep;</p><p>  for(i=8;i>0;i--)</p><p><b>  {</b></p><p><b>  Tmep>>=1;<

71、;/b></p><p>  DS1820_bit=0; //低電平,產(chǎn)生讀信號(hào)</p><p>  for(j=2;j>0;j--); //延時(shí)4us</p><p>  DS1820_bit=1; //釋放總線,準(zhǔn)備讀數(shù)據(jù)</p><p>  for(j=4;j>0;j--); /

72、/延時(shí)</p><p>  if(DS1820_bit==1)</p><p>  {Tmep|=0x80;}</p><p>  for(j=30;j>0;j--); //延時(shí)</p><p>  DS1820_bit=1; //拉高數(shù)據(jù)線,準(zhǔn)備讀下一位</p><p><b>  

73、}</b></p><p>  return(Tmep); //返回?cái)?shù)據(jù)</p><p><b>  }</b></p><p>  /**********************************************************</p><p><b>  /*

74、得到溫度值</b></p><p>  **********************************************************/</p><p>  void get_Wendu_data()</p><p><b>  { </b></p><p>  uchar temp_d

75、ata_2;</p><p>  uint TempDec; //用來(lái)存放小數(shù)位</p><p><b>  uchar i; </b></p><p>  DS1820_RSET(); //復(fù)位</p><p>  DS1820_WData(0xcc); //跳過(guò)ROM命令</p>

76、;<p>  DS1820_WData(0x44); //溫度轉(zhuǎn)換命令</p><p>  DS1820_RSET(); //復(fù)位,每次得到溫度值都要復(fù)位</p><p>  DS1820_WData(0xcc); //跳過(guò)ROM命令</p><p>  for(i=0;i<2;i++)</p><p&g

77、t;<b>  {</b></p><p>  Wendu_data[i]=DS1820_RData(); //讀共12位,分別存于兩個(gè)字節(jié) </p><p><b>  }</b></p><p>  DS1820_RSET(); //復(fù)位,結(jié)束時(shí)也要復(fù)位

78、 </p><p>  temp_data=Wendu_data[1];</p><p>  temp_data&=0xf0; //取高4位</p><p>  if(temp_data==0xf0) //判斷是正溫度還是負(fù)溫度讀數(shù)</p><p>  {

79、 </p><p>  //負(fù)溫度求補(bǔ),取反加1,判斷低8位是否有進(jìn)位</p><p>  if(Wendu_data[0]==0)</p><p>  { //有進(jìn)位,高8位取反加1</p><p>  Wend

80、u_data[0]=~Wendu_data[0]+1;</p><p>  Wendu_data[1]=~Wendu_data[1]+1;</p><p><b>  }else</b></p><p>  { //沒(méi)進(jìn)位,高8位不加1</p><p

81、>  Wendu_data[0]=~Wendu_data[0]+1;</p><p>  Wendu_data[1]=~Wendu_data[1];</p><p><b>  }</b></p><p><b>  }</b></p><p>  temp_data=Wendu_data[1

82、]<<4; //取高字節(jié)低4位</p><p>  temp_data_2=Wendu_data[0]>>4; //取低字節(jié)高4位</p><p>  temp_data=temp_data|temp_data_2; //組合成一個(gè)八位數(shù)據(jù)</p><p>  Wendu_ASCII[

83、0]=temp_data/100+0x30; //百位轉(zhuǎn)換為ASCII碼</p><p>  Wendu_ASCII[1]=(temp_data%100)/10+0x30; //十位轉(zhuǎn)換為ASCII碼</p><p>  Wendu_ASCII[2]=(temp_data%100)%10+0x30; //個(gè)位轉(zhuǎn)換為ASCII碼</p><p>  W

84、endu_data[0]&=0x0f; //小數(shù)位轉(zhuǎn)換為ASCII碼</p><p>  TempDec=Wendu_data[0]*625; //12位精度0.0625,擴(kuò)大10000倍</p><p>  Wendu_ASCII[3]=TempDec/1000+0x30; //十分位轉(zhuǎn)換為ASCII碼&

85、lt;/p><p>  Wendu_ASCII[4]=(TempDec%1000)/100+0x30; //百分位轉(zhuǎn)換為ASCII碼</p><p><b>  }</b></p><p>  DS1302時(shí)間程序模塊</p><p>  DS1302總體操作及基本讀寫(xiě)功能函數(shù)</p><p>  

86、DS1302總體操作如圖21所示。</p><p>  圖 21 DS1302操作總流程</p><p>  DS1302讀寫(xiě)操作流程如圖22所示。</p><p>  圖 22 DS1302讀寫(xiě)操作流程</p><p><b>  具體代碼如下:</b></p><p>  /*********

87、*************************************************</p><p>  通過(guò)時(shí)鐘寫(xiě)入一字節(jié)數(shù)據(jù),在一個(gè)時(shí)鐘的上升沿?cái)?shù)據(jù)被寫(xiě)入</p><p>  **********************************************************/</p><p>  void DS1302_Write

88、Byte(unsigned char d) </p><p>  { uchar i;</p><p><b>  ACC = d; </b></p><p>  SCLK=0; //初始時(shí)鐘線置為0</p><p>  for(i=8; i>0; i--)</

89、p><p>  {DS1302_IO = ACC0; </p><p>  DS1302_CLK = 1; //制造上升沿 數(shù)據(jù)被傳輸</p><p>  DS1302_CLK = 0; //再次拉低</p><p>  ACC = ACC >> 1; </p><p><b&

90、gt;  } </b></p><p><b>  }</b></p><p>  /**********************************************************</p><p>  通過(guò)時(shí)鐘讀取一字節(jié)數(shù)據(jù),在一個(gè)時(shí)鐘的下降沿DS1302數(shù)據(jù)被讀出</p><p>  

91、**********************************************************/</p><p>  unsigned char DS1302_ReadByte(void) </p><p>  { uchar i; </p><p>  for(i=8; i>0; i--)</p><p>

92、  { ACC = ACC >>1; </p><p>  ACC7 = DS1302_IO;</p><p>  DS1302_CLK = 1;</p><p>  Delayus(1);</p><p>  DS1302_CLK = 0; //制造下降沿</p><p><

93、b>  } </b></p><p>  return(ACC);</p><p><b>  }</b></p><p>  /**********************************************************</p><p>  /向DS1302寫(xiě)地址和數(shù)據(jù), Ad

94、dr地址,Dat數(shù)據(jù)</p><p>  **********************************************************/</p><p>  void Write1302_Cmd_Dat(unsigned char Addr, unsigned char Dat)</p><p>  { DS1302_RST = 0;<

95、;/p><p>  DS1302_CLK = 0;</p><p>  DS1302_RST = 1;</p><p>  DS1302_WriteByte(Addr); // 地址,命令 </p><p>  DS1302_WriteByte(Dat); // 寫(xiě)1Byte數(shù)據(jù)</p><p>

96、;  DS1302_CLK = 1;</p><p>  DS1302_RST = 0;</p><p><b>  } </b></p><p>  /**********************************************************</p><p>  /讀取DS1302某地址的數(shù)據(jù)

97、,</p><p>  **********************************************************/</p><p>  uchar Read1302(unsigned char Addr)</p><p>  { uchar Dat;</p><p>  DS1302_RST = 0;</

98、p><p>  DS1302_CLK = 0;</p><p>  DS1302_RST = 1;</p><p>  DS1302_WriteByte(Addr|0x01); // 以寫(xiě)數(shù)據(jù)時(shí)的地址為參考,讀時(shí)應(yīng)加1</p><p>  Dat = DS1302_ReadByte(); // 讀取數(shù)據(jù)到變量Dat

99、</p><p>  DS1302_CLK = 1;</p><p>  DS1302_RST = 0;</p><p>  return(Dat);</p><p><b>  }</b></p><p>  讀取時(shí)間數(shù)據(jù)并轉(zhuǎn)化成字符串</p><p>  由于時(shí)間數(shù)據(jù)包

100、含年、月、日、時(shí)、分、秒、周,為了方便可以定義一個(gè)時(shí)間類(lèi)型結(jié)構(gòu)體,把轉(zhuǎn)換前后的數(shù)據(jù)都作為這個(gè)結(jié)構(gòu)體的成員。</p><p>  typedef struct </p><p>  { unsigned char Week;</p><p>  unsigned char Second;</p><p>  unsigned char Ho

101、ur;</p><p>  unsigned char Minute;</p><p>  unsigned char Hour;</p><p>  unsigned char Month;</p><p>  unsigned char Day;</p><p>  unsigned char Year;<

102、/p><p>  unsigned char Str_Time[9];</p><p>  unsigned char Str_Year[5];</p><p>  unsigned char Str_Month[3];</p><p>  unsigned char Str_Day[3];</p><p>  }str

103、uct_TIM;</p><p>  然后,通過(guò)Read1302()函數(shù)讀取各個(gè)地址處的時(shí)間數(shù)據(jù)分別保存于Second、Minute等變量中并轉(zhuǎn)換成十進(jìn)制,如讀取并裝換秒值可以用以下兩個(gè)語(yǔ)句:</p><p>  temp = Read1302(0x80);</p><p>  //低四位是秒的個(gè)位,高三位是秒的十位(原來(lái)是BCD碼)</p><

104、p>  Time->Second = ((temp &0x70)>>4)*10 + (temp &0x0F);</p><p>  接著就可以把數(shù)值轉(zhuǎn)換成字符串了,仍以秒值為例轉(zhuǎn)換語(yǔ)句如下:</p><p>  Time->Str_Time[0] = Time->Second/10 + '0';//十位</p>

105、<p>  Time->Str_Time[1] = Time->Second%10 + '0';//個(gè)位</p><p>  至此,所得數(shù)據(jù)便可以方便的顯示在液晶屏上了。</p><p>  LCD12864液晶驅(qū)動(dòng)程序</p><p>  LCD12864初始化</p><p>  LCD12864

106、初始化流程如圖23所示。</p><p>  圖 23 12864液晶初始化</p><p><b>  下面是初始化代碼:</b></p><p>  void Init_12864() //LCD12864初始化</p><p>  { delay(40)

107、; //大于40MS的延時(shí)程序</p><p>  RES=0; //復(fù)位</p><p>  delay(1); //延時(shí)</p><p>  RES=1; //復(fù)位置高</p><p> 

108、 Write12864_Cmd_Dat(0x30,0); //基本指令集</p><p>  delay(100); //大于100uS的延時(shí)程序</p><p>  Write12864_Cmd_Dat(0x30,0); //基本指令集</p><p>  delay(37); //大于37

109、uS的延時(shí)程序</p><p>  Write12864_Cmd_Dat(0x0C,0); //開(kāi)顯示</p><p>  delay(100); //大于100uS的延時(shí)程序</p><p>  Write12864_Cmd_Dat(0x01,0); //清屏</p><p>  delay(10);

110、 //大于10mS的延時(shí)程序</p><p>  Write12864_Cmd_Dat(0x06,0); //光標(biāo)從右向左加1位移動(dòng)</p><p>  delay(100); //大于100uS的延時(shí)程序</p><p><b>  }</b></p><

111、;p>  寫(xiě)數(shù)據(jù)到LCD12864功能函數(shù)</p><p>  //寫(xiě)一字節(jié)數(shù)據(jù)或?qū)懨畹絃CD</p><p>  void Write12864_Cmd_Dat(char data1,bit DI) //DI=0命令,DI=1數(shù)據(jù)</p><p><b>  {</b></p><p><b>  

112、WR=0;</b></p><p><b>  RS=DI;</b></p><p><b>  delay(1);</b></p><p><b>  P0=data1;</b></p><p><b>  E=1;</b></p>

113、;<p><b>  delay(1);</b></p><p><b>  E=0;</b></p><p><b>  }</b></p><p>  //從地址addr_12864開(kāi)始,寫(xiě)字符串到LCD </p><p>  void writestring

114、(uchar addr_12864 ,uchar * str)</p><p><b>  {</b></p><p>  uchar i = 0;</p><p>  Write12864_Cmd_Dat(addr_12864,0);</p><p>  while(str[i] != '\0')<

115、;/p><p><b>  {</b></p><p>  Write12864_Cmd_Dat(str[i++],1); </p><p><b>  }</b></p><p><b>  }</b></p><p>  //在地址addr,寫(xiě)一個(gè)字符到

116、LCD</p><p>  void writedat(uchar addr ,uchar dat)</p><p><b>  {</b></p><p>  Write12864_Cmd_Dat(addr,0);</p><p>  Write12864_Cmd_Dat(dat,1);</p><

117、p><b>  }</b></p><p>  HS0038紅外解碼程序模塊</p><p><b>  紅外遙控器編碼介紹</b></p><p>  在進(jìn)行紅外解碼之前首先要對(duì)本項(xiàng)目采用的紅外遙控器編碼方式進(jìn)行簡(jiǎn)要介紹。遙控器發(fā)送一組完整數(shù)據(jù)(見(jiàn)圖24),首先是9ms 高電平和4.5ms低電平組成的前導(dǎo)碼,緊接著

118、是8位地址碼及其反碼,最后便是8位操作碼及其反碼。具體的編碼方式為脈寬調(diào)制的串行碼,用0.56ms的高電平和0.56ms的低電平表示二進(jìn)制0,以0.56ms的高電平和1.68ms的低電平表示二進(jìn)制1,編碼形式如圖25所示。</p><p>  圖 24 遙控器發(fā)送一組完整數(shù)據(jù)</p><p>  圖 25 遙控器編碼的0和1</p><p>  紅外解碼程序流程及重

119、要代碼分析</p><p>  本項(xiàng)目中紅外遙控器作為控制單片機(jī)運(yùn)行的按鍵,為了更好的實(shí)現(xiàn)按鍵功能紅外接收端接在了單片機(jī)的外部中斷0引腳,另外遙控器編碼采用脈寬調(diào)制方式,為了更精確的記錄脈寬時(shí)間需要啟用定時(shí)器功能,所以程序開(kāi)始要進(jìn)行中斷和定時(shí)器的初始化。初始化代碼如下:</p><p>  void Timer0init()</p><p><b>  {

120、</b></p><p>  TMOD=0x02; //定時(shí)器方式2 ,8位自動(dòng)重裝</p><p><b>  TH0=0x00;</b></p><p><b>  TL0=0x00;</b></p><p>  ET0=1; //定時(shí)器中斷允許</p><

121、;p><b>  EA=1;</b></p><p>  TR0=1; //開(kāi)定時(shí)器</p><p><b>  }</b></p><p>  void Int0init()</p><p><b>  {</b></p><p>  IT

122、0=1; //下降沿觸發(fā)</p><p><b>  EX0=1;</b></p><p>  EA=1; //開(kāi)總中斷</p><p><b>  }</b></p><p>  中斷觸發(fā)方式采用下降沿觸發(fā),中斷程序只需要記錄兩個(gè)中斷之間時(shí)間值并保存,然后對(duì)相應(yīng)脈沖的時(shí)間值與標(biāo)準(zhǔn)的脈沖時(shí)間進(jìn)

123、行比較,這樣得出了是0還是1。由于中斷函數(shù)盡量要短,進(jìn)行解碼的工作盡量不要在中斷函數(shù)中進(jìn)行。下面是解碼函數(shù)和中斷函數(shù)。</p><p>  /**********************************************************</p><p>  解碼函數(shù),按照脈寬調(diào)制標(biāo)準(zhǔn),1.12/0.256=4.375 此時(shí)間代表0值,</p><p

溫馨提示

  • 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論