基于c8051f020單片機(jī)頻率計(jì)課程設(shè)計(jì)_第1頁
已閱讀1頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  頻率計(jì)的程序設(shè)計(jì)</b></p><p><b>  1頻率計(jì)設(shè)計(jì)</b></p><p><b>  編寫頻率計(jì)程序。</b></p><p>  要求:1)能夠測量頻率并顯示。</p><p>  2)能夠進(jìn)行閘門時(shí)間選擇。</p>

2、<p>  2設(shè)計(jì)過程及論文的基本要求</p><p> ?。?).課程設(shè)計(jì)論文是體現(xiàn)和總結(jié)課程設(shè)計(jì)成果的載體,一般不應(yīng)少于3000字。</p><p>  (2).學(xué)生應(yīng)撰寫的內(nèi)容為:中文摘要和關(guān)鍵詞、目錄、正文、參考文獻(xiàn)等。課程設(shè)計(jì)論文的結(jié)構(gòu)及各部分內(nèi)容要求可參照《沈陽工程學(xué)院畢業(yè)設(shè)計(jì)(論文)撰寫規(guī)范》執(zhí)行。應(yīng)做到文理通順,內(nèi)容正確完整,書寫工整,裝訂整齊。</p&

3、gt;<p> ?。?).論文要求打印,打印時(shí)按《沈陽工程學(xué)院畢業(yè)設(shè)計(jì)(論文)撰寫規(guī)范》的要求進(jìn)行打印。</p><p>  (4). 課程設(shè)計(jì)論文裝訂順序?yàn)椋悍饷?、任?wù)書、成績?cè)u(píng)審意見表、中文摘要和關(guān)鍵詞、目錄、正文、參考文獻(xiàn)。</p><p><b>  3.時(shí)間進(jìn)度安排;</b></p><p><b>  中文摘

4、要</b></p><p>  數(shù)字頻率計(jì)是計(jì)算機(jī)、通訊設(shè)備、音頻視頻等科研生產(chǎn)領(lǐng)域不可缺少的測量儀器。它是一種用十進(jìn)制數(shù)字顯示被測信號(hào)頻率的數(shù)字測量儀器。它的基本功能是測量正弦信號(hào),方波信號(hào)及其他各種單位時(shí)間內(nèi)變化的物理量。在進(jìn)行模擬、數(shù)字電路的設(shè)計(jì)、安裝、調(diào)試過程中,由于其使用十進(jìn)制數(shù)顯示,測量迅速,精確度高,顯示直觀,經(jīng)常要用到頻率計(jì)。 </p><p>  本數(shù)字頻率計(jì)

5、將采用定時(shí)、計(jì)數(shù)的方法測量頻率,采用一個(gè) LCD顯示器動(dòng)態(tài)顯示5數(shù)。測量范圍從1Hz-2MHz的方波。</p><p>  基本設(shè)計(jì)原理是通過控制按鈕來控制閘門時(shí)間,利用T1進(jìn)行定時(shí),定的時(shí)間即為閘門時(shí)間,同時(shí)在定時(shí)的同時(shí)利用T0進(jìn)行計(jì)數(shù),一旦時(shí)間到了,就開始對(duì)TH0和TL0中的數(shù)進(jìn)行數(shù)據(jù)轉(zhuǎn)換,轉(zhuǎn)換后的BCD碼利用液晶顯示器顯示出來即可。</p><p>  頻率測量儀器使用在生產(chǎn)和科研的

6、各個(gè)部門,也是某些大型系統(tǒng)的重要組成部分,實(shí)現(xiàn)頻率測量有專用的頻率測量儀器,但不易用于特殊場合.本設(shè)計(jì)介紹的用單片機(jī)實(shí)現(xiàn)的頻率測量儀,利用分頻和單片機(jī)的計(jì)數(shù)功能來實(shí)現(xiàn)等精度的測量.該頻率測量儀器可獨(dú)立使用;也可方便的嵌入電路系統(tǒng)中;并且將降低產(chǎn)品的成本,有利于新產(chǎn)品的設(shè)計(jì)與研制。</p><p>  本次設(shè)計(jì)通過對(duì)一個(gè)基于單片機(jī)的功能實(shí)現(xiàn)頻率計(jì)的設(shè)計(jì)學(xué)習(xí),詳細(xì)介紹了單片機(jī)應(yīng)用中的數(shù)據(jù)轉(zhuǎn)換顯示,LED顯示原理,單片

7、機(jī)的定時(shí)原理。從而達(dá)到學(xué)習(xí)、了解單片機(jī)相關(guān)指令在各方面的應(yīng)用。</p><p><b>  目錄</b></p><p><b>  課程設(shè)計(jì)任務(wù)書I</b></p><p>  單片機(jī) 課程設(shè)計(jì)成績?cè)u(píng)定表III</p><p><b>  中文摘要IV</b><

8、/p><p>  1 設(shè)計(jì)任務(wù)描述1</p><p>  1.1設(shè)計(jì)題目:串行通信電路1</p><p>  1.2設(shè)計(jì)要求:1</p><p>  1.2.1設(shè)計(jì)目的:1</p><p>  1.2.2基本要求:1</p><p>  1.2.3發(fā)揮部分:1</p>&l

9、t;p><b>  2 設(shè)計(jì)思路2</b></p><p><b>  3設(shè)計(jì)方框圖3</b></p><p>  4 各部分程序設(shè)計(jì)4</p><p>  4.1程序初始化4</p><p>  4.2系統(tǒng)時(shí)鐘初始化5</p><p>  4.3交叉開關(guān)初始

10、化5</p><p>  4.4定時(shí)器0/1初始化5</p><p>  4.5 LCD初始化6</p><p>  4.6 測頻部分6</p><p>  4.7 測占空比部分8</p><p>  5 編程過程所遇問題9</p><p>  5.1 P5口問題9</

11、p><p>  5.2 交叉開關(guān)問題9</p><p>  5.3 數(shù)組問題9</p><p>  5.4 定義變量問題9</p><p>  6 編程過程未解決問題9</p><p>  6.1 占空比測量問題9</p><p>  6.2 液晶屏LCD問題9</p>&

12、lt;p>  7 元器件清單10</p><p>  8 主要器件介紹11</p><p>  8.1 C8051f020單片機(jī)11</p><p>  8.1.1管腳圖11</p><p>  8.1.2簡介11</p><p><b>  小結(jié)13</b></p>

13、<p><b>  致謝14</b></p><p><b>  參考文獻(xiàn)15</b></p><p><b>  程序源代碼16</b></p><p><b>  1 設(shè)計(jì)任務(wù)描述</b></p><p>  1.1設(shè)計(jì)題目:串行通

14、信電路</p><p><b>  1.2設(shè)計(jì)要求:</b></p><p>  1.2.1設(shè)計(jì)目的:</p><p> ?。?)掌握了解單片機(jī)各部分的綜合應(yīng)用</p><p>  (2)熟悉Silicon Laboratories IDE的仿真方法。</p><p>  1.2.2基本要求:&l

15、t;/p><p> ?。?)能夠測量頻率并顯示。</p><p> ?。?)能夠進(jìn)行閘門時(shí)間選擇</p><p>  1.2.3發(fā)揮部分:</p><p><b> ?。?)量程切換。</b></p><p> ?。?)占空比的測量。</p><p><b>  2

16、設(shè)計(jì)思路</b></p><p>  由于此程序是基于C8051F020單片機(jī)的程序設(shè)計(jì),主要的設(shè)計(jì)思路是利用信號(hào)發(fā)生器產(chǎn)生1HZ~2MHZ的方波,通過單片機(jī)的P0^0端口輸入進(jìn)單片機(jī),進(jìn)過單片機(jī)的處理,再由51單片機(jī)的實(shí)驗(yàn)箱的液晶屏進(jìn)行顯示,具體思路如下:</p><p> ?。?)首先是對(duì)單片機(jī)的定時(shí)計(jì)數(shù)部分進(jìn)行初始化的設(shè)定。選擇片外的12M晶振,</p>&

17、lt;p>  對(duì)液晶顯示器進(jìn)行初始化設(shè)定,對(duì)定時(shí)計(jì)數(shù)部分進(jìn)行特殊功能寄存器的初始化設(shè)置和選擇。</p><p> ?。?)計(jì)數(shù)器T0和定時(shí)器T1的應(yīng)用。</p><p>  采用T0對(duì)外部輸入的脈沖進(jìn)行計(jì)數(shù),用T1來設(shè)置閘門時(shí)間。當(dāng)T1發(fā)生中斷的時(shí)候關(guān)閉計(jì)數(shù)器T0,并把此時(shí)的TH0、TL0的數(shù)據(jù)儲(chǔ)存起來,為后續(xù)的數(shù)據(jù)處理做準(zhǔn)備,此部分是本頻率計(jì)設(shè)計(jì)的核心部分,此部分分的對(duì)計(jì)數(shù)器T0和

18、定時(shí)器T1的開啟關(guān)閉設(shè)計(jì)時(shí)應(yīng)該注意,因?yàn)楫?dāng)外部輸入的脈沖頻率較大時(shí),會(huì)對(duì)測量結(jié)果產(chǎn)生較大的誤差,所以盡量做到啟動(dòng)定時(shí)時(shí)就對(duì)外部脈沖進(jìn)行計(jì)數(shù),定時(shí)器T1發(fā)生中斷就停止T0的計(jì)數(shù)此時(shí)所測的頻率較為準(zhǔn)確。</p><p> ?。?)數(shù)據(jù)的轉(zhuǎn)化部分。</p><p>  由于T1發(fā)生中斷,此時(shí)記錄T0的計(jì)數(shù)值。因?yàn)橘A存的數(shù)據(jù)為十六進(jìn)制,所以需對(duì)此數(shù)據(jù)進(jìn)行轉(zhuǎn)化成十進(jìn)制,存入事先定義好的數(shù)組,為下一部

19、分的顯示部分做準(zhǔn)備。此部分的要求也較高,因?yàn)橐炎畲笾礔FFF,數(shù)據(jù)轉(zhuǎn)化成65536,所以存數(shù)據(jù)的數(shù)組應(yīng)為一維,至少長度為五。并且要按位存入數(shù)組,對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)化時(shí)要分好是十進(jìn)制還是十六進(jìn)制。</p><p>  (4)數(shù)據(jù)的顯示部分。</p><p>  對(duì)液晶顯示器進(jìn)行初始化之后,在對(duì)數(shù)組中的數(shù)據(jù)進(jìn)行按位的顯示,最后顯示出所測數(shù)據(jù)。</p><p> ?。?)占空

20、比的測量部分。</p><p>  此部分的原理是利用定時(shí)器T1的定時(shí)功能,對(duì)P0^0進(jìn)行定義,當(dāng)檢測到P0^0有上升沿時(shí)啟動(dòng)定時(shí)器,但檢測到下降延時(shí),記錄此時(shí)的TH0、TL0的值,此時(shí)的數(shù)為高電平的時(shí)間,在檢測到上升沿時(shí)停止計(jì)時(shí),記錄此時(shí)的TH0、TL0的值,此時(shí)記錄的值為整個(gè)脈沖的周期。兩部分相除所得的即為所測脈沖的占空比。再經(jīng)過數(shù)據(jù)處理存入數(shù)組,送到顯示部分顯示。</p><p> 

21、 以上為我編寫的程序的主要思路。</p><p><b>  3設(shè)計(jì)方框圖</b></p><p><b>  4 各部分程序設(shè)計(jì)</b></p><p><b>  4.1程序初始化</b></p><p>  此部分的主要內(nèi)容為對(duì)主程序的初始化,定義變量和庫函數(shù)的調(diào)用,其中

22、包括定義長整形,無符號(hào)字符型、無符號(hào)整形、無符號(hào)長整形、位型。還包括數(shù)組的定義等。</p><p>  #include<c8051f020.h></p><p>  #include<intrins.h></p><p>  unsigned long x;</p><p>  unsigned char *lcd;

23、</p><p>  unsigned char M;</p><p>  unsigned char n;</p><p>  unsigned char h;</p><p>  unsigned char e;</p><p>  unsigned int tl0;</p><p>  u

24、nsigned int tl00;</p><p>  unsigned int th00;</p><p>  unsigned char m1;</p><p>  unsigned char m11;</p><p>  unsigned int th0;</p><p>  unsigned long t;&l

25、t;/p><p>  unsigned long t0;</p><p>  unsigned long t00;</p><p>  unsigned char aaa;</p><p>  unsigned char A;</p><p>  sbit P52=P1^1;</p><p>  

26、sbit P51=P1^0;</p><p>  sbit P53=P1^2;</p><p>  sbit P58=P1^7;</p><p>  sbit a=P2^0;</p><p>  sbit b=P2^1;</p><p>  sbit c=P2^2;</p><p>  sbit

27、 d=P2^7;</p><p>  sbit in=P0^0;</p><p>  unsigned char temp,data1;</p><p>  unsigned char HMS[9]={"freoufce:"},YMD[10]={0x0,0x00,0X0,0X0,0x00,"KHZ"};</p>

28、<p>  unsigned char YME[10]={0x0,0x00,0X0,0X0,0x00,"HZ"};</p><p>  unsigned char YMM[10]={0x0,0x0,0X0,0X0,0x00,"MHZ"};</p><p>  unsigned char ZK[2]={0x0,0x00};</p>

29、<p>  unsigned char ZKB[14]={"ZHAN KONG BI :"};</p><p>  #define SYSCLK 11059200</p><p>  void SYSCLK_Init(void);</p><p>  void PORT_Init(void);</p><p>

30、;  void Time01_Init(void);</p><p>  void LCD_Init(void);</p><p>  unsigned int Frequence;</p><p>  unsigned int WAN,QIAN,BAI,SHI,GE,FF;</p><p>  4.2系統(tǒng)時(shí)鐘初始化</p>&

31、lt;p>  void SYSCLK_Init(void)</p><p><b>  {</b></p><p>  int i; </p><p>  OSCXCN=0x67; //啟動(dòng)外部11.0592MHZ晶振</p><p

32、>  for(i=0;i<255;i++);</p><p>  while((OSCXCN & 0x80) == 0x00);</p><p>  OSCICN=0x88; //選擇外部晶振作為系統(tǒng)時(shí)鐘</p><p><b>  }</b></p><p>  

33、4.3交叉開關(guān)初始化</p><p>  void PORT_Init(void)</p><p><b>  {</b></p><p>  XBR0=0x00;</p><p>  XBR1=0x02; //交叉開關(guān)使能T0</p><p>  

34、XBR2=0x40; //使能交叉開關(guān)</p><p>  P74OUT=0xf0;</p><p>  P1MDOUT=0xff;</p><p><b>  }</b></p><p>  4.4定時(shí)器0/1初始化</p><p>  void

35、Time01_Init(void)</p><p><b>  {</b></p><p>  EA=0; //關(guān)總使能</p><p>  TR0=0; //關(guān)定時(shí)器T0</p><p>  TR1=0;

36、 //關(guān)定時(shí)器T1</p><p><b>  IE=0x00;</b></p><p><b>  TF1=0;</b></p><p>  TMOD=0x15; //定時(shí)器1為16位定時(shí)器方式</p><p><b>

37、  IP=0x08;</b></p><p>  CKCON=0x18;</p><p><b>  }</b></p><p>  4.5 LCD初始化</p><p>  void LCD_Init(void)</p><p><b>  {</b><

38、/p><p><b>  P6=0x09;</b></p><p>  for(x=0;x<50000;x++);</p><p>  P7=0x30; //一行顯示</p><p><b>  P6=0x08;</b><

39、/p><p><b>  P6=0X09;</b></p><p>  for(x=0;x<1000;x++);</p><p><b>  P7=0x0e;</b></p><p><b>  P6=0x08;</b></p><p><b&g

40、t;  P6=0X09;</b></p><p>  for(x=0;x<1000;x++);</p><p><b>  P7=0x06;</b></p><p><b>  P6=0x08;</b></p><p><b>  P6=0X09;</b>&l

41、t;/p><p>  for(x=0;x<5000;x++);</p><p>  P7=0x01; //清屏</p><p><b>  P6=0x08;</b></p><p><b>  P6=0X09;</b></p

42、><p>  for(x=0;x<5000;x++);}</p><p><b>  4.6 測頻部分</b></p><p>  4.6.1 量程選擇部分</p><p>  if(P52==1) //判斷P52端口是否為1</p>&l

43、t;p>  {b=0; //燈亮</p><p><b>  ET1=1;</b></p><p>  TH1=(-SYSCLK/1000)>>8; //定時(shí)1ms</p><p>  TL1=-SYSCLK/1000;<

44、/p><p>  TR1=1; //啟動(dòng)T0、T1</p><p><b>  TR0=1;}</b></p><p>  else if(P51==1) //判斷P51端口是否為1</p><p><b&g

45、t;  {a=0;</b></p><p>  TR0=1; //啟動(dòng)T0</p><p><b>  TF1=0; </b></p><p>  for(aaa=0;aaa<239;aaa++) </p><p>

46、;  {TH1=0x4c; </p><p><b>  TL1=0x00;</b></p><p>  TR1=1; //此部分for循環(huán)利用查詢方式</p><p>  while(!TF1); 定時(shí)1s<

47、/p><p><b>  TF1=0;}</b></p><p><b>  ET1=1;</b></p><p>  TH1=0x4c; </p><p><b>  TL1=0x00;</b></p><p><b>  }</b>

48、</p><p>  else if(P53==1) //判斷P52端口是否為1</p><p><b>  { c=0;</b></p><p><b>  ET1=1;</b></p><p>  TH1=(-SYSCLK/1000)>>

49、;8;</p><p>  TL1=-SYSCLK/1000;</p><p><b>  TR1=1;</b></p><p><b>  TR0=1; }</b></p><p>  Else //如若P5端口全部為0,則把

50、燈全部關(guān)斷</p><p>  { P2=0xff;</p><p><b>  TR0=0;</b></p><p>  YME[0]=0x00; //無檔時(shí)對(duì)數(shù)組清零</p><p>  YME[1]=0x00; </p><p>  YME

51、[2]=0x00; </p><p>  YME[3]=0x00; </p><p>  YME[4]=0x00;}</p><p><b>  }</b></p><p>  4.6.2 測頻顯示部分</p><p><b>  P6=0x0d;</b></p>

52、<p>  for(x=0;x<1000;x++);</p><p>  if(P58==0)</p><p><b>  {h=9;</b></p><p>  lcd=&HMS;} //將"freoufce:"顯示出來</p>

53、<p><b>  else</b></p><p><b>  {h=14;</b></p><p>  lcd=&ZKB;} //將"ZHAN KONG BI :"顯示出來</p><p>  for(M=h;M>0

54、;M--)</p><p><b>  {</b></p><p>  data1=*lcd;</p><p><b>  P7=data1;</b></p><p><b>  P6=0x0c;</b></p><p><b>  P6=0x

55、0d;</b></p><p><b>  lcd++;</b></p><p>  for(x=0;x<100;x++);</p><p><b>  }</b></p><p>  if(P58==0)</p><p><b>  {h=7;&

56、lt;/b></p><p>  if(P52==1)</p><p>  {lcd=&YMD;} //將"KHZ"的數(shù)據(jù)顯示出來</p><p>  else if(P51==1)</p><p>  {lcd=&YME;}

57、 //將"HZ"的數(shù)據(jù)顯示出來</p><p>  else if(P53==1)</p><p>  {lcd=&YMM;} //將"MHZ"的數(shù)據(jù)顯示出來</p><p><b>  else</b></p>&

58、lt;p>  {lcd=&YME;}} //將"0HZ"的數(shù)據(jù)顯示出來</p><p><b>  else</b></p><p><b>  { h=2;</b></p><p>  lcd=&ZK;}

59、 //顯示預(yù)算后的占空比</p><p>  for(M=h;M>0;M--)</p><p><b>  {</b></p><p>  data1=*lcd;</p><p>  if (data1<0x40)</p><p>  data1+=0x30

60、;</p><p><b>  P7=data1;</b></p><p><b>  P6=0x0c;</b></p><p><b>  P6=0x0d;</b></p><p><b>  lcd++;</b></p><p>

61、;  for(x=0;x<100;x++);</p><p><b>  }</b></p><p><b>  }</b></p><p>  4.7 測占空比部分</p><p>  { d=0; //燈亮</p&

62、gt;<p><b>  TH1=0;</b></p><p><b>  TL1=0;</b></p><p>  while(!in); //查詢方波上升沿</p><p>  TR1=1; /

63、/啟動(dòng)定時(shí)器T1</p><p>  while(in); //查詢方波下降沿</p><p>  th0=TH1;tl0=TL1; //記錄高電平時(shí)間</p><p>  while(!in); //查詢方波上升沿</

64、p><p><b>  TR1=0;</b></p><p>  th00=TH1;tl00=TL1;</p><p>  t0=th0*0x100+tl0; //對(duì)所得數(shù)據(jù)進(jìn)行計(jì)算</p><p>  t00=th00*0x100+tl00;</p><p>

65、  t=t0*100/t00;</p><p>  ZK[0]=t/10; //存入數(shù)組</p><p>  ZK[1]=t%10;</p><p><b>  TH1=0;</b></p><p><b>  TL1=0;</b></p&g

66、t;<p><b>  }</b></p><p>  5 編程過程所遇問題</p><p><b>  5.1 P5口問題</b></p><p>  編程中遇到需要對(duì)量程進(jìn)行切換問題,需用P5口,過程中忽略了P5口不可位尋址,最終轉(zhuǎn)化到P1口,進(jìn)行判斷,并且須定義了中間變量A.</p>&l

67、t;p>  5.2 交叉開關(guān)問題</p><p>  編程中遇到了對(duì)可位尋址端口進(jìn)行賦值,但觀察無效,其忽略了交叉開關(guān)問題,將賦值語句加到了交叉開關(guān)使能的上端,致使語句無效,最終發(fā)現(xiàn)問題解決。</p><p><b>  5.3 數(shù)組問題</b></p><p>  由于顯示和存儲(chǔ)數(shù)據(jù)時(shí)需用到數(shù)組,所以要定義數(shù)組,但過程中發(fā)現(xiàn),數(shù)組的大小

68、一定要足夠大才能完整顯示</p><p>  5.4 定義變量問題</p><p>  在進(jìn)行占空比測量時(shí),須定義變量,由于定時(shí)器1定時(shí)時(shí)需要較多的變量,忽略了長整形,浮點(diǎn)型等的區(qū)別,造成數(shù)據(jù)的無法采集。</p><p>  6 編程過程未解決問題</p><p>  6.1 占空比測量問題</p><p>  由于低

69、頻段周期較長,會(huì)造成定時(shí)器溢出,無法準(zhǔn)確記錄周期和高電平時(shí)間,所以只能測量1KHZ~6KHZ.</p><p>  6.2 液晶屏LCD問題</p><p>  液晶屏一行顯示,并且只能從側(cè)面看清顯示的數(shù)據(jù)。</p><p><b>  7 元器件清單</b></p><p><b>  8 主要器件介紹<

70、;/b></p><p>  8.1 C8051f020單片機(jī)</p><p><b>  8.1.1管腳圖</b></p><p>  圖7.1 c8051f020引腳圖</p><p><b>  8.1.2簡介</b></p><p>  C8051F020 器

71、件是完全集成的混合信號(hào)系統(tǒng)級(jí)MCU芯片, 具有64 個(gè)數(shù)字I/O 引腳 (C8051F020/2)或32 個(gè)數(shù)字I/O 引腳(C8051F021/3)。下面列出了一些主要特性; </p><p>  1.􀁹 高速、流水線結(jié)構(gòu)的8051 兼容的CIP-51 內(nèi)核(可達(dá)25MIPS) </p><p>  2.􀁹 全速、非侵入式的在系統(tǒng)調(diào)試接口(片內(nèi)) &l

72、t;/p><p>  3.􀁹 真正12 位(C8051F020/1)或10 位(C8051F022/3)、100 ksps 的8 通道ADC,帶PGA和模擬多路開關(guān) </p><p>  4.􀁹 真正8 位500 ksps 的ADC,帶PGA 和8 通道模擬多路開關(guān) </p><p>  5.􀁹 兩個(gè)12 位DAC,

73、具有可編程數(shù)據(jù)更新方式 </p><p>  6.􀁹 64K 字節(jié)可在系統(tǒng)編程的FLASH 存儲(chǔ)器 </p><p>  7.􀁹 4352(4096+256)字節(jié)的片內(nèi)RAM </p><p>  8.􀁹 可尋址64K 字節(jié)地址空間的外部數(shù)據(jù)存儲(chǔ)器接口 </p><p>  9.h

74、8697; 硬件實(shí)現(xiàn)的SPI、SMBus/ I2C 和兩個(gè)UART 串行接口 </p><p>  10. 5 個(gè)通用的16 位定時(shí)器</p><p>  11. 具有5 個(gè)捕捉/比較模塊的可編程計(jì)數(shù)器/定時(shí)器陣列 </p><p>  12. 片內(nèi)看門狗定時(shí)器、VDD 監(jiān)視器和溫度傳感器 </p><p>  13 具有片內(nèi)VDD 監(jiān)視

75、器、看門狗定時(shí)器和時(shí)鐘振蕩器的C8051F020 是真正能獨(dú)立工作的片上系統(tǒng)。 </p><p>  C8051F020單片機(jī)所有模擬和數(shù)字外設(shè)均可由用戶固件使能/禁止和配置。FLASH 存儲(chǔ)器還具有在系統(tǒng)重新編程能力,可用于非易失性數(shù)據(jù)存儲(chǔ),并允許現(xiàn)場更新8051 固件。片內(nèi)JTAG 調(diào)試電路允許使用安裝在最終應(yīng)用系統(tǒng)上的產(chǎn)品MCU 進(jìn)行非侵入式(不占用片內(nèi)資源)、全速、在系統(tǒng)調(diào)試。該調(diào)試系統(tǒng)支持觀察和修改存儲(chǔ)

76、器和寄存器,支持?jǐn)帱c(diǎn)、觀察點(diǎn)、單步及運(yùn)行和停機(jī)命令。在使用JTAG 調(diào)試時(shí),所有的模擬和數(shù)字外設(shè)都可全功能運(yùn)行。</p><p><b>  小結(jié)</b></p><p>  本次我課程設(shè)計(jì)的題目是頻率計(jì)的程序設(shè)計(jì),這次課程設(shè)計(jì)我們查閱了許多的相關(guān)文獻(xiàn)和書籍。因?yàn)閯偪吹竭@個(gè)題目的時(shí)候,大家都不了解。前期都處于迷茫狀態(tài)。此次課設(shè)是二周的時(shí)間,第一天,老師對(duì)每個(gè)題目都做了

77、解釋及其具體的要求,使邏輯電路的輪廓逐漸清晰起來。知道了從何處下手。</p><p>  大家都知道,課程設(shè)計(jì)是用我們課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練;是我們邁向社會(huì),從事職業(yè)工作前一個(gè)必不少的過程。所以我很珍惜這次機(jī)會(huì),在老師講完的時(shí)候,我們就有了一個(gè)模塊的思路。</p><p>  我們今天認(rèn)真的進(jìn)行課程設(shè)計(jì),學(xué)會(huì)腳踏實(shí)地邁開實(shí)踐這一步,就是為明天能穩(wěn)健地在社會(huì)大潮中奔跑打下堅(jiān)實(shí)的基礎(chǔ)。在這

78、次的課程設(shè)計(jì)中,不僅檢驗(yàn)了我所學(xué)習(xí)的知識(shí),也培養(yǎng)了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在設(shè)計(jì)過程中,與同學(xué)分工設(shè)計(jì),和同學(xué)們相互探討,相互學(xué)習(xí),相互監(jiān)督。學(xué)會(huì)了合作,學(xué)會(huì)了運(yùn)籌帷幄,學(xué)會(huì)了寬容,學(xué)會(huì)了理解,也學(xué)會(huì)了做人與處世。這一周內(nèi), 我感觸最深的當(dāng)屬查閱大量的設(shè)計(jì)資料了。無論是課本上的,還是網(wǎng)上的都瀏覽了不少相關(guān)的設(shè)計(jì)思路,從中也借鑒了別人的思想,開闊了自己的思路。</p><p> 

79、 在設(shè)計(jì)程序之前,設(shè)計(jì)者必</p><p>  通過這次訓(xùn)練,我能夠更好的綜合運(yùn)用所學(xué)知識(shí)、獨(dú)立分析和解決實(shí)際問題。培養(yǎng)了自己的創(chuàng)新意識(shí)和創(chuàng)新能力,并獲得了科學(xué)研究的基礎(chǔ)訓(xùn)練和培養(yǎng)了團(tuán)隊(duì)協(xié)作精神。</p><p>  。在與老師交流、請(qǐng)教之間,課學(xué)對(duì)所用的知識(shí)內(nèi)部有一個(gè)深刻的理解,知道具體應(yīng)用的是哪一部分的知識(shí)。更要有一個(gè)清晰的思路和一個(gè)完整的結(jié)構(gòu)框圖。在設(shè)計(jì)邏輯電路時(shí),不能妄想一次就將整

80、個(gè)電路圖設(shè)計(jì)好。 反復(fù)修改、不斷改進(jìn)是整個(gè)設(shè)計(jì)過程的必經(jīng)之路。要養(yǎng)成文件管理的好習(xí)慣,因?yàn)槊總€(gè)模塊可能仿真的次數(shù)很多,如果不整理好文件,最后可能一團(tuán)糟。一個(gè)邏輯圖的完美與否不僅僅是實(shí)現(xiàn)其應(yīng)有的功能, 而應(yīng)該讓人一看就能明白你的設(shè)計(jì)結(jié)構(gòu)。在設(shè)計(jì)課程過程中遇到問題是很正常的,但我們應(yīng)該將每次遇到的問題分析清楚,并及時(shí)解決,以免下次再碰到同樣的問題。設(shè)很快就結(jié)束了。一周的時(shí)間雖然短暫,但在這一星期的課程設(shè)計(jì)中收獲很多。</p>

81、<p>  將以前的知識(shí)運(yùn)用到實(shí)踐中,大大提升了自己的動(dòng)手能力。在設(shè)計(jì)與仿真的過程中,對(duì)某些元件的功能及特點(diǎn)有了很好的了解,這對(duì)以后的學(xué)習(xí)或是工作有很大的幫助。</p><p>  課設(shè)雖然結(jié)束了,但是實(shí)踐與求知的路并未結(jié)束。</p><p><b>  致謝</b></p><p>  在這次課程設(shè)計(jì)的過程中,首先要感謝的是呂勇軍老

82、師。沒有老師的幫助,我們要完成整個(gè)程序是很困難的。就算是很簡單的一個(gè)問題,我們有時(shí)候也會(huì)檢查不出來,這時(shí)候多虧了老師的幫助。是老師的正確指導(dǎo),才使我的課程設(shè)計(jì)更加完整。</p><p>  由于此次課程設(shè)計(jì)涉及的內(nèi)容以前沒有經(jīng)常應(yīng)用,遇到了很大的困難,設(shè)計(jì)能夠順利的完成,真的很感謝老師。在老師的講解下,我才有了比較清晰地設(shè)計(jì)框圖。在每個(gè)模塊電路的設(shè)計(jì)過程中也遇到了很多的問題。每次請(qǐng)教老師的時(shí)候,老師都能很仔細(xì)、耐

83、心的為我們解答,不管是容易的問題,還是復(fù)雜的問題。每次老師在講解以后,我們都會(huì)恍然大悟,而且老師也會(huì)給出更好的設(shè)計(jì)提議。使我們?cè)O(shè)計(jì)得更快,更順利。</p><p>  在這里,對(duì)其他給我?guī)椭娜艘脖硎菊\摯的謝意。</p><p>  也感謝學(xué)校能夠提供一次鍛煉學(xué)生將理論與實(shí)踐相結(jié)合的能力的機(jī)會(huì)。</p><p>  對(duì)我們組來說,是一個(gè)合作的團(tuán)體,所以也感謝我組成員

84、對(duì)我的幫助,每次遇到問題的時(shí)候,他們一定會(huì)幫我解決問題,并鼓勵(lì)我。所以在問題解決的同時(shí),也學(xué)會(huì)了新的東西。大家在一起討論、研究與測試,各自發(fā)揮所長。真的很高興能有這樣的一次機(jī)會(huì)。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]李光飛 ,樓苗然主編.51系列單片機(jī).北京:北京航空航天大學(xué)出版社,2003</p><p>

85、  [2]萬光毅 .Soc單片機(jī)實(shí)驗(yàn)、實(shí)踐應(yīng)用設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,2006</p><p>  [3]何立民 .單片機(jī)高級(jí)教程. 北京:北京航空航天大學(xué)出版社,2000</p><p>  [4]張俊謨 . Soc單片機(jī)原理應(yīng)與用——基于C8051F系列. 北京:北京航空航天大學(xué)出版社,2007</p><p><b>  程序源代碼&l

86、t;/b></p><p>  #include<c8051f020.h></p><p>  #include<intrins.h></p><p>  unsigned long x;</p><p>  unsigned char *lcd;</p><p>  unsigned c

87、har M;</p><p>  unsigned char n;</p><p>  unsigned char h;</p><p>  unsigned char e;</p><p>  unsigned int tl0;</p><p>  unsigned int tl00;</p><

88、p>  unsigned int th00;</p><p>  unsigned char m1;</p><p>  unsigned char m11;</p><p>  unsigned int th0;</p><p>  unsigned long t;</p><p>  unsigned lon

89、g t0;</p><p>  unsigned long t00;</p><p>  unsigned char aaa;</p><p>  unsigned char A;</p><p>  sbit P52=P1^1;</p><p>  sbit P51=P1^0;</p><p&g

90、t;  sbit P53=P1^2;</p><p>  sbit P58=P1^7;</p><p>  sbit a=P2^0;</p><p>  sbit b=P2^1;</p><p>  sbit c=P2^2;</p><p>  sbit d=P2^7;</p><p>  sb

91、it in=P0^0;</p><p>  unsigned char temp,data1;</p><p>  unsigned char HMS[9]={"freoufce:"},YMD[10]={0x0,0x00,0X0,0X0,0x00,"KHZ"};</p><p>  unsigned char YME[10]=

92、{0x0,0x00,0X0,0X0,0x00,"HZ"};</p><p>  unsigned char YMM[10]={0x0,0x0,0X0,0X0,0x00,"MHZ"};</p><p>  unsigned char ZK[2]={0x0,0x00};</p><p>  unsigned char ZKB[14

93、]={"ZHAN KONG BI :"};</p><p>  #define SYSCLK 11059200</p><p>  void SYSCLK_Init(void);</p><p>  void PORT_Init(void);</p><p>  void Time01_Init(void);</p&

94、gt;<p>  void LCD_Init(void);</p><p>  unsigned int Frequence;</p><p>  unsigned int WAN,QIAN,BAI,SHI,GE,FF;</p><p>  void main (void)</p><p><b>  { </b

95、></p><p>  WDTCN=0xde;</p><p>  WDTCN=0xad;</p><p>  LCD_Init();</p><p>  SYSCLK_Init();</p><p>  PORT_Init();</p><p>  Time01_Init(); <

96、/p><p><b>  A=P5;</b></p><p><b>  P1=A;</b></p><p><b>  while(1)</b></p><p><b>  {A=P5;</b></p><p><b>  

97、P1=A;</b></p><p><b>  EA=1;</b></p><p>  if(P58==0)</p><p>  {if(P52==1)</p><p><b>  {b=0;</b></p><p><b>  ET1=1;</b

98、></p><p>  TH1=(-SYSCLK/1000)>>8;</p><p>  TL1=-SYSCLK/1000;</p><p><b>  TR1=1;</b></p><p><b>  TR0=1;</b></p><p><b>

99、;  }</b></p><p>  else if(P51==1)</p><p><b>  {a=0;</b></p><p><b>  TR0=1;</b></p><p><b>  TF1=0; </b></p><p>  

100、for(aaa=0;aaa<239;aaa++)</p><p><b>  {</b></p><p>  TH1=0x4c; </p><p><b>  TL1=0x00;</b></p><p><b>  TR1=1;</b></p><p&

101、gt;  while(!TF1);</p><p><b>  TF1=0;</b></p><p><b>  }</b></p><p><b>  ET1=1;</b></p><p>  TH1=0x4c; </p><p><b> 

102、 TL1=0x00;</b></p><p><b>  }</b></p><p>  else if(P53==1)</p><p><b>  { c=0;</b></p><p><b>  ET1=1;</b></p><p>  

103、TH1=(-SYSCLK/1000)>>8;</p><p>  TL1=-SYSCLK/1000;</p><p><b>  TR1=1;</b></p><p><b>  TR0=1; }</b></p><p><b>  else</b></p&g

104、t;<p>  { P2=0xff;</p><p><b>  TR0=0;</b></p><p>  YME[0]=0x00; </p><p>  YME[1]=0x00; </p><p>  YME[2]=0x00; </p><p>  YME[3]=0x00; <

105、;/p><p>  YME[4]=0x00;}</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  { d=0;</b></p><p><b>  TH1=0;</b>

106、</p><p><b>  TL1=0;</b></p><p>  while(!in);</p><p><b>  TR1=1;</b></p><p>  while(in);</p><p>  th0=TH1;tl0=TL1;</p><p&

107、gt;  while(!in);</p><p><b>  TR1=0;</b></p><p>  th00=TH1;tl00=TL1;</p><p>  t0=th0*0x100+tl0;</p><p>  t00=th00*0x100+tl00;</p><p>  t=t0*100/

108、t00;</p><p>  ZK[0]=t/10;</p><p>  ZK[1]=t%10;</p><p><b>  TH1=0;</b></p><p><b>  TL1=0;</b></p><p><b>  }</b></p>

109、;<p><b>  P6=0x0d;</b></p><p>  for(x=0;x<1000;x++);</p><p>  if(P58==0)</p><p><b>  {h=9;</b></p><p>  lcd=&HMS;}</p><

110、p><b>  else</b></p><p><b>  {h=14;</b></p><p>  lcd=&ZKB;}</p><p>  for(M=h;M>0;M--)</p><p><b>  {</b></p><p>

111、;  data1=*lcd;</p><p><b>  P7=data1;</b></p><p><b>  P6=0x0c;</b></p><p><b>  P6=0x0d;</b></p><p><b>  lcd++;</b></p&

112、gt;<p>  for(x=0;x<100;x++);</p><p><b>  }</b></p><p>  if(P58==0)</p><p><b>  {h=7;</b></p><p>  if(P52==1)</p><p>  {lc

113、d=&YMD;}</p><p>  else if(P51==1)</p><p>  {lcd=&YME;}</p><p>  else if(P53==1)</p><p>  {lcd=&YMM;}</p><p><b>  else</b></p>

114、<p>  {lcd=&YME;}}</p><p><b>  else</b></p><p><b>  { h=2;</b></p><p><b>  lcd=&ZK;}</b></p><p>  for(M=h;M>0;M--)

115、</p><p><b>  {</b></p><p>  data1=*lcd;</p><p>  if (data1<0x40)</p><p>  data1+=0x30;</p><p><b>  P7=data1;</b></p><

116、p><b>  P6=0x0c;</b></p><p><b>  P6=0x0d;</b></p><p><b>  lcd++;</b></p><p>  for(x=0;x<100;x++);</p><p><b>  }</b>

117、</p><p><b>  }</b></p><p><b>  }</b></p><p>  void SYSCLK_Init(void)</p><p><b>  {</b></p><p><b>  int i;</b&g

118、t;</p><p>  OSCXCN=0x67;</p><p>  for(i=0;i<255;i++);</p><p>  while((OSCXCN & 0x80) == 0x00);</p><p>  OSCICN=0x88;</p><p><b>  }</b>&l

119、t;/p><p>  void PORT_Init(void)</p><p><b>  {</b></p><p>  XBR0=0x00;</p><p>  XBR1=0x02;</p><p>  XBR2=0x40;</p><p>  P74OUT=0xf0;&l

120、t;/p><p>  P1MDOUT=0xff;</p><p><b>  }</b></p><p>  void Time01_Init(void)</p><p><b>  {</b></p><p><b>  EA=0;</b></p&g

121、t;<p><b>  TR0=0;</b></p><p><b>  TR1=0;</b></p><p><b>  IE=0x00;</b></p><p><b>  TF1=0;</b></p><p>  TMOD=0x15;&

122、lt;/p><p><b>  IP=0x08;</b></p><p>  CKCON=0x18;</p><p><b>  }</b></p><p>  void TIMER1_ISR(void) interrupt 3 using 1</p><p><b>

123、  {</b></p><p><b>  TR0=0;</b></p><p><b>  ET1=0;</b></p><p><b>  TF1=0;</b></p><p><b>  TR1=0;</b></p><

124、;p><b>  TF0=0;</b></p><p>  Frequence=TH0*0x100+TL0;</p><p>  if(P52==1)</p><p>  {WAN=Frequence/0x2710;</p><p>  YMD[0]=WAN;</p><p>  FF=Fr

125、equence%0x2710;</p><p>  QIAN=FF/0x03e8;</p><p>  YMD[1]=QIAN;</p><p>  FF=FF%0x03e8;</p><p>  BAI=FF/0x64;</p><p>  YMD[2]=BAI;</p><p>  FF=F

126、F%0x64;</p><p>  SHI=FF/0x0a;</p><p>  YMD[3]=SHI;</p><p>  FF=FF%0x0a;</p><p><b>  GE=FF;</b></p><p>  YMD[4]=GE;}</p><p>  else

127、if(P51==1)</p><p>  {WAN=Frequence/0x2710;</p><p>  YME[0]=WAN;</p><p>  FF=Frequence%0x2710;</p><p>  QIAN=FF/0x03e8;</p><p>  YME[1]=QIAN;</p><

128、;p>  FF=FF%0x03e8;</p><p>  BAI=FF/0x64;</p><p>  YME[2]=BAI;</p><p>  FF=FF%0x64;</p><p>  SHI=FF/0x0a;</p><p>  YME[3]=SHI;</p><p>  FF=F

129、F%0x0a;</p><p><b>  GE=FF;</b></p><p>  YME[4]=GE;}</p><p>  if (P53==1)</p><p>  {WAN=Frequence/0x2710;</p><p><b>  YMM[0]=0;</b>&

130、lt;/p><p>  FF=Frequence%0x2710;</p><p>  QIAN=FF/0x03e8;</p><p>  YMM[4]=QIAN;</p><p>  FF=FF%0x03e8;</p><p>  BAI=FF/0x64;</p><p><b>  YM

131、M[2]=0;</b></p><p>  FF=FF%0x64;</p><p>  SHI=FF/0x0a;</p><p><b>  YMM[3]=0;</b></p><p>  FF=FF%0x0a;</p><p><b>  GE=FF;</b>&

132、lt;/p><p>  YMM[1]=0; }</p><p><b>  TH0=0x00;</b></p><p><b>  TL0=0x00;</b></p><p><b>  TH1=0x00;</b></p><p>  TL1=0x00;}&

133、lt;/p><p>  void LCD_Init(void)</p><p><b>  {P6=0x09;</b></p><p>  for(x=0;x<50000;x++);</p><p><b>  P7=0x30;</b></p><p><b> 

134、 P6=0x08;</b></p><p><b>  P6=0X09;</b></p><p>  for(x=0;x<1000;x++);</p><p><b>  P7=0x0e;</b></p><p><b>  P6=0x08;</b></

135、p><p><b>  P6=0X09;</b></p><p>  for(x=0;x<1000;x++);</p><p><b>  P7=0x06;</b></p><p><b>  P6=0x08;</b></p><p><b>

136、;  P6=0X09;</b></p><p>  for(x=0;x<5000;x++);</p><p><b>  P7=0x01;</b></p><p><b>  P6=0x08;</b></p><p><b>  P6=0X09;</b><

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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)論