智能時(shí)鐘課程設(shè)計(jì)--智能電子鐘(lcd顯示)_第1頁
已閱讀1頁,還剩36頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)說明書</b></p><p>  課程名稱: 2011級(jí)機(jī)電專業(yè)課程設(shè)計(jì) </p><p>  題 目: 智能電子鐘(LCD顯示) </p><p>  學(xué) 院: 機(jī)電工程學(xué)院 系: 機(jī)電 </p><p>  專

2、業(yè): 機(jī)械設(shè)計(jì)制造及其自動(dòng)化 </p><p>  班 級(jí): 機(jī)制xxx班 </p><p>  學(xué) 號(hào): xxxxxxxxx </p><p>  學(xué)生姓名: xxxxx </p><p>

3、  起訖日期: — </p><p>  指導(dǎo)教師: xxxxxx 職稱: </p><p>  系分管主任: </p><p>  審核日期: </p>

4、<p><b>  摘 要</b></p><p>  電子時(shí)鐘主要是利用電子技術(shù)將時(shí)鐘電子化、數(shù)字化,擁有時(shí)鐘精確、體積小、界面友好、可擴(kuò)展性能強(qiáng)等特點(diǎn),被廣泛應(yīng)用于生活和工作當(dāng)中。另外,在生活和工農(nóng)業(yè)生產(chǎn)中,也常常需要溫度,這就需要電子時(shí)鐘具有多功能性。本設(shè)計(jì)主要為實(shí)現(xiàn)一款可正常顯示時(shí)鐘/日歷、帶有定時(shí)鬧鈴的多功能電子時(shí)鐘。</p><p>  

5、本文對(duì)當(dāng)前電子鐘開發(fā)手段進(jìn)行了比較和分析,最終確定了采用單片機(jī)技術(shù)實(shí)現(xiàn)多功能電子時(shí)鐘。本設(shè)計(jì)應(yīng)用AT89C51芯片作為核心,使用DS1302實(shí)時(shí)時(shí)鐘日歷芯片完成時(shí)鐘/日歷的基本功能。這種實(shí)現(xiàn)方法的優(yōu)點(diǎn)是電路簡單,性能可靠,實(shí)時(shí)性好,時(shí)間精確,操作簡單,編程容易。</p><p>  該電子時(shí)鐘可以應(yīng)用于一般的生活和工作中,也可通過改裝,提高性能,增加新功能,從而給人們的生活和工作帶來更多的方便。</p>

6、;<p>  關(guān)鍵詞:電子時(shí)鐘;多功能;AT89C51;DS1302</p><p><b>  總體設(shè)計(jì)方案</b></p><p><b>  1.1 方案設(shè)計(jì)</b></p><p>  實(shí)時(shí)時(shí)鐘芯片具備年、月、日、時(shí)、分、秒計(jì)時(shí)功能和多點(diǎn)計(jì)時(shí)功能,計(jì)時(shí)數(shù)據(jù)的更新每秒自動(dòng)進(jìn)行一次,不需程序干預(yù)。計(jì)算機(jī)

7、可通過中斷或查詢方式讀取計(jì)時(shí)數(shù)據(jù)進(jìn)行顯示,因此計(jì)時(shí)功能的實(shí)現(xiàn)無需占用CPU的時(shí)間,程序簡單。此外,實(shí)時(shí)時(shí)鐘芯片多數(shù)帶有鋰電池做后備電源,具備永不停止的計(jì)時(shí)功能;具有可編程方波輸出功能,可用做實(shí)時(shí)測控系統(tǒng)的采樣信號(hào)等;有的實(shí)時(shí)時(shí)鐘芯片內(nèi)部還帶有非易失性RAM,可用來存放需長期保存但有時(shí)也需變更的數(shù)據(jù),由于功能完善,精度高,軟件程序設(shè)計(jì)相對(duì)簡單,且計(jì)時(shí)不占用CPU時(shí)間,因此,在工業(yè)實(shí)時(shí)測控系統(tǒng)中多采用這一類專用芯片來實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘功能。<

8、;/p><p>  利用單片機(jī)內(nèi)部的定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)及秒表計(jì)時(shí)。該方案節(jié)省硬件成本,且能使設(shè)計(jì)者對(duì)單片機(jī)的指令系統(tǒng)能有更深入的了解,從而掌握單片機(jī)應(yīng)用技術(shù)MCS-51匯編語言程序設(shè)計(jì)方法,因此,本系統(tǒng)設(shè)計(jì)采用此種軟件控制方法來實(shí)現(xiàn)計(jì)時(shí)。而由于Atmel公司的AT89C51是一種自帶4KB Flash存儲(chǔ)器的低電壓、高性能的CMOS 8位微處理器。該器件采用Atmel高密度非易

9、失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出引腳相兼容。它的功能強(qiáng)大,而且也比較容易購買,故本設(shè)計(jì)中所選的單片機(jī)為AT89C51單片機(jī)。</p><p><b>  系統(tǒng)框圖</b></p><p>  按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定系統(tǒng)由主控模塊、時(shí)控模塊、及顯示模塊和鍵盤接口模塊共4個(gè)模塊組成。主控芯片使用51系列AT89C51單片機(jī),時(shí)鐘芯片使用

10、美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘DS1302。采用DS1302作為計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以在很小電流的后備電源(2.5~5.5V電源,再2.5V時(shí)耗電小于300nA),而且DS1302可以編程選擇多種充電電流來為后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。顯示模塊采用普通的液晶顯示屏(LCD),設(shè)計(jì)框圖如圖1所示</p><p>  圖1 設(shè)

11、計(jì)方案框圖</p><p>  第2章 核心芯片簡介</p><p>  2.1 DS1302簡介</p><p>  DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償功能,工作電壓寬達(dá)2.5~5.5V。時(shí)鐘可工作在24小時(shí)格式或12小時(shí)(AM/PM)格式。 DS13

12、02與單片機(jī)的接口使用同步串行通信,僅用3條線與之相連接??刹捎靡淮蝹魉鸵粋€(gè)字節(jié)或突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。</p><p>  2.1.1 DS1302引腳功能與內(nèi)部結(jié)構(gòu)<

13、;/p><p>  DS1302的引腳功能如表1所示,外形及內(nèi)部結(jié)構(gòu)如圖2所示:</p><p>  表1 DS1302引腳功能表</p><p><b>  X1 X2</b></p><p>  圖2 DS1302管腳圖及內(nèi)部結(jié)構(gòu)圖</p><p>  2.1.2 DS1302控制

14、字</p><p>  DS1302的控制字節(jié)如表2所示:</p><p>  表2 DS1302控制字節(jié)的含義</p><p>  控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)

15、行讀操作,控制字節(jié)總是從最低位開始輸出。</p><p>  2.1.3 DS1302復(fù)位引腳</p><p>  通過把輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。 輸入有兩種功能:首先,接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,提供了終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對(duì)DS1302進(jìn)行操作。如果在傳送過程中置為低電平,則會(huì)終止此次數(shù)據(jù)傳

16、送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。</p><p>  2.1.4 DS1302數(shù)據(jù)的輸入與輸出</p><p>  在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí)數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的

17、數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位至高位7,數(shù)據(jù)讀寫時(shí)序如圖3所示:</p><p>  圖3 數(shù)據(jù)讀寫時(shí)序</p><p>  2.1.5 DS1302寄存器</p><p>  DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字見表3。</p><p>  此外,DS130

18、2還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器的內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類,一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H--FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。&l

19、t;/p><p>  表3 DS1302的日歷、時(shí)鐘寄存器及其控制字</p><p>  2.2 AT89C51簡介</p><p>  AT89C51是一種帶4K字節(jié)FLASH存儲(chǔ)器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051

20、是一種帶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是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。</p><

21、p>  2.2.1 AT89C51芯片引腳及特點(diǎn)</p><p>  AT89S51芯片的引腳結(jié)構(gòu)如圖4所示:</p><p>  圖4 AT89C51芯片的引腳結(jié)構(gòu)圖</p><p>  (1)功能特性概括:</p><p>  AT89C51提供以下標(biāo)準(zhǔn)功能:40個(gè)引腳、4K Bytes Flash片內(nèi)程序存儲(chǔ)器、128 Byte

22、s的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)、32個(gè)外部雙向輸入/輸出(I/O)口、5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷、2個(gè)數(shù)據(jù)指針、2個(gè)16位可編程定時(shí)/計(jì)數(shù)器、2個(gè)全雙工串行通信口、看門狗(WDT)電路、片內(nèi)振蕩器及時(shí)鐘電路。此外,AT89C51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式。空閑模式下,CPU暫停工作,而RAM、定時(shí)/計(jì)數(shù)器、串行通信口、外中斷系統(tǒng)可繼續(xù)工作。掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至

23、外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。</p><p><b>  (2)管腳說明:</b></p><p><b>  VCC:供電電壓。</b></p><p><b>  GND:接地。</b></p><p&

24、gt;  P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),能驅(qū)動(dòng)8個(gè)TTL邏輯門電路。對(duì)端口寫“1”時(shí),被定義為高阻輸入。</p><p>  在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。</p><p>  在Flash編程時(shí),P0口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí)

25、,要求外接上拉電阻。</p><p>  P1口:P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(I)。</p><p>  在Flash編程和程序校驗(yàn)期間,P1接收低8位地址。部分端

26、口還有第二功能,如表4所示</p><p>  表4 P1口部分引腳第二功能</p><p>  P2口:P2口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O口, P2口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(I)。</p&g

27、t;<p>  在訪問外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX@DPTR指令)時(shí),P2口送出高8位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)寄存器(例如執(zhí)行MOVX@Ri指令)時(shí),P2口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中P2寄存器的內(nèi)容),在整個(gè)訪問期間不改變。</p><p>  在Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和其它控制信號(hào)。</p><p&

28、gt;  P3口: P3口是一個(gè)帶有內(nèi)部上拉電阻的雙向8位I/O口, P3口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對(duì)P3口寫“1”時(shí),它們被內(nèi)部的上拉電阻拉高并可作為輸入端口。作輸入口使用時(shí),被外部信號(hào)拉低的P3口將用上拉電阻輸出電流(I)。</p><p>  P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如表5所示:</p><p>  P3口還接收

29、一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。</p><p>  表5 P3口引腳第二功能</p><p>  RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上的高電平時(shí)間將使單片機(jī)復(fù)位。WDT溢出將使該引腳輸出高電平,設(shè)置SFR AUXR的DISRTO位(地址8EH)可打開或關(guān)閉該功能。 DISRTO位缺省為RESET輸出高電平打開狀態(tài)。 </p>

30、;<p>  ALE/:當(dāng)訪問外部存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部寄存器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的正脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。值得注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。</p><p>  對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖()。</p><p>

31、;  如有必要,可通過對(duì)特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只要一條MOVX和MOVC指令才會(huì)激活A(yù)LE。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無效。</p><p>  :程序存儲(chǔ)允許()輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89S51由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次有效,即輸出兩個(gè)脈沖。當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),沒有兩次

32、有效的信號(hào)。</p><p>  EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需要注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。</p><p>  如EA端保持高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。</p><p>  Flash存儲(chǔ)器編程期間,該引腳

33、用于施加+12V編程電壓(VPP)。</p><p>  XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入端。</p><p>  XTAL2:反向振蕩放大器器的輸出端。</p><p> ?。?)晶體振蕩器特性:</p><p>  AT89C51中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別為該反向放

34、大器的輸入端和輸出端。這個(gè)反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器。</p><p>  外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對(duì)外接電容C1、C2雖然沒有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性。如果使用石英晶體,電容應(yīng)該使用30pF10pF。</p><

35、p>  還可以使用外部時(shí)鐘。這種情況下,外部時(shí)鐘脈沖接XTAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端, XTAL2應(yīng)懸空。</p><p>  由于外部時(shí)鐘信號(hào)是通過一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以外部時(shí)鐘信號(hào)的占空比沒有特殊要求,但最小高電平持續(xù)時(shí)間和最大低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。</p><p>  2.2.2 AT89C51的主要性能參數(shù):</p>

36、<p> ?。?)與MCS-51產(chǎn)品指令系統(tǒng)完全兼容。</p><p> ?。?)4K字節(jié)在系統(tǒng)可編程(ISP)Flash閃速存儲(chǔ)器。</p><p> ?。?)1000次擦寫周期。</p><p> ?。?)4.0—5.5V的工作電壓范圍。</p><p> ?。?)全靜態(tài)工作模式:0Hz--33Hz。</p>

37、<p> ?。?)三級(jí)程序加密。</p><p> ?。?)128x8字節(jié)的內(nèi)部RAM。</p><p> ?。?)32個(gè)雙向可編程I/O口線。</p><p> ?。?)2個(gè)16位可編程定時(shí)/計(jì)數(shù)器。</p><p> ?。?0)6個(gè)中斷源。</p><p> ?。?1)全雙工UART串行通道。</p

38、><p> ?。?2)低功耗空閑和掉電模式。</p><p>  (13)中斷可從空閑模式喚醒系統(tǒng)。</p><p> ?。?4)看門狗(WDT)及雙數(shù)據(jù)指針。</p><p> ?。?5)掉電標(biāo)識(shí)和快速編程特性。</p><p> ?。?6)靈活的在系統(tǒng)編程(ISP-字節(jié)或頁寫模式)。</p><p&

39、gt;  第3章 智能電子鐘軟硬件電路的設(shè)計(jì)</p><p><b>  3.1 時(shí)鐘電路</b></p><p>  使用串行接口時(shí)鐘芯片DS1302設(shè)計(jì)時(shí)鐘電路。該設(shè)計(jì)方案以單片機(jī)AT89S51為主控芯片,以串行時(shí)鐘芯片DS1302為核心計(jì)時(shí)芯片,組成數(shù)字時(shí)鐘電路。該電路不但能準(zhǔn)確地計(jì)時(shí)、附加其它功能,而且,其三線接口可以節(jié)省接口資源,在斷電后不丟失時(shí)間和數(shù)

40、據(jù)信息。該設(shè)計(jì)方案的接口電路如圖5所示:</p><p>  圖5 DS1302接口電路</p><p><b>  3.2 硬件設(shè)計(jì)</b></p><p>  該設(shè)計(jì)的硬件電路由主控部分(單片機(jī)AT89C51)、計(jì)時(shí)部分(實(shí)時(shí)時(shí)鐘芯片DS1302)、D1602LCD、電源部分(三端穩(wěn)壓器7805)4個(gè)部分組成。各部分之間相互協(xié)作,構(gòu)成

41、一個(gè)統(tǒng)一的有機(jī)整體,實(shí)現(xiàn)數(shù)字時(shí)鐘的功能。各部分的硬件電路設(shè)計(jì)如下。設(shè)計(jì)總電路圖見附錄一。</p><p>  3.2.1 單片機(jī)AT89C51外圍電路設(shè)計(jì)</p><p>  單片機(jī)AT89S51作為主控芯片,控制整個(gè)電路的運(yùn)行。單片機(jī)外圍需要一個(gè)復(fù)位電路,復(fù)位電路的功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤消復(fù)位信號(hào)。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以

42、防電源開關(guān)或電源插頭分-合過程中引起的抖動(dòng)而影響復(fù)位。該設(shè)計(jì)采用含有二極管的復(fù)位電路,復(fù)位電路可以有效的解決電源毛刺和電源緩慢下降(電池電壓不足)等引起的問題,在電源電壓瞬間下降時(shí)可以使電容迅速放電,一定寬度的電源毛刺也可令系統(tǒng)可靠復(fù)位。復(fù)位電路的設(shè)計(jì)圖如圖6所示:</p><p>  圖6 單片機(jī)復(fù)位電路圖</p><p>  AT89S51具有在系統(tǒng)可編程功能,可以很方便的改寫單片機(jī)

43、存儲(chǔ)器內(nèi)的程序不需要把芯片中從工作環(huán)境中剝離,把AT89S ISP下載口接入電路,可使電路實(shí)現(xiàn)該功能。AT89S51需要接入一個(gè)普通12MHz晶振,為其提供穩(wěn)定的時(shí)鐘脈沖。該設(shè)計(jì)中有6個(gè)八段數(shù)碼顯示管LED,所以,在單片機(jī)AT89S51外圍需要接入6個(gè)三極管來驅(qū)動(dòng)數(shù)碼顯示管。此外,單片機(jī)外圍需要接入3個(gè)開關(guān),用來調(diào)整時(shí)鐘。單片機(jī)外圍電路的設(shè)計(jì)圖如圖7示:</p><p>  3.2.2 DS1302與單片機(jī)的接

44、口設(shè)計(jì)</p><p>  時(shí)鐘芯片DS1302與單片機(jī)AT89S51的接口是由3條線來完成的,單片機(jī)AT89S51的P1.0與時(shí)鐘芯片的數(shù)據(jù)傳輸端相連,P1.1用來作為DS1302輸入時(shí)鐘SCLK控制端,P1.2控制DS1302的復(fù)位輸入端。DS1302接標(biāo)準(zhǔn)32.768KHz石英晶振。DS1302與單片機(jī)的接口電路如圖8所示:</p><p>  圖8 DS1302與AT89C51

45、連接圖</p><p>  3.2.4 電源設(shè)計(jì)</p><p>  時(shí)鐘芯片DS1302有很寬的工作電壓范圍,其工作電壓為2.5~5.5V。單片機(jī)AT89S51的工作電壓范圍相對(duì)較窄,為4.0~5.5V,所以本設(shè)計(jì)中,給電路接入三端穩(wěn)壓器7805,利用它的穩(wěn)壓功能給電路提供穩(wěn)定的+5V電壓,使電路的工作保持很高的可靠性。在電路中接入一個(gè)發(fā)光二極管作為指示燈,可以很方便地指示電源與電路是

46、否接通。該設(shè)計(jì)的電源部分如圖10所示:</p><p>  圖10 電源電路圖</p><p>  3.2.5 按鍵開關(guān)去抖設(shè)計(jì)</p><p>  按鍵開關(guān)在電路中的連接如圖所示。按鍵未按下時(shí),A點(diǎn)電位為高電平5V;按鍵按下時(shí),A點(diǎn)電位為低電平。A點(diǎn)電位就用于向CPU傳遞按鍵的開關(guān)狀態(tài)。但是由于按鍵的結(jié)構(gòu)為機(jī)械彈性開關(guān),在按鍵按下和斷開時(shí),觸點(diǎn)在閉合和斷開瞬

47、間還會(huì)接觸不穩(wěn)定,引起A點(diǎn)電平不穩(wěn)定,如圖11所示,鍵盤的抖動(dòng)時(shí)間一般為5~10ms,抖動(dòng)現(xiàn)象會(huì)引起CPU對(duì)一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤。因此必須設(shè)法消除抖動(dòng)的不良后果。</p><p>  圖11 鍵操作和鍵抖動(dòng)</p><p>  消除抖動(dòng)的不良后果的方法有硬、軟件兩種。</p><p>  為了節(jié)省硬件,通常在單片機(jī)系統(tǒng)中,一般不采用硬件方法消除鍵

48、的抖動(dòng),而是用軟件消除抖動(dòng)的方法。根據(jù)抖動(dòng)特性,在第一次檢測到按鍵按下后,執(zhí)行一段延時(shí)5~10ms讓前延抖動(dòng)消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給5~10ms的延時(shí),待后延抖動(dòng)消失后才轉(zhuǎn)入該鍵處理程序。</p><p><b>  3.3 軟件設(shè)計(jì)</b></p><p>  電子時(shí)鐘的程序主要包括3個(gè)方面的

49、內(nèi)容:一是DS1302從單片機(jī)中讀取數(shù)據(jù)進(jìn)行計(jì)數(shù),二是利用按鍵進(jìn)行時(shí)間的調(diào)整,三是單片機(jī)中讀取DS1302中的數(shù)據(jù)驅(qū)動(dòng)LED數(shù)碼管顯示時(shí)間。STC89C52RC單片機(jī)主要I/O口的分配:P10、P11、P12分別接時(shí)鐘芯片的SCLK、I/O、RST引腳,P13、P14接兩個(gè)獨(dú)立按鍵。</p><p>  圖12 時(shí)間調(diào)整程序流程圖</p><p>  第4章 protues仿真與調(diào)試

50、</p><p><b>  4.1總原理圖</b></p><p>  利用keil軟件編寫源程序。在protues中畫好其電路圖如下圖14所示:</p><p>  圖13 電路板的原理圖</p><p><b>  4.2電路板的仿真</b></p><p><

51、b>  源 程 序</b></p><p>  #include <REG51.H></p><p>  #include <intrins.h></p><p>  #include "lcd.h"</p><p>  #include "1302.h"<

52、;/p><p>  #define uint unsigned int</p><p>  #define uchar unsigned char</p><p>  sbit Set = P3^0; //模式切換鍵</p><p>  sbit Up = P3^3; //加法按鈕</p><p>

53、  sbit Down = P3^6; //減法按鈕</p><p>  sbit out = P3^1; //立刻跳出調(diào)整模式按鈕</p><p>  char done,count,temp,flag,up_flag,down_flag;</p><p>  void show_time(); //液晶顯示程序</p>&l

54、t;p>  void Delay1ms(unsigned int count)</p><p><b>  {</b></p><p>  unsigned int i,j;</p><p>  for(i=0;i<count;i++)</p><p>  for(j=0;j<120;j++);<

55、/p><p><b>  }</b></p><p><b>  /*延時(shí)子程序*/</b></p><p>  void mdelay(uint delay)</p><p><b>  { uint i;</b></p><p>  for(;delay

56、>0;delay--)</p><p>  {for(i=0;i<62;i++) //1ms延時(shí).</p><p><b>  {;}</b></p><p><b>  }</b></p><p><b>  }</b></p><p> 

57、 void outkey() //跳出調(diào)整模式,返回默認(rèn)顯示</p><p>  { uchar Second;</p><p>  if(out==0) </p><p>  { mdelay(8); </p><p><b>  count=0;</b></p><p&

58、gt;  hide_sec=0,hide_min=0,hide_hour=0,hide_day=0,hide_week=0,hide_month=0,hide_year=0;</p><p>  Second=Read1302(DS1302_SECOND);</p><p>  Write1302(0x8e,0x00); //寫入允許</p><p>  Write

59、1302(0x80,Second&0x7f);</p><p>  Write1302(0x8E,0x80); //禁止寫入</p><p>  done=0; </p><p>  while(out==0);</p><p><b>  }</b></p>

60、<p><b>  }</b></p><p>  ////////////////////////////////////////////////////////////////////////////////////////////////////////////</p><p>  void Upkey()//升序按鍵</p><p

61、><b>  { </b></p><p><b>  Up=1;</b></p><p><b>  if(Up==0)</b></p><p><b>  {</b></p><p>  mdelay(8);</p><

62、p>  switch(count)</p><p><b>  {case 1:</b></p><p>  temp=Read1302(DS1302_SECOND); //讀取秒數(shù)</p><p>  temp=temp+1; //秒數(shù)加1</p><p>  up_flag=1; //數(shù)據(jù)調(diào)整后更新標(biāo)

63、志</p><p>  if((temp&0x7f)>0x59) //超過59秒,清零</p><p>  temp=0; </p><p><b>  break;</b></p><p><b>  case 2:</b></p><p&g

64、t;  temp=Read1302(DS1302_MINUTE); //讀取分?jǐn)?shù)</p><p>  temp=temp+1; //分?jǐn)?shù)加1</p><p>  up_flag=1;</p><p>  if(temp>0x59) //超過59分,清零</p><p><b>  temp=0;</

65、b></p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  temp=Read1302(DS1302_HOUR); //讀取小時(shí)數(shù)</p><p>  temp=temp+1; //小時(shí)數(shù)加1</p><

66、;p>  up_flag=1;</p><p>  if(temp>0x23) //超過23小時(shí),清零</p><p><b>  temp=0;</b></p><p><b>  break;</b></p><p><b>  case 4:</b><

67、;/p><p>  temp=Read1302(DS1302_WEEK); //讀取星期數(shù)</p><p>  temp=temp+1; //星期數(shù)加1</p><p>  up_flag=1;</p><p>  if(temp>0x7) </p><p><b>  temp=1;</b&g

68、t;</p><p><b>  break;</b></p><p><b>  case 5:</b></p><p>  temp=Read1302(DS1302_DAY); //讀取日數(shù)</p><p>  temp=temp+1; //日數(shù)加1</p><p>

69、  up_flag=1;</p><p>  if(temp>0x31)</p><p><b>  temp=1;</b></p><p><b>  break;</b></p><p><b>  case 6:</b></p><p>  

70、temp=Read1302(DS1302_MONTH); //讀取月數(shù)</p><p>  temp=temp+1; //月數(shù)加1</p><p>  up_flag=1;</p><p>  if(temp>0x12)</p><p><b>  temp=1;</b></p><p>

71、;<b>  break;</b></p><p><b>  case 7:</b></p><p>  temp=Read1302(DS1302_YEAR); //讀取年數(shù)</p><p>  temp=temp+1; //年數(shù)加1</p><p>  up_flag=1;</p>

72、;<p>  if(temp>0x85)</p><p><b>  temp=0;</b></p><p><b>  break;</b></p><p>  default:break;</p><p><b>  }</b></p>&

73、lt;p>  while(Up==0);</p><p><b>  }</b></p><p><b>  }</b></p><p>  ////////////////////////////////////////////////////////////////////////////////////////

74、////////////////////</p><p>  void Downkey()//降序按鍵</p><p><b>  { </b></p><p><b>  Down=1;</b></p><p>  if(Down==0)</p><p><b

75、>  {</b></p><p>  mdelay(8);</p><p>  switch(count)</p><p><b>  {case 1:</b></p><p>  temp=Read1302(DS1302_SECOND); //讀取秒數(shù)</p><p>  t

76、emp=temp-1; //秒數(shù)減1</p><p>  down_flag=1; //數(shù)據(jù)調(diào)整后更新標(biāo)志</p><p>  if(temp==0x7f) //小于0秒,返回59秒</p><p>  temp=0x59;</p><p><b>  break;</b></

77、p><p><b>  case 2:</b></p><p>  temp=Read1302(DS1302_MINUTE); //讀取分?jǐn)?shù)</p><p>  temp=temp-1; //分?jǐn)?shù)減1</p><p>  down_flag=1;</p><p>  if(temp==-1)<

78、;/p><p>  temp=0x59; //小于0秒,返回59秒</p><p><b>  break;</b></p><p><b>  case 3:</b></p><p>  temp=Read1302(DS1302_HOUR); //讀取小時(shí)數(shù)</p><

79、p>  temp=temp-1; //小時(shí)數(shù)減1</p><p>  down_flag=1;</p><p>  if(temp==-1)</p><p>  temp=0x23;</p><p><b>  break;</b></p><p><b>  case 4:&l

80、t;/b></p><p>  temp=Read1302(DS1302_WEEK); //讀取星期數(shù)</p><p>  temp=temp-1; //星期數(shù)減1</p><p>  down_flag=1;</p><p>  if(temp==0)</p><p>  temp=0x7;;</p&

81、gt;<p><b>  break;</b></p><p><b>  case 5:</b></p><p>  temp=Read1302(DS1302_DAY); //讀取日數(shù)</p><p>  temp=temp-1; //日數(shù)減1</p><p>  down_fl

82、ag=1;</p><p>  if(temp==0)</p><p><b>  temp=31;</b></p><p><b>  break;</b></p><p><b>  case 6:</b></p><p>  temp=Read13

83、02(DS1302_MONTH); //讀取月數(shù)</p><p>  temp=temp-1; //月數(shù)減1</p><p>  down_flag=1;</p><p>  if(temp==0)</p><p><b>  temp=12;</b></p><p><b>  b

84、reak;</b></p><p><b>  case 7:</b></p><p>  temp=Read1302(DS1302_YEAR); //讀取年數(shù)</p><p>  temp=temp-1; //年數(shù)減1</p><p>  down_flag=1;</p><p>

85、;  if(temp==-1)</p><p>  temp=0x85;</p><p><b>  break;</b></p><p>  default:break;</p><p><b>  }</b></p><p>  while(Down==0);</p

86、><p><b>  }</b></p><p><b>  }</b></p><p>  void Setkey()//模式選擇按鍵</p><p><b>  {</b></p><p><b>  Set=1;</b></

87、p><p>  if(Set==0)</p><p><b>  {</b></p><p>  mdelay(8);</p><p>  count=count+1; //Setkey按一次,count就加1</p><p>  done=1; //進(jìn)入調(diào)整模式</p><

88、;p>  while(Set==0);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void keydone()//按鍵功能執(zhí)行</p><p>  { uchar Second;</p><p> 

89、 if(flag==0) //關(guān)閉時(shí)鐘,停止計(jì)時(shí)</p><p>  { Write1302(0x8e,0x00); //寫入允許</p><p>  temp=Read1302(0x80);</p><p>  Write1302(0x80,temp|0x80);</p><p>  Write1302(0x8e,0x80); //禁

90、止寫入</p><p><b>  flag=1;</b></p><p><b>  }</b></p><p>  Setkey(); //掃描模式切換按鍵</p><p>  switch(count)</p><p>  {case 1:

91、do //count=1,調(diào)整秒</p><p><b>  {</b></p><p>  outkey(); //掃描跳出按鈕</p><p>  Upkey(); //掃描加按鈕</p><p>  Downkey(); //

92、掃描減按鈕</p><p>  if(up_flag==1||down_flag==1) //數(shù)據(jù)更新,重新寫入新的數(shù)據(jù)</p><p><b>  {</b></p><p>  Write1302(0x8e,0x00); //寫入允許</p><p>  Write1302(0x80,temp|0x80); //寫

93、入新的秒數(shù)</p><p>  Write1302(0x8e,0x80); //禁止寫入</p><p>  up_flag=0;</p><p>  down_flag=0;</p><p><b>  }</b></p><p>  hide_sec++; //位閃計(jì)數(shù)<

94、;/p><p>  if(hide_sec>3)</p><p>  hide_sec=0;</p><p>  show_time(); //液晶顯示數(shù)據(jù)</p><p>  }while(count==2);break; </p><p>  case 2:do //co

95、unt=2,調(diào)整分</p><p><b>  {</b></p><p>  hide_sec=0;</p><p><b>  outkey();</b></p><p><b>  Upkey();</b></p><p>  Downkey();

96、</p><p>  if(temp>0x60)</p><p><b>  temp=0;</b></p><p>  if(up_flag==1||down_flag==1)</p><p><b>  {</b></p><p>  Write1302(0x8e,

97、0x00); //寫入允許</p><p>  Write1302(0x82,temp); //寫入新的分?jǐn)?shù)</p><p>  Write1302(0x8e,0x80); //禁止寫入</p><p>  up_flag=0;</p><p>  down_flag=0;</p><p><b>  }&l

98、t;/b></p><p>  hide_min++;</p><p>  if(hide_min>3)</p><p>  hide_min=0;</p><p>  show_time();</p><p>  }while(count==3);break;</p><p>  

99、case 3:do //count=3,調(diào)整小時(shí)</p><p><b>  {</b></p><p>  hide_min=0; </p><p><b>  outkey();</b></p><p><b>  Upkey();</b></

100、p><p>  Downkey();</p><p>  if(up_flag==1||down_flag==1)</p><p><b>  {</b></p><p>  Write1302(0x8e,0x00); //寫入允許</p><p>  Write1302(0x84,temp); //

101、寫入新的小時(shí)數(shù)</p><p>  Write1302(0x8e,0x80); //禁止寫入</p><p>  up_flag=0;</p><p>  down_flag=0;</p><p><b>  }</b></p><p>  hide_hour++;</p><

102、p>  if(hide_hour>3)</p><p>  hide_hour=0;</p><p>  show_time();</p><p>  }while(count==4);break;</p><p>  case 4:do //count=4,調(diào)整星期</p><p>

103、;<b>  {</b></p><p>  hide_hour=0; </p><p><b>  outkey();</b></p><p><b>  Upkey();</b></p><p>  Downkey();</p><p>  if(u

104、p_flag==1||down_flag==1)</p><p><b>  {</b></p><p>  Write1302(0x8e,0x00); //寫入允許</p><p>  Write1302(0x8a,temp); //寫入新的星期數(shù)</p><p>  Write1302(0x8e,0x80); //禁

105、止寫入</p><p>  up_flag=0;</p><p>  down_flag=0;</p><p><b>  }</b></p><p>  hide_week++;</p><p>  if(hide_week>3)</p><p>  hide_we

106、ek=0;</p><p>  show_time();</p><p>  }while(count==5);break;</p><p>  case 5:do //count=5,調(diào)整日</p><p><b>  {</b></p><p>  hide_week=

107、0; </p><p><b>  outkey();</b></p><p><b>  Upkey();</b></p><p>  Downkey();</p><p>  if(up_flag==1||down_flag==1)</p><p><b>  

108、{</b></p><p>  Write1302(0x8e,0x00); //寫入允許</p><p>  Write1302(0x86,temp); //寫入新的日數(shù)</p><p>  Write1302(0x8e,0x80); //禁止寫入</p><p>  up_flag=0;</p><p>

109、  down_flag=0;</p><p><b>  }</b></p><p>  hide_day++;</p><p>  if(hide_day>3)</p><p>  hide_day=0;</p><p>  show_time();</p><p>

110、;  }while(count==6);break;</p><p>  case 6:do //count=6,調(diào)整月</p><p><b>  {</b></p><p>  hide_day=0; </p><p><b>  outkey();</b></p&

111、gt;<p><b>  Upkey();</b></p><p>  Downkey();</p><p>  if(up_flag==1||down_flag==1)</p><p><b>  {</b></p><p>  Write1302(0x8e,0x00); //寫入允

112、許</p><p>  Write1302(0x88,temp); //寫入新的月數(shù)</p><p>  Write1302(0x8e,0x80); //禁止寫入</p><p>  up_flag=0;</p><p>  down_flag=0;</p><p><b>  }</b><

113、/p><p>  hide_month++;</p><p>  if(hide_month>3)</p><p>  hide_month=0;</p><p>  show_time();</p><p>  }while(count==7);break;</p><p>  case 7

114、:do //count=7,調(diào)整年</p><p><b>  {</b></p><p>  hide_month=0; </p><p><b>  outkey();</b></p><p><b>  Upkey();</b></p>

115、<p>  Downkey();</p><p>  if(up_flag==1||down_flag==1)</p><p><b>  {</b></p><p>  Write1302(0x8e,0x00); //寫入允許</p><p>  Write1302(0x8c,temp); //寫入新的年

116、數(shù)</p><p>  Write1302(0x8e,0x80); //禁止寫入</p><p>  up_flag=0;</p><p>  down_flag=0;</p><p><b>  }</b></p><p>  hide_year++;</p><p> 

117、 if(hide_year>3)</p><p>  hide_year=0;</p><p>  show_time();</p><p>  }while(count==8);break;</p><p>  case 8: count=0;hide_year=0; //count8, 跳出調(diào)整模式,返回默認(rèn)顯示狀態(tài)</p&

118、gt;<p>  Second=Read1302(DS1302_SECOND);</p><p>  Write1302(0x8e,0x00); //寫入允許</p><p>  Write1302(0x80,Second&0x7f);</p><p>  Write1302(0x8E,0x80); //禁止寫入</p&

119、gt;<p><b>  done=0;</b></p><p>  break; //count=7,開啟中斷,標(biāo)志位置0并退出</p><p>  default:break;</p><p><b>  }</b></p><p><b>  }</b>&l

120、t;/p><p>  void show_time() //液晶顯示程序</p><p><b>  {</b></p><p>  DS1302_GetTime(&CurrentTime); //獲取時(shí)鐘芯片的時(shí)間數(shù)據(jù)</p><p>  TimeToStr(&CurrentTime);

121、//時(shí)間數(shù)據(jù)轉(zhuǎn)換液晶字符</p><p>  DateToStr(&CurrentTime); //日期數(shù)據(jù)轉(zhuǎn)換液晶字符</p><p>  GotoXY(0,1);</p><p>  Print(CurrentTime.TimeString); //顯示時(shí)間</p><p>  GotoXY(0,0);</p&g

122、t;<p>  Print(CurrentTime.DateString); //顯示日期</p><p>  GotoXY(15,0);</p><p>  Print(week_value); //顯示星期</p><p>  GotoXY(11,0);</p><p>  Print("W

123、eek"); //在液晶上顯示 字母 week</p><p>  Delay1ms(400); //掃描延時(shí)</p><p><b>  }</b></p><p><b>  main()</b></p><p><b>  {</b&g

124、t;</p><p>  flag=1; //時(shí)鐘停止標(biāo)志</p><p>  LCD_Initial(); //液晶初始化</p><p>  Initial_DS1302(); //時(shí)鐘芯片初始化</p><p>  up_flag=0;</p><p>  down_flag=0;<

125、;/p><p>  done=0; //進(jìn)入默認(rèn)液晶顯示</p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  while(done==1)</p><p>  keydone(); //

126、進(jìn)入調(diào)整模式</p><p>  while(done==0)</p><p><b>  { </b></p><p>  show_time(); //液晶顯示數(shù)據(jù)</p><p>  flag=0; </p><p>  Se

127、tkey(); //掃描各功能鍵</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  LCD頭文件:</b></p><p> 

128、 #ifndef LCD_CHAR_1602_2005_4_9</p><p>  #define LCD_CHAR_1602_2005_4_9</p><p>  #include <intrins.h></p><p>  /***********1602液晶顯示部分子程序****************/</p><p> 

溫馨提示

  • 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)論