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

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  課程設(shè)計(jì)</b></p><p>  題 目 光電式速度計(jì) </p><p>  二級(jí)學(xué)院 </p><p>  專 業(yè) </p>&

2、lt;p>  班 級(jí) </p><p>  學(xué)生姓名 </p><p>  學(xué) 號(hào) </p><p>  指導(dǎo)教師

3、 </p><p><b>  摘要</b></p><p>  光電式傳感器,是基于光電效應(yīng)的傳感器,在受到可見光照射后即產(chǎn)生光電效應(yīng),將光信號(hào)轉(zhuǎn)換成電信號(hào)輸出。它除能測(cè)量光強(qiáng)之外,還能利用光線的透射、遮擋、反射、干涉等測(cè)量多種物理量,如尺寸、位移、速度、溫度等,因而是一種應(yīng)用極廣泛的重要敏感器件。光電測(cè)量時(shí)不與被測(cè)對(duì)象直接接觸,光束

4、的質(zhì)量又近似為零,在測(cè)量中不存在摩擦和對(duì)被測(cè)對(duì)象幾乎不施加壓力。因此在許多應(yīng)用場(chǎng)合,光電式傳感器比其他傳感器有明顯的優(yōu)越性。其缺點(diǎn)是在某些應(yīng)用方面,光學(xué)器件和電子器件價(jià)格較貴,并且對(duì)測(cè)量的環(huán)境條件要求較高。而光電式速度計(jì)就是基于光電傳感器將速度的變化轉(zhuǎn)變成光通量的變化,在通過光電轉(zhuǎn)換元件將光通量的變化轉(zhuǎn)換成電量變化,即利用光電脈沖變成電脈沖,通過對(duì)電脈沖的一系列計(jì)數(shù),換算,即可實(shí)現(xiàn)光電式計(jì)算速度。</p><p>

5、;<b>  目錄</b></p><p><b>  概述</b></p><p><b>  硬件電路設(shè)計(jì)及描述</b></p><p>  闡述方案選擇及設(shè)計(jì)思想</p><p><b>  繪制原理框圖</b></p><p&g

6、t;<b>  簡(jiǎn)述工作原理</b></p><p><b>  繪制原理電路圖</b></p><p><b>  軟件設(shè)計(jì)流程及描述</b></p><p>  繪制系統(tǒng)模塊層次結(jié)構(gòu)圖</p><p><b>  程序流程圖</b></p>

7、<p><b>  源程序代碼</b></p><p><b>  測(cè)試</b></p><p><b>  總結(jié)</b></p><p><b>  參考文獻(xiàn)</b></p><p><b>  元器件清單一覽表</b>

8、;</p><p><b>  個(gè)人總結(jié)</b></p><p><b>  概述</b></p><p>  本次課程設(shè)計(jì)我們所做的是光電式速度計(jì),它主要是利用光電式傳感器收到光照射后產(chǎn)生的光電效應(yīng),將光信號(hào)轉(zhuǎn)換成電信號(hào)輸出。通過對(duì)輸出的電信號(hào)計(jì)時(shí),就可計(jì)算出在這期間的平均速度。</p><p>

9、  系統(tǒng)利用光電式傳感器設(shè)計(jì)速度計(jì)量系統(tǒng),具有計(jì)數(shù)功能,且系統(tǒng)工作滿足速度計(jì)的一般要求。</p><p><b>  硬件電路設(shè)計(jì)及描述</b></p><p>  闡述方案選擇及設(shè)計(jì)思想</p><p>  我們?cè)谶x擇方案的時(shí)候選擇了用外部中斷0和51的T0定時(shí)/計(jì)數(shù)器。因?yàn)檫@樣會(huì)讓電路更加簡(jiǎn)潔,直接用外部中斷0的H/L來判定是否進(jìn)入中斷。由

10、于外部中斷0的是L觸發(fā),所以當(dāng)外部中斷0開始輸入L時(shí),T0定時(shí)/計(jì)數(shù)器開始計(jì)時(shí)。當(dāng)外部中斷0重新輸入H時(shí),T0定時(shí)/計(jì)數(shù)器結(jié)束計(jì)時(shí),就得到在INT0期間的時(shí)間,因?yàn)橐阎D(zhuǎn)盤的弧長(zhǎng)或者木條的長(zhǎng)度l,由v=l/t,就可以得到在INT0期間的平均速度。再通過LCD1602將所得的時(shí)間t和速度v輸出到液晶屏上。</p><p><b>  繪制原理框圖</b></p><p>

11、;<b>  簡(jiǎn)述工作原理</b></p><p>  如上圖所示,上圖是硬件原理框圖??梢钥吹接布怯蓭状竽K主成的。晶振電路主要是為51內(nèi)部產(chǎn)生時(shí)鐘信號(hào)。復(fù)位電路是為51回到初始化的狀態(tài)的一種操作,它可以在1602顯示亂碼,或者電路其它部分的上電狀態(tài)與預(yù)期不一樣時(shí),按下復(fù)位按鈕就可以使51回到初始化的狀態(tài)。1602液晶顯示器是一塊16*2的液晶顯示,它會(huì)顯示兩行16個(gè)字符或數(shù)字。1602

12、有3個(gè)控制位。RS為寄存器選擇,高電平1時(shí)選擇數(shù)據(jù)寄存器,低電平0時(shí)選擇指令寄存器。RW為讀寫信號(hào)線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。E(或EN)端為使能(enable)端,寫操作時(shí),下降沿使能;讀操作時(shí),E高電平有效。VSS一般接地,VDD接電源(+5V),V0液晶顯示器對(duì)比度調(diào)整端,接正電源時(shí)對(duì)比度最弱,接地電源時(shí)對(duì)比度最高(對(duì)比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對(duì)比度)。紅外光電傳感器是將利用光電

13、式傳感器收到光照射后產(chǎn)生的光電效應(yīng),將光信號(hào)轉(zhuǎn)換成電信號(hào)輸出。當(dāng)轉(zhuǎn)盤或者木條經(jīng)過時(shí),擋住了紅外光電傳感器一直輸給INT0的高電平,觸發(fā)了INT0,T0就開始計(jì)時(shí)了,當(dāng)INT0再次接受到H時(shí),T0計(jì)時(shí)結(jié)束。由v=l/t,就得</p><p><b>  繪制原理電路圖</b></p><p><b>  繪制器件清單列表</b></p>

14、<p>  元器件清單列表見附頁(yè)。</p><p><b>  軟件設(shè)計(jì)流程及描述</b></p><p>  繪制系統(tǒng)模塊層次結(jié)構(gòu)圖</p><p><b>  程序流程圖</b></p><p>  如上圖所示,上圖是主函數(shù)程序流程圖??梢钥吹匠绦蜷_始后,先進(jìn)行LCD的初始化,再對(duì)

15、T0進(jìn)行初始化。然后是對(duì)LCD的清屏,在沒有INT0的時(shí)候,LCD顯示no interrupt 0,讓EA=1開外部總中斷。判斷int0_flag==2,計(jì)算在INT0期間的時(shí)間t,由已知轉(zhuǎn)盤的弧長(zhǎng)或者小木條的長(zhǎng)度l,故v=l/t。當(dāng)然在程序中要注意單位的轉(zhuǎn)換,讓最后時(shí)間t的單位為s,最后v的單位為m/s。再把v和t的浮點(diǎn)數(shù)轉(zhuǎn)成字符串,保留小數(shù)點(diǎn)后4位。令LCD清屏,1602的第一行顯示t=xxx.xxxx s,第二行顯示v=xxx.x

16、xxx m/s。對(duì)t0_num置0,int0_flag置0,EA置1(開總中斷),等待下一次INT0。</p><p><b>  源程序代碼</b></p><p>  #include<reg52.h></p><p>  #define uchar unsigned char</p><p>  #d

17、efine uint unsigned int</p><p>  uchar code table0[]="no interrupt 0";</p><p>  uchar code table1[]="counting"; </p><p>  sbit lcden=P2^6;</p><p>

18、;  sbit lcdrs=P2^5;</p><p>  sbit lcdrw=P2^7;</p><p>  uchar num;</p><p>  unsigned int t0_num=0;</p><p>  unsigned int tt;</p><p><b>  float aa;<

19、;/b></p><p><b>  float v;</b></p><p>  unsigned int l=10; //10cm</p><p>  unsigned char int0_flag=0; //INT0的中斷標(biāo)志位</p><p>  unsigned char t0_max=6500

20、0; //T0的最大中斷次數(shù)</p><p>  void delay(uint z)</p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=z;x>0;x--)</p><p>  f

21、or(y=110;y>0;y--);</p><p><b>  }</b></p><p>  void write_com(uchar com) //1602寫命令函數(shù) </p><p><b>  {</b></p><p><b>  lcdrs=0;</b>

22、;</p><p><b>  lcden=0;</b></p><p><b>  P0=com;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=1;</b></p><p&g

23、t;<b>  delay(5);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  void write_data(uchar date) //1602寫數(shù)據(jù)函數(shù) </p><p>&l

24、t;b>  {</b></p><p><b>  lcdrs=1;</b></p><p><b>  lcden=0;</b></p><p><b>  P0=date;</b></p><p><b>  delay(5);</b>

25、;</p><p><b>  lcden=1;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  v

26、oid ftostr1(double fNum, unsigned char str[],unsigned int dotsize)//將浮點(diǎn)數(shù)轉(zhuǎn)字符串</p><p><b>  {</b></p><p>  int iSize=0; //記錄字符串長(zhǎng)度的數(shù)</p><p>  int n=0;

27、 //用作循環(huán)的臨時(shí)變量</p><p>  unsigned long int i_predot;//小數(shù)點(diǎn)前的數(shù)</p><p>  unsigned long int i_afterdot;//小數(shù)點(diǎn)后的數(shù)</p><p>  float f_afterdot;//實(shí)數(shù)型的小數(shù)部分</p><p>  unsigned c

28、har *p=str;//做換向時(shí)用的指針</p><p>  unsigned char *s=str;//做換向時(shí)用的指針</p><p>  i_predot=(unsigned long int)fNum;//將小數(shù)點(diǎn)之前的數(shù)變?yōu)檎麛?shù)</p><p>  f_afterdot=fNum-i_predot;//單獨(dú)取出小數(shù)點(diǎn)之后的數(shù)</p>&l

29、t;p>  //根據(jù)設(shè)定的要保存的小數(shù)點(diǎn)后的位數(shù),將小數(shù)點(diǎn)后相應(yīng)的位數(shù)變到小數(shù)點(diǎn)之前</p><p>  for(n=dotsize+1;n!=0;n--)</p><p><b>  {</b></p><p>  f_afterdot=f_afterdot*10;</p><p><b>  }<

30、;/b></p><p>  i_afterdot=(unsigned long int)f_afterdot;//將小數(shù)點(diǎn)后相應(yīng)位數(shù)的數(shù)字變?yōu)檎麛?shù)</p><p>  n=i_afterdot%10;</p><p><b>  n/=5;</b></p><p>  i_afterdot/=10;//將i_af

31、terdot恢復(fù)到實(shí)際要求的小數(shù)位數(shù)</p><p>  if(n!=0)//判斷最后一位是否大于或者等于5,并進(jìn)行四舍五入處理</p><p><b>  {</b></p><p>  //i_afterdot/=10;//將i_afterdot恢復(fù)到實(shí)際要求的小數(shù)位數(shù)</p><p>  i_afterdot++;

32、</p><p>  n=i_afterdot;</p><p><b>  }</b></p><p>  //先將小數(shù)點(diǎn)后的數(shù)轉(zhuǎn)換為字符串</p><p>  n=dotsize;</p><p>  while(n!=0)</p><p><b>  {&l

33、t;/b></p><p><b>  n--;</b></p><p>  str[iSize++]=i_afterdot%10+'0';//對(duì)10取余并變?yōu)锳SCII碼</p><p>  i_afterdot=i_afterdot/10;//對(duì)10取商</p><p><b>  }

34、</b></p><p>  if(dotsize!=0)//小數(shù)點(diǎn)位數(shù)大于零的情況下</p><p>  str[iSize++] ='.';//加上小數(shù)點(diǎn)</p><p>  //處理小數(shù)點(diǎn)前為0的情況。</p><p>  if(i_predot==0)</p><p>  str[i

35、Size++]='0';</p><p>  //再將小數(shù)點(diǎn)前的數(shù)轉(zhuǎn)換為字符串</p><p>  while(i_predot!=0)</p><p><b>  {</b></p><p>  str[iSize++]=i_predot%10+'0';//對(duì)10取余并變?yōu)锳SCII碼&

36、lt;/p><p>  i_predot=i_predot/10;//對(duì)10取商</p><p><b>  }</b></p><p>  if(fNum<0)</p><p>  str[iSize++]='-';</p><p>  str[iSize] ='

37、\0'; //加上字符串結(jié)束標(biāo)志</p><p>  p=str+iSize-1; //將P指針指向字符串結(jié)束標(biāo)志之前 </p><p>  for(;(p-s)>0;p--,s++) //將字符串中存儲(chǔ)的數(shù)調(diào)頭 </p><p><b>  { </b></p>&

38、lt;p>  *s^=*p; </p><p>  *p^=*s; </p><p>  *s^=*p; </p><p><b>  } </b></p><p><b>  } </b></p><p>  void init()</p>

39、<p><b>  {</b></p><p>  lcdrw=0; //寫</p><p><b>  lcden=0;</b></p><p>  write_com(0x38);</p><p>  write_com(0x0c);</p><p>  

40、write_com(0x06);</p><p>  write_com(0x01);</p><p>  write_com(0x80);</p><p><b>  }</b></p><p><b>  uint i,j;</b></p><p>  void int0

41、_fun() interrupt 0 //INT0中斷處理函數(shù)</p><p><b>  {</b></p><p>  //uint i,j;</p><p>  if(int0_flag==0)</p><p><b>  {</b></p><p><b&g

42、t;  TR0=1;</b></p><p><b>  }</b></p><p>  int0_flag++;</p><p>  if(int0_flag==1)</p><p><b>  {</b></p><p>  write_com(0x01);&

43、lt;/p><p>  write_com(0x80);</p><p>  for(j=0;j<8;j++)</p><p><b>  {</b></p><p>  write_data(table1[j]);</p><p><b>  }</b></p>

44、;<p><b>  } </b></p><p>  if(int0_flag==2)</p><p><b>  {</b></p><p><b>  TR0=0;</b></p><p><b>  EA=0;</b></p&

45、gt;<p><b>  }</b></p><p><b>  }</b></p><p>  void t0_fun() interrupt 1</p><p><b>  {</b></p><p>  TH0=(65536-1000)/256;</p

46、><p>  TL0=(65536-1000)%256;</p><p><b>  t0_num++;</b></p><p>  if(T0==t0_max)</p><p><b>  {</b></p><p>  int0_flag=2;</p><

47、p><b>  TR0=0;</b></p><p><b>  EA=0;</b></p><p><b>  }</b></p><p><b>  } </b></p><p><b>  //主函數(shù)</b>&l

48、t;/p><p>  void main ()</p><p><b>  { </b></p><p>  uchar str1[10];</p><p>  uchar str2[10];</p><p>  uint i,j; </p><p><b>  

49、init(); </b></p><p>  EA=0; //初始化中斷</p><p>  IT0=1; //外部中斷0,邊沿觸發(fā)</p><p>  EX0=1; //允許外部中斷0中斷</p><p>  TMOD=0X01; //初始化T0,方式一,16位計(jì)數(shù)器</p><p

50、><b>  ET0 = 1;</b></p><p>  TH0=(65536-1000)/256;</p><p>  TL0=(65536-1000)%256; //t0_num --1ms計(jì)一次 (即每1mst0_num++)</p><p>  //EA=1; //開總中斷</p><

51、p>  write_com(0x01);</p><p>  write_com(0x80);</p><p>  for(i=0;i<14;i++)</p><p><b>  {</b></p><p>  write_data(table0[i]);</p><p><b&

52、gt;  } </b></p><p><b>  EA=1; </b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(int0_flag==2) </p><p>

53、;<b>  { </b></p><p>  tt=t0_num;</p><p>  aa=tt/1000.0;</p><p>  v=(10.0*l)/tt;</p><p>  ftostr1(aa,str1,4); //小數(shù)點(diǎn)后保留4位</p><p>  ftostr1(

54、v,str2,4);</p><p>  write_com(0x01);</p><p>  write_com(0x80);</p><p>  write_data('t');</p><p>  write_com(0x80+1);</p><p>  write_data('='

55、;);</p><p>  for(i=0;i<10;i++)</p><p><b>  {</b></p><p>  write_data(str1[i]);</p><p><b>  }</b></p><p>  write_com(0x80+0x0a);&

56、lt;/p><p>  write_data('s');</p><p>  write_com(0x80+0x40);</p><p>  write_data('v');</p><p>  write_com(0x80+0x40+1);</p><p>  write_data(&#

57、39;=');</p><p>  for(j=0;j<10;j++)</p><p><b>  {</b></p><p>  write_data(str2[j]);</p><p><b>  }</b></p><p>  write_com(0x80

58、+0x40+0x0a);</p><p>  write_data('m');</p><p>  write_com(0x80+0x40+0x0b);</p><p>  write_data('/');</p><p>  write_com(0x80+0x40+0x0c);</p><

59、p>  write_data('s');</p><p><b>  t0_num=0;</b></p><p>  int0_flag=0;</p><p><b>  EA=1; </b></p><p><b>  } </b></p>

60、;<p><b>  }</b></p><p><b>  } </b></p><p><b>  測(cè)試</b></p><p>  上電后若沒有觸發(fā)INT0時(shí),顯示的是no interrupt 0(沒有外部中斷0),當(dāng)觸發(fā)INT0時(shí),顯示counting(正在計(jì)數(shù)、計(jì)算),

61、當(dāng)INT0再次回到H(高電平)時(shí),顯示INT0觸發(fā)期間的時(shí)間t、速度v的結(jié)果。</p><p><b>  INT0沒有觸發(fā)。</b></p><p>  INT0觸發(fā),計(jì)數(shù)中。</p><p>  INT0觸發(fā)結(jié)束,顯示結(jié)果。</p><p><b>  總結(jié)</b></p><

62、;p>  本次課程設(shè)計(jì)從最開始的方案設(shè)定,到采購(gòu)器件,自己制版,到最后的電路調(diào)試,我們對(duì)單片機(jī)又有了更深一步的認(rèn)識(shí)。在本次課程設(shè)計(jì)中,我們也更深一步的了解到仿真跟實(shí)物完全是兩回事,我們對(duì)1602也有了更深的認(rèn)識(shí)。</p><p>  在軟件方面,我們最開始的方向不對(duì),一直都沒有想到給定長(zhǎng)度,導(dǎo)致進(jìn)度很慢。最后經(jīng)過老師的指點(diǎn)解決了。其次就是我們對(duì)定時(shí)器的初始化不熟悉,翻閱了以前的書,還去查了很多關(guān)于定時(shí)器初始

63、化的例子,解決了定時(shí)器的問題。還有就是我們的顯示,最開始因?yàn)闆]有接觸過1602,后來通過同學(xué)和老師我們對(duì)它有了一點(diǎn)了解,解決了顯示上的問題。</p><p>  在硬件方面,我們?cè)谧詈笳{(diào)試的時(shí)候1602始終都還是不顯示,跟仿真完全不一樣,電腦上仿真的時(shí)候顯示都沒有問題,可是做到實(shí)物上就不出顯示。我們嘗試寫入最簡(jiǎn)單的程序就只顯示一個(gè)1、2,它還是會(huì)顯示,可是寫入我們自己的程序時(shí),1602還是沒反應(yīng)。還有值得注意的是

64、,在往51燒程序的時(shí)候,一定要確保燒程序的軟件跟硬件都是好的。在燒程序的時(shí)候,有天我們就是一直不知道燒程序的那個(gè)硬件是壞的,一直找不到原因。在做硬件的時(shí)候不管是做萬(wàn)能板,還是PCB,我們發(fā)現(xiàn)用排針接線會(huì)減少接線短路,或是其他故障的幾率。</p><p>  這次課程設(shè)計(jì)唯一的遺憾就是我們把程序燒進(jìn)51后,1602不顯示,仿真上都可以,找了兩周始終找不到問題。但是如果燒其他程序LCD又有顯示,因?yàn)檎n程設(shè)計(jì)的時(shí)間有限

65、,我們也只能做到這里,但是我們下來后還是會(huì)繼續(xù)研究程序的問題,最終希望它能實(shí)現(xiàn)功能。</p><p><b>  參考文獻(xiàn)</b></p><p>  51單片機(jī)技術(shù)與應(yīng)用系統(tǒng)開發(fā)案例精選(清華大學(xué)出版社)</p><p>  例說51單片機(jī)(人民郵電出版社)</p><p>  51單片機(jī)開發(fā)與應(yīng)用技術(shù)詳解(電子工業(yè)出

66、版社)</p><p>  51單片機(jī)應(yīng)用系統(tǒng)典型模塊開發(fā)大全(中國(guó)鐵道出版社)</p><p>  51單片機(jī)應(yīng)用開發(fā)范例大全(人民郵電出版社)</p><p>  單片機(jī)原理及應(yīng)用(重慶大學(xué)出版社)</p><p>  課程設(shè)計(jì)元器件清單一覽表</p><p>  題目名稱:光電式速度計(jì)</p>&l

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論