基于單片機方波發(fā)生器課程設計報告_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  單 片 機 課 程 設 計 </p><p>  題 目 ____________________</p><p>  姓 名 ____________________</p><p>  學 院 ____________________</p><p>  專 業(yè) ___________

2、_________</p><p>  學 號 ____________________</p><p>  指導教師 ____________________</p><p>  成 績 ____________________</p><p>  二〇一二年五月二十二日制</p><p><

3、;b>  摘 要</b></p><p>  本課程設計設計的是一種AT89C51單片機構成的波形發(fā)生器,可產生方波、三角波、正弦波、鋸齒波等多種波形,波形的周期可用程序改變,并可根據需要選擇單極性輸出或雙極性輸出,具有線路簡單、結構緊湊、性能優(yōu)越等特點。文章給出了源代碼,通過仿真測試,其性能指標達到了設計要求。</p><p>  關鍵詞:單片機;DAC;信號發(fā)生器&

4、lt;/p><p><b>  目 錄</b></p><p>  第一章 系統功能要求:2</p><p>  1.1、設計內容2</p><p><b>  1.2設計原理2</b></p><p>  第二章 方波發(fā)生器設計方案論證3</p>&l

5、t;p>  2.1 方案的設計與選擇 3</p><p>  第三章 系統的硬件電路的設計4</p><p>  3.1系統硬件原理4</p><p>  3.2芯片端口資源分配表4</p><p>  第四章 軟件設計5</p><p><b>  4.1 主程序5</b&g

6、t;</p><p>  4.2系統初始化子程序5</p><p>  4.3鍵盤中斷子程序5</p><p>  4.4 定時器中斷子程序6</p><p>  第五章、 系統調試7</p><p>  第六章、 結果分析9</p><p><b>  參考文獻10<

7、;/b></p><p><b>  附件 111</b></p><p>  附錄2 基于單片機方波發(fā)生器的器件清單16</p><p>  第一章 系統功能要求:</p><p>  用單片機產生頻率可調的方波信號。輸出方波的頻率范圍為1Hz-200Hz,頻率誤差比小于0.5%。要求用4 個按鈕改

8、變方波給定頻率,按鈕每按下一次,給定頻率改變一次。用示波器觀察方波波形。</p><p><b>  1.1、設計內容</b></p><p>  本課程設計是設計一個方波發(fā)生器,用4個按鈕控制方波的頻率以及占空比。</p><p><b>  1.2設計原理 </b></p><p>  AT89

9、C51單片機具有組成微型計算機的各部分部件:CPU、RAM、I/O定時器/計數器以及串行通訊接口等。只要將AT89C51的ROM,接口電路,再配置鍵盤及其接口,顯示器及其接口,數模轉換及波形輸出,指示燈及其接口等四部分,即可構成所需波形發(fā)生器。其信號發(fā)生器構成原理框圖如圖1所示。 </p><p>  圖1 – 方波信號發(fā)生器設計原理框圖 </p><p>  在信號發(fā)生器中,只用到片內中

10、斷請求,即是在AT89C51輸出一個波形采樣點信號后,接著啟動定時器,在定時器未產生中斷之前,AT89C51等待,直到定時器計時結束,產生中斷請求,AT89C51響應中斷,接著輸出下一個信號波形,如此循環(huán)。當有按鍵按下時,產生外部中斷請求信號,CPU暫停當前工作,處理中斷請求,重新裝入定時初值,開始定時。 </p><p>  第二章 方波發(fā)生器設計方案論證</p><p>  在電子技

11、術領域中,實現方波發(fā)生器的方法有很多種,可以采用不同的原理及器件構成不同的電路,但可以實現相同的功能。</p><p>  2.1 方案的設計與選擇 實現方波發(fā)生器的方法很多, 但主要有三個方案: 采用單片函數發(fā)生器 8038, 采用鎖相式頻率合成器,采用單片機編程。</p><p>  通過對比, 決定采用單片機編程的方法來實現。 該方法可以通過編程的方法來控制信號波形的頻

12、率和幅度, 而且在硬件電路不變的情況下, 通過改編程序來實現頻率的變換。此外,由于通過編程方法產生的是數字信號,所以信號的精度可以做得很高。 </p><p>  本設計用到一個AT89C51微處理器,4個按鍵,一個四與門。AT89C51用到兩個定時器,定時器0和定時器1。其中定時器0工作在定時方式1下,決定方波頻率;定時器1工作在定時方式1下,用來設定占空比。按鍵1與2控制方波信號頻率。按下按鍵1或2時,

13、進行頻率的調節(jié),占空比不變。1鍵按下時,頻率增加100Hz,若2鍵按下時,頻率增加10Hz。頻率最大值為500Hz,當頻率大于最大值時,重新賦值為50Hz。另外兩個按鍵控制方波信號占空比。當按鍵3和4按下時,進行占空比調節(jié),頻率不變。3鍵按下時,占空比進行增加10%,4鍵按下時,占空比增加1%。占空比最大值為100%,當占空比大于100%時,重新賦值為0%。 </p><p>  第三章 系統的硬件電路的設計&l

14、t;/p><p>  3.1系統硬件原理 </p><p>  系統硬件原理圖如圖2。本次設計中,采用內部時鐘方式。 AT89C51單片機的P1.0、P1.1、P1.2、P1.3口分別連接四個按鍵,對輸出方波的頻率、占空比進行控制。P2.0口作為方波輸出口,可以通過示波器來觀察波形。四個鍵盤口連接一個四與門,與INT0口連接,將鍵盤中斷請求信號送入CPU。 </p><p&

15、gt;  圖2 – 系統硬件原理圖 </p><p>  3.2芯片端口資源分配表</p><p>  表2 74LS21芯片端口資源分配表 </p><p>  表3 AT89C51 芯片端口資源分配表 </p><p><b>  第四章 軟件設計</b></p><p>  方波發(fā)生器的軟

16、件設計包括主程序、延時子程序、系統初始化程序、鍵盤中斷子程序、定時器中斷子程序。 </p><p><b>  4.1 主程序 </b></p><p>  主程序包括系統初始化,和一個死循環(huán)系統。當有中斷請求信號產生時,跳出循環(huán), 執(zhí)行中斷程序。流程圖如圖3 所示。 </p><p>  圖3 – 主程序流程圖 </p><

17、;p>  4.2系統初始化子程序 </p><p>  在此程序中,給所有變量賦初值:鍵盤掃描口、初始頻率與占空比及定時、開中斷、定時器0與定時器1的工作方式等。初始化時啟動了定時器0和定時器1.其中初始頻率為50Hz,占空比為50%。鍵盤中斷處理子程序流程圖如圖4所示 </p><p>  4.3鍵盤中斷子程序 </p><p>  鍵盤用外中斷0實現。當有

18、鍵按下時,產生低電平送入INT0口,形成中斷請求信號,CUP轉去執(zhí)行鍵盤中斷子程序,進行頻率調節(jié)或占空比調節(jié)。 (1)頻率調節(jié) 按下按鍵1或2時,進行頻率的調節(jié),占空比不變。1鍵按下時,頻率增加100Hz,若2鍵按下時,頻率增加10Hz。頻率最大值為500Hz,當頻率大于最大值時,重新賦值為50Hz。 (2)占空比調節(jié) 當按鍵3和4按下時,進行占空比調節(jié),頻率不變。3鍵按下時,占空比進行增加10%,4鍵按下時,占空比增加1%。占空比最大

19、值為99%,當占空比大于99%時,重新賦值為1%。 </p><p><b>  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  Y</b></p><p> 

20、 圖 4 – 鍵盤中斷處理子程序流程圖</p><p>  4.4 定時器中斷子程序 定時器中斷子程序中有定時器 0 與定時器 1 中斷, 頻率定時器 0 中斷流程圖與占空比定時器 1 流程圖分別如圖 5、圖 6 所示。①定時器 0 中斷執(zhí)行的操作有:復位,啟動自身進行頻率定時,同時啟動定時器 1,進行占空比定時,輸出高電平。②定時器 1 中斷,停止自身的計時,輸出低電平。</p>

21、<p>  第五章、 系統調試 </p><p>  在本次課程設計中, 使用 Proteus 軟件進行仿真調試。調試內容主要為軟硬件的協同,觀察波形輸出結果是否能夠與設計方案所設計的那樣達到要求。調試結果如下: 1) 在 Proteus 軟件中運行仿真,示波器窗口中出現方波波形,顯然波形頻率與占空比分別為 50Hz 和 50%,符合程序初始化的結果。</p><p>

22、  圖 7 – Proteus 仿真 – 初始狀態(tài)</p><p>  分別按下按鍵 1、 2 調節(jié)方波頻率??梢钥吹椒讲úㄐ晤l率不斷增加,一快一慢,而占空比依然為 50%未變。</p><p>  圖 8 – Proteus 仿真 – 調節(jié)方波頻率 </p><p>  3) 重新在初始狀態(tài)下進行仿真。 分別按下按鍵 3、 4 調節(jié)方波占空比, 可以看到方波波形

23、的占空比發(fā)生變化,而頻率未變。</p><p>  圖 9 – Proteus 仿真 – 調節(jié)方波占空比 </p><p><b>  第六章、 結果分析</b></p><p>  在本次設計中, 方波信號發(fā)生器的頻率和占空比都獨立可調。 輸出方波信號的占空比圍為 0%—100%,調節(jié)精度為 1%;頻率范圍為 50Hz—500Hz,調節(jié)精度為

24、 10Hz。頻率和占空比之間的調節(jié)彼此獨立。 進行頻率調節(jié)時, 每次可以增加 100Hz 或 10Hz, 超過 500Hz輸出為 50Hz 的方波;進行占空比調節(jié)時,每次可增加 1%或 10%, 超出 100%時輸出占空為 0%方波??傮w看來,設計成果達到了設計要求。 輸出方波的波形穩(wěn)定,調節(jié)也較為簡單。</p><p><b>  參考文獻 </b></p><p&g

25、t;  [1] 皮大能.南光群.劉金華.單片機課程設計指導書.北京理工大學出版社,2010.7.</p><p>  [2] 李光飛.樓然苗.胡佳文.謝象佐.單片機課程設計實例指導.北京航空航天大學出版社,2004.9.</p><p>  [3] 求是科技.單片機典型模塊設計實例導航.人民郵局出版社.2004.5.</p><p>  [4] 童詩白.模擬電路技術

26、基礎[M].北京:高等教育出版社,2000.5.</p><p>  [5] 方大千.鮑俏偉.實用電子控制電路.國防工業(yè)出版社,2003.4. </p><p>  [6] 李朝青.單片機原理及接口技術.北京航空航天大學出版社.2011.6</p><p><b>  附件 1</b></p><p>  基于單片機方

27、波發(fā)生器的程序清單:</p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  float fosc=12000000; //系統時鐘頻率</p>&l

28、t;p>  sbit KEY1=P1^0; //控制頻率百位;</p><p>  sbit KEY2=P1^1; //控制頻率十位;</p><p>  sbit KEY3=P1^2; //控制占空比十位;</p><p>  sbit KEY4=P1^3; //控制占空比個位;</p><p>  sbit OUTPUT=P2^0;

29、 //方波輸出端口;</p><p>  uchar zkb;</p><p>  uint freq;</p><p>  uchar TIMER0_L,TIMER0_H,TIMER1_L,TIMER1_H; //定</p><p>  /****************************</p><p>&l

30、t;b>  延時子程序</b></p><p>  ****************************/</p><p>  void delay(uchar n) //延時</p><p><b>  {</b></p><p><b>  uchar i;</b><

31、/p><p>  while(n--)</p><p>  {for(i=255;i>0;i--)</p><p><b>  {}</b></p><p><b>  }}</b></p><p>  /*******************</p><

32、;p><b>  系統初始化</b></p><p>  *******************/</p><p>  void chushihua(void)</p><p><b>  {</b></p><p><b>  P1=0x0f;</b></p>

33、;<p><b>  freq=50;</b></p><p><b>  zkb=50;</b></p><p>  TIMER0_L=0xe0;</p><p>  TIMER0_H=0xb1;</p><p>  TIMER1_L=0xf0;</p><p&g

34、t;  TIMER1_H=0xd8;</p><p>  TL0=0xe0; //初始頻率 50Hz 定時 20ms</p><p><b>  TH0=0xb1;</b></p><p>  TL1=0xf0; //初始占空比 50%定時 10ms</p><p><b>  TH1=0xd8;</b&

35、gt;</p><p>  TMOD=0x11; //定時器 1 和定時器 0 工作在方式 1</p><p>  IT0=1; //選擇 INT0 為下降沿觸發(fā)方式</p><p>  EX0=1; //外部中斷 0 允許</p><p>  ET0=1; //定時器 1 和定時器 0 中斷允許</p><p>&l

36、t;b>  ET1=1;</b></p><p>  EA=1; //系統中斷允許</p><p>  TR0=1; //定時器 1 和定時器 0 開始定時</p><p><b>  TR1=1;</b></p><p><b>  }</b></p><p&

37、gt;  /*********************</p><p><b>  主函數</b></p><p>  *********************/</p><p>  void main(void)</p><p><b>  {</b></p><p> 

38、 chushihua(); //系統初始化</p><p><b>  while(1)</b></p><p><b>  { }</b></p><p><b>  }</b></p><p>  /************************</p>&

39、lt;p><b>  定時器中斷子程序</b></p><p>  ************************/</p><p>  void Timer0_freq() interrupt 1 //頻率定時器 0 中斷</p><p><b>  {</b></p><p>  TR1

40、=1; //啟動定時器 1,占空比定時</p><p>  TL0=TIMER0_L;</p><p>  TH0=TIMER0_H;</p><p>  OUTPUT=1; //輸出高電平</p><p><b>  }</b></p><p>  void Timer1_zkb() inter

41、rupt 3 //占空比定時器 1 中斷</p><p><b>  {</b></p><p>  TR1=0; //定時器 1 停止</p><p>  TL1=TIMER1_L;</p><p>  TH1=TIMER1_H;</p><p>  OUTPUT=0; //輸出低電平</

42、p><p><b>  }</b></p><p>  /***********************</p><p><b>  鍵盤掃描子程序</b></p><p>  ***********************/</p><p>  void keyscan() i

43、nterrupt 0 using 1 //外部中斷 0</p><p>  {float TF0,TZ1;</p><p>  EX0=0; //關中斷</p><p>  delay(10); //延時消抖</p><p>  if(P1!=0x0f) //判斷是否有鍵按下</p><p><b>  {&

44、lt;/b></p><p>  if(KEY1==0) freq+=100; //按鍵為 1 號,頻率加 100</p><p>  if(KEY2==0) freq+=10; //按鍵為 2 號,頻率加 10</p><p>  if(freq>500) freq=50; //頻率大于 500Hz,重新賦值為 5</p><p&g

45、t;  if(KEY3==0) zkb+=10; //按鍵為 3 號,占空比加 10</p><p>  if(KEY4==0) zkb++; //按鍵為 4 號,占空比加 1</p><p>  if(zkb>100) zkb=1; //占空比大于 100,重新賦值為</p><p>  TF0=(65536-fosc/(12.0*freq));//頻率定時

46、初值</p><p>  TZ1=(65536-(fosc*zkb)/(12.0*100*freq)); //占空比定時</p><p>  TIMER0_H=(uint)TF0/256;</p><p>  TIMER0_L=(uint)TF0%256;</p><p>  TIMER1_H=(uint)TZ1/256;</p>

47、<p>  TIMER1_L=(uint)TZ1%256;</p><p><b>  }</b></p><p>  P1=0x0f; //給鍵盤掃描口賦初值</p><p>  EX0=1; //開中斷</p><p>  TR0=1; //定時器 1 和定時器 0 開始定時</p>&l

48、t;p><b>  TR1=1;}</b></p><p>  附錄2 基于單片機方波發(fā)生器的器件清單 </p><p>  9*15萬能板..............................................1個</p><p>  40P鎖緊座..................................

49、.............1個</p><p>  40P晶振座子.............................................1個</p><p>  自鎖開關................................................1個</p><p>  按鍵..........................

50、..........................5個</p><p>  25V10uf電解電容.........................................5個 </p><p>  30pf瓷片電容............................................5個</p><p>  3mmLED燈.......

51、.........................................15個</p><p>  40P單排排針.............................................5個</p><p>  40P單排排座............................................5個</p><p>  

52、10K9腳排阻.............................................5個</p><p>  方頭USB-B母...........................................2個</p><p>  10k電阻................................................4個</p>

53、<p>  AT89C52................................................1個 </p><p>  74LS21.................................................1個</p><p>  1uf電容........................................

溫馨提示

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

評論

0/150

提交評論