基于mcs-51單片機的可調(diào)頻率方波發(fā)生器課程設計_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘要</b></p><p>  本實驗是基于PHILIPS AT89C51 單片機所設計的,可以實現(xiàn)鍵位與數(shù)字動態(tài)顯示的一種頻率可調(diào)數(shù)字方波發(fā)生器。通過鍵盤鍵入(10HZ-10kHZ)隨機頻率,使用七段數(shù)碼管顯示,每一個數(shù)碼管對應一個鍵位。單片機對各個鍵位進行掃描,確定鍵位的輸入,然后數(shù)碼管顯示輸入的數(shù)值,方波發(fā)生器輸出以數(shù)碼管顯示的數(shù)值為頻率的方波。<

2、/p><p>  關鍵詞:單片機 七段數(shù)碼管 鍵盤電路 頻率可調(diào)數(shù)字方波發(fā)生器</p><p><b>  一、目的和功能</b></p><p><b>  1.1 目的:</b></p><p>  設計一種頻率范圍限定且可調(diào)的數(shù)字方波發(fā)生器,產(chǎn)生特定頻率的方波。</p><

3、p><b>  1.2功能:</b></p><p>  假設鍵盤是4*4的鍵盤,當鍵盤輸入范圍在10hz-10khz的數(shù)字,單片機控制數(shù)碼管顯示該數(shù)值,并把該數(shù)值當做數(shù)字方波發(fā)生器的輸入頻率,單片機控制數(shù)字方波發(fā)生器以該數(shù)值作為頻率顯示方波,從而得到我們想要頻率的方波。</p><p><b>  二、硬件設計</b></p>

4、<p>  2.1 硬件設計思想</p><p>  鍵盤的數(shù)字和鍵位關系固定,通過鍵盤輸入產(chǎn)生頻率,通過LED數(shù)碼管顯示出來,每一個數(shù)碼管對應一個鍵位。基本設備是基于PHILIPS AT89C51單片機,外圍設備采用的是4個七段數(shù)碼管,PHILIPS AT89C51單片機,1個OSCILLOSCOPE 方波發(fā)生器,16個Button,若干電阻,電源電池。</p><p> 

5、 2.2 部分硬件方案論述</p><p>  2.2.1 七段數(shù)碼管掃描顯示方式的方案比較</p><p>  方案一: 靜態(tài)顯示方式:靜態(tài)顯示方式是指當顯示器顯示某一字符時,七段數(shù)碼管的每段發(fā)光二極管的位選始終被選中。在這種顯示方式下,每一個LED數(shù)碼管顯示器都需要一個8位的輸出口進行控制。靜態(tài)顯示主要的優(yōu)點是顯示穩(wěn)定,在發(fā)光二極管導通電流一定的情況下顯示器的亮度大,系統(tǒng)運行過程中,在

6、需要更新顯示內(nèi)容時,CPU才去執(zhí)行顯示更新子程序,這樣既節(jié)約了CPU的時間,又提高了CPU的工作效率。其不足之處是占用硬件資源較多,每個LED數(shù)碼管需要獨占8條輸出線。隨著顯示器位數(shù)的增加,需要的I/O口線也將增加。</p><p>  方案二: 動態(tài)顯示方式:動態(tài)顯示方式是指一位一位地輪流點亮每位顯示器(稱為掃描),即每個數(shù)碼管的位選被輪流選中,多個數(shù)碼管公用一組段選,段選數(shù)據(jù)僅對位選選中的數(shù)碼管有效。對于每一

7、位顯示器來說,每隔一段時間點亮一次。顯示器的亮度既與導通電流有關,也與點亮時間和間隔時間的比例有關。通過調(diào)整電流和時間參數(shù),可以既保證亮度,又保證顯示。若顯示器的位數(shù)不大于8位,則顯示器的公共端只需一個8位I/O口進行動態(tài)掃描(稱為掃描口),控制每位顯示器所顯示的字形也需一個8位口(稱為段碼輸出)。動態(tài)顯示器的優(yōu)點是節(jié)省硬件資源,成本較低。但在控制系統(tǒng)運行過程中,要保證顯示器正常顯示,CPU必需每隔一段時間執(zhí)行一次顯示子程序,占用CPU

8、大量時間,降低了CPU的工作效率,同時顯示亮度較靜態(tài)顯示器低。</p><p>  由于PHILIPS AT89C51單片機本身提供的I/O口有限,因此我們選擇方案二——動態(tài)掃描方式。掃描方式中在輪流點亮掃描過程中,每位顯示器的點亮時間是極為短暫的約1ms,但由于人的視覺暫留現(xiàn)象及發(fā)光二極管的余輝效應,盡管實際上各位顯示器并非同時點亮,但只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數(shù)據(jù),不會有閃爍感。節(jié)約了

9、電能,節(jié)省 了I/O口。</p><p>  2.2.2 鍵盤連接方式方案比較</p><p><b>  方案一:獨立式鍵盤</b></p><p>  一個具有4個按鍵的獨立式鍵盤,每一個按鍵的一端都接地,另一端接mega16的I/O口。獨立式鍵盤每一按鍵都需要一根I/O線,占用mega16的硬件資源較多。因此獨立式鍵盤只適合按鍵較少的場合

10、。鍵盤是一組按鍵或開關的集合,鍵盤接口向計算機提供被按鍵的代碼。特點:使用方便、結構復雜、成本高。</p><p><b>  方案二:矩陣式鍵盤</b></p><p>  我們采用4×4矩陣式鍵盤,鍵盤的行線X0~X3通過電阻接+5V,當鍵盤沒有鍵閉合時,所有的行線和列線斷開,行線X0~X3均呈高電平。當鍵盤上某一鍵閉合時,該鍵所對應的行線與列線短路,此

11、時該行線的電平將由被短路的列線電平所決定。如果將行線接至單片機的輸入端口,列線接至單片機的輸出端口,則在單片機的控制下使列線Y0為低電平,其余三根列線Y1、Y2、Y3均為高電平,然后單片機讀輸入口狀態(tài)(即鍵盤行線狀態(tài)),若X0、X1、X2、X3均為高電平,則Y0這一列上沒有鍵閉合,如果讀出的行線狀態(tài)不全為高電平,則為低電平的行線和Y0相交的鍵處于閉合狀態(tài)。如果Y0這一列沒有鍵閉合,緊接著使列線Y1為低電平,其余列線為高電平,用同樣的方法

12、檢查Y1這一列有無鍵閉合,如此類推。這種逐行逐列地檢查鍵盤狀態(tài)的過程稱為對鍵盤的掃描。CPU對鍵盤的掃描可以采取程序控制的隨機方式,CPU空閑時才掃描鍵盤;也可以采取定時控制方式,每隔一段時間,CPU對鍵盤掃描一次;還可以采用中斷方式,當鍵盤上有鍵閉合時,向CPU請求中斷,CPU響應鍵盤發(fā)出的中斷請求,對鍵盤進行掃描,以識別哪一個鍵處于閉合狀態(tài),并對鍵輸入信息作相應處理。</p><p>  因為如果采用獨立式鍵

13、盤PHILIPS AT89C51的I/O口對于方案一來說將是遠遠不夠用的,為了節(jié)省I/O口,使我們的設計能夠順利進行,我們選用方案二——矩陣連接式鍵盤。為了能夠較為簡單的編程,和節(jié)省CPU的資源,我們采用定時掃描,每隔一段時間,CPU對鍵盤掃描一次,并將鍵值讀入。</p><p><b>  2.3 硬件電路圖</b></p><p><b>  三、軟件&

14、lt;/b></p><p>  3.1 軟件設計基本思想:</p><p>  ●鍵盤的不間斷掃描。</p><p>  ●4個八段數(shù)碼管的動態(tài)顯示。</p><p>  ●方波發(fā)生器方波的輸出</p><p><b>  3.2 程序框圖</b></p><p&g

15、t;<b>  3.3 程序功能</b></p><p>  初始化后單片機產(chǎn)生初值,將初值以動態(tài)掃描的方式顯示于八段數(shù)碼管 ,同時還對鍵盤進行實時掃描,在掃描后,單片機讀取鍵值,并將鍵值通過數(shù)碼管模塊顯示出來,方波發(fā)生器輸出該頻率的方波。</p><p><b>  四、總結</b></p><p>  4.1 已達

16、到的成果:硬件電路圖和鍵盤及顯示的程序。</p><p>  4.2 未完成的部分:軟件關于實行初值計算部分以及仿真。</p><p>  4.3 設計感悟:這一次課程設計遇到了很多問題。硬件基本上是沒有問題的,每個人都會做;但是程序是我們的弱點,還有就是分工合作,很多時候都是有分歧,還好最后還有水兵幫忙,使得我們的程序進一步完善。做完這個程序只是我們學做程序的開始吧,今后會繼續(xù)加強我

17、們在做程序上的功力。</p><p><b>  附錄一 程序代碼</b></p><p>  #include < reg52.h></p><p>  sbit out=P1^0;</p><p>  #define uchar unsigned char </p><p> 

18、 #define uint unsigned int</p><p>  uchar TH,TL,c;</p><p>  uchar keyscan();</p><p>  void delay(uint z);</p><p>  void main()</p><p><b>  {</b>

19、;</p><p><b>  uchar s;</b></p><p><b>  out=1;</b></p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b

20、>  TR0=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  s=keyscan();</p><p><b>  switch(s)</b></p><p&g

21、t;<b>  {</b></p><p>  case 0x0e://10HZ</p><p><b>  TH=0x3c;</b></p><p>  TL=0xb0;TMOD=0X01;</p><p><b>  break;</b></p><p&

22、gt;  case 0x0d://100HZ</p><p><b>  TH=0xec;</b></p><p>  TL=0x78;TMOD=0X01;</p><p><b>  break;</b></p><p>  case 0x0b://1kHZ</p><p>

23、;<b>  TH=0xfe;</b></p><p>  TL=0x0c;TMOD=0X01;</p><p><b>  break;</b></p><p>  case 0x07://10kHZ</p><p><b>  TH=0xff;</b></p>

24、<p>  TL=0xce;TMOD=0X01;</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p>&

25、lt;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>  for(y = 124;y>0;y--);</p&

26、gt;<p><b>  }</b></p><p>  void timer0() interrupt 1</p><p><b>  {</b></p><p><b>  TH0=TH;</b></p><p><b>  TL0=TL;</

27、b></p><p><b>  out=!out;</b></p><p><b>  }</b></p><p>  uchar keyscan()</p><p><b>  {</b></p><p>  uchar key;</p&

28、gt;<p>  if((P3&0x0f)==0x0f) return(0xff);</p><p>  delay(20);</p><p>  if((P3&0x0f)==0x0f) return(0xff);</p><p>  key=(P3&0x0f);</p><p>  while((P3&

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論