單片機(jī)電子時(shí)鐘課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩36頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  單片機(jī)電子時(shí)鐘</b></p><p><b>  摘 要</b></p><p>  單片機(jī) 即單片微型計(jì)算機(jī)。(Single-Chip Microcomputer ),是 集 CPU ,RAM ,ROM ,定時(shí),計(jì)數(shù)和多種接口于一體的微控制器。他體積小,成本低,功能強(qiáng),廣泛應(yīng)用于工業(yè)自動(dòng)化上和智能產(chǎn)品。&l

2、t;/p><p>  我們課程設(shè)計(jì)小組設(shè)想:可不可以利用單片機(jī)功能集成化高,價(jià)格又便宜的特點(diǎn)設(shè)計(jì)一款結(jié)構(gòu)簡(jiǎn)單的單片機(jī)電子時(shí)鐘呢? </p><p>  基于這種情況,我們課程設(shè)計(jì)小組成員多方查閱資料,反復(fù)論證設(shè)計(jì)出了這款既簡(jiǎn)單實(shí)用的單片機(jī)電子時(shí)鐘。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī) 、 時(shí)鐘 、 計(jì)時(shí)</p><p><b>  目

3、 錄</b></p><p><b>  摘要1</b></p><p>  第一章 系統(tǒng)設(shè)計(jì)要求2</p><p>  1.1 基本功能2</p><p>  1.2 擴(kuò)展功能2</p><p>  第二章 硬件總體設(shè)計(jì)方案3</p><p> 

4、 2.1系統(tǒng)功能實(shí)現(xiàn)總體設(shè)計(jì)思路3</p><p>  2.2各部分功能實(shí)現(xiàn)4</p><p>  2.3系統(tǒng)工作原理5</p><p>  2.4時(shí)鐘各功能分析及圖解6</p><p>  2.4.1電路各功能圖解分析6</p><p>  2.4.2電路功能使用說明10</p><p

5、>  第三章 控制電路的C語言源程序16</p><p>  第四章 課程設(shè)計(jì)結(jié)果分析23</p><p><b>  第五章 總結(jié)24</b></p><p><b>  引 言</b></p><p>  時(shí)鐘,自從它發(fā)明的那天起,就成為人類的朋友,但隨著時(shí)間的推移,科學(xué)技

6、術(shù)的不斷發(fā)展,人們對(duì)時(shí)間計(jì)量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓時(shí)鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè)計(jì)出新型時(shí)鐘。</p><p>  現(xiàn)今,高精度的計(jì)時(shí)工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘,石英表,石英鐘都采用了石英技術(shù),因此走時(shí)精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)校,數(shù)字式電子鐘用集成電路計(jì)時(shí)時(shí),譯碼代替機(jī)械式傳動(dòng),用LED顯示器代替顯示器代替指針顯示進(jìn)而顯示

7、時(shí)間,減小了計(jì)時(shí)誤差,這種表具有時(shí),分,秒顯示時(shí)間的功能,還可以進(jìn)行時(shí)和分的校對(duì),片選的靈活性好。</p><p>  時(shí)鐘電路在計(jì)算機(jī)系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個(gè)單片機(jī)應(yīng)用系統(tǒng)中,時(shí)鐘有兩方面的含義:一是指為保障系統(tǒng)正常工作的基準(zhǔn)振蕩定時(shí)信號(hào),主要由晶振和外圍電路組成,晶振頻率的大小決定了單片機(jī)系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準(zhǔn)定時(shí)時(shí)鐘,即定時(shí)時(shí)間,它通常有兩種實(shí)現(xiàn)方法:一是用軟件實(shí)

8、現(xiàn),即用單片機(jī)內(nèi)部的可編程定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn),但誤差很大,主要用在對(duì)時(shí)間精度要求不高的場(chǎng)合;二是用專門的時(shí)鐘芯片實(shí)現(xiàn),在對(duì)時(shí)間精度要求很高的情況下,通常采用這種方法,典型的時(shí)鐘芯片有:DS1302,DS12887,X1203等都可以滿足高精度的要求。</p><p>  本文主要介紹用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器來實(shí)現(xiàn)電子時(shí)鐘的方法,本設(shè)計(jì)由單片機(jī)AT89S51芯片和LED數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個(gè)單片

9、機(jī)電子時(shí)鐘。</p><p>  第一章 系統(tǒng)設(shè)計(jì)要求</p><p><b>  1.1 基本功能</b></p><p> ?。?)能夠顯示時(shí)分秒</p><p> ?。?)能夠調(diào)整時(shí)分秒</p><p><b>  1.2 擴(kuò)展功能</b></p><

10、;p> ?。?)能夠任意設(shè)置定時(shí)時(shí)間</p><p> ?。?)定時(shí)時(shí)間到鬧鈴能夠報(bào)警</p><p>  (3)實(shí)現(xiàn)了秒表功能</p><p>  第二章 硬件總體設(shè)計(jì)方案</p><p>  本次設(shè)計(jì)時(shí)鐘電路,使用了AT89C51單片機(jī)芯片控制電路,單片機(jī)控制電路簡(jiǎn)單且省去了很多復(fù)雜的線路,使得電路簡(jiǎn)明易懂,使用鍵盤鍵上的按鍵來調(diào)整

11、時(shí)鐘的時(shí)、分、秒,用一揚(yáng)聲器來進(jìn)行定時(shí)提醒,同時(shí)使用C語言程序來控制整個(gè)時(shí)鐘顯示,使得編程變得更容易,這樣通過四個(gè)模塊:鍵盤、芯片、揚(yáng)聲器、顯示屏即可滿足設(shè)計(jì)要求。</p><p>  2.1系統(tǒng)功能實(shí)現(xiàn)總體設(shè)計(jì)思路</p><p>  此設(shè)計(jì)原理框圖如圖2-1所示,此電路包括以下四個(gè)部分:?jiǎn)纹瑱C(jī),鍵盤,鬧鈴電路及顯示電路。</p><p>  圖2-1 設(shè)計(jì)原理

12、框圖</p><p>  經(jīng)多方論證硬件我們小組采用AT89C51單片機(jī)和7SED八位共陽極數(shù)碼管等來實(shí)現(xiàn)單片機(jī)電子時(shí)鐘的功能。</p><p><b>  AT89C51簡(jiǎn)介</b></p><p>  AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read On

13、ly Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn)版本。AT89C單片

14、機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。外形及引腳排列如圖所示 </p><p><b>  主要特性:</b></p><p>  ·與MCS-51 兼容 </p><p>  ·4K字節(jié)可編程FLASH存儲(chǔ)器 </p><p>  ·壽命:1000寫/擦循環(huán) </p&

15、gt;<p>  ·數(shù)據(jù)保留時(shí)間:10年 </p><p>  ·全靜態(tài)工作:0Hz-24MHz </p><p>  ·三級(jí)程序存儲(chǔ)器鎖定 </p><p>  ·128×8位內(nèi)部RAM </p><p>  ·32可編程I/O線 </p><p&

16、gt;  ·兩個(gè)16位定時(shí)器/計(jì)數(shù)器 </p><p><b>  ·5個(gè)中斷源 </b></p><p><b>  ·可編程串行通道 </b></p><p>  ·低功耗的閑置和掉電模式 </p><p>  ·片內(nèi)振蕩器和時(shí)鐘電路 </

17、p><p><b>  管腳說明:</b></p><p>  VCC:供電電壓。 </p><p><b>  GND:接地。 </b></p><p>  P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P0口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存

18、儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。 </p><p>  P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi)部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八

19、位地址接收。 </p><p>  P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)

20、存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 </p><p>  P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。 </p><p>  P3口也可作為

21、AT89C51的一些特殊功能口,如下表所示: </p><p><b>  口管腳 備選功能 </b></p><p>  P3.0 RXD(串行輸入口) </p><p>  P3.1 TXD(串行輸出口) </p><p>  P3.2 /INT0(外部中斷0) </p><p>  P3.3

22、 /INT1(外部中斷1) </p><p>  P3.4 T0(記時(shí)器0外部輸入) </p><p>  P3.5 T1(記時(shí)器1外部輸入) </p><p>  P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) </p><p>  P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) </p><p>  P3口同時(shí)為閃爍編程和編程

23、校驗(yàn)接收一些控制信號(hào)。 </p><p>  RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。 </p><p>  ALE/PROG:當(dāng)訪問外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)

24、目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過一個(gè)ALE脈沖。如想禁止ALE的輸出可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令是ALE才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無效。 </p><p>  /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/

25、PSEN信號(hào)將不出現(xiàn)。 </p><p>  /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 </p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路

26、的輸入。 </p><p>  XTAL2:來自反向振蕩器的輸出。 </p><p><b>  振蕩器特性: </b></p><p>  XTAL1和XTAL2分別為反向放大器的輸入和輸出。該反向放大器可以配置為片內(nèi)振蕩器。石晶振蕩和陶瓷振蕩均可采用。如采用外部時(shí)鐘源驅(qū)動(dòng)器件,XTAL2應(yīng)不接。有余輸入至內(nèi)部時(shí)鐘信號(hào)要通過一個(gè)二分頻觸發(fā)器,

27、因此對(duì)外部時(shí)鐘信號(hào)的脈寬無任何要求,但必須保證脈沖的高低電平要求的寬度。 </p><p><b>  芯片擦除:</b></p><p>  整個(gè)PEROM陣列和三個(gè)鎖定位的電擦除可通過正確的控制信號(hào)組合,并保持ALE管腳處于低電平10ms 來完成。在芯片擦操作中,代碼陣列全被寫“1”且在任何非空存儲(chǔ)字節(jié)被重復(fù)編程以前,該操作必須被執(zhí)行。 </p>&

28、lt;p>  此外,AT89C51設(shè)有穩(wěn)態(tài)邏輯,可以在低到零頻率的條件下靜態(tài)邏輯,支持兩種軟件可選的掉電模式。在閑置模式下,CPU停止工作。但RAM,定時(shí)器,計(jì)數(shù)器,串口和中斷系統(tǒng)仍在工作。在掉電模式下,保存RAM的內(nèi)容并且凍結(jié)振蕩器,禁止所用其他芯片功能,直到下一個(gè)硬件復(fù)位為止。 </p><p><b>  串口通訊 </b></p><p>  單片機(jī)的結(jié)

29、構(gòu)和特殊寄存器,這是你編寫軟件的關(guān)鍵。至于串口通信需要用到那些特殊功能寄存器呢,它們是SCON,TCON,TMOD,SCON等,各代表什么含義呢? </p><p>  SBUF 數(shù)據(jù)緩沖寄存器這是一個(gè)可以直接尋址的串行口專用寄存器。有朋友這樣問起過“為何在串行口收發(fā)中,都只是使用到同一個(gè)寄存器SBUF?而不是收發(fā)各用一個(gè)寄存器。”實(shí)際上SBUF 包含了兩個(gè)獨(dú)立的寄存器,一個(gè)是發(fā)送寄存,另一個(gè)是接收寄存器,但它們

30、都共同使用同一個(gè)尋址地址-99H。CPU 在讀SBUF 時(shí)會(huì)指到接收寄存器,在寫時(shí)會(huì)指到發(fā)送寄存器,而且接收寄存器是雙緩沖寄存器,這樣可以避免接收中斷沒有及時(shí)的被響應(yīng),數(shù)據(jù)沒有被取走,下一幀數(shù)據(jù)已到來,而造成的數(shù)據(jù)重疊問題。發(fā)送器則不需要用到雙緩沖,一般情況下我們?cè)趯懓l(fā)送程序時(shí)也不必用到發(fā)送中斷去外理發(fā)送數(shù)據(jù)。操作SBUF寄存器的方法則很簡(jiǎn)單,只要把這個(gè)99H 地址用關(guān)鍵字sfr定義為一個(gè)變量就可以對(duì)其進(jìn)行讀寫操作了,如sfr SBUF

31、 = 0x99;當(dāng)然你也可以用其它的名稱。通常在標(biāo)準(zhǔn)的reg51.h 或at89x51.h 等頭文件中已對(duì)其做了定義,只要用#include 引用就可以了。 </p><p>  SCON 串行口控制寄存器通常在芯片或設(shè)備中為了監(jiān)視或控制接口狀態(tài),都會(huì)引用到接口控制寄存器。SCON 就是51 芯片的串行口控制寄存器。它的尋址地址是98H,是一個(gè)可以位尋址的寄存器,作用就是監(jiān)視和控制51 芯片串行口的工作狀態(tài)。51

32、 芯片的串口可以工作在幾個(gè)不同的工作模式下,其工作模式的設(shè)置就是使用SCON 寄存器。它的各個(gè)位的具體定義如下: </p><p>  SM0 SM1 SM2 REN TB8 RB8 TI RI </p><p>  SM0、SM1 為串行口工作模式設(shè)置位,這樣兩位可以對(duì)應(yīng)進(jìn)行四種模式的設(shè)置。串行口工作模式設(shè)置。 </p><p>  SM0 SM1 模式 功能 波

33、特率 </p><p>  0 0 0 同步移位寄存器 fosc/12 </p><p>  0 1 1 8位UART 可變 </p><p>  1 0 2 9位UART fosc/32 或fosc/64 </p><p>  1 1 3 9位UART 可變 </p><p>  在這里只說明最常用的模式1,其它的模

34、式也就一一略過,有興趣的朋友可以找相關(guān)的硬件資料查看。表中的fosc 代表振蕩器的頻率,也就是晶振的頻率。UART 為(Universal Asynchronous Receiver)的英文縮寫。 </p><p>  SM2 在模式2、模式3 中為多處理機(jī)通信使能位。在模式0 中要求該位為0。 </p><p>  REM 為允許接收位,REM 置1 時(shí)串口允許接收,置0 時(shí)禁止接收。R

35、EM 是由軟件置位或清零。如果在一個(gè)電路中接收和發(fā)送引腳P3.0,P3.1 都和上位機(jī)相連,在軟件上有串口中斷處理程序,當(dāng)要求在處理某個(gè)子程序時(shí)不允許串口被上位機(jī)來的控制字符產(chǎn)生中斷,那么可以在這個(gè)子程序的開始處加入REM=0 來禁止接收,在子程序結(jié)束處加入REM=1 再次打開串口接收。大家也可以用上面的實(shí)際源碼加入REM=0 來進(jìn)行實(shí)驗(yàn)。 </p><p>  TB8 發(fā)送數(shù)據(jù)位8,在模式2 和3 是要發(fā)送的第

36、9 位。該位可以用軟件根據(jù)需要置位或清除,通常這位在通信協(xié)議中做奇偶位,在多處理機(jī)通信中這一位則用于表示是地址幀還是數(shù)據(jù)幀。 </p><p>  RB8 接收數(shù)據(jù)位8,在模式2 和3 是已接收數(shù)據(jù)的第9 位。該位可能是奇偶位,地址/數(shù)據(jù)標(biāo)識(shí)位。在模式0 中,RB8 為保留位沒有被使用。在模式1 中,當(dāng)SM2=0,RB8 是已接收數(shù)據(jù)的停止位。 </p><p>  TI 發(fā)送中斷標(biāo)識(shí)位。

37、在模式0,發(fā)送完第8 位數(shù)據(jù)時(shí),由硬件置位。其它模式中則是在發(fā)送停止位之初,由硬件置位。TI 置位后,申請(qǐng)中斷,CPU 響應(yīng)中斷后,發(fā)送下一幀數(shù)據(jù)。在任何模式下,TI 都必須由軟件來清除,也就是說在數(shù)據(jù)寫入到SBUF 后,硬件發(fā)送數(shù)據(jù),中斷響應(yīng)(如中斷打開),這時(shí)TI=1,表明發(fā)送已完成,TI 不會(huì)由硬件清除,所以這時(shí)必須用軟件對(duì)其清零。 </p><p>  RI 接收中斷標(biāo)識(shí)位。在模式0,接收第8 位結(jié)束時(shí),

38、由硬件置位。其它模式中則是在接收停止位的半中間,由硬件置位。RI=1,申請(qǐng)中斷,要求CPU 取走數(shù)據(jù)。但在模式1 中,SM2=1時(shí),當(dāng)未收到有效的停止位,則不會(huì)對(duì)RI 置位。同樣RI 也必須要靠軟件清除。常用的串口模式1 是傳輸10 個(gè)位的,1 位起始位為0,8 位數(shù)據(jù)位,低位在先,1 位停止位為1。它的波特率是可變的,其速率是取決于定時(shí)器1 或定時(shí)器2 的定時(shí)值(溢出速率)。AT89C51 和AT89C2051 等51 系列芯片只有兩

39、個(gè)定時(shí)器,定時(shí)器0 和定時(shí)器1,而定時(shí)器2是89C52 系列芯片才有的。 </p><p>  波特率在使用串口做通訊時(shí),一個(gè)很重要的參數(shù)就是波特率,只有上下位機(jī)的波特率一樣時(shí)才可以進(jìn)行正常通訊。波特率是指串行端口每秒內(nèi)可以傳輸?shù)牟ㄌ匚粩?shù)。有一些初學(xué)的朋友認(rèn)為波特率是指每秒傳輸?shù)淖止?jié)數(shù),如標(biāo)準(zhǔn)9600 會(huì)被誤認(rèn)為每秒種可以傳送9600個(gè)字節(jié),而實(shí)際上它是指每秒可以傳送9600 個(gè)二進(jìn)位,而一個(gè)字節(jié)要8 個(gè)二進(jìn)位,

40、如用串口模式1 來傳輸那么加上起始位和停止位,每個(gè)數(shù)據(jù)字節(jié)就要占用10 個(gè)二進(jìn)位,9600 波特率用模式1 傳輸時(shí),每秒傳輸?shù)淖止?jié)數(shù)是9600÷10=960 字節(jié)。51 芯片的串口工作模式0的波特率是固定的,為fosc/12,以一個(gè)12M 的晶振來計(jì)算,那么它的波特率可以達(dá)到1M。模式2 的波特率是固定在fosc/64 或fosc/32,具體用那一種就取決于PCON 寄存器中的SMOD位,如SMOD 為0,波特率為focs/6

41、4,SMOD 為1,波特率為focs/32。模式1 和模式3 的波特率是可變的,取決于定時(shí)器1 或2(52 芯片)的溢出速率。那么我們?cè)趺慈ビ?jì)算這兩個(gè)模 </p><p>  式的波特率設(shè)置時(shí)相關(guān)的寄存器的值呢?可以用以下的公式去計(jì)算。 </p><p>  波特率=(2SMOD÷32)×定時(shí)器1 溢出速率 </p><p>  上式中如設(shè)置了P

42、CON 寄存器中的SMOD 位為1 時(shí)就可以把波特率提升2 倍。通常會(huì)使用定時(shí)器1 工作在定時(shí)器工作模式2 下,這時(shí)定時(shí)值中的TL1 做為計(jì)數(shù),TH1 做為自動(dòng)重裝值 ,這個(gè)定時(shí)模式下,定時(shí)器溢出后,TH1 的值會(huì)自動(dòng)裝載到TL1,再次開始計(jì)數(shù),這樣可以不用軟件去干預(yù),使得定時(shí)更準(zhǔn)確。在這個(gè)定時(shí)模式2 下定時(shí)器1 溢出速率的計(jì)算公式如下: </p><p>  溢出速率=(計(jì)數(shù)速率)/(256-TH1) <

43、/p><p>  上式中的“計(jì)數(shù)速率”與所使用的晶體振蕩器頻率有關(guān),在51 芯片中定時(shí)器啟動(dòng)后會(huì)在每一個(gè)機(jī)器周期使定時(shí)寄存器TH 的值增加一,一個(gè)機(jī)器周期等于十二個(gè)振蕩周期,所以可以得知51 芯片的計(jì)數(shù)速率為晶體振蕩器頻率的1/12,一個(gè)12M 的晶振用在51 芯片上,那么51 的計(jì)數(shù)速率就為1M。通常用11.0592M 晶體是為了得到標(biāo)準(zhǔn)的無誤差的波特率,那么為何呢?計(jì)算一下就知道了。如我們要得到9600 的波特率

44、,晶振為11.0592M 和12M,定時(shí)器1 為模式2,SMOD 設(shè)為1,分別看看那所要求的TH1 為何值。代入公式: </p><p><b>  11.0592M </b></p><p>  9600=(2÷32)×((11.0592M/12)/(256-TH1)) </p><p><b>  TH1=25

45、0 </b></p><p><b>  12M </b></p><p>  9600=(2÷32)×((12M/12)/(256-TH1)) </p><p>  TH1≈249.49 </p><p>  上面的計(jì)算可以看出使用12M 晶體的時(shí)候計(jì)算出來的TH1 不為整數(shù),而TH1

46、的值只能取整數(shù),這樣它就會(huì)有一定的誤差存在不能產(chǎn)生精確的9600 波特率。當(dāng)然一定的誤差是可以在使用中被接受的,就算使用11.0592M 的晶體振蕩器也會(huì)因晶體本身所存在的誤差使波特率產(chǎn)生誤差,但晶體本身的誤差對(duì)波特率的影響是十分之小的,可以忽略不計(jì)。</p><p>  詳細(xì)元器件列表如表2.1所示:</p><p>  2.2各部分功能實(shí)現(xiàn)</p><p>  

47、單片機(jī)發(fā)送的信號(hào)通過程序控制最終在數(shù)碼管上顯示出來。</p><p>  單片機(jī)通過輸出各種電脈沖信號(hào)來驅(qū)動(dòng)控制各部分正常工作。</p><p>  為使時(shí)鐘走時(shí)與標(biāo)準(zhǔn)時(shí)間一致,校時(shí)電路是必不可少的,鍵盤用來校正數(shù)碼管上顯示的時(shí)間。</p><p>  單片機(jī)通過控制鬧鈴電路來完成 定時(shí)鬧鐘的功能。</p><p><b>  2.

48、3系統(tǒng)工作原理</b></p><p>  設(shè)計(jì)的電路主要由四模塊構(gòu)成:?jiǎn)纹瑱C(jī)控制電路,顯示電路、鬧鈴電路以及校正電路。</p><p>  詳細(xì)電路功能圖如圖2-2:</p><p>  圖2-2 詳細(xì)電路功能圖</p><p>  本設(shè)計(jì)采用C語言程序設(shè)計(jì),使單片機(jī)控制數(shù)碼管顯示時(shí)、分、秒,當(dāng)秒計(jì)數(shù)計(jì)滿60時(shí)就向分進(jìn)位,分計(jì)

49、數(shù)器計(jì)滿60后向時(shí)計(jì)數(shù)器進(jìn)位,小時(shí)計(jì)數(shù)器按“23翻0”規(guī)律計(jì)數(shù)。時(shí)、分、秒的計(jì)數(shù)結(jié)果經(jīng)過數(shù)據(jù)處理可直接送顯示器顯示。當(dāng)計(jì)時(shí)發(fā)生誤差的時(shí)候可以用校時(shí)電路進(jìn)行校正。設(shè)計(jì)采用的是時(shí)、分、秒顯示,單片機(jī)對(duì)數(shù)據(jù)進(jìn)行處理同時(shí)在數(shù)碼管上顯示。</p><p>  2.4時(shí)鐘各功能分析及圖解</p><p>  2.4.1電路各功能圖解分析</p><p><b> ?。?/p>

50、1) 時(shí)鐘運(yùn)行圖</b></p><p>  仿真開始運(yùn)行時(shí),或按下key4鍵時(shí),時(shí)鐘從12:00:00開始運(yùn)行,其中key2鍵對(duì)分進(jìn)行調(diào)整,key3對(duì)小時(shí)進(jìn)行調(diào)整,key6可以讓時(shí)鐘暫停。</p><p>  時(shí)鐘運(yùn)行圖如圖 2-3 所示: </p><p>  圖2-3 時(shí)鐘運(yùn)行圖</p><p><b> ?。?)

51、秒表計(jì)時(shí)圖</b></p><p>  當(dāng)按下key1鍵進(jìn)入秒表計(jì)時(shí)狀態(tài),key6是秒表暫停鍵,可按key4鍵跳出秒表計(jì)時(shí)狀態(tài)。</p><p><b>  如圖2-4:</b></p><p>  圖2-4 秒表計(jì)時(shí)圖</p><p>  (3)鬧鈴設(shè)置圖及運(yùn)行圖</p><p> 

52、 當(dāng)按下key5,開始定時(shí),分別按key2調(diào)分,key3調(diào)時(shí)設(shè)置鬧鈴時(shí)間,然后按下key4鍵恢復(fù)時(shí)鐘運(yùn)行狀態(tài)(圖2-5)當(dāng)鬧鈴設(shè)置時(shí)間到時(shí),蜂鳴器將發(fā)出10秒中蜂鳴聲(圖2-6)。</p><p>  圖2-5 鬧鈴時(shí)間設(shè)置圖</p><p>  圖2-6 鬧鈴運(yùn)行圖</p><p>  該數(shù)字鐘是用一片AT89C51單片機(jī)通過編程去驅(qū)動(dòng)8個(gè)數(shù)碼管實(shí)現(xiàn)的。通過6個(gè)開

53、關(guān)控制,從上到下6個(gè)開關(guān)KEY1-KEY6的功能分別為:KEY1,切換至秒表;KEY2,調(diào)節(jié)時(shí)間,每調(diào)一次時(shí)加1;KEY3, 調(diào)節(jié)時(shí)間,每調(diào)一次分加1;KEY4,從其它狀態(tài)切換至?xí)r鐘狀態(tài);KEY5,切換至鬧鐘設(shè)置狀態(tài),也可以對(duì)秒表清零;KEY6,秒表暫停.控制鍵分別與P1.0~P1.5口連接.其中:</p><p>  A通過P2口和P3口去控制數(shù)碼管的顯示如圖所示P2口接數(shù)碼管的a——g端,是控制輸出編碼,P3

54、口接數(shù)碼管的1——8端,是控制動(dòng)態(tài)掃描輸出.</p><p>  B從P0.0輸出一個(gè)信號(hào)使二極管發(fā)光,二極管在設(shè)置的鬧鐘時(shí)間到了時(shí)候發(fā)光,若有樂曲可以去驅(qū)動(dòng)揚(yáng)聲器實(shí)現(xiàn)。</p><p>  2.4.2電路功能使用說明</p><p> ?。?) 各個(gè)控制鍵的功能:可對(duì)時(shí)間進(jìn)行校準(zhǔn)調(diào)節(jié)(只能加1);按下設(shè)置鍵數(shù)字時(shí)鐘進(jìn)入鬧鐘設(shè)置狀態(tài),設(shè)置鬧鐘的時(shí)間;時(shí)加1、分加1鍵

55、是在校準(zhǔn)時(shí)間時(shí)或設(shè)置鬧鐘時(shí)間對(duì)小時(shí)數(shù)或分鐘數(shù)調(diào)節(jié)而設(shè)置的;按下秒切換鍵就可以進(jìn)入秒表模式,同時(shí)秒表也開始計(jì)時(shí),按下秒表暫停、復(fù)位鍵就暫停、歸零,如果要重新對(duì)秒計(jì)時(shí)則可以按秒表開始、復(fù)位;清零鍵可以對(duì)鬧鐘清零。</p><p>  AT89C51單片機(jī),通過編寫程序?qū)?shù)碼顯示進(jìn)行控制。</p><p>  八個(gè)7段數(shù)碼管顯示時(shí)鐘和秒表信號(hào)。</p><p>  第三章

56、 電路控制源程序</p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  #define delay_time 3/*宏定義*/</p><p&

57、gt;  uchar k,dat[]={0,0,0,0,0,0,0,0};</p><p>  uint tcount,t,u;</p><p>  uchar dat1[]={0,0,0,0,0,0,2,1};</p><p>  uchar dat2[]={0,0,0,0,0,0,0,0};</p><p>  uchar alarms[

58、]={0,0,0,0,0,0,0,0};</p><p>  uchar dis_bit[]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};</p><p>  unsigned char code SEG7[11]={0xC0,/*0*/ 0xF9,/*1*/ </p><p>  0x

59、A4,/*2*/ 0xB0,/*3*/ </p><p>  0x99,/*4*/ 0x92,/*5*/ </p><p>  0x82,/*6*/

60、 0xF8,/*7*/ </p><p>  0x80,/*8*/ </p><p>  0x90,/*9*/</p><p>  0xBF,/*-*/</p><p>  };/*數(shù)字顯示數(shù)組*/</p><p>  sbit miaobiao1=P1^0

61、;</p><p>  sbit tminute=P1^1;</p><p>  sbit thour=P1^2;</p><p>  sbit miaobiao2=P1^3;</p><p>  sbit alarm=P1^4;</p><p>  sbit P0_0=P0^0;</p><p&g

62、t;  sbit P1_5=P1^5;</p><p>  sbit P1_6=P1^6;</p><p>  sbit P1_7=P1^7;/*端口定義*/</p><p>  uchar ms=0;</p><p>  uchar flag=0;</p><p>  uchar sec=0;</p>

63、<p>  uchar minit=0;</p><p>  struct time{uchar second;uchar minute;uchar hour;}</p><p><b>  time1;</b></p><p>  uchar n,i;</p><p>  void delay(n)</

64、p><p>  {while(n--)</p><p><b>  {</b></p><p>  for(i=120;i>0;i--);</p><p><b>  } </b></p><p><b>  }</b></p><

65、p><b>  /*延時(shí)子程序*/</b></p><p>  void modify(void)</p><p><b>  {</b></p><p><b>  EA=0;</b></p><p>  if(thour==0)</p><p>

66、;<b>  { </b></p><p>  if(flag==0)</p><p><b>  {</b></p><p>  dat1[6]++;delay(280);</p><p>  if(dat1[6]>9)</p><p><b>  { &

67、lt;/b></p><p>  dat1[6]=0;</p><p>  dat1[7]++;</p><p><b>  }</b></p><p>  else if((dat1[7]>1)&&(dat1[6]>3))</p><p>  {dat1[7

68、]=0; dat1[6]=0; }</p><p><b>  }</b></p><p>  if(flag==1)</p><p><b>  {</b></p><p>  alarms[6]++;delay(300);</p><p>  if(alarms[6]&

69、gt;9)</p><p><b>  {</b></p><p>  alarms[6]=0;alarms[7]++;</p><p>  if(alarms[7]>2)</p><p><b>  {</b></p><p>  alarms[7]=0;</p

70、><p><b>  }</b></p><p><b>  }</b></p><p>  dat[6]=alarms[6];</p><p>  dat[7]=alarms[7];</p><p><b>  }</b></p><p

71、><b>  }</b></p><p>  if(tminute==0)</p><p><b>  { </b></p><p>  if(flag==0)</p><p><b>  {</b></p><p>  dat1[3]++;del

72、ay(280);</p><p>  if(dat[3]>=9)</p><p><b>  {</b></p><p>  dat1[4]++;dat1[3]=0;</p><p>  if(dat1[4]>5)</p><p><b>  {</b></

73、p><p>  dat1[4]=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(flag==1)</p><p><b>

74、;  {</b></p><p>  alarms[3]++;delay(300);</p><p>  if(alarms[3]>9)</p><p><b>  {</b></p><p>  alarms[4]++;alarms[3]=0;</p><p>  if(al

75、arms[4]>5)</p><p><b>  {</b></p><p>  alarms[4]=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  dat[3]=alarms[3];<

76、;/p><p>  dat[4]=alarms[4];</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(miaobiao1==0)</p><p>  {TR0=0;ET0=0;TR1=1;ET1=1;</p>

77、<p><b>  }</b></p><p>  if(miaobiao2==0)</p><p><b>  { </b></p><p>  TR0=1;ET0=1;TR1=0;ET1=0;</p><p>  dat2[0]=0;</p><p>  d

78、at2[1]=0;</p><p>  dat2[3]=0;</p><p>  dat2[4]=0;</p><p>  dat2[6]=0;</p><p>  dat2[7]=0;</p><p><b>  ms=0;</b></p><p><b>  

79、sec=0;</b></p><p><b>  minit=0;</b></p><p><b>  }</b></p><p>  if(P1_5==0)</p><p><b>  {</b></p><p>  TR0=0;ET0=0

80、;TR1=0;ET1=0; </p><p><b>  }</b></p><p>  if(alarm==0)</p><p><b>  {</b></p><p>  TR0=0;ET0=0;TR1=0;ET1=0;flag=1;</p><p><b> 

81、 dat[0]=0;</b></p><p><b>  dat[1]=0;</b></p><p>  dat[2]=10;</p><p><b>  dat[3]=0;</b></p><p><b>  dat[4]=0;</b></p>&l

82、t;p>  dat[5]=10;</p><p><b>  dat[6]=0;</b></p><p><b>  dat[7]=0;</b></p><p><b>  }</b></p><p><b>  EA=1;</b></p>

83、;<p><b>  }/*按鍵掃描*/</b></p><p>  void init(void)</p><p><b>  {</b></p><p>  TMOD = 0x11; </p><p>  TH0 = 0xDB;</p><p>  TL0

84、=0xFF;</p><p><b>  TH1=0xDB;</b></p><p><b>  TL1=0xFF;</b></p><p>  ET0 = 1; //10ms</p><p><b>  ET1=1;</b></p><p>

85、<b>  //TR1=1;</b></p><p><b>  TR0=1;</b></p><p><b>  tcount=0;</b></p><p><b>  ms=0;</b></p><p><b>  sec=0;</b

86、></p><p><b>  minit=0;</b></p><p><b>  EA = 1;</b></p><p><b>  }/*初始化*/</b></p><p>  void test(void){</p><p>  for(k

87、=0;k<8;k++)</p><p><b>  {</b></p><p>  P3=dis_bit[k];</p><p>  P2=SEG7[dat[k]]; delay(1);</p><p><b>  P3=0X00;</b></p><p><b&

88、gt;  }</b></p><p><b>  }/*數(shù)字顯示*/</b></p><p>  void main()</p><p><b>  {init();</b></p><p>  delay(10);</p><p><b>  whil

89、e(1)</b></p><p><b>  {</b></p><p><b>  modify();</b></p><p><b>  test();</b></p><p><b>  }</b></p><p>

90、;<b>  }/*主函數(shù)*/</b></p><p>  Void diplay() interrupt 1</p><p><b>  { </b></p><p><b>  ET0=0;</b></p><p><b>  TR0=0;</b>&

91、lt;/p><p>  TH0 = 0xDB;</p><p>  TL0 = 0xff;</p><p><b>  TR0=1;</b></p><p><b>  tcount++;</b></p><p>  if(tcount==100) </p><

92、;p><b>  {</b></p><p>  time1.second++;</p><p><b>  tcount=0;</b></p><p>  dat1[0]=(time1.second)%10;</p><p>  dat1[1]=(time1.second)/10;</

93、p><p><b>  }</b></p><p>  if(time1.second==60)</p><p>  { dat1[0]=0;dat1[1]=0;</p><p>  time1.second=0;</p><p>  time1.minute++;</p><

94、p>  dat1[3]=(time1.minute)%10;</p><p>  dat1[4]=(time1.minute)/10;</p><p><b>  } </b></p><p>  if(time1.minute==60)</p><p><b>  {</b></p&g

95、t;<p>  time1.minute=0;</p><p>  time1.hour++; </p><p>  dat1[6]=time1.hour%10;</p><p>  dat1[7]=time1.hour/10;</p><p><b>  }</b></p><p>

96、;  if(time1.hour>23)</p><p><b>  {</b></p><p>  time1.hour=0; </p><p><b>  }</b></p><p>  dat[5]=10;</p><p>  dat[2]=10;</p&g

97、t;<p>  dat[0]=dat1[0];</p><p>  dat[1]=dat1[1];</p><p>  dat[3]=dat1[3];</p><p>  dat[4]=dat1[4];</p><p>  dat[6]=dat1[6];</p><p>  dat[7]=dat1[7];

98、</p><p><b>  flag=0;</b></p><p><b>  P0=0x01;</b></p><p>  if((alarms[7]==dat1[7])&&(alarms[6]==dat1[6])&&(alarms[4]==dat1[4])&&(alar

99、ms[3]==dat1[3])&&(dat1[1]<1))</p><p><b>  {</b></p><p><b>  P0=0x00;</b></p><p><b>  }</b></p><p><b>  ET0=1;</b

100、></p><p><b>  }</b></p><p>  void time_2(void)interrupt 3</p><p><b>  {</b></p><p><b>  EA=0; </b></p><p><b> 

101、 TR0=0;</b></p><p><b>  TH1=0xDB;</b></p><p><b>  TL1=0xFF;</b></p><p><b>  TR1=1;</b></p><p><b>  ms++;</b></p

102、><p>  dat2[0]=ms%10;</p><p>  dat2[1]=ms/10;</p><p>  if(ms>=100)</p><p><b>  {</b></p><p><b>  ms=0;</b></p><p><

103、b>  sec++;</b></p><p>  dat2[3]=sec%10;</p><p>  dat2[4]=sec/10;</p><p>  if(sec>=60)</p><p><b>  {</b></p><p><b>  sec=0;<

104、;/b></p><p><b>  minit++;</b></p><p>  dat2[6]=minit%10;</p><p>  dat2[7]=minit/10;</p><p><b>  }</b></p><p><b>  }</b&

105、gt;</p><p>  dat[5]=10;</p><p>  dat[2]=10;</p><p>  dat[0]=dat2[0];</p><p>  dat[1]=dat2[1];</p><p>  dat[3]=dat2[3];</p><p>  dat[4]=dat2[4]

106、;</p><p>  dat[6]=dat2[6];</p><p>  dat[7]=dat2[7];</p><p><b>  EA=1;</b></p><p>  第四章 課程設(shè)計(jì)結(jié)果分析</p><p>  此時(shí)鐘設(shè)計(jì)是利用protues仿真軟件進(jìn)行仿真,基本上實(shí)現(xiàn)了課程設(shè)計(jì)要求

107、實(shí)現(xiàn)的功能。</p><p>  硬件部分設(shè)置了的六個(gè)按鍵。當(dāng)按鍵一按下時(shí),進(jìn)入秒表顯示狀態(tài),秒表開始計(jì)時(shí),當(dāng)按鍵六按下時(shí),秒表暫停;當(dāng)按鍵四按下時(shí)恢復(fù)到時(shí)間顯示功能;當(dāng)按鍵二按下時(shí),進(jìn)入調(diào)分狀態(tài),按一次,分加一,60一循環(huán);按鍵三按下時(shí),進(jìn)入調(diào)時(shí)狀態(tài),按一次,時(shí)加一,60一循環(huán);按鍵五按下時(shí),進(jìn)入鬧鈴設(shè)置功能,緊接著按下按鍵二和按鍵三進(jìn)行時(shí)和分的設(shè)置,再按下按鍵4恢復(fù)顯示時(shí)間,當(dāng)顯示的時(shí)間和定時(shí)設(shè)置的時(shí)間一致時(shí)

108、,蜂鳴器發(fā)出蜂鳴聲,蜂鳴時(shí)間我們?cè)O(shè)置為10秒。</p><p>  另外,鬧鈴電路有音樂鬧鐘的擴(kuò)展的功能(可以將蜂鳴器換成揚(yáng)聲器再加一段音樂程序即可實(shí)現(xiàn))。</p><p>  調(diào)試階段,出現(xiàn)一些問題。比如,實(shí)際小時(shí)顯示到29才歸零,分鐘顯示到60才進(jìn)一……經(jīng)過軟件調(diào)試,以上問題均一一排除,結(jié)果達(dá)到預(yù)期目標(biāo)。但時(shí)間有限,部分?jǐn)U展功能不能及時(shí)實(shí)現(xiàn),比如音樂鬧鈴。</p><

109、;p><b>  第五章 總結(jié)</b></p><p>  經(jīng)過一周的單片機(jī)課程設(shè)計(jì),我組成員已基本完成課題要求。功能上基本達(dá)標(biāo):時(shí)鐘的顯示,秒表顯示,定時(shí)功能,調(diào)時(shí)功能。時(shí)鐘顯示功能,精確度完全可以滿足日常生活顯示時(shí)間的需要;秒表功能,可以滿足比賽計(jì)時(shí)的需要;調(diào)時(shí)功能,方便快捷;定時(shí)功能準(zhǔn)確可靠,還有擴(kuò)展成音樂鬧鐘的余地。硬件設(shè)施合乎要求,軟件設(shè)計(jì)可以配合硬件實(shí)現(xiàn)要求功能。但是由于時(shí)

110、間比較短,出現(xiàn)部分不足:使用定時(shí)和秒表功能時(shí)時(shí)間顯示功能停止運(yùn)行。經(jīng)討論只是軟件部分還不完善。不過,我們相信,如果時(shí)間充足,將軟件改進(jìn),我們完全可以很好實(shí)現(xiàn)所有功能。 </p><p>  另外,在本次設(shè)計(jì)的過程中,我們發(fā)現(xiàn)很多的問題,雖然以前沒有做過這樣的設(shè)計(jì)但通過這次設(shè)計(jì)我學(xué)會(huì)了很多東西,單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我們覺的寫好一個(gè)程序并不是一件簡(jiǎn)單

111、的事,比如寫一個(gè)程序看其功能很少認(rèn)為編寫程序簡(jiǎn)單,但到編的時(shí)候才發(fā)現(xiàn)一些細(xì)微的知識(shí)或低級(jí)錯(cuò)誤經(jīng)常犯做不到最后常常失敗,所以有些東西只有學(xué)精弄懂并且要細(xì)心才行,只學(xué)習(xí)理論有些東西是很難理解的,更談不上掌握。</p><p>  從這次的課程設(shè)計(jì)中,我們真真正正的意識(shí)到,在以后的學(xué)習(xí)中,要理論聯(lián)系實(shí)際,把我們所學(xué)的理論知識(shí)用到實(shí)際當(dāng)中,學(xué)習(xí)單機(jī)片機(jī)更是如此,程序只有在經(jīng)常的練習(xí)的過程中才能提高,我想這就是我在這次課程

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲(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)論