2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩11頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  物聯(lián)網(wǎng)課程</b></p><p><b>  實(shí)驗(yàn)設(shè)計(jì)</b></p><p>  課題名稱: 超聲波控制LED </p><p><b>  一、實(shí)驗(yàn)?zāi)康模?lt;/b></p><p>  通過(guò)對(duì)本課程的設(shè)計(jì)

2、,加深對(duì)“物聯(lián)網(wǎng)”概念的理解,能夠明確其光明前景和未來(lái)對(duì)我們的生活的重大意義;并學(xué)習(xí)和掌握基本的物聯(lián)網(wǎng)技術(shù)和相關(guān)的概念知識(shí)。</p><p><b>  二、實(shí)驗(yàn)內(nèi)容:</b></p><p>  將超聲波和LED燈兩個(gè)獨(dú)立實(shí)驗(yàn)結(jié)合起來(lái),利用超聲波來(lái)控制?。蹋牛牡拈W亮與熄滅</p><p><b>  三、實(shí)驗(yàn)說(shuō)明:</b>

3、;</p><p>  將兩個(gè)實(shí)驗(yàn)的初始化代碼寫(xiě)在一起,如果重名則要做必要的改寫(xiě),然后把超聲波的控制標(biāo)記寫(xiě)在LED控制代碼中的相應(yīng)位置,從而達(dá)到控制LED的目的,再添加對(duì)超聲波操作的代碼,從而實(shí)現(xiàn)對(duì)LED的操作;相關(guān)問(wèn)題將在代碼中給于注釋。</p><p><b>  實(shí)驗(yàn)代碼:</b></p><p>  #include <c8051

4、f120.h> // SFR declarations</p><p>  #include <stdio.h> </p><p>  #include <intrins.h></p><p>  #define TIMER_TICKS_PER_MS SYSCLK

5、/TIMER_PRESCALER/1000</p><p>  #define AUX1 TIMER_TICKS_PER_MS</p><p>  #define AUX2 -AUX1</p><p>  #define BAUDRATE 115200 // Baud rate of UART in bps</p&

6、gt;<p>  #define SYSCLK 49000000 // Output of PLL derived from (INTCLK*2)</p><p>  #define SAMPLE_DELAY 200 // Delay in ms before taking sample</p><p>  #defi

7、ne TIMER_PRESCALER 500 // B</p><p>  unsigned int count = 0;</p><p>  unsigned int count_s = 0;</p><p>  unsigned int num= 0; </p><p>  float distan= 0;</

8、p><p>  int x = 0;</p><p>  #define LED_TOGGLE_RATE 1 /</p><p>  #define TIMER0_RELOAD_HIGH AUX2 // Reload value for Timer0 high byte</p><p>  sfr16 RCAP

9、2 = 0xca; // Timer2 capture/reload</p><p>  sfr16 RCAP3 = 0xca; // Timer3 capture/reload</p><p>  sfr16 RCAP4 = 0xca; </p><p>  sfr16 TMR2

10、 = 0xcc; // Timer2</p><p>  sfr16 TMR3 = 0xcc; // Timer3</p><p>  sfr16 TMR4 = 0xcc; </p><p>  sbit LED = P0^3; // L

11、ED='1' means ONsbit SW1 = P3^7; // SW1='0' means switch pressed</p><p>  sbit LED1 = P0^2; // LED1 ='1' means ON</p><p>  sbit LED2

12、 = P0^4; // LED1 ='1' means ON</p><p>  sbit SW2 = P0^5; </p><p>  sbit uts_tx=P2^3;</p><p>  sbit ctrl1 = P1^2;</p><p>  sbit ctrl2

13、 = P1^3;</p><p>  sbit ctrl3 = P1^4;</p><p>  sbit ctrl4 = P1^5;</p><p>  void Ext_Interrupt_Init (void); </p><p>  void OSCILLATOR_Init (void); </

14、p><p>  void PORT_Init (void);</p><p>  void Comparator_Init(void);</p><p>  void UART1_Init (void);</p><p>  void Timer3_Init(void) ;</p><p>  void Timer4_In

15、it(void) ;</p><p>  void Wait_MS (unsigned int ms);</p><p>  void Port_Init (void); // Port initialization routine</p><p>  void Timer0_Init (void); </p><

16、;p>  unsigned char result;</p><p>  void main (void)</p><p><b>  {</b></p><p>  WDTCN = 0xde; // Disable watchdog timer 關(guān)閉看門(mén)狗</p><p&

17、gt;  WDTCN = 0xad;</p><p>  Timer0_Init (); // Initialize the Timer0</p><p>  Port_Init (); // Init Ports</p><p>  OSCILLATOR_Init ();

18、 // Initialize oscillator</p><p>  PORT_Init ();</p><p>  Comparator_Init(); // Initialize crossbar and GPIO</p><p>  UART1_Init ();

19、 // Initialize UART1</p><p>  Timer3_Init();</p><p>  Timer4_Init();</p><p>  EA = 1; // Enable global interrupts</p><p>  EIE1 = 0x10;

20、</p><p>  while (1) </p><p><b>  {</b></p><p>  EIE1 = 0x00; </p><p>  SFRPAGE = TMR3_PAGE; </p><p>  TMR3

21、CN = 0x04;</p><p>  SFRPAGE = TMR4_PAGE;</p><p>  TMR4CN = 0x04;</p><p>  while(count_s !=32);</p><p>  SFRPAGE = TMR3_PAGE; </p><p>  T

22、MR3CN = 0x00;</p><p>  count_s = 0;</p><p>  EIE1 = 0x10; </p><p>  Wait_MS(10);</p><p>  if(x == 1) </p><p><b>  {</b></p><p> 

23、 SFRPAGE = UART1_PAGE;</p><p>  printf("distan: %f cm\n",distan);</p><p>  if(distan<30)       //設(shè)置30cm為超聲波控制led燈閃亮與熄滅的條件,但 距離小于30時(shí),led1和led2都亮,大于30時(shí),都不亮  </p><p>&

24、lt;b>  {</b></p><p><b>  LED1 = 1;</b></p><p><b>  LED2 = 1;</b></p><p><b>  } </b></p><p><b>  }</b><

25、/p><p>  Wait_MS(SAMPLE_DELAY); // Wait 500 milliseconds before taking </p><p><b>  x = 0;</b></p><p>  count = 0; // another sam

26、ple </p><p><b>  } </b></p><p><b>  }</b></p><p>  void Port_Init (void)</p><p><b>  {</b></p><p>  char SFRPAGE_SA

27、VE = SFRPAGE; // Save Current SFR page</p><p>  SFRPAGE = CONFIG_PAGE; // Set SFR page</p><p>  XBR2 = 0x40; // Enable crossbar</p><p>  P

28、0MDOUT = 0x2C; // Set P1.6(LED) to push-pull</p><p>  P2MDOUT &=~0x1;</p><p><b>  result=1;</b></p><p>  P2MDOUT |=0x2;</p><p>  SFR

29、PAGE = SFRPAGE_SAVE; // Restore SFR page</p><p><b>  }</b></p><p>  //-----------------------------------------------------------------------------</p><p>  

30、// Timer0_Init</p><p>  //-----------------------------------------------------------------------------</p><p><b>  //</b></p><p>  // Return Value : None</p><

31、;p>  // Parameters : None</p><p><b>  //</b></p><p>  // This function configures the Timer0 as a 8-bit timer with reload, interrupt</p><p>  // enabled.</p>

32、<p>  // Using the internal osc. at 24.5MHz with a prescaler of 1:8 and reloading</p><p>  // TL0 register with TH0.</p><p><b>  //</b></p><p>  // Note: The Timer

33、0 uses a 1:48 prescaler. If this setting changes, the</p><p>  // TIMER_PRESCALER constant must also be changed.</p><p>  //---------------------------------------------------------------------

34、--------</p><p>  void Timer0_Init(void)</p><p><b>  {</b></p><p>  char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page</p><p>  SFRPAGE = TIMER01_

35、PAGE; // Set SFR page</p><p>  TH0 = TIMER0_RELOAD_HIGH; // Init Timer0 High register</p><p>  TL0 = TH0; // Set the intial Timer0 value</p>

36、<p>  TMOD = 0x02; // Timer0 in 8-bit reload mode</p><p>  CKCON = 0x02; // Timer0 uses a 1:48 prescaler</p><p>  ET0=1;

37、 // Timer0 interrupt enabled</p><p>  TCON = 0x10; // Timer0 ON</p><p>  SFRPAGE = SFRPAGE_SAVE; // Restore SFR page</p><p><b>  }<

38、/b></p><p>  void OSCILLATOR_Init (void)</p><p><b>  {</b></p><p>  int loop; // Software timer</p><p>  char SFRPAGE_SAVE = SF

39、RPAGE; // Save Current SFR page</p><p>  SFRPAGE = CONFIG_PAGE; // Set SFR page</p><p>  OSCICN = 0x83; // Set internal oscillator to run 使用內(nèi)部晶振不分頻<

40、/p><p>  // at its maximum frequency</p><p>  CLKSEL = 0x00; // Select the internal osc. as</p><p>  // the SYSCLK source</p><p>  //Turn on the PLL a

41、nd increase the system clock by a factor of M/N = 2</p><p>  SFRPAGE = CONFIG_PAGE;</p><p>  PLL0CN = 0x00; // Set internal osc. as PLL source</p><p>  SFRPAGE

42、= LEGACY_PAGE;</p><p>  FLSCL = 0x10; // Set FLASH read time for 50MHz clk</p><p>  // or less</p><p>  SFRPAGE = CONFIG_PAGE;</p><p>  PLL0CN |=

43、0x01; // Enable Power to PLL</p><p>  PLL0DIV = 0x01; // Set Pre-divide value to N (N = 1)</p><p>  PLL0FLT = 0x01; // Set the PLL fil

44、ter register for</p><p>  // a reference clock from 19 - 30 MHz</p><p>  // and an output clock from 45 - 80 MHz</p><p>  PLL0MUL = 0x02; // Multiply SYSCLK by M

45、 (M = 2)</p><p>  for (loop=0; loop < 256; loop++); // Wait at least 5us</p><p>  PLL0CN |= 0x02; // Enable the PLL</p><p>  while(!(PLL0CN & 0x10));

46、 // Wait until PLL frequency is locked</p><p>  CLKSEL = 0x02; // Select PLL as SYSCLK source</p><p>  SFRPAGE = SFRPAGE_SAVE; // Restore SFR page</p&

47、gt;<p><b>  }</b></p><p>  void PORT_Init (void)</p><p><b>  {</b></p><p>  char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page</p>&l

48、t;p>  SFRPAGE = CONFIG_PAGE; // set SFR page</p><p>  P1MDIN = 0x03;</p><p>  XBR0 = 0x17;</p><p>  XBR1 = 0x04;</p><p>  XBR2 = 0x44;

49、 </p><p>  P0MDOUT |= 0x01; // Set TX1 pin to push-pull</p><p>  P1MDOUT |= 0x40; </p><p>  P2MDOUT |= 0x08; </p><p> 

50、 SFRPAGE = SFRPAGE_SAVE; // Restore SFR page</p><p><b>  }</b></p><p>  void Comparator_Init()</p><p><b>  {</b></p><p>  int i = 0;

51、</p><p>  char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page</p><p>  SFRPAGE = CPT0_PAGE;</p><p>  CPT0CN = 0x80;</p><p>  for (i = 0; i < 60; i++); //

52、Wait 20us for initialization</p><p>  CPT0CN &= ~0x30;</p><p>  CPT0MD = 0x12;</p><p>  SFRPAGE = SFRPAGE_SAVE; // Restore SFR page</p><p><b>  }&

53、lt;/b></p><p>  void UART1_Init (void)</p><p><b>  {</b></p><p>  char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page</p><p>  SFRPAGE = UART1_P

54、AGE;</p><p>  SCON1 = 0x10; // SCON1: mode 0, 8-bit UART, enable RX</p><p>  SFRPAGE = TIMER01_PAGE;</p><p>  TMOD &= ~0xF0;</p><p>  TMOD

55、 |= 0x20; // TMOD: timer 1, mode 2, 8-bit reload</p><p>  if (SYSCLK/BAUDRATE/2/256 < 1) </p><p><b>  {</b></p><p>  TH1 = -(SYSCLK/BAUDRATE/2);&l

56、t;/p><p>  CKCON |= 0x10; // T1M = 1; SCA1:0 = xx</p><p><b>  } </b></p><p>  else if (SYSCLK/BAUDRATE/2/256 < 4) </p><p><b>  {<

57、/b></p><p>  TH1 = -(SYSCLK/BAUDRATE/2/4);</p><p>  CKCON &= ~0x13; // Clear all T1 related bits</p><p>  CKCON |= 0x01; // T1M = 0; SCA1:0

58、 = 01</p><p><b>  } </b></p><p>  else if (SYSCLK/BAUDRATE/2/256 < 12) </p><p><b>  {</b></p><p>  TH1 = -(SYSCLK/BAUDRATE/2/12);</p>

59、<p>  CKCON &= ~0x13; // T1M = 0; SCA1:0 = 00</p><p><b>  }</b></p><p><b>  else </b></p><p><b>  {</b></p><

60、p>  TH1 = -(SYSCLK/BAUDRATE/2/48);</p><p>  CKCON &= ~0x13; // Clear all T1 related bits</p><p>  CKCON |= 0x02; // T1M = 0; SCA1:0 = 10</p><

61、p><b>  }</b></p><p>  TL1 = TH1; // Initialize Timer1</p><p>  TR1 = 1; // Start Timer1</p><p>  SFRPAGE = UART1_P

62、AGE;</p><p>  TI1 = 1; // Indicate TX1 ready</p><p>  SFRPAGE = SFRPAGE_SAVE; // Restore SFR page</p><p><b>  }</b></p><

63、;p>  void Timer3_Init(void)</p><p><b>  {</b></p><p>  char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page</p><p>  SFRPAGE = TMR3_PAGE; // Se

64、t SFR page</p><p>  TMR3CN = 0x00;</p><p>  TMR3CF = 0x08;</p><p>  RCAP3L = 0x9C;</p><p>  RCAP3H = 0xFD; </p><p&g

65、t;  TMR3 = RCAP3; </p><p>  SFRPAGE = 0xe7; </p><p>  EIE2 |= 0x01;</p><p>  SFRPAGE = SFRPAGE_SAVE; </p><p>&l

66、t;b>  }</b></p><p>  void Timer4_Init(void)</p><p><b>  {</b></p><p>  char SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page</p><p>  SFRPAG

67、E = TMR4_PAGE;</p><p>  TMR4CN = 0x00;</p><p>  TMR4CF = 0x0A;</p><p>  RCAP4L = 0x37;</p><p>  RCAP4H = 0xFB; </p><

68、;p>  TMR4 = RCAP4; </p><p>  SFRPAGE = 0xe7; </p><p>  EIE2 |= 0x04;</p><p>  SFRPAGE = SFRPAGE_SAVE; </p><p&g

69、t;<b>  }</b></p><p>  void Timer3_ISR (void) interrupt 14</p><p><b>  {</b></p><p>  uts_tx = ~uts_tx ; </p><p>  count_s++;</p><p>

70、;<b>  TF3 = 0; </b></p><p><b>  } </b></p><p>  void Timer4_ISR (void) interrupt 16</p><p><b>  {</b></p><p><b>  count++;<

71、/b></p><p><b>  TF4 = 0;</b></p><p><b>  } </b></p><p>  void CPT0_ISR (void) interrupt 10</p><p><b>  {</b></p><p>

72、  SFRPAGE = CPT0_PAGE; </p><p>  CP0FIF = 0;</p><p>  SFRPAGE = TMR4_PAGE;</p><p>  TMR4CN = 0x00; </p><p><b>  x = 1;</b></p><p>  dist

73、an = 0.85*count/2; //計(jì)算距離</p><p>  if((distan>200)||(distan<5))</p><p><b>  {</b></p><p><b>  x = 0; </b></p><p>  count = 0;

74、 </p><p><b>  }</b></p><p><b>  }</b></p><p>  void Wait_MS(unsigned int ms)</p><p><b>  {</b></p><p>  char

75、SFRPAGE_SAVE = SFRPAGE; // Save Current SFR page</p><p>  SFRPAGE = TMR2_PAGE;</p><p>  TMR2CN = 0x00; // Stop Timer3; Clear TF3;</p><p>  TMR2CF = 0x00;

76、 // use SYSCLK/12 as timebase</p><p>  RCAP2 = -(SYSCLK/1000/12); // Timer 2 overflows at 1 kHz</p><p>  TMR2 = RCAP2;</p><p>  ET2 = 0;

77、 // Disable Timer 2 interrupts</p><p>  TR2 = 1; // Start Timer 2</p><p><b>  while(ms)</b></p><p><b>  {</b></p>

78、;<p>  TF2 = 0; // Clear flag to initialize</p><p>  while(!TF2); // Wait until timer overflows</p><p>  ms--; // De

79、crement ms</p><p><b>  }</b></p><p>  TR2 = 0; // Stop Timer 2</p><p>  SFRPAGE = SFRPAGE_SAVE; // Restore SFRPAGE</p><

80、p><b>  }</b></p><p>  //-----------------------------------------------------------------------------</p><p>  // End Of File</p><p>  //-----------------------------

81、------------------------------------------------</p><p><b>  實(shí)驗(yàn)現(xiàn)象</b></p><p><b>  總結(jié):</b></p><p>  通過(guò)這次實(shí)驗(yàn)我們更加理解了超聲波和LED燈實(shí)驗(yàn)原理,提升了我們自主動(dòng)手實(shí)驗(yàn)的能力及自主思考的能力,更好的把理論轉(zhuǎn)化為

溫馨提示

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

評(píng)論

0/150

提交評(píng)論