單片機(jī)電子時(shí)鐘畢業(yè)論文(含外文翻譯)_第1頁(yè)
已閱讀1頁(yè),還剩46頁(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>  摘 要</b></p><p>  本設(shè)計(jì)以AT89C51單片機(jī)為核心芯片,與型號(hào)為1602的液晶顯示器構(gòu)成數(shù)字電子時(shí)鐘電路。AT89C51是一個(gè)低功耗,高性能CMOS 8位單片機(jī),片內(nèi)含4K Bytes ISP(In-system programmable)的可反復(fù)擦寫(xiě)1000次的Flash只讀程序存儲(chǔ)器,器件采用ATMEL公司的高密度、非易失性存儲(chǔ)技術(shù)制造,

2、兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng)及AT89C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲(chǔ)單元,功能強(qiáng)大的微型計(jì)算機(jī)的AT89C51可為許多嵌入式控制應(yīng)用系統(tǒng)提供高性價(jià)比的解決方案.液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的諸多優(yōu)點(diǎn),在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中得到越來(lái)越廣泛的應(yīng)用。</p><p>  關(guān)鍵詞: 液晶顯示器;單片機(jī);數(shù)字時(shí)鐘</p><p>

3、;<b>  Abstract</b></p><p>  The design AT89C51 microcontroller core chip, and the Model 1602 hungry for a digital LCD clock electronic circuit. AT89C51 SCM is a VLSI chip, which integrates CPU, M

4、emory (RAM / ROM), I / O interface, timer / counter, serial communication interface circuit. With a high degree of integration, small size, high reliability and control functions, low power consumption characteristics. M

5、odel for the 1602 character LCD with micro-power consumption, small size, content rich, Ultra-thin and light many</p><p>  Keywords: liquid crystal display; microcontroller; digital clock </p><p&

6、gt;<b>  目 錄</b></p><p><b>  摘 要i</b></p><p>  Abstractii</p><p>  第 1 章 緒 論1</p><p>  1.1 電子時(shí)鐘研究意義及簡(jiǎn)介1</p><p>  1.2 數(shù)字電子時(shí)鐘的

7、功能1</p><p>  第 2 章基于單片機(jī)的數(shù)字電子時(shí)鐘的設(shè)計(jì)方案選擇2</p><p>  2.1 主控制器2</p><p>  2.1.1 采用數(shù)字邏輯芯片2</p><p>  2.1.2 采用單片機(jī)作為整個(gè)控制系統(tǒng)的核心2</p><p>  2.2 時(shí)鐘控制方案比較2</p

8、><p>  2.3 鍵盤(pán)顯示方案比較3</p><p>  第 3 章系統(tǒng)功能實(shí)現(xiàn)總體設(shè)計(jì)思路4</p><p>  3.1 系統(tǒng)器件介紹4</p><p>  3.1.1 AT89C51單片機(jī)的結(jié)構(gòu)4</p><p>  3.1.1.1 中央處理器(CPU)4</p><p>

9、;  3.1.1.2 內(nèi)部數(shù)據(jù)存儲(chǔ)器(內(nèi)部RAM)5</p><p>  3.1.1.3 內(nèi)部程序存儲(chǔ)器(內(nèi)部ROM)5</p><p>  3.1.1.4 定時(shí)器/計(jì)數(shù)器5</p><p>  3.1.1.5 并行I/O口 5</p><p>  3.1.1.6 串行口 5</p><p>  3

10、.1.1.7 時(shí)鐘電路5</p><p>  3.1.2 LCD1602液晶的介紹5</p><p>  3.1.2.1 LCD1602特征及應(yīng)用5</p><p>  3.1.2.2 LCD1602指令集5</p><p>  3.1.2.3 LCD1602管腳功能6</p><p>  3.2

11、 數(shù)字時(shí)鐘的總體設(shè)計(jì)6</p><p>  3.3 數(shù)字時(shí)鐘的功能6</p><p>  第 4 章基于單片機(jī)的數(shù)字電子鐘系統(tǒng)硬件設(shè)計(jì)8</p><p>  4.1 時(shí)鐘電路模塊8</p><p>  4.2 復(fù)位電路模塊9</p><p>  4.3 LCD1602顯示電路模塊10</p&

12、gt;<p>  4.4 按鍵電路模塊11</p><p>  4.5 鬧鈴電路模塊11</p><p>  4.6 系統(tǒng)硬件電路圖12</p><p>  第 5 章基于單片機(jī)的數(shù)字電子鐘系統(tǒng)軟件設(shè)計(jì)14</p><p>  5.1 系統(tǒng)軟件設(shè)計(jì)14</p><p>  5.2 主

13、程序設(shè)計(jì)14</p><p>  5.2.1 實(shí)現(xiàn)功能14</p><p>  5.2.2 功能流程圖15</p><p>  5.3 按鍵掃描程序設(shè)計(jì)16</p><p>  5.3.1 實(shí)現(xiàn)功能16</p><p>  5.3.2 按鍵掃描流程圖16</p><p> 

14、 5.3.3 按鍵掃描部分代碼17</p><p>  5.4 時(shí)間更新程序處理函數(shù)18</p><p>  5.4.1 實(shí)現(xiàn)功能18</p><p>  5.4.2 工作流程圖18</p><p>  5.4.3 時(shí)間更新程序部分代碼19</p><p>  5.5 秒表更新程序處理函數(shù)23&

15、lt;/p><p>  5.5.1 時(shí)間更新程序部分代碼23</p><p>  5.5.2 工作流程圖24</p><p>  5.5.3 函數(shù)部分代碼25</p><p>  5.6 顯示切換函數(shù)處理程序27</p><p>  5.6.1 實(shí)現(xiàn)功能27</p><p>  

16、5.6.2 工作流程圖27</p><p>  5.6.3 顯示切換函數(shù)部分代碼28</p><p><b>  結(jié) 論33</b></p><p><b>  致 謝34</b></p><p><b>  參考文獻(xiàn)35</b></p><p

17、><b>  附錄A36</b></p><p><b>  附錄B43</b></p><p><b>  緒 論</b></p><p>  電子時(shí)鐘研究意義及簡(jiǎn)介</p><p>  時(shí)鐘,是我們生活中不可缺少的,隨著時(shí)代的發(fā)展,人們對(duì)時(shí)鐘的要求越來(lái)越高,這就要

18、我們對(duì)時(shí)鐘的設(shè)計(jì)的要求也越來(lái)越來(lái)高。我們用過(guò)的機(jī)械時(shí)鐘,它成本高,內(nèi)部結(jié)構(gòu)復(fù)雜,功能少;而采用集成電路的時(shí)鐘,它電路較復(fù)雜,都不符合這個(gè)時(shí)代的設(shè)計(jì)理念。通過(guò)研究對(duì)比我們選擇設(shè)計(jì)一款基于單片機(jī)的簡(jiǎn)易電子時(shí)鐘,電子時(shí)鐘一般由震蕩器,分頻器,譯碼器,顯示器等部分組成,這些都是數(shù)字電路最基本的,應(yīng)用最廣的電路。它成本低,體積小,簡(jiǎn)單實(shí)用,功能強(qiáng)大。這款簡(jiǎn)易電子時(shí)鐘使用AT89C51單片機(jī)芯片控制電路,單片機(jī)控制電路簡(jiǎn)單且省去了很多復(fù)雜的線路,使

19、得電路簡(jiǎn)明易懂,使用鍵盤(pán)鍵上的按鍵來(lái)調(diào)整時(shí)鐘的年、月、日、時(shí)、分、秒和設(shè)置鬧鈴,用揚(yáng)聲器來(lái)進(jìn)行定時(shí)提醒,用LCD1602來(lái)進(jìn)行顯示,同時(shí)使用C語(yǔ)言程序來(lái)控制整個(gè)時(shí)鐘顯示,使得編程變得更容易</p><p><b>  數(shù)字電子時(shí)鐘的功能</b></p><p>  電子時(shí)鐘主要是利用電子技術(shù)將時(shí)鐘電子化,數(shù)字化,擁有時(shí)間精確、體積小、界面友好、可擴(kuò)展性能強(qiáng)等特點(diǎn),被廣

20、泛應(yīng)用于生活和工作當(dāng)中。本簡(jiǎn)易電子時(shí)鐘設(shè)計(jì)功能主要為:</p><p>  1.年月日時(shí)分秒顯示及校對(duì)功能,24小時(shí)制。</p><p><b>  2.具有鬧鈴功能。</b></p><p><b>  3.具有秒表功能。</b></p><p>  基于單片機(jī)的數(shù)字電子時(shí)鐘的設(shè)計(jì)方案選擇<

21、/p><p><b>  主控制器</b></p><p><b>  采用數(shù)字邏輯芯片</b></p><p>  本系統(tǒng)有功能設(shè)置、數(shù)據(jù)裝入、定時(shí)、顯示、音響控制多個(gè)功能模塊。各個(gè)狀態(tài)保持或轉(zhuǎn)移的條件依賴于鍵盤(pán)控制信號(hào)。由于鍵盤(pán)控制信號(hào)繁多,系統(tǒng)的邏輯狀態(tài)以及相互轉(zhuǎn)移更是復(fù)雜,用純粹的數(shù)字電路或小規(guī)模的可編程邏輯電路實(shí)現(xiàn)該

22、系統(tǒng)有一定的困難,需要用中大規(guī)模的可編程邏輯電路。這樣,系統(tǒng)的成本就會(huì)急劇上升〔相對(duì)于方案二〕。因此,本設(shè)計(jì)并未采用這種方案。</p><p>  采用單片機(jī)作為整個(gè)控制系統(tǒng)的核心</p><p>  由于單片機(jī)具有體積小、成本低、可靠性高、抗干擾能力強(qiáng)、應(yīng)用靈活、開(kāi)發(fā)效率高、易于被產(chǎn)品化等優(yōu)點(diǎn),其具有很強(qiáng)的面向控制的能力,自70年代以來(lái),在很多領(lǐng)域得到廣泛的應(yīng)用。單片機(jī)有8位,如51系列

23、;有16位的如98系列;還有32位的,如當(dāng)前市場(chǎng)比較熱門(mén)的ARM單片機(jī)。單片機(jī)比較容易實(shí)現(xiàn)系統(tǒng)的智能化控制,而且方便,經(jīng)濟(jì)。鑒于市場(chǎng)上常見(jiàn)的51系列8位單片機(jī)的售價(jià)比較低廉,技術(shù)成熟,對(duì)于我們的系統(tǒng)在控制上完全能夠勝任。我們的設(shè)計(jì)采用AT89C51型單片機(jī)。</p><p>  本系統(tǒng)的主控制器采用AT89C51單片機(jī)作為整個(gè)控制系統(tǒng)的核心</p><p><b>  時(shí)鐘控制方

24、案比較</b></p><p>  方案一 使用專用時(shí)鐘芯片。</p><p>  使用微控制器控制專用時(shí)鐘芯片實(shí)現(xiàn)計(jì)時(shí)控制,這種方案有著計(jì)時(shí)精度高、控制簡(jiǎn)單的優(yōu)點(diǎn),而且更易于實(shí)現(xiàn)日期/時(shí)間顯示、定時(shí)烹調(diào)等計(jì)時(shí)擴(kuò)展功能。</p><p>  方案二 采用小規(guī)模集成元件定時(shí)</p><p>  此方案主要使用計(jì)數(shù)器/分頻器。該方法價(jià)

25、格便宜,但是接線復(fù)雜,設(shè)計(jì)也比較困難,對(duì)時(shí)序要求比較高。同時(shí)該方案功能單一,也無(wú)法實(shí)現(xiàn)復(fù)雜功能,可擴(kuò)展性差。也不能實(shí)現(xiàn)一些人性化的界面設(shè)計(jì)</p><p>  方案三 利用MCU的內(nèi)部定時(shí)器軟件現(xiàn)實(shí)時(shí)鐘功能。</p><p>  鑒于本系統(tǒng)采用AT89C51單片機(jī)作為整個(gè)控制系統(tǒng)的核心,充分利用單片機(jī)內(nèi)部的時(shí)鐘電路,進(jìn)行定時(shí)控制,從而減少電路設(shè)計(jì)的復(fù)雜度,而且能夠減少整套系統(tǒng)的成本。另外,

26、單片機(jī)能夠?qū)崿F(xiàn)復(fù)雜功能,充分利用單片機(jī)擴(kuò)展靈活特性,通過(guò)設(shè)計(jì)軟件,能夠設(shè)計(jì)出友好的人機(jī)界面接口和性能。況且單片機(jī)價(jià)格也比較便宜,性價(jià)比很高。</p><p>  本系統(tǒng)時(shí)鐘控制部分我們采用了方案三,從而充分體現(xiàn)出高性價(jià)比。</p><p><b>  鍵盤(pán)顯示方案比較</b></p><p>  方案一 采用并行口擴(kuò)展芯片擴(kuò)展并行口的方法來(lái)設(shè)計(jì)

27、鍵盤(pán)顯示系統(tǒng)。</p><p>  采用鍵盤(pán)顯示專用控制器8279顯示時(shí)鐘、火力、倒計(jì)時(shí)等等功能,而用LED顯示各種工作狀態(tài)的指示信號(hào)。這種方法鍵盤(pán)控制簡(jiǎn)單,但8279只能顯示數(shù)字信息,顯示能力有限,不靈活。如果采用這種方法,為了表達(dá)更多的信息,就必需使用許多LED來(lái)引導(dǎo)用戶進(jìn)行操作。</p><p>  方案二 中文字符顯示和端口鍵盤(pán)掃描</p><p>  采用

28、LCD液晶字符顯示。字符顯示具有強(qiáng)大的信息表達(dá)能力,采用這種顯示方法只需少量的鍵盤(pán)加上軟件配合,就可以實(shí)現(xiàn)多種用戶功能控制和選擇,目前市場(chǎng)上LCD1602系列的液晶顯示模塊技術(shù)比較成熟,這是一種能夠顯示2行,每行16個(gè)字符的液晶顯示模塊。而少量的鍵盤(pán),使用軟件掃描方法將會(huì)比使用8279經(jīng)濟(jì)許多,而且控制起來(lái)也不為了實(shí)現(xiàn)更多的功能而又減少成本。我們采用了方案二作為本系統(tǒng)的鍵盤(pán)顯示。</p><p>  綜上所述,我

29、們的總體設(shè)計(jì)思想是硬件盡量簡(jiǎn)單,用軟件實(shí)現(xiàn)更多的功能,這樣就可以用比較低的成本來(lái)實(shí)現(xiàn)這個(gè)系統(tǒng) 。本系統(tǒng)采用AT89C51作為主控部分,LCD1602液晶作為顯示部分,鍵盤(pán)使用軟件掃描方法,使用一個(gè)蜂鳴器作為聲音提示部分</p><p>  系統(tǒng)功能實(shí)現(xiàn)總體設(shè)計(jì)思路</p><p><b>  系統(tǒng)器件介紹</b></p><p>  AT89C

30、51單片機(jī)的結(jié)構(gòu)</p><p>  AT89C51單片機(jī)是美國(guó)Atmel公司生產(chǎn)低電壓,高性能CMOS 8位單片機(jī),片內(nèi)含4k bytes的可反復(fù)擦寫(xiě)的只讀程序存儲(chǔ)器(EPROM)和128 bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用Atmel公司的高密度、非易失性存取技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)置通用8位中央處理器(CPU)和Flash 存儲(chǔ)單元,功能強(qiáng)大。AT89C51單片機(jī)可提供許多

31、高性價(jià)比的應(yīng)用場(chǎng)合,可靈活應(yīng)用于各種控制領(lǐng)域。</p><p>  圖3-1為AT89C51單片機(jī)的基本組成功能方塊圖。有圖可見(jiàn),在這一塊芯片上,集成了一臺(tái)微型計(jì)算機(jī)的主要組成部分,其中包括CPU、存儲(chǔ)器、可編程I/O口、定時(shí)器/計(jì)數(shù)器、串行口等,各部分通過(guò)內(nèi)部總線相連。下面介紹幾個(gè)主要部分。</p><p>  外時(shí)鐘源外部事件數(shù)</p><p>  外中斷

32、 控制 并行口 串行通信</p><p>  圖3-1 AT89C51 功能方塊圖</p><p>  中央處理器(CPU)</p><p>  中央處理器是單片機(jī)中最核心的部分,是單片機(jī)的大腦和心臟,主要完成運(yùn)算和控制功能。AT89C51的CPU是一個(gè)字長(zhǎng)為8位的中央處理單元

33、,即它對(duì)數(shù)據(jù)的處理是按字節(jié)為單位進(jìn)行的。</p><p>  內(nèi)部數(shù)據(jù)存儲(chǔ)器(內(nèi)部RAM)</p><p>  AT89C51 中共有256個(gè)RAM單元,但其中能作為寄存器供用戶使用的僅有前面128個(gè),后128個(gè)被專用寄存器占用。</p><p>  內(nèi)部程序存儲(chǔ)器(內(nèi)部ROM)</p><p>  AT89C51 共有4 KB掩膜ROM,用

34、于存放程序、原始數(shù)據(jù)等</p><p><b>  定時(shí)器/計(jì)數(shù)器</b></p><p>  AT89C51 共有2 個(gè)16 位的定時(shí)器/計(jì)數(shù)器,可以實(shí)現(xiàn)定時(shí)和計(jì)數(shù)功能。</p><p><b>  并行I/O口</b></p><p>  AT89C51 共有4 個(gè)8 位的I/O口(P0、P1、

35、P2、P3口),可以實(shí)現(xiàn)數(shù)據(jù)的并行輸入、輸出。</p><p><b>  串行口</b></p><p>  AT89C51有1 個(gè)全雙工的可編程串行口,以實(shí)現(xiàn)單片機(jī)和其他設(shè)備之間的串行數(shù)據(jù)傳送。</p><p><b>  時(shí)鐘電路</b></p><p>  AT89C51 單片機(jī)內(nèi)部有時(shí)鐘電

36、路,但是晶振和微調(diào)電容需要外接。時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列</p><p>  LCD1602液晶的介紹</p><p>  LCD1602特征及應(yīng)用</p><p>  微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧,常用在袖珍式儀表和低功耗應(yīng)用系統(tǒng)中</p><p>  LCD1602指令集</p><p>  16

37、02通過(guò)D0~D7的8位數(shù)據(jù)端傳輸數(shù)據(jù)和指令。</p><p>  顯示模式設(shè)置: (初始化)</p><p>  0011 0000 [0x38] 設(shè)置16×2顯示,5×7點(diǎn)陣,8位數(shù)據(jù)接口;</p><p>  顯示開(kāi)關(guān)及光標(biāo)設(shè)置: (初始化)</p><p>  0000 1DCB D顯示(1有效)、C光標(biāo)顯示(1有

38、效)、B光標(biāo)閃爍(1有效)</p><p>  0000 01NS N=1(讀或?qū)懸粋€(gè)字符后地址指針加1 &光標(biāo)加1),</p><p>  N=0(讀或?qū)懸粋€(gè)字符后地址指針減1 &光標(biāo)減1),</p><p>  S=1 且 N=1 (當(dāng)寫(xiě)入一個(gè)字符后,整屏顯示左移)</p><p>  s=0 當(dāng)寫(xiě)入一個(gè)字符后,整屏顯示不

39、移動(dòng)</p><p><b>  數(shù)據(jù)指針設(shè)置:</b></p><p>  數(shù)據(jù)首地址為80H,所以數(shù)據(jù)地址為80H+地址碼(0-27H,40-67H)</p><p><b>  其他設(shè)置:</b></p><p>  01H(顯示清屏,數(shù)據(jù)指針=0,所有顯示=0);02H(顯示回車,數(shù)據(jù)指針=

40、0)。</p><p>  LCD1602管腳功能</p><p>  1602采用標(biāo)準(zhǔn)的16腳接口,其中:</p><p>  第1腳:VSS為電源地</p><p>  第2腳:VDD接5V電源正極</p><p>  第3腳:V0為液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過(guò)高時(shí)會(huì)

41、 產(chǎn)生“鬼影”,使用時(shí)可以通過(guò)一個(gè)10K的電位器調(diào)整對(duì)比度)。</p><p>  第4腳:RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器、低電平0時(shí)選擇指令寄存器。</p><p>  第5腳:RW為讀寫(xiě)信號(hào)線,高電平(1)時(shí)進(jìn)行讀操作,低電平(0)時(shí)進(jìn)行寫(xiě)操作。</p><p>  第6腳:E(或EN)端為使能(enable)端。</p><p&

42、gt;  第7~14腳:D0~D7為8位雙向數(shù)據(jù)端。</p><p><b>  數(shù)字時(shí)鐘的總體設(shè)計(jì)</b></p><p>  此設(shè)計(jì)原理框圖如下圖3-2所示,此電路包括以下三個(gè)部分:?jiǎn)纹瑱C(jī),鍵盤(pán),鬧鈴電路。采用AT89C51芯片和LCD1602等來(lái)實(shí)現(xiàn)電子時(shí)鐘的功能。</p><p><b>  圖3-2總體設(shè)計(jì)圖</b&g

43、t;</p><p><b>  數(shù)字時(shí)鐘的功能</b></p><p>  電子時(shí)鐘主要是利用電子技術(shù)將時(shí)鐘電子化,數(shù)字化,擁有時(shí)間精確、體積小、界面友好、可擴(kuò)展性能強(qiáng)等特點(diǎn),被廣泛應(yīng)用于生活和工作當(dāng)中。本簡(jiǎn)易電子時(shí)鐘設(shè)計(jì)功能主要為:</p><p>  1.年月日時(shí)分秒顯示及校對(duì)功能,24小時(shí)制。</p><p>&

44、lt;b>  2.具有鬧鈴功能。</b></p><p><b>  3.具有秒表功能。</b></p><p>  基于單片機(jī)的數(shù)字電子鐘系統(tǒng)硬件設(shè)計(jì)</p><p>  該數(shù)字電子時(shí)鐘工作原理是用一片AT89C51單片機(jī)通過(guò)編程去控制LCD1602實(shí)現(xiàn)的。通過(guò)2個(gè)開(kāi)關(guān)控制來(lái)進(jìn)行時(shí)間的調(diào)節(jié)以及秒表功能,P2.0(key1)口

45、控制按鍵,當(dāng)系統(tǒng)處于正常時(shí)間顯示并且按下此鍵時(shí),可以進(jìn)入秒表功能和時(shí)間功能的切換,此鍵還可以作為時(shí)間和日期以及鬧鈴的調(diào)整位選中鍵,當(dāng)系統(tǒng)處于時(shí)間顯示模式時(shí),按此鍵可以選中相應(yīng)的需要調(diào)整的位。當(dāng)系統(tǒng)處于時(shí)間顯示模式時(shí),P2.1(key2)口控制按鍵,按此鍵對(duì)相應(yīng)的選中位進(jìn)行加,當(dāng)系統(tǒng)處于秒表工作模式時(shí)按此鍵可以控制秒表計(jì)時(shí)的啟動(dòng)和暫停。</p><p><b>  其工作流程:</b><

46、/p><p>  1.年月日時(shí)分秒顯示。通電后LCD自動(dòng)顯示C語(yǔ)言程序設(shè)置好的默認(rèn)時(shí)間</p><p>  2.鬧鐘顯示和設(shè)定。通電后,A的右邊顯示的是默認(rèn)的鬧鐘時(shí)間,通過(guò)key1和key2可以設(shè)置鬧鈴時(shí)間。</p><p>  3.秒表顯示以及啟動(dòng)和暫停以及清零。LCD處于正常顯示時(shí)間模式下時(shí)按下key1釋放后可以進(jìn)入秒表模式,前3次按下key2的功能依次為啟動(dòng)停止清

47、零,每按3次key2為一個(gè)輪回。</p><p><b>  時(shí)鐘電路模塊</b></p><p>  下圖所示為時(shí)鐘電路原理圖,在AT89C51芯片內(nèi)部有一個(gè)高增益反相放大器,其輸出端為引腳XTAL2,輸入為芯片引腳XTAL1。而在芯片外部,XTAL1和XTAL2之間跨接晶體振蕩器和微調(diào)電容,構(gòu)成一個(gè)穩(wěn)定的自激振蕩電路,電路產(chǎn)生的振蕩脈沖經(jīng)過(guò)觸發(fā)器進(jìn)行十二分頻之后,

48、便成為單片機(jī)的時(shí)鐘信號(hào)。</p><p>  圖4-1時(shí)鐘電路模塊</p><p><b>  復(fù)位電路模塊</b></p><p>  下圖所示為復(fù)位電路原理圖,在單片機(jī)的實(shí)際應(yīng)用系統(tǒng)中,除單片機(jī)本身需復(fù)位以外,外部擴(kuò)展的I/O接口電路等也需要一個(gè)復(fù)位,因此需要一個(gè)系統(tǒng)的同步復(fù)位信號(hào),即單片機(jī)復(fù)位后,CPU開(kāi)始工作,外部的電路一定要復(fù)位好,以

49、保證CPU有效地對(duì)外部電路進(jìn)行初始化編程。單片機(jī)復(fù)位的條件是:必須使RST/VPD 或RST引腳加上持續(xù)兩個(gè)機(jī)器周期(即24個(gè)振蕩周期)的高電平。電路為上電復(fù)位電路,它是利用電容充電來(lái)實(shí)現(xiàn)的。在接電瞬間,RST端的電位與VCC相同,隨著充電電流的減少,RST的電位逐漸降低。只要保證RST為高電平時(shí)間大于兩個(gè)機(jī)器周期,就能正常復(fù)位。</p><p>  圖4-2復(fù)位電路模塊</p><p>

50、  LCD1602顯示電路模塊</p><p>  下圖所示為L(zhǎng)CD1602顯示模塊電路原理圖</p><p>  圖4-3顯示電路模塊</p><p><b>  按鍵電路模塊</b></p><p>  下圖所示為獨(dú)立按鍵模塊電路原理圖,根據(jù)此電子時(shí)鐘功能要求,需要設(shè)置以下兩個(gè)功能鍵:工作模式鍵(key1),模式輔助

51、鍵(key2)。按照鍵盤(pán)與CPU的連接方式可分為獨(dú)立鍵盤(pán)和矩陣鍵盤(pán)。獨(dú)立式鍵盤(pán)是各個(gè)按鍵相互獨(dú)立,每個(gè)按鍵占用一個(gè)I/O口,外加上拉電阻,每個(gè)I/O口上的按鍵不會(huì)影響到其他I/O口的按鍵工作狀態(tài)。獨(dú)立式鍵盤(pán)電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,所以本設(shè)計(jì)采用獨(dú)立式鍵盤(pán)。</p><p>  圖4-4按鍵電路模塊</p><p><b>  鬧鈴電路模塊</b></p>

52、;<p>  下圖所示為鬧鈴模塊電路原理圖,鬧鈴模式時(shí),設(shè)定好鬧鈴的時(shí)間,鬧鈴的時(shí)間有時(shí)和分,當(dāng)設(shè)定好的鬧鈴時(shí)間與系統(tǒng)的當(dāng)前時(shí)間的時(shí)和分相等時(shí),系統(tǒng)給P2.2端口送低交替的高低電平,蜂鳴器發(fā)出一定頻率報(bào)警聲,一分鐘后報(bào)警聲停止,如果這一分鐘內(nèi)有按鍵按下則報(bào)警聲也停止。</p><p>  圖4-5鬧鈴電路模塊</p><p><b>  系統(tǒng)硬件電路圖</b&

53、gt;</p><p>  下圖所示系統(tǒng)電路原理圖, 該數(shù)字電子時(shí)鐘工作原理是用一片AT89C51單片機(jī)通過(guò)編程去控制LCD1602實(shí)現(xiàn)的。通過(guò)2個(gè)開(kāi)關(guān)控制來(lái)進(jìn)行時(shí)間的調(diào)節(jié)以及秒表功能,P2.0(key1)口控制按鍵,當(dāng)系統(tǒng)處于正常時(shí)間顯示并且按下此鍵時(shí),可以進(jìn)入秒表功能和時(shí)間功能的切換,此鍵還可以作為時(shí)間和日期以及鬧鈴的調(diào)整位選中鍵,當(dāng)系統(tǒng)處于時(shí)間顯示模式時(shí),按此鍵可以選中相應(yīng)的需要調(diào)整的位。當(dāng)系統(tǒng)處于時(shí)間顯示

54、模式時(shí),P2.1(key2)口控制按鍵,按此鍵對(duì)相應(yīng)的選中位進(jìn)行加,當(dāng)系統(tǒng)處于秒表工作模式時(shí)按此鍵可以控制秒表計(jì)時(shí)的啟動(dòng)和暫停。</p><p><b>  其工作流程:</b></p><p>  1.年月日時(shí)分秒顯示。通電后LCD自動(dòng)顯示C語(yǔ)言程序設(shè)置好的默認(rèn)時(shí)間</p><p>  2.鬧鐘顯示和設(shè)定。通電后,A的右邊顯示的是默認(rèn)的鬧鐘時(shí)

55、間,通過(guò)key1和key2可以設(shè)置鬧鈴時(shí)間。</p><p>  3.秒表顯示以及啟動(dòng)和暫停以及清零。LCD處于正常顯示時(shí)間模式下時(shí)按下key1釋放后可以進(jìn)入秒表模式,前3次按下key2的功能依次為啟動(dòng)停止清零,每按3次key2為一個(gè)輪回。</p><p><b>  圖4-6硬件接線圖</b></p><p>  基于單片機(jī)的數(shù)字電子鐘系統(tǒng)軟

56、件設(shè)計(jì)</p><p><b>  系統(tǒng)軟件設(shè)計(jì)</b></p><p>  系統(tǒng)軟件包含四個(gè)部分:主程序,定時(shí)器掃描程序,按鍵掃描程序,按鍵處理程</p><p>  序;通過(guò)這四個(gè)部分可以實(shí)現(xiàn)數(shù)字電子鐘的功能設(shè)計(jì)。</p><p><b>  主程序設(shè)計(jì)</b></p><p

57、>  程序設(shè)計(jì)主要是通過(guò)單片機(jī)內(nèi)部TIMER0和TIMER1產(chǎn)生系統(tǒng)時(shí)鐘信號(hào),經(jīng)過(guò)單片機(jī)的運(yùn)算分別得到時(shí)間的年月日時(shí)分秒和秒表的時(shí)分秒毫秒,單片機(jī)在主程序中循環(huán)掃描按鍵端口,根據(jù)返回的鍵值分別將這些數(shù)據(jù)傳給LCD1602對(duì)應(yīng)顯示出來(lái)。</p><p><b>  實(shí)現(xiàn)功能</b></p><p>  程序?qū)崿F(xiàn)的功能是:正常顯示年月日和時(shí)分秒以及鬧鐘的時(shí)分。若單片

58、機(jī)檢測(cè)到key1第一次按下并釋放則LCD切換到顯示秒表模式00:00:00:00,第二次按下key2并釋放則返回到時(shí)鐘顯示模式。在時(shí)鐘正常顯示模式下若前5按下key2按鍵并釋放則一次選中鬧鐘的時(shí)分和時(shí)鐘的分時(shí)年月日,選中位會(huì)出現(xiàn)光標(biāo)閃爍并且時(shí)鐘不自動(dòng)走動(dòng),第6次按下key2并釋放之后則正常顯示時(shí)鐘,6次為一個(gè)循環(huán)。在光標(biāo)閃爍的時(shí)候若按下key1并且釋放則可以對(duì)相應(yīng)位進(jìn)行校正。若在秒表顯示模式下第一次按下key2并釋放則啟動(dòng)秒表計(jì)時(shí),第二

59、次按下key2釋放后則暫停秒表,第三次按下key2釋放后則秒表清零,三次為一個(gè)循環(huán)。</p><p><b>  功能流程圖</b></p><p>  通過(guò)以上分析可得圖5-1系統(tǒng)工作流程圖:</p><p><b>  圖5-1</b></p><p><b>  按鍵掃描程序設(shè)計(jì)&l

60、t;/b></p><p><b>  實(shí)現(xiàn)功能</b></p><p>  當(dāng)系統(tǒng)檢測(cè)到有按鍵按下時(shí)返回相應(yīng)的非零的鍵值,否則返回零。</p><p><b>  按鍵掃描流程圖</b></p><p>  圖5-2按鍵掃描流程圖</p><p><b>

61、  按鍵掃描部分代碼</b></p><p>  unsigned char key scan(void)</p><p><b>  {</b></p><p>  static unsigned char value;//鍵值</p><p>  static unsigned char do_k

62、ey;//執(zhí)行相應(yīng)命令標(biāo)識(shí)</p><p>  static unsigned char key_scan_step;//鍵盤(pán)掃描步驟</p><p>  if(key_scan_step==0)</p><p><b>  {</b></p><p>  key_value = 0;</p>&

63、lt;p>  if(do_key==0)</p><p><b>  {</b></p><p>  if(KEY & 0x03 != 0x03)</p><p><b>  {</b></p><p><b>  t1=0;</b></p>&

64、lt;p>  do_key=1;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if((t1>=key_shake_time)&&((KEY & 0x03) != 0x03))</p><p&

65、gt;<b>  {</b></p><p>  value = KEY & 0x03;</p><p>  do_key = 0;</p><p>  key_scan_step = 1;</p><p><b>  }</b></p><p><b>

66、;  }</b></p><p>  if((key_scan_step==1)&&((KEY & 0x03) == 0x03))</p><p><b>  {</b></p><p>  key_scan_step = 0;</p><p>  switch(value)</

67、p><p><b>  {</b></p><p>  case 0x02 :value = 1;break;</p><p>  case 0x01 :value = 2;break;</p><p>  case 0x03 :value = 0;break;</p><p>  defau

68、lt :value = 0;break;</p><p><b>  }</b></p><p>  return(value);</p><p><b>  }</b></p><p><b>  else</b></p><p>  re

69、turn(0);</p><p>  時(shí)間更新程序處理函數(shù)</p><p><b>  實(shí)現(xiàn)功能</b></p><p>  通過(guò)對(duì)t0值的判斷來(lái)得到秒分時(shí)日月年的計(jì)算。</p><p><b>  工作流程圖</b></p><p>  圖5-3時(shí)間更新程序流程圖

70、</p><p>  時(shí)間更新程序部分代碼</p><p>  void update_time(void)</p><p><b>  {</b></p><p>  if(t0>=20)</p><p><b>  {</b></p><p>

71、;<b>  t0=0;</b></p><p>  time.second++;</p><p>  if(time.second>59)</p><p><b>  {</b></p><p>  time.second=0;</p><p>  time.minu

72、te++;</p><p>  if(time.minute>59)</p><p><b>  {</b></p><p>  time.minute=0;</p><p>  time.hour++;</p><p>  if(time.hour>23)</p>&l

73、t;p><b>  {</b></p><p>  time.hour=0;</p><p>  time.day++;</p><p>  switch(time.month)</p><p><b>  {</b></p><p><b>  case 1

74、:</b></p><p><b>  case 3:</b></p><p><b>  case 5:</b></p><p><b>  case 7:</b></p><p><b>  case 8:</b></p>&

75、lt;p><b>  case 10:</b></p><p>  case 12:if(time.day>31)</p><p><b>  {</b></p><p>  time.day=1;</p><p>  time.month++;</p><p>

76、  if(time.month>12)</p><p><b>  {</b></p><p>  time.month=1;</p><p>  time.year++;</p><p>  if(time.year > 2060)</p><p><b>  {</

77、b></p><p>  time.year = 2012;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }break;</b></p><p><b>  case 4:&

78、lt;/b></p><p><b>  case 6:</b></p><p><b>  case 9:</b></p><p>  case 11:if(time.day>30)</p><p><b>  {</b></p><p>

79、  time.day=1;</p><p>  time.month++;</p><p>  if(time.month>12)</p><p><b>  {</b></p><p>  time.month=1;</p><p>  time.year++;</p>&l

80、t;p>  if(time.year > 2060)</p><p><b>  {</b></p><p>  time.year = 2012;</p><p><b>  }</b></p><p>  }</p><p><b>

81、;  }break;</b></p><p>  case2:if(((time.year/4==0)&&(time.year/100!=0)||(time.year/400==0))&&(time.day>29))</p><p><b>  {</b></p><p>  time.day=

82、1;</p><p>  time.month++;</p><p>  if(time.month>12)</p><p><b>  {</b></p><p>  time.month=1;</p><p>  time.year++;</p><p>  if

83、(time.year > MAX_YEAR)</p><p><b>  {</b></p><p>  time.year = MIN_YEAR;</p><p><b>  }</b></p><p><b>  }</b></p><p>&

84、lt;b>  }</b></p><p>  else if(time.day>28)</p><p><b>  {</b></p><p>  time.day=1;</p><p>  time.month++;</p><p>  if(time.month>

85、12)</p><p><b>  {</b></p><p>  time.month=1;</p><p>  time.year++;</p><p>  if(time.year > 2060)</p><p><b>  {</b></p>&l

86、t;p>  time.year = 2012;</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  }break;</b></p><p>  default:break;</p><

87、;p><b>  }</b></p><p>  if(model_flag == 0)</p><p><b>  {</b></p><p>  write_lcd(0x8C,WCMD);</p><p>  write_lcd(time.day%10+'0',WDATA)

88、;</p><p>  write_lcd(0x8B,WCMD);</p><p>  write_lcd(time.day/10+'0',WDATA);</p><p>  write_lcd(0x89,WCMD);</p><p>  write_lcd(time.month%10+'0',WDATA);&

89、lt;/p><p>  write_lcd(0x88,WCMD);</p><p>  write_lcd(time.month/10+'0',WDATA);</p><p>  write_lcd(0x83,WCMD);</p><p>  write_lcd((time.year/1000)+'0',WDAT

90、A);</p><p>  write_lcd(0x84,WCMD);</p><p>  write_lcd((time.year%1000/100)+'0',WDATA);</p><p>  write_lcd(0x85,WCMD);</p><p>  write_lcd((time.year%1000%100/10)

91、+'0',WDATA);</p><p>  write_lcd(0x86,WCMD);</p><p>  write_lcd(time.year%10+'0',WDATA);</p><p><b>  }</b></p><p><b>  }</b>

92、</p><p>  if(model_flag == 0)</p><p><b>  {</b></p><p>  write_lcd(0xC1,WCMD);</p><p>  write_lcd(time.hour%10+'0',WDATA);</p><p>  wri

93、te_lcd(0xC0,WCMD);</p><p>  write_lcd(time.hour/10+'0',WDATA);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(model_flag == 0)</

94、p><p><b>  {</b></p><p>  write_lcd(0xC4,WCMD);</p><p>  write_lcd(time.minute%10+'0',WDATA);</p><p>  write_lcd(0xC3,WCMD);</p><p>  writ

95、e_lcd(time.minute/10+'0',WDATA);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(model_flag == 0)</p><p><b>  {</b></p

96、><p>  write_lcd(0xC7,WCMD);</p><p>  write_lcd(time.second%10+'0',WDATA);</p><p>  write_lcd(0xC6,WCMD);</p><p>  write_lcd(time.second/10+'0',WDATA);&

97、lt;/p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  秒表更新程序處理函數(shù)</p><p>  時(shí)間更新程序部分代碼</p><p>  通過(guò)對(duì)

98、t1值的判斷來(lái)得到秒表的毫秒、秒、分、時(shí)的計(jì)算</p><p><b>  工作流程圖</b></p><p>  圖5-4秒表更新程序流程圖</p><p><b>  函數(shù)部分代碼</b></p><p>  void update_stop_watch(void)</p><

99、;p><b>  {</b></p><p>  if(sw_t1>=1)</p><p><b>  {</b></p><p><b>  sw_t1=0;</b></p><p>  time.sw_msecond++;</p><p>

100、;  if(time.sw_msecond>99)</p><p><b>  {</b></p><p>  time.sw_msecond=0;</p><p>  time.sw_second++;</p><p>  if(time.sw_second>59)</p><p>

101、<b>  {</b></p><p>  time.sw_second=0;</p><p>  time.sw_minute++;</p><p>  if(time.sw_minute>59)</p><p><b>  {</b></p><p>  time.

102、sw_minute=0;</p><p>  time.sw_hour++;</p><p>  if(time.sw_hour>23)</p><p><b>  {</b></p><p>  time.sw_hour=0;</p><p><b>  }</b&g

103、t;</p><p>  if(model_flag == 1)</p><p><b>  {</b></p><p>  write_lcd(0xC3,WCMD);</p><p>  write_lcd(time.sw_hour%10+'0',WDATA);</p><p>

104、  write_lcd(0xC2,WCMD);</p><p>  write_lcd(time.sw_hour/10+'0',WDATA);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(model_flag == 1)&

105、lt;/p><p><b>  {</b></p><p>  write_lcd(0xC6,WCMD);</p><p>  write_lcd(time.sw_minute%10+'0',WDATA);</p><p>  write_lcd(0xC5,WCMD);</p><p>

106、;  write_lcd(time.sw_minute/10+'0',WDATA);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(model_flag == 1)</p><p><b>  {</

107、b></p><p>  write_lcd(0xC9,WCMD);</p><p>  write_lcd(time.sw_second%10+'0',WDATA);</p><p>  write_lcd(0xC8,WCMD);</p><p>  write_lcd(time.sw_second/10+'0

108、',WDATA);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(model_flag == 1)</p><p><b>  {</b></p><p>  write_lcd(0x

109、CC,WCMD);</p><p>  write_lcd(time.sw_msecond%10+'0',WDATA);</p><p>  write_lcd(0xCB,WCMD);</p><p>  write_lcd(time.sw_msecond/10+'0',WDATA);</p><p>&l

110、t;b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  顯示切換函數(shù)處理程序</p><p><b>  實(shí)現(xiàn)功能</b></p><p>  通過(guò)對(duì)模式標(biāo)志位mode

111、l_flag值的判斷來(lái)決定顯示器的顯示模式。</p><p><b>  工作流程圖</b></p><p>  圖5-5切換程序流程圖</p><p>  顯示切換函數(shù)部分代碼</p><p>  void shift_display(void)</p><p><b>  {<

112、/b></p><p>  if(model_flag == 0 && time_change_flag == 0 && shift_flag ==0)</p><p><b>  {</b></p><p>  shift_flag = 1;</p><p><b> 

113、 do</b></p><p><b>  {</b></p><p>  write_lcd(0x01,WCMD);//清屏</p><p>  write_lcd(0x8B,WCMD);</p><p>  write_lcd(time.day/10+'0',WDATA);</p&

114、gt;<p>  write_lcd(0x8B,WCMD);</p><p>  write_lcd(time.day/10+'0',WDATA);</p><p>  write_lcd(0x8C,WCMD);</p><p>  write_lcd(time.day%10+'0',WDATA);</p>

115、<p>  write_lcd(0x8A,WCMD);</p><p>  write_lcd('-',WDATA);</p><p>  write_lcd(0x88,WCMD);</p><p>  write_lcd(time.month/10+'0',WDATA);</p><p>  wr

116、ite_lcd(0x89,WCMD);</p><p>  write_lcd(time.month%10+'0',WDATA);</p><p>  write_lcd(0x87,WCMD);</p><p>  write_lcd('-',WDATA);</p><p>  write_lcd(0x83,W

117、CMD);</p><p>  write_lcd((time.year)/1000+'0',WDATA);</p><p>  write_lcd(0x84,WCMD);</p><p>  write_lcd(time.year%1000/100+'0',WDATA);</p><p>  write_l

118、cd(0x85,WCMD);</p><p>  write_lcd((time.year)%1000%100/10+'0',WDATA);</p><p>  write_lcd(0x86,WCMD);</p><p>  write_lcd((time.year)%10+'0',WDATA);</p><p&g

119、t;  write_lcd(0xCF,WCMD);</p><p>  write_lcd(time.alarm_minute%10+'0',WDATA);</p><p>  write_lcd(0xCE,WCMD);</p><p>  write_lcd(time.alarm_minute/10+'0',WDATA);</

120、p><p>  write_lcd(0xCD,WCMD);</p><p>  write_lcd(':',WDATA);</p><p>  write_lcd(0xCC,WCMD);</p><p>  write_lcd(time.alarm_hour%10+'0',WDATA);</p>&l

121、t;p>  write_lcd(0xCB,WCMD);</p><p>  write_lcd(time.alarm_hour/10+'0',WDATA);</p><p>  write_lcd(0xC9,WCMD);</p><p>  write_lcd('A',WDATA);</p><p>  

122、write_lcd(0xC7,WCMD);</p><p>  write_lcd(time.second%10+'0',WDATA);</p><p>  write_lcd(0xC6,WCMD);</p><p>  write_lcd(time.second/10+'0',WDATA);</p><p>

123、  write_lcd(0xC5,WCMD);</p><p>  write_lcd(':',WDATA);</p><p>  write_lcd(0xC4,WCMD);</p><p>  write_lcd(time.minute%10+'0',WDATA);</p><p>  write_lcd(0

124、xC3,WCMD);</p><p>  write_lcd(time.minute/10+'0',WDATA);</p><p>  write_lcd(0xC2,WCMD);</p><p>  write_lcd(':',WDATA);</p><p>  write_lcd(0xC1,WCMD);<

125、;/p><p>  write_lcd(time.hour%10+'0',WDATA);</p><p>  write_lcd(0xC0,WCMD);</p><p>  write_lcd(time.hour/10+'0',WDATA);</p><p>  }while(0);</p><

126、p><b>  }</b></p><p>  else if(model_flag == 1&& sw_stop_flag == 2 && shift_flag == 1)</p><p><b>  {</b></p><p>  shift_flag =0;</p>

127、<p>  sw_t1 = 0;</p><p>  time.sw_msecond = 0;</p><p>  time.sw_second = 0;</p><p>  time.sw_minute = 0;</p><p>  time.sw_hour = 0;</p><p><b>

128、  do</b></p><p><b>  {</b></p><p>  write_lcd(0x01,WCMD);//清屏</p><p>  write_lcd(0x8C,WCMD);</p><p>  write_lcd('h',WDATA);</p><p&

129、gt;  write_lcd(0x8C,WCMD);</p><p>  write_lcd('h',WDATA);</p><p>  write_lcd(0x8B,WCMD);</p><p>  write_lcd('c',WDATA);</p><p>  write_lcd(0x8A,WCMD);&l

130、t;/p><p>  write_lcd('t',WDATA);</p><p>  write_lcd(0x89,WCMD);</p><p>  write_lcd('a',WDATA);</p><p>  write_lcd(0x88,WCMD);</p><p>  write_l

131、cd('W',WDATA);</p><p>  write_lcd(0x86,WCMD);</p><p>  write_lcd('p',WDATA);</p><p>  write_lcd(0x85,WCMD);</p><p>  write_lcd('o',WDATA);</

132、p><p>  write_lcd(0x84,WCMD);</p><p>  write_lcd('t',WDATA);</p><p>  write_lcd(0x83,WCMD);</p><p>  write_lcd('S',WDATA);</p><p>  write_lcd(

133、0xCB,WCMD);</p><p>  write_lcd(time.sw_msecond/10+'0',WDATA);</p><p>  write_lcd(0xCB,WCMD);</p><p>  write_lcd(time.sw_msecond/10+'0',WDATA);</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)論