基于51單片機的心率計設計與制作_第1頁
基于51單片機的心率計設計與制作_第2頁
基于51單片機的心率計設計與制作_第3頁
基于51單片機的心率計設計與制作_第4頁
基于51單片機的心率計設計與制作_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

湖南商務職業(yè)技術學院畢業(yè)設計

目錄

1設計背景及內(nèi)容.....................................................................................................1

2設計方案遴選.........................................................................................................1

2.1單片機的選擇..............................................................................................1

2.2顯示模塊的選擇..........................................................................................1

2.3系統(tǒng)框圖設計..............................................................................................2

3產(chǎn)品硬件設計.........................................................................................................2

3.1STC89C52RC單片機核心電路設計.............................................................2

3.2按鍵電路設計..............................................................................................3

3.3LCD1602液晶顯示模塊電路.......................................................................4

4產(chǎn)品軟件設計.........................................................................................................5

4.1主程序流程圖..............................................................................................5

4.2程序開發(fā)軟件環(huán)境......................................................................................6

4.3產(chǎn)品程序清單..............................................................................................6

5產(chǎn)品使用說明.........................................................................................................6

5.1產(chǎn)品裝配圖..................................................................................................6

5.2產(chǎn)品調(diào)試......................................................................................................7

5.3產(chǎn)品使用說明..............................................................................................8

6產(chǎn)品設計技術標準...................................................................................................8

7參考資料...................................................................................................................8

附錄...............................................................................................................................9

附錄1元器件清單...............................................................................................9

附錄2電路...........................................................................................................9

附錄3PCB設計圖............................................................................................11

附錄4產(chǎn)品實物圖...........................................................................................12

附錄5主程序代碼..........................................................................................12

湖南商務職業(yè)技術學院畢業(yè)設計

基于51單片機的心率計設計與制作

1設計背景及內(nèi)容

近年來,我國心血管疾病的病發(fā)率和致死率分別占46%和44%,每五例死亡

中就有兩例死于心血管疾病,并且我國人口老齡化逐年加重,心臟病風險越來

月高。

并且當今社會,熬夜已經(jīng)成為了常態(tài),而熬夜會導致心臟病幾率上升,人

們醒著時,心臟無時無刻都在工作,只有進入深度睡眠才能得到休息,現(xiàn)在人

們睡眠質(zhì)量越來越低,熬夜次數(shù)越來越多,我覺得,一款簡單、方便、能檢測

心率的產(chǎn)品能幫助許多人更清楚的了解自己的情況,在心臟出現(xiàn)問題的前期起

到提醒作用,避免造成心臟病的發(fā)生。

本產(chǎn)品是一款便攜式數(shù)字人體心率計,是一款采用紅外功能的傳感器,通

過軟件和硬件的協(xié)調(diào)配合來對人體心率信號進行檢測的專業(yè)儀器。將心率計放

在脈搏處,通過按鍵調(diào)節(jié)測量,在超過范圍后,將會自動報警。

2設計方案遴選

2.1單片機的選擇

(1)AT89C51單片機

(2)AT89C52單片機

AT89C52與AT89C51單片機都是比較常用的單片機。高性能、低功耗、功能

豐富且功能性強、成本低,AT89C51單片機外接晶振為24MHz、4k字節(jié),AT89C52

單片機最高外接晶振為33MHz、8k字節(jié),且AT89C52比AT89C51單片機多了一

個定時器。綜合考慮兩種單片機的優(yōu)缺點,由于成本相差無幾,因此此次設計

選用性能更高的AT89C52單片機。

2.2顯示模塊的選擇

(1)液晶顯示

1

湖南商務職業(yè)技術學院畢業(yè)設計

LCD1602液晶顯示屏是容性負載,液晶的電阻,液晶顯示的信息量較大、

長壽命、低壓、分辨率高、可顯示范圍大、價格相對稍高但顯示清晰度和直觀

程度都存在絕對優(yōu)勢。

(2)LED動態(tài)顯示

數(shù)碼管動態(tài)顯示是單片機中應用廣泛的顯示方式,且價格便宜,但顯示效

果和效率均偏低,且編程比較復雜。

根據(jù)以上兩種方案相比較,考慮到使用心率計的人群中老人占比較高,而

液晶顯示具有效果更好,操控更簡單等優(yōu)點。所以就選擇液晶顯示屏來作為顯

示模塊的使用。

2.3系統(tǒng)框圖設計

心率計的總體設計主要包括信號的采集電路和放大電路、比較電路、單片

機信號處理電路和液晶顯示電路,處理結果在LCD1602液晶模塊上顯示出

來。系統(tǒng)框圖如圖2-1所示。

圖2-1系統(tǒng)框圖

3產(chǎn)品硬件設計

3.1STC89C52RC單片機核心電路設計

51單片機作為整個系統(tǒng)的核心部位,所以使用性能更強,功能更強,范圍

更廣的STC89C52RC作為本產(chǎn)品的核心部位,原理圖如圖3-1所示。

2

湖南商務職業(yè)技術學院畢業(yè)設計

圖3-1單片機的電路原理圖

3.2按鍵電路設計

鍵盤采用線性鍵盤的設計,引腳通過按鍵接地,有掃描程序控制。分為三

個設置按鍵和一個復位按鍵,設置按鍵分別接到CPU的P30、P31、P32上的,

正常心率范圍設置,以便在超出限制時報警提示。

第一個按鍵:為設置報警的上下限心率。

第二個按鍵:按下可以增加心率上限。

第三個按鍵:按下可以降低心率下限。

第四個按鍵:復位按鍵。

如圖3-2所示。

3

湖南商務職業(yè)技術學院畢業(yè)設計

圖3-2按鍵電路原理圖

3.3LCD1602液晶顯示模塊電路

LCD1602主要是顯示當前測量的心率,單位是心率/分鐘。字符型液晶顯示

網(wǎng)格模塊,是專門用來顯示數(shù)字及字母,還能夠顯示多個國家的語言和一般符

號的點陣形式液晶屏幕。

原理圖如圖3-3所示:

圖3-3顯示器原理圖

4

湖南商務職業(yè)技術學院畢業(yè)設計

4產(chǎn)品軟件設計

4.1主程序流程圖

主程序工作的大致流程是先進行系統(tǒng)初始化,確定中斷入口地址,確定程

序入口,進行while循環(huán),然后進入設置階段,可加減報警值或切換模式,然后

開始測量或設置上下限。如圖4-1所示。

圖4-1主程序流程圖

5

湖南商務職業(yè)技術學院畢業(yè)設計

4.2程序軟件開發(fā)環(huán)境

我采用的是用Keil5軟件進行源代碼的編寫,因為Keil5軟件安裝簡單,使

用方便,C語言代碼可以兼容在在Keil5軟件里面進行調(diào)試和編譯,且平時學習

和使用Keil5次數(shù)較多,更加熟練。

4.3產(chǎn)品程序清單

產(chǎn)品程序清單如圖4-2所示。

圖4-2產(chǎn)品程序清單圖

5產(chǎn)品使用說明

5.1產(chǎn)品裝配圖

產(chǎn)品裝配圖如圖5-1所示。

6

湖南商務職業(yè)技術學院畢業(yè)設計

圖5-1產(chǎn)品裝配圖

5.2產(chǎn)品調(diào)試

整體系統(tǒng)上電調(diào)試前,觀察導線是否脫落,是否過長,是否破損等問題,

各個部分的位置是否正確,當接電時開發(fā)板是否通電。

選擇調(diào)試平臺,將程序帶入軟件進行調(diào)試,如果程序調(diào)試沒有存在問題,

下一步就可以開始驗證系統(tǒng)功能能不能滿足要求,如果功能存在問題,那就要

重新調(diào)試,反復進行調(diào)試,直到所有問題都解決,達到想要效果。

產(chǎn)品調(diào)試圖如圖5-2所示。

圖5-2產(chǎn)品調(diào)試圖

7

湖南商務職業(yè)技術學院畢業(yè)設計

5.3產(chǎn)品使用說明

本產(chǎn)品是基于STC89C52單片機設計的心率計,當把手指放到紅外對管中

時,兩秒內(nèi)讀出心率,LCD1602液晶顯示當前心率,單位是心率/分鐘。按鍵可

以設置報警的上下限心率,按鍵一設置,按鍵二加,按鍵三減。

(1)使用前檢查產(chǎn)品導線和接口是否完全接好,有沒有脫落的情況,使用

時清除桌面雜物。

(2)使用USB線給板子上電,打開開關后心率計啟動,先進行心率報警值

和上下限的設置,隨后在心率檢測器處檢測,短暫延遲后在LCD1602液晶顯示

屏上顯示檢測數(shù)值,若達到心率報警值則報警燈亮起且蜂鳴器發(fā)聲,若為正常

范圍則相反。

(3)試用結束后收好產(chǎn)品,輕拿輕放,切記不要暴力操作。

6產(chǎn)品設計技術標準

[1]J-STD-001E電氣與電子組件的焊接要求

[2]IPC-A-610D(中文版),IPC-A-610E電子組件的可接受性要求

[3]IPC-7711/21電子組件和電路板的返工&返修

[4]GB/T11457-2006信息技術軟件工程術語;

[5]GB/T8566-2007信息技術軟件生存周期過程標準;

[6]GB/T8567-2006計算機軟件文檔編制規(guī)范。

7參考資料

[1]智能心率監(jiān)測系統(tǒng)的設計[J].劉宇紅,李月婷,何國鋒,姜成旭.現(xiàn)代電

子技術.2017(20)

[2]基于單片機的智能SMS心率計設計[J].張建民,郭伙令,龍佳樂,李燁.

現(xiàn)代電子技術.2017(06)

[3]一種基于STM32和PPG技術的腕戴式心率計設計[J].劉勁松,朱純午,

楊莉.電子技術應用.2016(10)

[4]基于Web服務的物聯(lián)接入系統(tǒng)設計[J].于洪波,劉鴻飛,方麗英,陳道

新,王普.電子技術應用.2015(07)

8

湖南商務職業(yè)技術學院畢業(yè)設計

[5]基于ZigBee技術的便攜式心率計的設計[J].李戰(zhàn)勝,萬葉麗.電子世

界.2015(13)

[6]便攜式心率監(jiān)測計的設計[J].管芳,黃新,胡鴻志.儀表術.2014(01)

[7]基于單片機的數(shù)字心率計設計[J].黃川.科技資訊.2013(26)

[8]數(shù)字心率計的單片機設計與實現(xiàn)[J].石建飛.自動化技術與應

用.2013(05)

[9]基于AT89C51單片機的心率體溫測量儀設計[J].蘭羽.國外電子測量技

術.2013(03)

[10]基于光電技術的心率測量儀[J].駱文,劉陽,熊俊俏.工業(yè)儀表與自動

化裝置.2012(01)

附錄

附錄1元器件清單

9

湖南商務職業(yè)技術學院畢業(yè)設計

附錄2電路原理圖

10

湖南商務職業(yè)技術學院畢業(yè)設計

附錄3PCB設計圖

11

湖南商務職業(yè)技術學院畢業(yè)設計

附錄4產(chǎn)品實物圖

附錄5主程序代碼

#include<reg52.h>

#include<intrins.h>//包含頭文件

#defineuintunsignedint

#defineucharunsignedchar

#defineulongunsignedlong//宏定義

#defineLCD_DATAP0//定義P0口為LCD_DATA

sbitLCD_RS=P2^5;

sbitLCD_RW=P2^6;

sbitLCD_E=P2^7;//定義LCD控制引腳

12

湖南商務職業(yè)技術學院畢業(yè)設計

sbitXintiao=P3^2;//脈搏檢測輸入端定義

sbitspeaker=P2^4;//蜂鳴器引腳定義

voiddelay5ms(void);//誤差0us

voidLCD_WriteData(ucharLCD_1602_DATA);/********LCD1602數(shù)據(jù)寫入

***********/

voidLCD_WriteCom(ucharLCD_1602_COM);/********LCD1602命令寫

入***********/

voidlcd_1602_word(ucharAdress_Com,ucharNum_Adat,uchar*Adress_Data);

/*1602字符顯示函數(shù),變量依次為字符顯示首地址,顯示字符長度,所顯示的

字符*/

voidInitLcd();//液晶初始化函數(shù)

voidTim_Init();

ucharXintiao_Change=0;//

uintXintiao_Jishu;

ucharstop;

ucharView_Data[3];

ucharView_L[3];

ucharView_H[3];

ucharXintiao_H=100;//脈搏上限

ucharXintiao_L=40;//脈搏下限

ucharnum[10];

uintnum_OK=0;

ucharXT=0;

ucharKey_Change;

ucharKey_Value;//按鍵鍵值

ucharView_Con;//設置的位(0正常工作,1設置上限,2設置下限)

ucharView_Change;

voidmain()//主函數(shù)

{

InitLcd();

Tim_Init();

lcd_1602_word(0x80,16,"HeartRate:");//初始化顯示

TR0=1;

TR1=1;//打開定時器

while(1)//進入循環(huán)

{

if(Key_Change)//有按鍵按下并已經(jīng)得出鍵值

{

13

湖南商務職業(yè)技術學院畢業(yè)設計

Key_Change=0;//將按鍵使能變量清零,等待下次按鍵按下

View_Change=1;

switch(Key_Value)//判斷鍵值

{

case1://設置鍵按下

{

View_Con++;//設置的位加

if(View_Con==3)//都設置好后將此變量清零

View_Con=0;

break;//跳出,下同

}

case2://加鍵按下

{

if(View_Con==2)//判斷是設置上限

{

if(Xintiao_H<150)//上限數(shù)值小于150

Xintiao_H++;//上限+

}

if(View_Con==1)//如果是設置下限

{

if(Xintiao_L<Xintiao_H-1)//下限值小于上限-1(下限值

不能超過上限)

Xintiao_L++;//下限值加

}

break;

}

case3://減鍵按下

{

if(View_Con==2)//設置上限

{

if(Xintiao_H>Xintiao_L+1)//上限數(shù)據(jù)大于下限+1(同樣

上限值不能小于下限)

Xintiao_H--;//上限數(shù)據(jù)減

}

if(View_Con==1)//設置下限

{

if(Xintiao_L>30)//下限數(shù)據(jù)大于30時

Xintiao_L--;//下限數(shù)據(jù)減

}

break;

}

}

}

14

湖南商務職業(yè)技術學院畢業(yè)設計

if(View_Change)//顯示變量

{

View_Change=0;//變量清零

if(stop==0)//心率正常時

{

if(View_Data[0]==0x30)//最高位為0時不顯示

View_Data[0]='';

}

else//心率不正常(計數(shù)超過5000,也就是兩次信

號時間超過5s)不顯示數(shù)據(jù)

{

View_Data[0]='';

View_Data[1]='';

View_Data[2]='';

}

switch(View_Con)

{

case0://正常顯示

{

lcd_1602_word(0x80,16,"HeartRate:");//顯示一行數(shù)據(jù)

lcd_1602_word(0xc0,16,"");//顯示第二行

數(shù)據(jù)

if(num_OK!=0)

lcd_1602_word(0xcd,3,View_Data);//第二行顯示

心率

break;

}

case1://設置下限時顯示

{

lcd_1602_word(0x80,16,"HeartRate:");//第一行顯示心

lcd_1602_word(0x8d,3,View_Data);

View_L[0]=Xintiao_L/100+0x30;//將下限數(shù)據(jù)拆字

View_L[1]=Xintiao_L%100/10+0x30;

View_L[2]=Xintiao_L%10+0x30;

if(View_L[0]==0x30)//最高位為0時,不

顯示

View_L[0]='';

lcd_1602_word(0xC0,16,"WarningL:");//第二行顯示下

限數(shù)據(jù)

15

湖南商務職業(yè)技術學院畢業(yè)設計

lcd_1602_word(0xCd,3,View_L);

break;

}

case2://設置上限時顯示(同上)

{

lcd_1602_word(0x80,16,"HeartRate:");

lcd_1602_word(0x8d,3,View_Data);

View_H[0]=Xintiao_H/100+0x30;

View_H[1]=Xintiao_H%100/10+0x30;

View_H[2]=Xintiao_H%10+0x30;

if(View_H[0]==0x30)

View_H[0]='';

lcd_1602_word(0xC0,16,"WarningH:");

lcd_1602_word(0xCd,3,View_H);

break;

}

}

}

}

}

voidTime1()interrupt3//定時器1服務函數(shù)

{

staticucharKey_Con,Xintiao_Con;

uchari,j;

ucharzancun;

bitflag_break;

TH1=0xd8;//10ms

TL1=0xf0;//重新賦初值

switch(Key_Con)//無按鍵按下時此值為0

{

case0://每10ms掃描此處

{

if((P1&0x07)!=0x07)//掃描按鍵是否有按下

{

Key_Con++;//有按下此值加1,值為1

}

break;

}

case1://10ms后二次進入中斷后掃描此處(Key_Con

16

湖南商務職業(yè)技術學院畢業(yè)設計

為1)

{

if((P1&0x07)!=0x07)//第二次進入中斷時,按鍵仍然是按下(起到按

鍵延時去抖的作用)

{

Key_Con++;//變量加1,值為2

switch(P1&0x07)//判斷是哪個按鍵按下

{

case0x06:Key_Value=1;break;//判斷好按鍵后將鍵值賦

值給變量Key_Value

case0x05:Key_Value=2;break;

case0x03:Key_Value=3;break;

}

}

else//如果10ms時沒有檢測到按鍵按下

(按下時間過短)

{

Key_Con=0;//變量清零,重新檢測按鍵

}

break;

}

case2://20ms后檢測按鍵

{

if((P1&0x07)==0x07)//檢測按鍵是否還是按下狀態(tài)

{

Key_Change=1;//有按鍵按下使能變量,(此變

量為1時才會處理鍵值數(shù)據(jù))

Key_Con=0;//變量清零,等待下次有按鍵按

}

break;

}

}

switch(Xintiao_Con)//此處與上面按鍵的檢測類似

{

case0://默認Xintiao_Con是為0的

{

if(!Xintiao)//每10ms(上面的定時器)檢測一次脈搏是否有信號

{

Xintiao_Con++;//如果有信號,變量加一,程序就會往下走了

}

break;

}

17

湖南商務職業(yè)技術學院畢業(yè)設計

case1:

{

if(!Xintiao)//每過10ms檢測一下信號是否還存在

{

Xintiao_Con++;//存在就加一

}

else

{

Xintiao_Con=0;//如果不存在了,檢測時間很短,說明檢測到的

不是脈搏信號,可能是其他干擾,將變量清零,跳出此次檢測

}

break;

}

case2:

{

if(!Xintiao)

{

Xintiao_Con++;//存在就加一

}

else

{

Xintiao_Con=0;//如果不存在了,檢測時間很短,說明檢測到的

不是脈搏信號,可能是其他干擾,將變量清零,跳出此次檢測

}

break;

}

case3:

{

if(!Xintiao)

{

Xintiao_Con++;//存在就加一

}

else

{

Xintiao_Con=0;//如果不存在了,檢測時間很短,說明檢測到的

不是脈搏信號,可能是其他干擾,將變量清零,跳出此次檢測

}

break;

}

case4:

{

if(Xintiao)//超過30ms一直有信號,判定此次是脈搏信號,執(zhí)行以下

程序

18

湖南商務職業(yè)技術學院畢業(yè)設計

{

if(Xintiao_Change==1)//心率計原理為檢測兩次脈沖間隔時間計

算心率,變量Xintiao_Change第一次脈沖時為0的,所有走下面的else,第二次

走這里

{

if(60000/Xintiao_Jishu<200)//心跳小于200是

正常心跳,否則認為是干擾,不計

{

num[XT]=(60000/Xintiao_Jishu);//將心跳數(shù)值保存

到數(shù)組num[XT]內(nèi)

XT++;//保存好后將XT值

加1

if(XT>=5)//XT加到5時

{

XT=0;//XT清零

for(i=0;i<5;i++)//for循環(huán)5次(這個for

循環(huán)是為了將5次的數(shù)據(jù)進行冒泡法取平均值)

{//就是將5個數(shù)據(jù)

排序,然后去掉一個最大值和一個最小值,剩下的取平均值,使結果更穩(wěn)定。

flag_break=0;//跳出變量清零,如

果執(zhí)行完下面的for循環(huán),此變量仍為1,則說明num數(shù)組內(nèi)數(shù)據(jù)已經(jīng)是依次排

列,跳出for循環(huán)。

for(j=0;j<5;j++)//內(nèi)循環(huán)5次

{

if(num[j]>num[j+1])//num[j]的數(shù)據(jù)如

果大于num[j+1]的數(shù)據(jù)

{

zancun=num[j];//將num[j]的數(shù)據(jù)

暫存到zancun變量

num[j]=num[j+1];//將num[j+1]的數(shù)

據(jù)保存到num[j]內(nèi)

num[j+1]=zancun;//將zancun的數(shù)據(jù)

保存到num[j+1]內(nèi),完成num[j]和num[j+1]的數(shù)據(jù)位置調(diào)換

flag_break=1;//只要進入當前的

if函數(shù)里就說明num數(shù)組內(nèi)的數(shù)據(jù)還沒有完成依次排列,此變量置1,繼續(xù)在for

循環(huán)內(nèi)執(zhí)行。

}

}

if(flag_break==0)break;//如果數(shù)據(jù)已經(jīng)或經(jīng)

過調(diào)換已經(jīng)是依次排列了,那么跳出變量置1

}

num_OK=(num[1]+num[2]+num[3])/3;//將最大值和

最小值去掉,中間三個值相加,除以3得到平均值

19

湖南商務職業(yè)技術學院畢業(yè)設計

if((num_OK>=Xintiao_H)||(num_OK<=Xintiao_L))//

心率不在范圍內(nèi)報警

speaker=0;//蜂鳴器響

else

speaker=1;//不響

}

View_Data[0]=num_OK/100+0x30;//計算心跳

并拆字顯示:心跳計時是以10ms為單位,兩次心跳中間計數(shù)如果是100次,也

就是100*10ms=1000ms=1s

View_Data[1]=num_OK%100/10+0x30;//那么計算

出的一分鐘(60s)心跳數(shù)就是:60*1000/(100*10ms)=60次其中60是一

分鐘60s,1000是一秒有1000ms,100是計數(shù)值,10是一次計數(shù)對應的時間是

10ms

View_Data[2]=num_OK%10+0x30;//計算出的

心跳數(shù)/100得到心跳的百位,%100是取余的,就是除以100的余數(shù),再除以10

就得到十位了,以此類推

//數(shù)字后的單

個數(shù)據(jù)+0x30的目的是得到對應數(shù)字的液晶顯示碼,數(shù)字0對應的液晶顯示碼是

0x30,1是0x30+1,以此類推

}

if(num_OK>200)

{

View_Data[0]='-';

View_Data[1]='-';

View_Data[2]='-';

speaker=1;//不響

}

View_Change=1;//計算出心率后啟動顯示

Xintiao_Jishu=0;//心跳計數(shù)清零

Xintiao_Change=0;//計算出心率后該變量清零,準備下次

檢測心率

stop=0;//計算出心率后stop邈

}

else//第一次脈沖時Xintiao_Change為0

{

Xintiao_Jishu=0;//脈沖計時變量清零,開始計時

Xintiao_Change=1;//Xintiao_Change置1,準備第二次檢測到

脈沖時計算心率

}

Xintiao_Con=0;//清零,準備檢測下一次脈沖

break;

}

20

湖南商務職業(yè)技術學院畢業(yè)設計

}

}

}

/

溫馨提示

  • 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

提交評論