中文摘要
數字電子鐘是隨著數字電力電子技術發展的產物,其利用數字電路原理來顯示秒、分、時的計時裝置。與傳統的機械鐘相比,它具有走時準確、顯示直觀、無機械傳動裝置等優點,因而得到廣泛應用。隨著單片機微機原理的發展和石英振蕩器的廣泛應用,使得基于單片機控制的電子鐘的走時精度和可調性更具有優勢,遠超老式的機械鐘表和基于555芯片的數字電子鐘。
本設計試基于清翔電子STC89C52單片機為核心,以匯編語言作為軟件設計程序的數字顯示電子鐘,輔以必要的按鍵調整電路、復位電路、顯示電路、驅動電路,配合6位7段共陰極LED數碼管顯示實時數據,按鍵可以進行校隊調整。該數字電子鐘有時分秒顯示功能以及時間的校隊的功能。系統軟件設計主要實現參數設置、串行口數據接收、指令發送以及數據的顯示和存儲,并且實現鍵盤、數碼管顯示器等各模塊的功能。本次設計首先利用Proteus軟件的ISIS電子電路仿真功能和Keil匯編語言編輯功能實現硬件和軟件原理上的突破和功能實現。然后基于此又利用清翔電子STC89C52單片機實現由原理到實物的轉化。此次設計,深化和擴充在單片機原理及相關課程方面的基本知識、基本理論和基本技能熟悉設計過程,了解設計步驟,掌握設計內容,培養設計電路、實現軟件編程和編寫設計說明書能力的目的,為今后從事相關方面的實際工作打下良好基礎
目 錄
一、課程設計任務及要求
1.1設計基本要求
1.2 設計目的
1.3總體方案設計
1.4電子鐘的時間調整方案
二、系統功能描述
2.1功能說明
三、電路設計
3.1電子鐘硬件總設計電路
3.2 CPU電路
3.3 時鐘電路
3.4 驅動電路
3.5 按鍵控制電路
四、模塊設計
4.1 程序設計流程
五、調試
5.1 keil軟件仿真調試
5.2 Proteus仿真調試
5.3 實物運行測試
六、設計體會與小結
6.1心得感悟
七、參考文獻
八、附錄
8.1系統程序
8.2電路原理圖
8.3清翔電子STC89C52原理圖
一、課程設計任務及要求1.1設計基本要求 (1)設計AT89S51的最小系統; (2)LED顯示電路及與STC89S51接口,LED數碼塊顯示時、分、秒; (3)時鐘調整電路及與STC89S51接口; (4)電子時匯編鐘程序設計; (5)基于Proteus的電子時鐘原理及仿真實現; (6)電子時鐘實物制作; 1.2設計目的 (1)熟悉AT89C51內部定時器/計數器原理和應用,把理論加以實踐; (2)了解使用單片機處理復雜邏輯的方法; (3)掌握多位數碼動態顯示的方法; (4)掌握多個按鍵的查詢和處理方法 1.3總體方案設計 (1)定時初值計算: 把定時器設為工作方式1,定時時間為62.5ms,則計數溢出16次即得時鐘計時最小單位秒。 假設使用T/C0,方式1,50ms定時,fosc=12MHz。 則初值X滿足(2^16-X)×1/12MHz×12μs =62.5ms X=3036→101111011100→0BDCH 采用中斷方式進行溢出次數累計,計滿16次為秒計時(1秒) 從秒到分和從分到時的計時是通過累加和數值比較實現。 (2)電子鐘的時間顯示方案選擇: 電子鐘的時鐘時間在六位數碼管上進行顯示,因此,在內部RAM中設置顯示緩沖區共8個單元。 LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 無 無 7EH 7DH 7CH 7BH 7AH 79 時十位 時個位 分十位 分個位 秒十位 秒個位 靜態顯示:所謂靜態顯示,就是當顯示器顯示某一字符時,相應的發光二極管恒定的導通或截止。該方式每一位都需要一個8 位輸出口控制。靜態顯示時較小的電流能獲得較高的亮度,且字符不閃爍。但當所顯示的位數較多時,靜態顯示所需的I/O口太多,造成了資源的浪費。 動態顯示:所謂動態顯示,就是一位一位的輪流點亮各個位,對于顯示器的每一位來說,每隔一段時間點亮一次。利用人的視覺暫留功能可以看到整個顯示,但必須保證掃描速度足夠快,字符才不閃爍。顯示器的亮度既與導通電流有關,也于點亮時間與間隔時間的比例有關。調整參數可以實現較高穩定度的顯示。動態顯示節省了I/O口,降低了能耗。 從節省I/O口和降低能耗出發,本設計采用動態顯示。 1.4電子鐘的時間調整方案 電子鐘設置3個按鍵通過程序控制來完成電子鐘的時間調整。 K5鍵復位 K1鍵調整時; K2鍵調整分; K3鍵調整秒 K4鍵完成調整 本次課程設計的按鍵通過外接button開關,來實現單片機對所選取功能查詢。根據理論知識我們知道,機械開關可能存在噪音的干擾,導致對高低點位識別錯誤,這是此方案的漏洞。最好的是外加去抖電路,例如D觸發器,或者軟件去抖。但由于按鍵的功能是對時間的加一調整,系統對電位識別準確度要求不是很高,同時受制于實物的限制,所以本次設計仍然采用了鍵盤查詢。
二、系統功能描述2.1功能說明 (1)利用STC89C52單片機內部的定時/計數器、中斷系統、以及按鍵鍵盤和LED顯示器等部件,設計一個單片機電子時鐘。設計的電子時鐘通過數碼管顯示,并能通過按鍵實現設置時間和復位控制等。 (2)此外還要實現對時間的調整功能,89c52的P1.0、P1.1、P1.2、P1.3、RST外接五個獨立按鍵,當按下P1.0按鍵時,系統進入調時鐘加一的顯示功能;當按下P1.1按鍵時,系統進入分鐘加一顯示的功能;當按下P1.2按鍵時,系統進入秒針加一顯示功能,當按下P1.3按鍵時,系統進入完成設置,確認開始計時的顯示功能;當按下RST按鍵時,實現對電子時鐘進行復位的功能。 (3)整個系統采用應用廣泛的AT89S52作為時鐘控制芯片,利用單片機內部的定時器\計數器來實現的,它的處理過程如下:首先設定單片機內部的一個定時器\計數器工作于定時方式,對機器周期計數形成基準時間,然后用另一個定時器\計數器或軟件計數的方法對基準時間計數形成秒,秒計60次形成分,分計60次形成小時,小時計24次則計滿一天,上述時分秒計滿即清零。然后通過數碼管把它們的內容在相應位置顯示出來即可。 (4)六位一體共陰數碼管是對實時時間以及所調整加一時間的顯示,采取的是動態顯示的方案,六位數碼管分別對應時鐘高低位、分鐘高低位、秒鐘高低位。 (3)在使用基于Proteus設計仿真使開發了硬件和軟件上的鬧鐘提醒功能,但考慮到STC89C51實物的按鍵位置和數量的限制,所以實物并沒有鬧鐘提醒功能,在此就不過多介紹。 三、電路設計3.1電子鐘硬件總設計電路 此設計原理框圖如圖1所示,此電路包括以下六個部分:單片機,按鍵,復位電路,驅動電路、晶振及顯示電路。 .2CPU電路 中央處理器(CPU)是整個單片機的核心部件,是8位數據寬度的處理器,能處理8位二進制數據或代碼,CPU負責控制、指揮和調度整個單元系統協調的工作,完成運算和控制輸入輸出功能等操作。
1、電源類引腳 VCC(40腳):接+5 V電源正端。 VSS(20腳):接地端。 2、時鐘類引腳 XTAL1(19腳) 和XTAL2(18腳):接外部石英晶體的一端。 3、I/O口引腳 P0口(39~32腳):P0.0~P0.7統稱為P口。 P1口(1~8腳):P1.0~P1.7統稱為P1口可作為準雙向I/O口使用。 P2口(21~28腳):P2.0~P2.7統稱為P2口,一般可作為準雙向I/O口使用。 P3口(10~17腳):P3.0~P3.7統稱為P3口,除了充當I/O口的功能,還有第二功能。 4、控制引腳 RST/VPP(9腳):復位引腳,引腳上出現2個機器周期的高電平將使單片機復位。 LE/PROG(30腳):地址鎖存允許信號。 PSEN(29角):外部存儲器讀選通信號。 EA/Vpp(31角):程序存儲器的內外部選通,接低電平從外部程序存儲器讀指令,如果接高電平則從內部程序存儲器讀指令 3.2手動復位電路 如圖3.2所示,復位電路采用上電自動復位和按鍵手動復位設計在一起,主要由型號為1nF的電解電容,8.2K和220的電阻以及按鍵S3構成,當開關按下時引腳RST為低電平0,斷開時引腳為高電平1。 圖3.2復位電路 3.3時鐘電路 如圖3.3所示,在內部方式時鐘電路中,必須在XTAL1和XTAL2引腳兩端跨接石英晶體振蕩器和兩個微調電容構成振蕩電路,通常C1和C2一般取22pF,晶振的頻率取值在1.2MHz~12MHz之間。對于外接時鐘電路,要求XTAL1接地,XTAL2腳接外部時鐘,對于外部時鐘信號并無特殊要求,只要保證一定的脈沖寬度,時鐘頻率低于12MHz即可。晶體振蕩器的振蕩信號從XTAL2端送入內部時鐘電路,它將該振蕩信號二分頻,產生一個兩相時鐘信號P1和P2供單片機使用。時鐘信號的周期稱為狀態時間S,它是振蕩周期的2倍,P1信號在每個狀態的前半周期有效,在每個狀態的后半周期P2信號有效。CPU就是以兩相時鐘P1和P2為基本節拍協調單片機各部分有效工作的。 
圖3.3晶振電路 3.4驅動電路 由于本次設計用到了六位一體的共陰數碼管,受制于P0口的帶負載能力,所以增加了74LS245芯片來提升帶負載能力。 圖3.41即為基于74LS245的驅動電路,圖3.42為74LS245的內部引腳以下列出其主要功能 當片選端/CE低電平有效時 DIR=“0”,信號由B向A傳輸;(接收) DIR=“1”,信號由A向B傳輸;(發送) 當CE為高電平時,A、B均為高阻態。  圖3.41 74LS245內部結構 圖3.42驅動顯示電路3.5按鍵控制電路 如圖3.5所示,按鍵開關K1、K2、K3、K4分別接P1.0、P1.1、P1.2 P1.3端,K1、K2、K3分別選擇對時、分、秒自加,低電平有效,K4用于確認完成時間校隊,開始計時。 
圖3.5 按鍵電路 3.6 數碼管動態顯示電路
七段共陰數碼管顯示原理如圖3.61,數碼管首先從上到右,到下到左,到中間,最后到小數點分別標記為a b c d e f g dp八段其中小數點位DP為最高位,a段為最低位,要想顯示什么字符只需要使對應的段發光即可,一般的習慣是單片機的端口的 圖3.61七段數碼管原理 最低位接a段,次低位接b段,...最高位(如p0.7)接dp,顯示碼從高往低表示為為 dp g f e d c b a如要顯示“1”,只需要將b、c段點亮即可,若是共陰極,片選是低電平選中,某一段輸出高電平點亮,即顯示碼為00000110 即0x06,其他的依照該方法類推。 對圖3.62六位一體的共陰數碼管,某一時刻位選通其中一位,如P2口送出位信號如20H,則P2.5為1,其余位選位均為0,則最左邊的數碼管被選中;這時在字型口輸出該位要顯示的數字或字符的字型,亮1ms左右;接著位選選通另一位,其余位選關閉,字型口輸出該位要顯示的數字或字符的字型,雖然這時前一位位選已關閉,但基于眼睛的惰性,前一位顯示的數字或字型還留在眼中,依次一位位循環顯示下去,直至最后一位顯示完畢,一個動態掃描顯示結束。 由圖3.63,可見動態掃描顯示是在執行動態掃描顯示程序的。要連續顯示必須反復的去執行動態掃描顯示程序。一般可把動態掃描顯示編成個子程序,主程序反復去調用它。人眼的惰性有一定時間,一般10ms左右, 超過這一時間再去執行顯示程序,它就會閃爍,所以LED的位數不能太多 
圖3.62 六位一體共陰數碼管 圖3.63為六位數碼管動態顯示原理框圖 
圖3.61 數碼管動態顯示 四、模塊設計4.1程序設計流程 電子時鐘的軟件系統由主程序和子程序組成,主程序程序包含初始化參數設置、按鍵處理、數碼管顯示模塊等 (1)主程序 主程序先對顯示單元和定時器/計數器初始化,然后重復調用數碼管顯示模塊和按鍵處理模塊,當有鍵按下,則轉入相應的功能程序。主程序執行流程如圖4.11 圖4.11 主程序框圖
五、調試5.1keil軟件仿真調試 (1)工程參數設置 用鼠標左鍵單擊主菜單Project一>Options forTarget'Targetl彈出工程參數設置對話框。關于工程參數設置的內容很多,篇幅所限,這里僅介紹通常需要設置的三個參數: 設置CPU型號。前面已經進行了設置。 在設置對話框的"Target"標簽下"Xtal(Mhz)"處輸入單片機的晶振 (2)編譯源文件 鼠標左鍵單擊主菜單Project一>Built target或快捷按鈕編譯文件。若有語法錯誤,輸出窗口將有相應提示信息。 雙擊提示信息行,光標會停留在源程序出錯處。在此次程序設計中,經檢查發現:程序3條LCALL指令被錯誤輸入成了LCAAL.用戶可根據提示修改源程序,然后再次編譯。注意。Keil具有語法檢查功能,源程序中正確的指令關鍵詞將變顏色,沒變色的為輸入錯誤,方便用戶查找語法錯誤。 (3)調試程序 源程序編譯通過,表明語法正確,卻并不能保證該程序能夠正確運行。還需要對其邏輯功能進行調試。Keil軟件具有很強的軟件仿真功能。 鼠標左擊主菜單Debug一>Sta№top DebugSession子菜單或調試/編輯模式切換按鈕。進入調試程序工作模式,軟件窗口如圖5所示。重復點擊該按鈕可以實現在編輯模式和調試模式之間進行切換。 調試程序時的程序運行控制按鈕從左到右依次為復位、連續運行,暫停、單步、過程單步、執行完當前子程序、運行到光標當前行。復位按鈕模擬芯片的復位,它將使程序回到最開頭處執行。當程序處于停止狀態時復位才有效,程序處于運行狀態時停止按鈕才有效。 5.2 Proteus仿真調試 (1)電路連接故障分析 Proteus的連線功能很強,如可以雙擊左鍵重復上次連線,雙擊右鍵刪除連線等。在連線過程中就出現了本以為連接上的節點,實際上卻沒有連接的問題,經分析發現連接上的點會有連接點出現,及時糾正了錯誤。又例如在某些不易連接且需要較長的線路連接端口,可采用網絡標號連接,但在標號連接時,要切記標號要易于區分,相同端口的標號一定要相同,連接過程中就有因為標號連接重復的問題,而導致數碼管顯示亂碼的問題。在調試的時候可以通過觀察仿真的電位,紅點為高電平、藍點為低電平,或者添加電位計,例如在數碼管顯示,送位選碼時就發現有一位未被選中,故立即調整位選碼RR程序代碼。 (2)仿真結果分析 電子時鐘主要的設計要求是能夠實現時鐘的一般功能,以及包括時間的調整功能,這個基于單片機的電子時鐘基本上實現了上述功能,能夠通過時間調整電路對時間進行調整以及復位,24小時計滿后能自動清零。 啟動仿真結果5.21 
圖5.21啟動仿真結果 正常計時仿真結果如圖5.22 
圖5.2 正常計時仿真結果 5.3 實物運行測試 在確認程序的調試和仿真結果的無誤后,根據清翔電子STC89C51所給的版本電路原理圖,進一步調整送顯和按鍵查詢程序,根據實際情況表明,時、分、秒的調整校對功能均為正常,設置完成按鍵也能對所校對時間開啟計時,故基本功能都正常實現。唯一不足的是計時精度有待提高,通過走時結果的實際情況和手機走時結果發現大概一個小時會慢1min左右。如圖5.31上電復位運行結果,5.32為正常走時結果 
圖5.31上電復位運行結果 
圖5.31 正常走時結果
六、設計體會與小結6.1心得感悟 單片機作為我們主要的專業課程之一,我覺得單片機課程設計很有必要,而且很有意義。但當拿到題目時,確實不知道怎么著手,有些迷茫,上網查資料,問同學,在同學的幫助下,歷時一個星期,解決一個又一個的困難,終于完成任務。 在這次課程設計中,運用到了很多以前的專業知識,雖然過去從未獨立應用過它們,但在學習的過程中帶著問題去學我發現效率很高,這是我做這次課程設計的一大收獲。另外,要做好一個課程設計,就必須做到:在設計程序之前,對所用單片機的內部結構有一個系統的了解,知道該單片機內有哪些資源;要有一個清晰的思路和一個完整的的軟件流程圖;在設計程序時,不能妄想一次就將整個程序設計好,反復修改、不斷改進是程序設計的必經之路;要養成注釋程序的好習慣,一個程序的完美與否不僅僅是實現功能,而應該讓人一看就能明白你的思路,這樣也為資料的保存和交流提供了方便;在設計課程過程中遇到問題是很正常的,但我們應該將每次遇到的問題記錄下來,并分析清楚,以免下次再碰到同樣的問題的課程設計結束了,但是從中學到的知識會讓我受益終身。發現、提出、分析、解決問題和實踐能力的提高都會受益于我在以后的學習、工作和生活中。設計過程,好比是我們人類成長的歷程,常有一些不如意,但畢竟這是第一次做,難免會遇到各種各樣的問題。在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,不能靈活運用。 通過這次設計,我懂得了學習的重要性,了解到理論知識與實踐相結合的重要意義,學會了堅持、耐心和努力,這將為自己今后的學習和工作做出了最好的榜樣。另外,要非常感謝我的指導老師,是她指引我克服一個由一個的困難,讓我學會對困難無所畏懼,以及對問題的一些很重要的思考方法。 我學會對困難無所畏懼,以及對問題的一些很重要的思考方法 - ORG 0000H
- LJMP MAIN
- ORG 000BH
- LJMP SHIZ
- ORG 30H
- MAIN:MOV 79H,#00H ;秒針低位地址
- MOV 7AH,#00H ;秒針高位地址
- MOV 7BH,#00H ;分針低位地址
- MOV 7CH,#00H ;分針高位地址
- MOV 7DH,#00H ;時針低位地址
- MOV 7EH,#00H ;時針高位地址
- MOV TMOD,#01H ;定時器工作于方式1
- MOV TL0,#0DCH ;賦初值產生62.5ms中斷
- MOV TH0,#0BH
- MOV SP,#60H
- SETB EA ;開中斷
- SETB ET0
- SETB TR0
- MOV 30H,#10H ;16次中斷產生1S計時
- LED1:LCALL XIANSHI ;送顯、依此查詢是否調整時、分、秒
- JNB P3.0,L1
- T2: JNB P3.1,L2
- T3:JNB P3.2,L3
- T4:JNB P3.3,L4
- LJMP LED1 ;中斷等待
- L1:LCALL XIANSHI;查詢到時針有調整一次則送顯、關中斷、接著查詢分針
- JB P3.0,T2
- CLR EA
- CLR TR0
- LL1:LCALL XIANSHI
- JNB P3.0,LL1 ;查詢時針調整、送顯
- MOV R0,#7EH ;送時針高位地址
- LCALL DAAD1 ;調用DA十進制調整、分離高低位
- MOV A,R2 ;判斷時針是否調整到24,若到則調用清零
- XRL A,#24H ;時針未滿24則繼續計時
- JNZ LED1
- LCALL CLR0 ;時針計滿,時針清零、送顯
- LJMP LED1
- L2:LCALL XIANSHI ;查詢到分針有調整一次則送顯、關中斷、接著查詢分針
- JB P3.1,T3
- CLR EA
- CLR TR0
- LL2:LCALL XIANSHI
- JNB P3.1,LL2 ;查詢分針調整、送顯
- MOV R0,#7CH ;送時針高位地址
- LCALL DAAD1 ;調用DA十進制調整、分離高低位
- MOV A,R2 ;判斷分針是否調整到60,若到則調用清零
- XRL A,#60H ;分針未滿60則繼續計時
- JNZ LED1
- LCALL CLR0 ;時針計滿,時針清零、送顯
- LJMP LED1
- L3:LCALL XIANSHI ;查詢到秒針有調整一次則送顯、關中斷、接著查詢分針
- JB P3.2,T4
- CLR EA
- CLR TR0
- LL3:LCALL XIANSHI ;查詢秒針調整、送顯
- JNB P3.2,LL3 ;送時針高位地址
- MOV R0,#7AH ;調用DA十進制調整、分離高低位
- LCALL DAAD1 ;判斷分針是否調整到60,若到則調用清零
- MOV A,R2 ;分針未滿60則繼續計時
- XRL A,#60H
- JNZ LED1
- LCALL CLR0 ;時針計滿,時針清零、送顯
- LJMP LED1
- L4:LCALL XIANSHI
- JB P3.3,TT0
- LL4:LCALL XIANSHI ;查詢是否設置完成按鈕被按下
- JNB P3.3,LL4
- SETB EA ;若時分秒確認調整結束,則重開中斷,開始計時
- SETB TR0
- TT0:LJMP LED1
- SHIZ:PUSH PSW ;累加器和程序狀態寄存器入棧,保護
- PUSH ACC
- SETB PSW.3 ;切換工作組寄存器
- MOV TL0,#0DCH ;定時方式1初值重載
- MOV TH0,#0BH
- MOV A,30H ;累加器賦值16
- DEC A ;累加器進入中斷一次則減一
- MOV 30H,A ;減一后A給30H
- JNZ RET0 ;判斷16*62.5ms是否到來;未到則返回等待
- MOV 30H,#10H ;若1S未來則重新賦值16給30H
- MOV R0,#7AH ;秒針地址給R0
- LCALL DAAD1 ;調用DA十進制調整、分離高低位
- MOV A,R2 ;秒針DA調整結果送A
- XRL A,#60H ;判斷秒針是否計到60,若到60則A為0
- JNZ RET0 ;查詢累加器A是否為0,不為零送顯
- LCALL CLR0 ;累加器為0則秒針清零,向分鐘進位
- MOV R0,#7CH ;分針地址給R0
- LCALL DAAD1 ;調用DA十進制調整、分離分針高低位
- MOV A,R2 ;分針DA調整結果送A
- XRL A,#60H ;判斷分針是否計到60,若到60則A為0
- JNZ RET0 ;查詢累加器A是否為0,不為零送顯
- LCALL CLR0 ;累加器為0則秒針清零,向時針進位
- MOV R0,#7EH ;時針地址給R0
- LCALL DAAD1 ;調用DA十進制調整、分離時針高低位
- MOV A,R2 ;時針DA調整結果送A
- XRL A,#24H ;判斷時針是否計到24,若到24則A為0
- JNZ RET0 ;查詢累加器A是否為0,不為零送顯
- LCALL CLR0 ;累加器為0則時針清零
- RET0:POP ACC ;累加器和程序狀態寄存器出棧;中斷返回
- POP PSW
- RETI
- XIANSHI:MOV R5,#06H ;位選數碼管的個數
- MOV R0,#79H ;秒針低位地址
- MOV 70H,#7FH ;右移位移
- LED:MOV A,70H ;相應指針高位送顯
- MOV P0,A ;送段碼
- SETB P2.7 ;開位選
- CLR P2.7 ;關位選
- MOV A,@R0 ;查表
- MOV DPTR,#TAB
- MOVC A,@A+DPTR
- MOV P0,A ;查表段碼送P0
- SETB P2.6 ;開段選
- CLR P2.6 ;關段選
- LCALL DLY
- MOV A,70H ;保存上個位選數碼管位置
- RR A ;右移,位選下一個數碼管
- MOV 70H,A ;取上次結果
- INC R0 ;送高位地址
- DJNZ R5,LED ;判斷動態掃描是否完成
- RET
- DAAD1:MOV A,@R0 ;送相應指針地址
- DEC R0 ;地址減一
- SWAP A ;上一次數碼管段碼結果高低四位交換
- ORL A,@R0 ;高低四位合并
- ADD A,#01H ;加一
- DA A ;DA調整
- MOV R2,A ;保存DA調整結果給R2
- ANL A,#0FH ;分離取低位
- MOV @R0,A
- MOV A,R2
- ……………………
- …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
全部資料51hei下載地址(仿真工程+程序+word格式設計報告):
電子鐘課程設計.7z
(12.24 MB, 下載次數: 179)
2019-1-17 03:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|