全國大賽帆板控制系統最新_第1頁
全國大賽帆板控制系統最新_第2頁
全國大賽帆板控制系統最新_第3頁
全國大賽帆板控制系統最新_第4頁
全國大賽帆板控制系統最新_第5頁
已閱讀5頁,還剩34頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、目錄一、 引言1二、系統方案1(一)方案論證與比較11、主控電路12、角度傳感器的選用23、按鍵選用24、顯示25、電機的驅動26、風扇37、電源3(二) 總體設計方案3三、理論分析與計算3(一)距離計算3(二)角度計算4(三)控制算法4四、電路與程序設計4(一)硬件設計41、總體電路圖(見附錄1)42、主控電路43、風扇控制54、顯示模塊55、聲光提示模塊66、傳感器模塊6(二)軟件設計61、風扇控制算法設計62、聲光提示算法設計73、系統流程圖7五、系統測試7(一)測試方法與儀器7(二)測試結果81、功能要求測試82、按鍵控制風力等級測試8(三)測試結果分析9六、設計總結9參考文獻9附錄1

2、 硬件原理圖10附錄2 程序代碼11帆板控制系統摘要:報告介紹基于STC89C52單片機的帆板角度控制系統,系統可以利用風扇控制裝置對帆板角度進行控制,并通過LCD12864實時顯示角度變化。還可依據設定的帆板角度信息智能控制風扇轉速,在很短時間內(5秒以內)動態調整帆板擺角,同時實時顯示帆板角度等信息。系統包括:單片機主控模塊、角度信號采集模塊、鍵盤輸入模塊、顯示模塊、電源模塊、風扇電機驅動模塊。系統主控模塊采用性價比高的單片機最小系統;選用ADXL345加速度傳感器完成系統角度信號采集功能;利用LCD12864實時顯示角度變化的信息,5*6矩陣鍵盤完成風力等級和角度設定的輸入;系統電源模塊

3、采用兩路穩壓輸出電路(5v、15v),提供控制系統與風扇電機的工作電源;風扇電機采用L298N模塊驅動。本系統制作成本較低、工作性能控制穩定,能很好達到設計要求。關鍵詞: STC89C52;加速度傳感器;LCD12864;L298N一、 引言單片機又稱單片微控制器,單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優點,廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度等物理量的測量。本系統就是以單片機為核心建立起來的,要實現對帆板轉角大小的控制,其歸根就是對風扇的控制,帆板的轉角隨著風扇風力的變化而變化,角度

4、傳感器給單片機不同的角度檢測信號,經單片機處理后在LCD液晶上顯示,同時給出聲光提示。系統體現了模塊化的設計理念,將單片機和各個器件結合在一起,完成系統化的設計,充分發揮了單片機的可靠性、可操作性和強大處理功能。二、系統方案(一)方案論證與比較1、主控電路【方案一】采用可編程邏輯器件FPGA作為控制器。FPGA可以實現各種復雜的邏輯功能,IO資源豐富,易于進行功能擴展。但本系統不需要復雜的邏輯功能,且從使用、功耗及經濟的角度考慮我們放棄了此方案。【方案二】STC89C52 單片機采用STC89C52 單片機作為主控器,其算術功能強,軟件編程簡潔靈活、自由度大 ,可用軟件編程實現各種邏輯控制功能

5、,且其功耗低、技術成熟,成本低廉。本系統主要是進行信號的處理以及風扇電機的控制。綜合考慮,本系統設計的功能依靠51單片機均可實現,故采用方案二。2、角度傳感器的選用【方案一】用UZZ9001Y與KMZ41連接構成一個角度測量系統。電路組成繁瑣,制作較困難,穩定性較差。【方案二】傾角傳感器。該集成芯片為專用的水平傾角測量芯片,具有體積小、靈敏度高等優點,但是輸出為模擬信號,需要用到DA轉換,操作間為復雜,且占用I/O口較多,不利于本統功能模塊的操作。【方案三】用ADXL345數字加速度傳感器。ADXL345是一款小而薄的超低功耗的3軸加速度計,可測量帆板在斜面所受重力加速度在斜面上的分量,進而轉

6、換成傾斜角,測量精度較高。ADXL345輸出信號為數字信號,避免了A/D轉換,操作簡單;此外ADXL345只需用到兩個I/O口,占用資源少,能滿足本設計的要求。本系統選擇了第三種方案。3、按鍵選用【方案一】采用獨立鍵盤。多個使用時,線路連接不便,操作繁瑣。【方案二】采用5*6的距陣鍵盤,可輸入的值比較多,可設定的功能也多。在本系統中需要多個鍵,系統選擇了第二種方案。4、顯示【方案一】使用數碼管顯示。要完成功能電路的顯示需要多個數碼管,此方案占用I/O口多,連接不便,顯示效果差,功耗大。【方案二】用LCD1602液晶顯示。1602是一種專門用于顯示字母、數字、符號等點陣式,1602分為上下2行,

7、每行顯示16個字符。驅動簡單,但不能顯示漢字。【方案三】用LCD12864液晶顯示。LCD12864功能強大,不僅能顯示字母、數字、符號,還可以顯示漢字和圖形,最多可顯示4行,每一行最多顯示8個中文,16個半寬字體。(最好選用帶字庫的,方便編寫程序。)LCD12864和LCD1602使用方法類似,驅動簡單,耗電量小,無輻射危險,顯示直觀、抗干擾能力強,但體積較大。本系統選擇了第三種方案。5、電機的驅動【方案一】用分立w元件構成的H橋電路利用分立三極管元件構成的H橋電路結構簡單,但驅動能力有限,所帶負載不可過大。【方案二】采用L298N集成H橋芯片。在L298N集成芯處中集成了兩套H橋電路,可直

8、接驅動兩路直流電機,利用單片機產生的PWM信號,可方便地進行電機調速。【方案三】用ULN2003功率放大器件。ULN2003 是高耐壓、大電流達林頓陳列,由七個硅NPN 達林頓管w組成。通過使用不同的放大電路和不同參數的器件,可達到不同的放大的要求,放大后能得到較大的功率。本系統設計采用方案二。6、風扇【方案一】用普通的散熱風扇。風力小,風力流失大,很難達到系統要求。【方案二】用帶通風通道的風扇。風力集中,流失小,能很好的吹動帆板。本系統設計采用方案二。7、電源【方案一】自制穩壓電源。采用變壓器與三端穩壓器相結合,使220V電壓經變壓器變壓,降為系統所需電壓,過整流橋并利用兩個大的電容濾波,從

9、而得到較為穩定的直流電壓。自制電源體積大,需接入220V電壓,電壓不穩定,使用不方便。【方案二】三塊6V蓄電池串聯供電。直接選用所需型號蓄電池,能量足,供電穩定,高低溫適應性強。本系統選用第二種方案。(二) 總體設計方案系統功能的實現,以STC89C52單片機為核心,在單片機系統實現的輸入輸出和顯示功能的基礎上,由單片機的內置邏輯和運算功能,加上外圍電路得以實現。根據設計任務要求,該電路的總體框圖可分為幾個基本的模塊,總體框圖如下圖21所示:圖21總體框圖三、理論分析與計算(一)距離計算帆板尺寸:長 15cm,寬 10cm。風扇到帆板的距離:715cm。本系統帆板轉軸直徑0.5cm(二)角度計

10、算帆板轉角:060度。帆板轉角測量原理:風扇吹動帆板轉動,產生帆板角度變化,利用ADXL345數字加速度傳感器測出三維坐標x 、y 、z的變化,將加速度傳感器固定在帆板上,從而通過固定y,利用x 、z的關系求出角度。角度=(180*atan(temp z/temp x)/3.14。角度的測量范圍是090°,可以滿足系統要求。(三)控制算法首先利用鍵盤控制風扇的轉速,使帆板能夠偏轉一定的角度,再利用加速度傳感器測出帆板的角度,送顯示電路顯示。具體控制算法采用C語言編程實現,具體程序代碼見附錄2。四、電路與程序設計(一)硬件設計1、總體電路圖(見附錄1)2、主控電路系統采用STC89C5

11、2單片機構成主控制電路,電路如圖41所示:圖41主控電路3、風扇控制風扇電機選用L298N模塊驅動,并由4*4按鍵矩陣控制PWM,改變電機速度,達到控制風扇風力大小的目標。L298N驅動模塊如下圖42所示:圖42風扇控制4、顯示模塊使用LCD12864顯示,如下圖43所示:圖43顯示模塊5、聲光提示模塊圖44聲光提示模塊6、傳感器模塊圖45傳感器模塊(二)軟件設計1、風扇控制算法設計風扇控制算法如下圖46所示:圖46風扇控制算法2、聲光提示算法設計聲光提示算法如下圖47所示:圖47聲光提示算法3、系統流程圖整個系統程序流程圖如圖48所示:圖48系統流程圖五、系統測試(一)測試方法與儀器利用四位

12、半數字萬用表、秒表、量角器等設備通電對系統進行測試。(二)測試結果1、功能要求測試序號指標(目標值)實測值1顯示范圍為0-60°,實時顯示。0-66°2分辨力為2°,絕對誤差5°。分辨1°誤差3°3使帆板轉角穩定在45°±5°范圍內,制過程在10 秒內完成,實時顯示,并由聲光提示5秒4在5 秒內達到設定值5秒表 12、按鍵控制風力等級測試 風力等級角度W角度W角度W00°0°0°51°1°1°109°10°11°15

13、23°22°23°2025°29°31°2537°37°39°3040°39°40°3547°46°43°4049°49°51°4551°52°53°5055°56°52°5555°57°54°6058°59°57°6557°60°58°7060°62

14、6;59°7561°63°60°8064°63°64°8565°64°65°9065°65°65°9565°65°65°9966°66°66°表 2(三)測試結果分析本系統總體性能良好。但是也有不足的地方,由于帆板擺動大的問題,當系統工作時,影響到轉角實際測量的精確性。這個地方有待改進。六、設計總結本方案的系統設計基本符合2011年全國大學生電子設計競賽試題(F題)的要求。通過本次設計,深深感到理論與實踐之

15、間的差距。很多知識點在理論上完全理解了,但到具體的電路設計與實現中,會出現很多一時無法理解的問題,要通過不斷測試修改軟硬件,才能用理論來指導實踐,進一步深入理解理論。參考文獻1 郭天祥. 51單片機C語言教程. 北京:電子工業出版社,2009年.2 閻石. 數字電子技術基礎(第四版). 北京: 高等教育出版社,1997年.3 李建忠單片機原理及應用西安:西安電子科技大學出版社,2002年38附錄1 硬件原理圖附錄2 程序代碼主函數/*/#include<reg52.h>#include "control.h"#include "12864.h"

16、;#include "ADXL.H"#define uchar unsigned char#define uint unsigned intsbit key=P27;void timer_init()TMOD=0X10;TH1=(65535-100)/256;TL1=(65535-100)%256;EA=1;ET1=1;TR1=1;void main() char devid;timer_init();lcd_12864_init();Init_ADXL345(); /初始化ADXL345devid=Single_Read_ADXL345(0X00);/讀出的數據為0XE5

17、,表示正確while(1) adxl345(); if(key=0) keyscan_1(); else keyscan(); /*/Controh.H文件#ifndef _contral_h_ #define _contral_h_extern signed char pwm;extern void delayms(unsigned int xms);extern void keyscan();extern void keyscan_1();#endif/*/Control.C文件#include<reg51.h>#include "control.h"#in

18、clude "12864.h"#define uchar unsigned char#define uint unsigned int#define keydata P0sbit A1=P24;sbit A2=P25;sbit ENA=P26;signed int count=0; signed char pwm=0;signed char anjian=0;uchar numshi=0;uchar numge=0;void delayms(unsigned int xms)unsigned int i,j;for(i=0;i<xms;i+)for(j=0;j<

19、110;j+); void pwm_dis()numshi=pwm/10;numge=pwm%10;write_12864_data(0x30+numshi);write_12864_data(0x30+numge);void anjian_dis()numshi=anjian/10;numge=anjian%10;write_12864_data(0x30+numshi);write_12864_data(0x30+numge);void keyscan()unsigned char dat=0;unsigned char num=0;keydata=0xfe;dat=keydata;dat

20、=dat&0xf0;while(dat!=0xf0)delayms(5);dat=keydata;dat=dat&0xf0;while(dat!=0xf0)dat=keydata;switch(dat)case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:num=4;break;while(dat!=0xf0)dat=keydata;dat=dat&0xf0;keydata=0xfd;dat=keydata;dat=dat&0xf0;while(dat!=0xf0)

21、delayms(5);dat=keydata;dat=dat&0xf0;while(dat!=0xf0)dat=keydata;switch(dat)case 0xed:num=5;break;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break;while(dat!=0xf0)dat=keydata;dat=dat&0xf0;keydata=0xfb;dat=keydata;dat=dat&0xf0;while(dat!=0xf0)delayms(5);dat=keydata;dat=dat

22、&0xf0;while(dat!=0xf0)dat=keydata;switch(dat)case 0xeb:num=9;break;case 0xdb:num=10;break;case 0xbb:num=11;break;case 0x7b:num=12;break;while(dat!=0xf0)dat=keydata;dat=dat&0xf0;keydata=0xf7;dat=keydata;dat=dat&0xf0;while(dat!=0xf0)delayms(5);dat=keydata;dat=dat&0xf0;while(dat!=0xf0)d

23、at=keydata;switch(dat)case 0xe7:num=13;break;case 0xd7:num=14;break;case 0xb7:num=15;break;case 0x77:num=16;break;while(dat!=0xf0)dat=keydata;dat=dat&0xf0;switch(num)case 1:write_12864_addr(1,3);pwm=0;pwm_dis();break;case 2:write_12864_addr(1,3);pwm=10;pwm_dis();break;case 3:write_12864_addr(1,3

24、);pwm=20;pwm_dis();break;case 4:write_12864_addr(1,3);pwm=30;pwm_dis();break;case 5:write_12864_addr(1,3);pwm=40;pwm_dis();break;case 6:write_12864_addr(1,3);pwm=50;pwm_dis();break;case 7:write_12864_addr(1,3);pwm=60;pwm_dis();break;case 8:write_12864_addr(1,3);pwm=70;pwm_dis();break;case 9:write_12

25、864_addr(1,3);pwm=80;pwm_dis();break;case 10:write_12864_addr(1,3);pwm=90;pwm_dis();break;case 11:write_12864_addr(1,3);pwm=99;pwm_dis();break;case 12:write_12864_addr(1,3);pwm=35;pwm_dis();break;case 13:write_12864_addr(1,3);pwm=pwm+5;pwm_dis();break;case 14:write_12864_addr(1,3);pwm=pwm-5;pwm_dis(

26、);break;case 15:write_12864_addr(1,3);pwm=pwm+1;pwm_dis();break;case 16:write_12864_addr(1,3);pwm=pwm-1;pwm_dis();break;void keyscan_1()unsigned char dat=0;unsigned char num=0;keydata=0xfe;dat=keydata;dat=dat&0xf0;while(dat!=0xf0)delayms(5);dat=keydata;dat=dat&0xf0;while(dat!=0xf0)dat=keydat

27、a;switch(dat)case 0xee:num=1;break;case 0xde:num=2;break;case 0xbe:num=3;break;case 0x7e:num=4;break;while(dat!=0xf0)dat=keydata;dat=dat&0xf0;keydata=0xfd;dat=keydata;dat=dat&0xf0;while(dat!=0xf0)delayms(5);dat=keydata;dat=dat&0xf0;while(dat!=0xf0)dat=keydata;switch(dat)case 0xed:num=5;b

28、reak;case 0xdd:num=6;break;case 0xbd:num=7;break;case 0x7d:num=8;break;while(dat!=0xf0)dat=keydata;dat=dat&0xf0;keydata=0xfb;dat=keydata;dat=dat&0xf0;while(dat!=0xf0)delayms(5);dat=keydata;dat=dat&0xf0;while(dat!=0xf0)dat=keydata;switch(dat)case 0xeb:num=9;break;case 0xdb:num=10;break;ca

29、se 0xbb:num=11;break;case 0x7b:num=12;break;while(dat!=0xf0)dat=keydata;dat=dat&0xf0;keydata=0xf7;dat=keydata;dat=dat&0xf0;while(dat!=0xf0)delayms(5);dat=keydata;dat=dat&0xf0;while(dat!=0xf0)dat=keydata;switch(dat)case 0xe7:num=13;break;case 0xd7:num=14;break;case 0xb7:num=15;break;case

30、0x77:num=16;break;while(dat!=0xf0)dat=keydata;dat=dat&0xf0;switch(num)case 1:write_12864_addr(3,7);anjian=0;anjian_dis();break;case 2:write_12864_addr(3,7);anjian=10;anjian_dis();break;case 3:write_12864_addr(3,7);anjian=20;anjian_dis();break;case 4:write_12864_addr(3,7);anjian=30;anjian_dis();b

31、reak;case 5:write_12864_addr(3,7);anjian=40;anjian_dis();break;case 6:write_12864_addr(3,7);anjian=50;anjian_dis();break;case 7:write_12864_addr(3,7);anjian=60;anjian_dis();break;case 8:write_12864_addr(3,7);anjian=anjian+1;anjian_dis();break;case 9:write_12864_addr(3,7);anjian=anjian+2;anjian_dis()

32、;break;case 10:write_12864_addr(3,7);anjian=anjian+3;anjian_dis();break;case 11:write_12864_addr(3,7);anjian=anjian+4;anjian_dis();break;case 12:write_12864_addr(3,7);anjian=anjian+5;anjian_dis();break;case 13:write_12864_addr(3,7);anjian=anjian+6;anjian_dis();break;case 14:write_12864_addr(3,7);anj

33、ian=anjian+7;anjian_dis();break;case 15:write_12864_addr(3,7);anjian=anjian+8;anjian_dis();break;case 16:write_12864_addr(3,7);anjian=anjian+9;anjian_dis();break; void timer0() interrupt 3A1=1;A2=0;TH1=(65535-100)/256;TL1=(65535-100)%256;count+;if(count>=100)count=0;if(count<pwm)ENA=1;elseENA=

34、0;/*/12864.H文件#ifndef _12864_h_ #define _12864_h_/extern void lcd_writestring(unsigned char *str);/向lcd發送一個字符串,長度64字符之內。extern void write_12864_cmd(unsigned char cmd ); /向液晶寫數據extern void write_12864_data(unsigned char dat); /向液晶寫數據extern void lcd_12864_init(); /初始化液晶extern void write_12864_addr(uns

35、igned char x ,unsigned char y);/寫液晶的地址extern void delayms_12864(unsigned char xms); /延時函數/extern void write_12864_addr(unsigned char x ,unsigned char y);/寫液晶的地址 #endif/*/12864.C文件/*12864指令:0x01/將DDRAM填滿“20H”,并且設定DDRAM的地址計數器(AC)到“00H”0x02/設定DDRAM的地址計數器 (AC)到“00H”, 并且將游標移到開頭原點位置;這個指令并不改變DDRAM的內容0x04/讀

36、寫后,AC減一,向左寫0x06/讀寫后,AC加一,向右寫0x10/光標向左移動,AC減一0x14/光標向右移動,AC加一0x18/顯示向左移動,光標跟著移動 0x1c/顯示向右移動,光標跟著移動0x0c/整體顯示開,游標關,游標位置反白不允許0x0e/整體顯示開,游標開,游標位置反白不允許0x0f/整體顯示開,游標開,游標位置反白允許0x08/關顯示,關光標,關光標閃爍0x30/8位數據端口,基本指令操作0x34/8位數據總線,擴展指令集0x20/4位數據總線,基本指令集0x24/4位數據總線,擴展指令集 */#include<reg52.h>#include "1286

37、4.h"#include "control.h"#define lcd_data P1 /定義液晶數據端口sbit lcd_PSB=P37; /液晶串行數據和并行數據選擇端sbit lcd_EN=P34; /液晶en使能端sbit lcd_RS=P35; /液晶的rssbit lcd_RW=P36;/液晶的rw讀寫端口void delayms_12864(unsigned char xms) /延時函數unsigned char i,j;for(i=0;i<xms;i+)for(j=0;j<110;j+);bit check_12864_busy()/

38、檢測液晶忙不忙 bit result=0; lcd_RS=0; lcd_RW=1; lcd_EN=1; delayms_12864(3); result=(bit)(lcd_data&0x80); /取出數據端口的最高位 lcd_EN=0; return result;void write_12864_cmd(unsigned char cmd ) /寫指令 while(check_12864_busy(); /檢測液晶忙不忙 lcd_RS=0; /rs=0為寫命令lcd_EN=0;lcd_RW=0;lcd_data=cmd; /把指令給數據端口delayms_12864(1);lcd

39、_EN=1;delayms_12864(1);lcd_EN=0; void write_12864_data(unsigned char dat) /向液晶寫數據 while(check_12864_busy(); /檢測液晶忙不忙 lcd_RS=1; /rs=1為寫數據lcd_EN=0;lcd_RW=0;lcd_data=dat; /把數據給數據端口delayms_12864(1);lcd_EN=1;delayms_12864(1);lcd_EN=0; void lcd_12864_init() /初始化液晶lcd_PSB=1;write_12864_cmd(0x30);delayms_12

40、864(5);write_12864_cmd(0x0c);delayms_12864(5);write_12864_cmd(0x01);delayms_12864(5); void write_12864_addr(unsigned char x ,unsigned char y)/寫液晶的地址 unsigned char addr;if(x=0) /如果x=0,地址為液晶第一行x=0x80; else if(x=1) /如果x=1,地址為液晶第二行x=0x90;else if(x=2)/如果x=2,地址為液晶第三行x=0x88;else if(x=3) /如果x=3,地址為液晶第四行x=0x

41、98;addr=x+y;write_12864_cmd(addr); /*/ADXL.H文件#ifndef _ADXL_h_ #define _ADXL_h_/extern void jiaodu();/角度轉換/extern void display_x(); /x軸/extern void display_y(); /y軸/extern void display_z();/z軸extern void Init_ADXL345();/延時函數extern unsigned char Single_Read_ADXL345(unsigned char REG_Address);/extern

42、void Multiple_read_ADXL345(void);extern void adxl345(); #endif/*/ADXL.C文件#include <REG51.H>#include <math.h> /Keil library #include <stdio.h> /Keil library#include <INTRINS.H>#include "12864.h"#define uchar unsigned char#define uint unsigned int#define DataPort P1 /

43、LCD1602數據端口sbit SCL=P20; /IIC時鐘引腳定義sbit SDA=P21; /IIC數據引腳定義sbit LED=P22;#defineSlaveAddress 0xA6 /定義器件在IIC總線中的從地址,根據ALT ADDRESS地址引腳不同修改 /ALT ADDRESS引腳接地時地址為0xA6,接電源時地址為0x3Atypedef unsigned char BYTE;typedef unsigned short WORD;BYTE BUF8; /接收數據緩存區 uchar ge,shi,bai,qian,wan; /顯示變量int dis_data; /變量void delay(unsigned int k);void InitLcd(); /初始化lcd1602void Init_ADXL345(void); /初始化ADXL345void WriteDataLCM(uchar dataW);void WriteCommandLCM(uchar CMD,uchar Attribc);/void DisplayOneChar(uc

溫馨提示

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

評論

0/150

提交評論