單片機課程設(shè)計--智能搶答器的設(shè)計與功能實現(xiàn)_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課 程 設(shè) 計</b></p><p>  題目:智能搶答器的設(shè)計與功能實現(xiàn)</p><p>  班 級:計科2011級03班</p><p><b>  學生姓名:</b></p><p>  指導(dǎo)老師: </p>&l

2、t;p><b>  二〇一四年一月</b></p><p><b>  目 錄</b></p><p>  一.引言.................................................-3-</p><p>  二.設(shè)計方案...............................

3、..............-3-</p><p>  三.硬件設(shè)計.............................................-4-</p><p>  3.1 電路核心部分....................................-4-</p><p>  3.2 數(shù)碼管顯示部分....................

4、..............-5-</p><p>  3.3 電路其他部分....................................-6-</p><p>  3.6 PCB電路圖.......................................-6-</p><p>  3.7 實物電路圖........................

5、..............-7-</p><p><b>  四.軟件的實現(xiàn)</b></p><p>  1. 程序流程圖.......................................-8-</p><p>  2.軟件程序代碼......................................-9-</p>

6、;<p>  五.結(jié)果分析............................................-22-</p><p>  六.小結(jié)................................................-25-</p><p>  參考文獻...........................................-27

7、-</p><p>  附注...............................................-27-</p><p><b>  一、引言</b></p><p>  無論是學校、企業(yè)、軍隊還是益智性電視節(jié)目,都會舉辦各種各樣的智力競賽,都會用到搶答器。因此搶答器是必不可少的最公正的用具。在我們各種競賽中我們也經(jīng)常

8、能看到有搶答的環(huán)節(jié),某些舉辦方采用讓選手通過舉答題板的方法判斷選手的答題權(quán),這在某種程度上會因為主持人的主觀誤斷造成比賽的不公平性,而搶答器的應(yīng)用就能避免這種弊端。而目前市場上已有各種各樣的智力競賽搶答器,但絕大多數(shù)是早期設(shè)計的,以模擬電路、數(shù)字電路或者模擬電路與數(shù)字電路相結(jié)的產(chǎn)品,功能越多電路越復(fù)雜,且成本也比較高,發(fā)生故障的可能性也比較高,無法做到顯示方式簡單,無法判斷提前搶按鍵的行為。隨著科技的飛速發(fā)展,能夠?qū)崿F(xiàn)搶答器功能的方式有

9、多種,可以采用模擬電路、數(shù)字電路或模擬與數(shù)字電路相結(jié)合的方式以及利用微電腦芯片作為核心部件進行邏輯控制及信號產(chǎn)生的單片機技術(shù)和C語言編程而設(shè)計的多路智力競賽搶答器。本文利用multisim電路仿真軟件強大的仿真功能,采用層次電路設(shè)計,將各功能的單位電路設(shè)計成層次電路,這樣每個單元電路和整體電路連線一目了然,既美觀也便于閱讀,還有利于團隊設(shè)計,因每一層次電路為一獨立電路,便于獨立設(shè)計和修改。該搶答器在保留了原始</p>&l

10、t;p><b>  二、設(shè)計方案</b></p><p>  本次設(shè)計,采用一片80C51芯片檢測8個用戶按鍵優(yōu)先順序,用數(shù)碼管顯示倒計時60秒,在60秒內(nèi)判斷有沒有選手搶答問題,如沒有則進入下一個倒計時;如有, 裁判判斷選手的回答答案是否正確,同時按鍵表示選手答案正誤,并給與選手加分或扣分,最終得出所以選手得分并決出優(yōu)勝者。 </p><p><b&g

11、t;  具體步驟如下:</b></p><p>  1. 8 路輸入,編號為1~8;</p><p>  2. 裁判用開關(guān)控制系統(tǒng)的清零和搶答開始;</p><p>  3. 搶答器具有鎖存和顯示第一個搶答者的編號并禁止其他選手搶答的功能;</p><p>  4. 搶答器在裁判啟動后開始搶答,具有60 秒倒計時功能,在60秒內(nèi)搶

12、答有效,停止時并顯示搶答時刻;</p><p>  5. 60秒內(nèi)無人搶答,本次搶答無效,選手若搶答,顯示搶答無效;</p><p>  6. 若裁判尚未啟動,選手若搶答,顯示搶答無效或報警;</p><p>  7. 答題完成后,裁判判定答案正確與否,并給出此相應(yīng)的成績;</p><p>  8. 進入下一輪搶答</p>&l

13、t;p>  9. 所有問題搶答完畢后,統(tǒng)計總成績予以判定優(yōu)勝者。</p><p><b>  三、硬件設(shè)計</b></p><p>  具體電路設(shè)計由一個51單片機組成的核心部分和八個用戶搶答按鍵,系統(tǒng)復(fù)位鍵,開始判斷鍵等其他鍵位構(gòu)成。每人擁有一個紅綠燈代表正確與否(紅色為錯誤,綠色為正確)。四位七段數(shù)碼管顯示題號,選手號,倒計時,選手成績等具體數(shù)字。</

14、p><p>  各個電路具體部分如下圖:</p><p> ?。?.1-電路圖核心部分)</p><p> ?。?.2-數(shù)碼管顯示部分)</p><p> ?。?.3-用戶搶答按鍵部分)</p><p> ?。?.4-正誤判斷顯示部分)</p><p> ?。?.5-電源部分)</p>

15、<p>  (3.6-電路板PCB圖)</p><p>  (3.7-電路板實體視圖正面)</p><p> ?。?.8-電路板實體視圖背面)</p><p><b>  四、軟件的實現(xiàn)</b></p><p>  軟件設(shè)計具體流程圖如下:</p><p>  2、軟件程序源代碼:&l

16、t;/p><p>  #include <reg51.h></p><p>  // </p><p>  //a - P00</p><p>  //b - P02</p><p>  //c - P04</p><p>  //d - P05</p&g

17、t;<p>  //e - P06</p><p>  //f - P01</p><p>  //g - P03</p><p>  //D1 - P03</p><p>  //D2 - P02</p><p>  //D3 - P01</p><p>  //D4 -

18、P00</p><p>  //0到9的數(shù)碼管值,最后是'-'</p><p>  unsigned char code numbers[11] = {0x77,0x14,0x6D,0x3D,0x1E,0x3B,0x7B,0x15,0x7F,0x3F,0x08};</p><p><b>  //鎖存器引腳</b></p&

19、gt;<p>  sbit latch = P0^7;</p><p><b>  //F2引腳</b></p><p>  sbit key_f1 = P3^1;</p><p>  #define KEY_F10x02</p><p><b>  //F1引腳</b></p

20、><p>  sbit key_f2 = P3^0;</p><p>  #define KEY_F20x01</p><p><b>  //開始鍵</b></p><p>  sbit key_start = P3^2;</p><p>  #define KEY_START0x04</

21、p><p><b>  //LED</b></p><p>  sbit leda0 = P2^7;</p><p>  sbit leda1 = P2^6;</p><p>  sbit leda2 = P2^5;</p><p>  sbit ledc1 = P2^4;</p>&l

22、t;p>  sbit ledc2 = P2^3;</p><p><b>  //待顯示的值</b></p><p>  //unsigned long disp_value = 0;</p><p>  //要顯示的數(shù)位(低4位表示,1為顯示)</p><p>  unsigned char disp_mask

23、=0x0F;</p><p>  //標志:60秒倒計時是否進行中</p><p>  bit bIsCountdownTimerPresent;</p><p>  void delay(void)</p><p><b>  {</b></p><p><b>  int i;<

24、;/b></p><p>  for(i=0; i<100; i++)</p><p><b>  ;</b></p><p><b>  }</b></p><p>  void disp_value(int value)</p><p><b>  

25、{</b></p><p>  unsigned char b4,b3,b2,b1;</p><p>  bit negvalue=0;</p><p>  if(value<0){</p><p>  negvalue=1;</p><p>  value=-value;</p>&l

26、t;p><b>  }</b></p><p>  b4 = value / 1000;</p><p>  b3 = value%1000/100;</p><p>  b2 = value%100/10;</p><p>  b1 = value%10;</p><p>  latch

27、= 1;</p><p>  P0 &= ~0x7F;</p><p>  latch = 1;</p><p>  if(disp_mask&0x08){</p><p>  if(negvalue) b4=10;</p><p>  P0 |= ~numbers[b4] & 0x7F;&l

28、t;/p><p><b>  }</b></p><p>  else P0 |= 0x7F;</p><p>  latch = 0;</p><p>  P0 = 0x08;</p><p><b>  delay();</b></p><p>  P

29、0 &= ~0x7F;</p><p>  latch = 1;</p><p>  if(disp_mask&0x04){</p><p>  P0 |= ~numbers[b3] & 0x7F;</p><p><b>  }</b></p><p>  else P

30、0 |= 0x7F;</p><p>  latch = 0;</p><p>  P0 = 0x04;</p><p><b>  delay();</b></p><p>  P0 &= ~0x7F;</p><p>  latch = 1;</p><p>

31、  if(disp_mask&0x02) P0 |= ~numbers[b2] & 0x7F;</p><p>  else P0 |= 0x7F;</p><p>  latch = 0;</p><p>  P0 = 0x02;</p><p><b>  delay();</b></p>

32、<p>  P0 &= ~0x7F;</p><p>  latch = 1;</p><p>  if(disp_mask&0x01) P0 |= ~numbers[b1] & 0x7F;</p><p>  else P0 |= 0x7F;</p><p>  latch = 0;</p>

33、;<p>  P0 = 0x01;</p><p><b>  delay();</b></p><p>  P0 &= ~0x7F;</p><p>  latch = 0;</p><p><b>  }</b></p><p>  char ti

34、mer_value=0;</p><p>  char timer_count = 0;</p><p>  void t1(void) interrupt 3</p><p><b>  {</b></p><p>  //static char x=60;</p><p>  TL1 = 0x

35、E0;</p><p>  TH1 = 0xB1;</p><p>  timer_count++;</p><p>  if(timer_count>=50){</p><p>  timer_value--;</p><p>  if(timer_value<0) disp_mask ^= 0x0F;&

36、lt;/p><p>  if(timer_value<-5){</p><p>  bIsCountdownTimerPresent = 0;</p><p><b>  TR1 = 0;</b></p><p><b>  }</b></p><p>  timer_co

37、unt = 0;</p><p><b>  }</b></p><p>  disp_value(timer_value<0?0:timer_value);</p><p><b>  }</b></p><p>  //設(shè)置定時器1為60秒倒計時模式</p><p>

38、;<b>  //周期為20ms</b></p><p>  void set_timer_for_count_down(void)</p><p><b>  {</b></p><p><b>  TR1 = 0;</b></p><p>  TMOD &= ~0x

39、F0;</p><p>  TMOD |= 0x10;</p><p>  TL1 = 0xE0;</p><p>  TH1 = 0xB1;</p><p><b>  EA = 1;</b></p><p><b>  ET1 = 1;</b></p>&

40、lt;p>  disp_mask &= ~0x0C;</p><p>  disp_mask |= 0x03;</p><p>  timer_value = 60;</p><p>  timer_count = 0;</p><p>  bIsCountdownTimerPresent = 1;</p><

41、;p><b>  TR1 = 1;</b></p><p><b>  }</b></p><p>  unsigned char read_func_keys(void)</p><p><b>  {</b></p><p>  unsigned char ret =

42、 0;</p><p>  volatile unsigned int tmpdelay;</p><p>  key_f1 = 1;</p><p>  key_f2 = 1;</p><p>  if(key_f1==0){</p><p>  for(tmpdelay=10000; tmpdelay>0;

43、tmpdelay--)</p><p><b>  ;</b></p><p>  if(key_f1==0){</p><p>  ret |= KEY_F1;</p><p>  while(key_f1==0)</p><p><b>  ;</b></p>

44、<p><b>  }</b></p><p><b>  }</b></p><p>  if(key_f2==0){</p><p>  for(tmpdelay=10000; tmpdelay>0; tmpdelay--)</p><p><b>  ;</

45、b></p><p>  if(key_f2==0){</p><p>  ret |= KEY_F2;</p><p>  while(key_f2==0)</p><p><b>  ;</b></p><p><b>  }</b></p><

46、p><b>  }</b></p><p>  if(key_start==0){</p><p>  for(tmpdelay=10000; tmpdelay>0; tmpdelay--)</p><p><b>  ;</b></p><p>  if(key_start==0){&

47、lt;/p><p>  ret |= KEY_START;</p><p>  while(key_start==0)</p><p><b>  ;</b></p><p><b>  }</b></p><p><b>  }</b></p>

48、<p>  return ret;</p><p><b>  }</b></p><p>  unsigned char read_user_keys(void)</p><p><b>  {</b></p><p>  P1 = 0xFF;</p><p>

49、;  return ~P1;</p><p><b>  }</b></p><p>  unsigned char get_current_user(unsigned char key)</p><p><b>  {</b></p><p>  unsigned char times;</

50、p><p>  for(times=1; times<9; times++){//注意是9</p><p>  if(key & 1) return times;</p><p>  else key >>= 1;</p><p><b>  }</b></p><p>

51、<b>  return 0;</b></p><p><b>  }</b></p><p>  #define CONFIG_LED(a0,a1,a2,c1,c2)do{leda0=a0;leda1=a1;leda2=a2;ledc1=c1;ledc2=c2;} while(0)</p><p>  void dis

52、p_led(char which,char what)</p><p><b>  {</b></p><p>  switch(which)</p><p><b>  {</b></p><p>  case 1:CONFIG_LED(1,1,1,what,!what);break;</p

53、><p>  case 2:CONFIG_LED(0,1,1,what,!what);break;</p><p>  case 3:CONFIG_LED(1,0,1,what,!what);break;</p><p>  case 4:CONFIG_LED(0,0,1,what,!what);break;</p><p>  case 5:C

54、ONFIG_LED(1,1,0,what,!what);break;</p><p>  case 6:CONFIG_LED(0,1,0,what,!what);break;</p><p>  case 7:CONFIG_LED(1,0,0,what,!what);break;</p><p>  case 8:CONFIG_LED(0,0,0,what,!wha

55、t);break;</p><p><b>  }</b></p><p><b>  }</b></p><p>  bit bIsCountdownTimer2Present=0;</p><p>  int timer2_times=0;</p><p>  void

56、t0(void) interrupt 1</p><p><b>  {</b></p><p>  TL0 = 0xE0;</p><p>  TH0 = 0xB1;</p><p>  timer2_times--;</p><p>  if(timer2_times<0){</p

57、><p><b>  TR0 = 0;</b></p><p>  bIsCountdownTimer2Present = 0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  //周期為500ms<

58、/p><p>  void delay_timer(int m20ms)</p><p><b>  {</b></p><p><b>  TR0 = 0;</b></p><p>  TMOD &= ~0x0F;</p><p>  TMOD |= 0x01;<

59、/p><p>  TL0 = 0xE0;</p><p>  TH0 = 0xB1;</p><p><b>  EA = 1;</b></p><p><b>  ET0 = 1;</b></p><p>  timer2_times = m20ms;</p>

60、<p>  bIsCountdownTimer2Present=1;</p><p><b>  TR0 = 1;</b></p><p><b>  }</b></p><p>  void close_led(void)</p><p><b>  {</b>&l

61、t;/p><p><b>  ledc1=0;</b></p><p><b>  ledc2=0;</b></p><p><b>  }</b></p><p>  void main(void)</p><p><b>  {</b&g

62、t;</p><p>  unsigned char done=1;</p><p>  int x = 0;</p><p>  unsigned char key;</p><p>  unsigned char user;</p><p>  char score[8]={0};</p><p

63、>  while(done <= 3){</p><p><b>  begin:</b></p><p>  close_led();</p><p><b>  //顯示當前答題數(shù)</b></p><p>  disp_mask = 0x03;</p><p

64、>  disp_value(done);</p><p>  //等待裁判按下"開始"</p><p>  key = read_func_keys();</p><p>  if( ! (key & KEY_START) ){</p><p><b>  continue;</b>&l

65、t;/p><p><b>  }</b></p><p>  //裁判按下了"開始"鍵</p><p><b>  done++;</b></p><p>  //開始60秒倒計時</p><p>  set_timer_for_count_down();&l

66、t;/p><p>  //判斷時間是否結(jié)束 && 是否有人按下鍵</p><p><b>  for(;;){</b></p><p>  while(bIsCountdownTimerPresent){</p><p>  key = read_user_keys();</p><p&g

67、t;  //沒人按且時間沒到</p><p>  if(key==0){</p><p><b>  continue;</b></p><p><b>  }</b></p><p>  //在規(guī)定的時間內(nèi)有人按鍵</p><p><b>  TR1 = 0;&l

68、t;/b></p><p>  //取得按下鍵的用戶</p><p>  user = get_current_user(key);</p><p><b>  //循環(huán)顯示用戶名</b></p><p>  disp_mask = 0x01;</p><p>  delay_tim

69、er(100);</p><p>  while(bIsCountdownTimer2Present){</p><p>  disp_value(user);</p><p><b>  }</b></p><p>  //重新開始計時并在規(guī)定的時間內(nèi)判斷正誤</p><p>  set_tim

70、er_for_count_down();</p><p>  while(bIsCountdownTimerPresent){</p><p>  key = read_func_keys();</p><p>  if(key & KEY_START){</p><p><b>  //取消到下一題</b>&l

71、t;/p><p><b>  TR1 = 0;</b></p><p>  goto begin;</p><p><b>  }</b></p><p>  if(key & KEY_F1){</p><p><b>  //回答正確</b><

72、;/p><p><b>  TR1 = 0;</b></p><p>  disp_led(user,1);</p><p><b>  //加分</b></p><p>  score[user-1] += 10;</p><p><b>  //顯示分數(shù)</b

73、></p><p>  for(x=0; x<4; x++){</p><p>  delay_timer(50);</p><p>  disp_mask = 0x0F;</p><p>  while(bIsCountdownTimer2Present)</p><p>  disp_value(sco

74、re[user-1]);</p><p>  delay_timer(50);</p><p>  while(bIsCountdownTimer2Present)</p><p><b>  ;</b></p><p><b>  }</b></p><p><b&g

75、t;  //回到開始</b></p><p>  goto begin;</p><p>  }else if(key & KEY_F2){</p><p><b>  //回答錯誤</b></p><p><b>  TR1 = 0;</b></p><p&

76、gt;  disp_led(user,0);</p><p><b>  //扣分</b></p><p>  score[user-1] -= 10;</p><p><b>  //顯示分數(shù)</b></p><p>  for(x=0; x<4; x++){</p><

77、p>  delay_timer(50);</p><p>  disp_mask = 0x0F;</p><p>  while(bIsCountdownTimer2Present)</p><p>  disp_value(score[user-1]);</p><p>  delay_timer(50);</p>&l

78、t;p>  while(bIsCountdownTimer2Present)</p><p><b>  ;</b></p><p><b>  }</b></p><p><b>  //回到開始</b></p><p>  goto begin;</p>

79、<p><b>  }</b></p><p><b>  }</b></p><p><b>  //超時</b></p><p>  score[user-1] -= 10;</p><p>  disp_led(user,0);</p><

80、p><b>  //進入下一題</b></p><p><b>  }</b></p><p><b>  //沒有人按鍵</b></p><p><b>  //進入下一題</b></p><p><b>  break;</b&g

81、t;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  while(1){</b></p><p>  //結(jié)束,循環(huán)顯示各選手的成績</p><p>  for(x=0;x<8;x

82、++){</p><p><b>  //選手號</b></p><p>  disp_mask = 0x01;</p><p>  delay_timer(50);</p><p>  while(bIsCountdownTimer2Present)</p><p>  disp_value(x

83、+1);</p><p>  disp_mask = 0x0F;</p><p>  delay_timer(50);</p><p>  while(bIsCountdownTimer2Present)</p><p>  disp_value(score[x]);</p><p><b>  }

84、</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  五、結(jié)果分析</b></p><p>  本課程設(shè)計所有的結(jié)果我們均采用了實際試驗圖片的描述方式,用圖片輔以數(shù)字以及說明從而闡釋結(jié)果。</p&

85、gt;<p> ?。?.1-搶答倒計器60S,從圖中55看出搶答所剩余時間為55秒)</p><p> ?。?.2-選手號,從圖中01可以看出此時是1號選手搶答成功,并予以回答)</p><p>  (5.3-回答錯誤扣10分,從圖中看出為-10分,表明該人回答錯誤,裁判予以扣除十分)</p><p> ?。?.4-回答正確加10分,從</p&g

86、t;<p>  圖中顯示10,表明該人回答正確,裁判予以十分的獎勵)</p><p> ?。?.5-題號,圖中顯示為4,表明已經(jīng)搶答完3道題,裁判正在對第四題予以闡述)六、小結(jié)</p><p>  通過本次課程設(shè)計,不僅有效鞏固了本學期所學單片機以及微機原理的相關(guān)知識,加強了對重要知識點的記憶和理解,又尤其是對C語言的回顧對我們幫助甚大,從中還學會如何運用Protues仿真進

87、行仿真,以及如何使用覆銅板進行實物制作,受益匪淺,現(xiàn)總結(jié)如下。</p><p>  搶答器的設(shè)計在本學期ARM實驗中操練過,因此對其并不陌生。但它的功能要求相對于ARM實驗中的搶答器要更深一步,不僅添加了定時電路、報警電路,其按鍵選擇控制電路也要比原先復(fù)雜。對于單元電路的設(shè)計,均較順利的完成。而本設(shè)計的難點在于按鍵控制電路的設(shè)計,如何在第一位搶答者搶答題目后讓編碼器停止工作;如何使計時電路在搶答后停止倒計時;如何

88、讓定時電路和搶答電路同時清零。設(shè)計過程中,根據(jù)以往搶答器設(shè)計思路,及查閱相關(guān)資料。從實驗及操作中折射出我們在平時的學習中的死板,缺乏變通思考的能力。在電路仿真的過程中,由于Protues操作相對較簡單,因此在仿真過程中較為順利。只有在總電路圖的仿真時,往往會因為節(jié)點太小將按鍵各節(jié)點接錯,最后導(dǎo)致未出現(xiàn)相應(yīng)仿真結(jié)果,經(jīng)過認真反復(fù)排查電路,發(fā)現(xiàn)問題所在,從而有效的更正,最終完成仿真任務(wù),也從側(cè)面驗證了電路圖的正確性。在實物制作過程中,由于第

89、一次接觸覆銅板,對覆銅板的結(jié)構(gòu)及相關(guān)注意事項不十分了解,經(jīng)查閱相關(guān)資料,對其有了一個大致的了解。但在整體布局及相通插孔的有效利用等方面,還需進一步加強。由于芯片節(jié)點較多,因此,只完成了搶答電路的制作。在連線過程中,較為細心仔細,</p><p><b>  參考文獻:</b></p><p>  [1]賈金玲. 單片機原理及應(yīng)用[M].成都:電子科技大學出版社,200

90、4.8</p><p>  [2]胡偉.  單片機C程序設(shè)計及應(yīng)用實例. 北京:人民郵電出版社,2003</p><p>  [3]韓毅剛 計算機通信技術(shù). 北京市:北京航空航天大學出版社,2007</p><p>  [4]賈金玲 微型計算機原理及應(yīng)用-理論.實驗.課程設(shè)計.重慶大學出版社21世紀高等學校本科系列教材</p&

溫馨提示

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

評論

0/150

提交評論