學生實驗報告
課程名稱:單片機原理與應用
專業班級:嵌入式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后面沒有分號的,不然會照成延時不對。 |
|
||
成績 |
|
|