驅動蜂鳴器的實驗


 

                       

 

 

 

 

 

 

學生實驗報告

 

 

 

 

 

 

 

課程名稱:單片機原理與應用 

專業班級:嵌入式14103班  __

姓    名:_趙存檔___________

學    號:14160310317      

 

 

2015--2016    學年第 1 學期

 

 


 

實驗項目( 二 ) — 預習報告

項目

名稱

驅動蜂鳴器實驗

實驗

目的

要求

目的:學會本次實驗是如何進行實現的,以及對實驗原理的理解。

要求:認真完成本實驗的keil代碼的編寫,proteus電路仿真圖的設計。 小組內獨立完成實驗項目內容。

實驗

內容

原理

驅動蜂鳴器的實驗:

實驗內容:先在proteus仿真軟件中畫好電路圖,然后在keil中編寫驅動蜂鳴器的代碼。進行調試代碼是否正確,如果正確設置好晶振頻率,生成hex文件,加載到proteus 51單片機中去。

實驗原理:

讓蜂鳴器發出聲音,需要給蜂鳴器一個脈沖信號。51單片機沒有輸出脈沖信號的引腳,就要自己編寫一個脈沖信號的代碼。即:先給蜂鳴器一段高電平,然后延長一段時間,給一段低電平,然后延長一段時間。最后加一個循環。

      

預習過程中的疑問以及疑問  解答

 

 

關於驅動蜂鳴器的實驗:

疑問一:怎么樣讓單片機產生一個脈沖信號給蜂鳴器?

解答:定義一個引腳,定義一段時間為高電平,定義一段時間為低電平,然后可以加一個循環。

 

疑問二:使蜂鳴器發生函數是怎么寫的?

解答:for循環里面加脈沖,即:for(i=0;i<count;i++){   buzzer=1;delay(High);buzzer=0;

Delay(Low)};

 

疑問三:void pulse_BZ(int,int,int)是什么意思?

解答:定義蜂鳴器發聲的函數,第一個括號里面的int表示傳參,第一個int 表示

Count發聲的次數,第二個int表示高電平,第三個int表示低電平。

 

疑問四:delay延時函數是怎么計算的?

解答:void delay(int x){ int i,j; for(i=0;i<x;i++)for(j=0;j<1200;j++);}   這里12MHZ的晶振,一個機器周期12*1/12=1us,一個for循環8us,這里8*1200約等於10ms

總的延時 x*10ms

 

實驗項目( 二 ) — 實驗報告

 

項目

名稱

驅動蜂鳴器實驗

指導教師

高照玲

 

實驗室

教室

實驗日期

2015/10/14

 

分組

情況

趙存檔、

成    績

 

 

實驗步驟(算法、代碼、方法)給出流程圖

驅動蜂鳴器的實驗:

流程圖:

    

主要實現代碼:

延遲函數:

void   delay(int x)

   {    int i,j;

               for(i=0;i<x;i++)

               for(j=0;j<60;j++); }

蜂鳴器發聲函數:  

void   Buzzer(int count,int High,int Low)

{  int i;

              for(i=0;i<count;i++)

               {  buzzer = 1;

                      delay(High);

                      buzzer = 0;

                      delay(Low);}

}

 

 

實驗結果(結論及

分析)

通過實驗,知道怎么樣給單片機產生一個脈沖信號:一段高電平,一段低電平。

編寫代碼的時候,知道怎么寫一個延遲函數也就是for循環:先知道機器周期12MHZ的晶振是12*1/12=1us。X * 第2個for循環里面的數字約等於幾ms;

Delay()函數里面填寫 X數字。

畫電路的時候注意一些要點:加不加電阻和二極管之類的。

編寫代碼的時候:延時函數的第一個for后面沒有分號的,不然會照成延時不對。

 

成績

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM