C語言編寫單片機萬年歷系統(tǒng)課程設計報告分_第1頁
C語言編寫單片機萬年歷系統(tǒng)課程設計報告分_第2頁
C語言編寫單片機萬年歷系統(tǒng)課程設計報告分_第3頁
C語言編寫單片機萬年歷系統(tǒng)課程設計報告分_第4頁
C語言編寫單片機萬年歷系統(tǒng)課程設計報告分_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、多功能電腦時鐘設計報告一、實訓目的意義及任務要求1.1目的意義 單片機的使用領域已十分廣泛,如智能儀器儀表、實時工控、通訊設備、導航系統(tǒng)、家用電器等。“學好單片機,工作就不成問題了?!崩蠋熣f,可見學好單片意義之重大。單片機作為一門基礎學科,既是對前期學習C語言的綜合運用,也是理論與實踐相結(jié)合的一大體現(xiàn)。電腦時鐘有效地檢驗了對DS1302時鐘芯片,STC89C52單片機中斷,獨立鍵盤,數(shù)碼管,蜂鳴器,LED燈的控制,同時提高了學生的工程系統(tǒng)設計能力。LED數(shù)字顯示的日歷鐘顯示清晰直觀、走時準確、可以進行夜視,并且還可以擴展出多種功能。 所以,電子萬年歷無論作為比賽題目還是練習題目都是很有價值。通

2、過此次單片機系統(tǒng)綜合訓練,不僅要讓學生認識了解它,而且增強學生學科積極性。2.2任務要求要求設計的電腦時鐘完成以下功能:1.基本功能實時顯示當前時間(4位數(shù)碼管顯示,2位顯示小時,2位顯示分鐘,第2位小數(shù)點0.5秒亮,0.5秒滅)。能用一按鍵依次切換顯示年及月日。能修改當前時鐘。具有秒表功能,顯示秒和百分秒。2. 擴展功能單片機與PC機的通訊(可選)可設定初值的倒計時功能(可選)鬧鐘及報時功能(可選)。顯示星期(可選)。二、實訓方案2.1 系統(tǒng)分析根據(jù)系統(tǒng)功能要求,可將系統(tǒng)組成結(jié)構(gòu)分成四大部分:DS1302時鐘芯片讀數(shù)據(jù)寫數(shù)據(jù)模塊,數(shù)碼管顯示模塊,按鍵設置調(diào)節(jié)時間模塊,秒表功能模塊,。硬件電路

3、接線圖如后圖,本系統(tǒng)采用DS1302時鐘芯片,四位數(shù)碼管顯示年月,日星期,時分,以及秒和百分秒。其中年月日,時分秒和星期采用DS1302的數(shù)據(jù)顯示,秒表采用單片機定時中斷實現(xiàn)。本系統(tǒng)共用到四個按鍵,且均為獨立對地按鍵,分別用于顯示切換,修改切換,修改加一,修改減一,秒表啟動暫停和數(shù)據(jù)清零。2.2 器件選擇選用STC89C52芯片,頻率為11.0592MHz;由于系統(tǒng)要求顯示年月日小時和分鐘,采用四位LED數(shù)碼管顯示即可;按鍵是用來設置北京時間或鬧鐘時間或啟動秒表等功能的,設置三個按鍵:顯示切換模式鍵(key3)、修改數(shù)據(jù)鍵(key0)、加一鍵(key1)、減一鍵(key2)。DS1302時鐘芯

4、片。常見的LED顯示具有清晰明亮的特點。是顯示接口也是絕大多數(shù)單片機應用系統(tǒng)必備的部件之一。發(fā)光二極管組成的顯示器是單片機應用產(chǎn)品中最常用的廉價輸出設備。它由若干個發(fā)光二極管按一定的規(guī)律排列而成。當某一個發(fā)光二極管導通時,相應的一個點或一筆畫被點亮,控制不同組合的二極管導通,就能顯出各種字符。1. 顯示器的結(jié)構(gòu)常用的7段顯示器的結(jié)構(gòu)如圖所示,發(fā)光二極管的陽極連在一起的稱為共陽極顯示器,陰極連在一起的成為共陰顯示器。1位顯示器由8個發(fā)光二極管組成,其中7個發(fā)光二極管ag控制7個筆畫的亮或暗,另一個控制一個小數(shù)點的亮和暗,這種筆畫的七段顯示器能顯示的字符較少,字符的形狀有些失真,但失控簡單,使用方

5、便。三、系統(tǒng)硬件設計3.1 單片機最小系統(tǒng)單片機功能系統(tǒng)圖見附錄 1,。單片機最小系統(tǒng)由STC89C51單片機、復位電路、晶振電路組成。如圖3.1所示圖3.1 單片機最小系統(tǒng)圖 3.2 數(shù)碼管、獨立按鍵及DS1302時鐘芯片電路的設計系統(tǒng)仿真電路圖系統(tǒng)仿真電路圖DS1302與單片機連線圖3.3 其他附屬電路設計按鍵、電頻轉(zhuǎn)換芯片、RS232串口通信及電源電路等設計,如圖3.3所示圖3.3 附屬電路設計圖四、軟件設計4.1主程序設計主程序采用定時器0對程序進行掃描執(zhí)行。分別執(zhí)行DS1302芯片初始化子程序,寫數(shù)據(jù)子程序,將最初的值寫入芯片中,采用while循環(huán)循環(huán)執(zhí)行鍵盤掃描子程序。main()

6、 TMOD=0x01; /使用模式1,16位定時器 TH0=(65536-10000)/256; /給定初值 TL0=(65536-10000)%256; EA=1; /總中斷打開 ET0=1; /定時器中斷打開 TR0=1; /定時器開關打開Ds1302_Init(); Ds1302_Write_Time();while(1) keyscan(); if(Btread=0) Btread=1; Ds1302_Read_Time(); display(); 4.2 DS1302子程序設計此子程序分為初始化程序,讀數(shù)據(jù)程序,寫數(shù)據(jù)程序,一些數(shù)據(jù)程序為例;void Ds1302_Write_Byt

7、e(unsigned char addr, unsigned char d) CE=0;_nop_(); SCLK=0; _nop_(); CE=1; _nop_(); Write1302(addr); Write1302(d); CE=0; _nop_(); IO=1; SCLK=1;分別寫入地址,再寫入數(shù)據(jù)。4.3時間調(diào)整子程序時間調(diào)整子程序采用的是對key1按的次數(shù)不同來進行對年月日時分及星期的設置。void zongshi(void)if(!key) if(btx=0) if(!key) btx=1;k+; elsebtx=0; k=1時,調(diào)整年份,key1為加,key2為減void

8、keyscan() k=2時,調(diào)整月份,key1為加,key2為減 k=3時,調(diào)整日份,key1為加,key2為減 display(); k=4時,調(diào)整星期,key1為加,key2為減 if(!key) if(btx=0) if(!key) btx=1; k+; 五、調(diào)試及性能分析5.1軟件測試電子成年歷是多功能的數(shù)字型,可以看當前日期(陰、陽歷),時間,還有溫度的儀器。電子成年歷功能很多,所以對于它的程序也較為復雜,所以在編寫程序和調(diào)試時出現(xiàn)了相對較多的問題。最后經(jīng)過多次的模塊子程序的修改,一步一步的完成,最終解決了軟件。在軟件的調(diào)試過程中主要遇到的問題如下:1燒入程序后,LED數(shù)碼管顯示閃

9、動,而且亮度不均勻。解決:首先對調(diào)用的延時進行逐漸修改,可以解決顯示閃動問題。其次,由于本作品使作動態(tài)掃描方式顯示的數(shù)字,動態(tài)掃描很快,人的肉眼是無法看出,但是調(diào)用的顯示程序時,如果不在反回時屏蔽掉最后的附值,則會出現(xiàn)很亮的現(xiàn)象,所以在顯示的后面加了屏蔽子令,最后解決了此問題。2修改時間、日期時沒有農(nóng)歷沒有自動對應上。解決:把不相關的程序暫時屏蔽,地農(nóng)歷的子程序獨立調(diào)試,發(fā)現(xiàn)在調(diào)用農(nóng)歷自動更新時,對十進制和十六進制處理不好,所以會造成錯亂。最后把相應的十進制進行修改,使得可以與十六進制對應,最后解決了此問題.5.2測試結(jié)果分析與結(jié)論(1)在測試中遇到發(fā)光二極管、LED數(shù)碼管為不顯示時,首先使用

10、試測儀對電路進行測試,觀察是否存在漏焊,虛焊,或者元件損壞.(2)LED 數(shù)碼管顯示不正常,還有亮度不夠,首先使用試測儀對電路進行測試,觀察電路是否存在短路現(xiàn)象。查看燒寫的程序是否正確無誤,對程序進行認真修改。 (3).DS1302 與微處理器進行數(shù)據(jù)交換時,首先由微處理器向電路發(fā)送命令字節(jié),命令字節(jié)最高位MSB(D7)必須為邏輯1,如果D7=0,則禁止寫DS1302,即寫保護;D6=0,指定時鐘數(shù)據(jù),D6=1,指定RAM 數(shù)據(jù);D5D1 指定輸入或輸出的特定寄存器;最低位LSB(D0)為邏輯0,指定寫操作(輸入), D0=1,指定讀操作(輸出)。在DS1302 的時鐘日歷或RAM 進行數(shù)據(jù)傳

11、送時,DS1302 必須首先發(fā)送命令字節(jié)。若進行單字節(jié)傳送,8 位命令字節(jié)傳送結(jié)束之后,在下2 個SCLK 周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8 個SCLK 周期的下降沿輸出數(shù)據(jù)字節(jié)。DS1302 與RAM 相關的寄存器分為兩類:一類是單個RAM 單元,共31 個,每個單元組態(tài)為一個8 位的字節(jié),其命令控制字為C0HFDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM 寄存器,在此方式下可一次性讀、寫所有的RAM 的31 個字節(jié)。要特別說明的是備用電源B1,可以用電池或者超級電容器(0.1F 以上)。雖然DS1302 在主電源掉電后的耗電很小,但是,如果要長時間保證時鐘正常,最好選

12、用小型充電電池??梢杂美鲜诫娔X主板上的3.6V 充電電池。如果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。100 F 就可以保證1 小時的正常走時。DS1302 在第一次加電后,必須進行初始化操作。初始化后就可以按正常方法調(diào)整時間。5.3 測試結(jié)論經(jīng)過多次的反復測試與分析,可以對電路的原理及功能更加熟悉,同時提高了設計能力與及對電路的分析能力.同時在軟件的編程方面得到更到的提高,對編程能力得到加強.同時對所學的知識得到很大的提高與鞏固六、心得體會從大一開始接觸單片機,簡單運用單片機,我初步認識了單片機。再經(jīng)過這兩周的單片機的專門學習,我對單片機有了進一步的學習和認識,

13、加深了我對單片機理論知識的理解,提升了我個人理論結(jié)合實際的實踐能力。從簡單的單片機設計開始,一步一步的增加難度。剛開始設計時,老師給我們的任務很簡單,可以輕松完成任務完成。電腦時鐘的設計,是在秒表的基礎上慢慢的添加一個又一個的功能,然后一個一個的調(diào)試。在調(diào)試的過程中我們遇到了很多的問題,我們編出來的程序不是一下子就能實現(xiàn)我們想要的功能的,要經(jīng)過不斷的修改、調(diào)試,實現(xiàn)我們想要的功能。程序設計中,定時器的應用相當廣泛,它與中斷函數(shù)構(gòu)成了基本的計數(shù)環(huán)節(jié),中斷為定時提供了條件,函數(shù)每5ms便進入中斷函數(shù)一次,并執(zhí)行相應的操作與計數(shù)。條件語句為數(shù)碼管的功能顯示提供了條件。我們還進一步優(yōu)化設計,比如整點報

14、時設計對應點數(shù)報時,鬧鐘用音樂播放形式與整點報時區(qū)分開來,鬧鐘及整點(半點)可設是否開啟等。總之,通過本次單片機系統(tǒng)綜合訓練,我對單片機的基礎知識及基本的應用技術有了深刻的了解,提升了個人理論到實踐的運用能力。進一步為后續(xù)學習及工作有打下堅實基礎。參考文獻附錄一附錄二#include<reg51.h>#include<intrins.h>#define uchar unsigned char #define uint unsigned int#define Write_Protect 0x8e /寫保護#define OutPut P0 /顯示輸出 /sbit DU=P

15、26; /數(shù)碼管段選/sbit WE=P27; /數(shù)碼管位選 sbit CE=P33; /復位端口定義在P0.2引腳sbit IO=P24; /數(shù)據(jù)輸出端定義在P0.4引腳sbit SCLK=P32; /時鐘輸出端口定義在P0.3引腳sbit key=P34; /時間調(diào)節(jié)控制鍵sbit key1=P35; /每按一次位加一sbit key2=P36; /每按一次位減一sbit key3=P37; /顯示切換uchar code Wei=0xfe,0xfd,0xfb,0xf7,0xfd;/ 位選數(shù)據(jù)0xef,0xdf,0xbf,0x7fuchar code Duan=0x3f,0x06,0x5b

16、,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /0-9共陰代碼 code uchar Waddr=0x8c,0x88,0x86,0x84,0x82,0x80,0x8a; /寄存器寫地址code uchar Raddr=0x8d,0x89,0x87,0x85,0x83,0x81,0x8b; / 寄存器讀地址uchar timeset=0x01,0x02,0x03,0x04,0x05,0x00,0x01; /*設置初始時間*/uchar time_buf7; /*存讀到的時間*/uchar time_disp7;uchar dispdat5; /*存儲顯示值的*/uch

17、ar Btdis=0,k=0,z; bit btx,btx1,btx2,btx3,bt1,bt2,bt3; bit Btread;uint flag1; /*=函數(shù)功能:延時n 毫秒入口參數(shù):n=*/ void Write1302(uchar dat);void delaynms(uchar n) uchar i,j; for(i=n;i>0;i-) for(j=125;j>0;j-);/*=函數(shù)功能:根據(jù)命令字,向1302寫一個字節(jié)數(shù)據(jù)入口參數(shù):Cmd,存儲命令字;dat,存儲待寫的數(shù)據(jù)=*/ void Ds1302_Write_Byte(unsigned char addr,

18、unsigned char d) CE=0;_nop_(); SCLK=0; _nop_(); CE=1;_nop_(); Write1302(addr); Write1302(d); CE=0; _nop_(); IO=1; SCLK=1;/從DS1302讀出一字節(jié)數(shù)據(jù)uchar Ds1302_Read_Byte(unsigned char addr) unsigned char i; unsigned char temp; CE=1; addr = addr | 0x01; for (i = 0; i < 8; i +) if (addr & 0x01) IO=1; else

19、 IO=0; SCLK=1; SCLK=0; addr = addr >> 1; /輸出數(shù)據(jù):temp for (i = 0; i < 8; i +) temp = temp >> 1; if (IO) temp |= 0x80; else temp &= 0x7F; SCLK=1; SCLK=0; CE=0; /停止DS1302總線 return temp;/*=函數(shù)功能:向1302日歷時鐘芯片寫入一個字節(jié)的數(shù)據(jù)入口參數(shù):dat=*/void Write1302(uchar dat) uchar i; /SCLK=0; CE=1; for(i=0;i&l

20、t;8;i+) IO=dat&0x01; SCLK=0; SCLK=1; dat=dat>>1; /*=函數(shù)功能:根據(jù)命令字,從1302讀取一個字節(jié)的數(shù)據(jù)入口參數(shù):Cmd返回參數(shù):dat=*/uchar Readset1302(uchar Cmd) uchar dat; CE=0; SCLK=0; CE=1; Write1302(Cmd); SCLK=1; CE=0; return dat;void bcdpro(void) unsigned char i,tmp; for(i=0;i<7;i+) /BCD處理 tmp=timeseti/10; /timeset=0x

21、01,0x02,0x03,0x04,0x05,0x06,0x01 time_bufi=timeseti%10; /time_buf7 time_bufi=time_bufi+tmp*16; /*= 向DS1302寫入時鐘數(shù)據(jù)=*/void Ds1302_Write_Time(void) unsigned int i; uchar flag; flag=Readset1302(0x81); if(flag&0x80) /判斷時鐘芯片是否停止,為1時時鐘停止 /掉電保存bcdpro();for(i=0;i<7;i+) Ds1302_Write_Byte(Waddri,time_buf

22、i); Ds1302_Write_Byte(0x8e,0x80); /打開寫保護 /*= 從DS1302讀出時鐘數(shù)據(jù)=*/void Ds1302_Read_Time(void) unsigned char i,tmp; for(i=0;i<7;i+) time_bufi=Ds1302_Read_Byte(Raddri); for(i=0;i<7;i+) /BCD處理 tmp=time_bufi/16; time_bufi=time_bufi%16; time_dispi=time_bufi+tmp*10; /*= DS1302初始化=*/void Ds1302_Init(void)

23、 CE=0; /RST腳置低 SCLK=0; /SCK腳置低 Ds1302_Write_Byte(0x80,0x00); /*=函數(shù)名: 時分秒顯示子程序=函數(shù)功能:將從DS1302讀到的數(shù)據(jù)在8位共陰數(shù)碼管上顯示=返回參數(shù):=*/void display() uchar i; if(Btdis=0) if(bt2=0) dispdat0=Duantime_disp3/10; /時 dispdat1=Duantime_disp3%10; else dispdat0=0x00; dispdat1=0x00; /dispdat2=0x40; /"-" if(bt3=0) dis

24、pdat2=Duantime_disp4/10; /分 dispdat3=Duantime_disp4%10; else dispdat2=0x00; dispdat3=0x00; /dispdat5=0x40; if(flag1<25) dispdat4=0x80; else dispdat4=0x00; if(Btdis=3)dispdat0=Duantime_disp5/10; /秒 dispdat1=Duantime_disp5%10; dispdat2=0x40; dispdat3=0x40; if(Btdis=1) if(bt1=0) dispdat0=Duantime_di

25、sp0/10; /年 dispdat1=Duantime_disp0%10; else dispdat0=0x00; dispdat1=0x00; /dispdat2=0x40; /"-" if(bt2=0) dispdat2=Duantime_disp1/10; /月 dispdat3=Duantime_disp1%10; else dispdat2=0x00; dispdat3=0x00; dispdat4=0x00; if(Btdis=2) /dispdat0=0x40; if(bt1=0) dispdat3=Duantime_disp6%10; /周 else di

26、spdat3=0x00; dispdat2=0x40;if(bt3=0) dispdat0=Duantime_disp2/10; /日 dispdat1=Duantime_disp2%10; else dispdat0=0x00; dispdat1=0x00; if(dispdat3=7) dispdat3=0x7f; if(Btdis=4) for(i=0;i<5;i+) OutPut=dispdati; P1=Weii; delaynms(1); OutPut=0x00; /*=函數(shù)名: 按鍵=函數(shù)功能:顯示模式,調(diào)時模式=返回參數(shù):=*/void zongshi(void)if(!

27、key) if(btx=0) if(!key) btx=1; k+; else btx=0;void keyscan() display(); if(!key) if(btx=0) if(!key) btx=1; k+; /*= k=1時,調(diào)整年份,key1為加,key2為減=*/ while(k=1) Btdis=1; display(); zongshi(); if(!key1) if(btx1=0) if(!key1) btx1=1; if(time_disp0<99) time_disp0+; else time_disp0=0; else btx1=0; if(!key2) i

28、f(btx2=0) if(!key2) btx2=1; if(time_disp0>0) time_disp0-; else time_disp0=99; else btx2=0; /*= k=2時,調(diào)整月份,key1為加,key2為減=*/ while(k=2) Btdis=1; display(); zongshi(); if(!key1) if(btx1=0) if(!key1) btx1=1; if(time_disp1<12) time_disp1+; if(time_disp1=2) if(time_disp0%4=0) if(time_disp2>29) tim

29、e_disp2=29; else if(time_disp2>28) time_disp2=28; else time_disp1=1; else btx1=0; if(!key2) if(btx2=0) if(!key2) btx2=1; if(time_disp1>1) time_disp1-; if(time_disp1=2) if(time_disp0%4=0) if(time_disp2>29) time_disp2=29; else if(time_disp2>28) time_disp2=28; else time_disp1=12; else btx2=

30、0; /*= k=3時,調(diào)整天,key1為加,key2為減=*/ while(k=3) Btdis=2; display(); zongshi(); if(!key1) if(btx1=0) if(!key1) btx1=1; if(time_disp1=2) if(time_disp0%4=0) if(time_disp2<29) time_disp2+; else time_disp2=1; else if(time_disp2<28) time_disp2+; else time_disp2=1; else if(time_disp1<8) if(time_disp1%

31、2=0) /小于8月的月份除以2的余數(shù)為0則為小月 if(time_disp2<30) time_disp2+; else time_disp2=1; else if(time_disp1%2=1) /小于8月的月份除以2的余數(shù)為1則為大月 if(time_disp2<31) time_disp2+; else time_disp2=1; else if(time_disp1>7) if(time_disp1%2=0) if(time_disp2<31) time_disp2+; else time_disp2=1; else if(time_disp1%2=1) if

32、(time_disp2<30) time_disp2+; else time_disp2=1; else btx1=0; if(!key2) if(btx2=0) if(!key2) btx2=1; if(time_disp1=2) if(time_disp0%4=0) if(time_disp2>1) time_disp2-; else time_disp2=29; else if(time_disp2>1) time_disp2-; else time_disp2=28; else if(time_disp1<8) if(time_disp1%2=0) if(tim

33、e_disp2>1) time_disp2-; else time_disp2=30; else if(time_disp1%2=1) if(time_disp2>1) time_disp2-;else time_disp2=31; else if(time_disp1>7) if(time_disp1%2=0) if(time_disp2>1) time_disp2-; else time_disp2=31; else if(time_disp1%2=1) if(time_disp2>1) time_disp2-; else time_disp2=30; els

34、e btx2=0; /*= k=4時,調(diào)整星期,key1為加,key2為減=*/ while(k=4) Btdis=2; display(); zongshi(); if(!key1) if(btx1=0) if(!key1) btx1=1; if(time_disp6<=6) time_disp6+; else time_disp6=1; else btx1=0; if(!key2) if(btx2=0) if(!key2) btx2=1; if(time_disp6>1) -time_disp6; else time_disp6=7; else btx2=0; /*= k=5時

35、,調(diào)整小時,key1為加,key2為減=*/ while(k=5) Btdis=0; display(); zongshi(); if(!key1) if(btx1=0) if(!key1) btx1=1; if(time_disp3<23) time_disp3+; else time_disp3=0; else btx1=0; if(!key2)if(btx2=0) if(!key2) btx2=1; if(time_disp3>0) time_disp3-; else time_disp3=23; else btx2=0; /*= k=6時,調(diào)整分鐘,key1為加,key2為減=*/ while(k=6) Btdis=0; display(); zongshi(); if(!key1) if(btx1=0) if(!key1) btx1=1; if(time_disp4<59) time_disp4+; else time_disp4=0; else btx1=0; if(!key2) if(btx2=0) if(!key2) btx2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論