驱动继电器实验
?
? ? ? ? ? ? ? ? ? ? ? ?
?
?
?
?
?
?
學生實驗報告
?
?
?
?
?
?
?
課程名稱:單片機原理與應用?
專業班級:嵌入式14103班? __
姓??? 名:_趙存檔___________
學??? 號:14160310317??????
?
?
2015--2016? ??學年第 1 學期
?
?
? 實驗項目( 三 ) — 預習報告 | ||||
| 項目 名稱 | 驅動繼電器實驗 | |||
| 實驗 目的 及 要求 | 目的:學會本次實驗是如何進行實現的,以及對實驗原理的理解。 要求:認真完成本實驗的keil代碼的編寫,proteus電路仿真圖的設計。 小組內獨立完成實驗項目內容。 | |||
| 實驗 內容 及 原理 | ? 驅動繼電器的實驗: 實驗內容:先在proteus仿真軟件中畫好電路圖,然后在keil中編寫驅動繼電器的代碼。進行調試代碼是否正確,如果正確設置好晶振頻率,生成hex文件,加載到proteus 51單片機中去。 實驗原理:繼電器工作跟蜂鳴器類似,要加一個脈沖信號,輸出高電平讓繼電器激磁,輸出低電平讓繼電器消磁,最后加一個循環。For循環中,定義變量count 來讓繼電器運行多少次。 ?? ? | |||
| 預習過程中的疑問以及疑問? 解答 | ? ? 關于驅動繼電器的實驗: 疑問一:繼電器電路中,給繼電器并聯一個二極管是什么意思? 解答:防止直流繼電器斷開時產生的反電動勢對元件照成損壞,消耗反電動勢,續流的作用。 ? 疑問二:繼電器串聯一個電阻有啥作用? 解答:保護電路,防止二極管被擊穿。 ? 疑問三:讓繼電器激磁6s,消磁3s該怎么寫? 解答:void delay(int x){ int i,j; for(i=0;i<x;i++)for(j=0;j<1200;j++);}Void ? count(int count.int High,int Low){ int i; for(i=0;i<count,i++);{ ? relay=1;delay(300); Relay=0;delay(600);} ? 疑問四: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 ? Relay(int count,int High,int Low) ?????? ?{ ????????????? ?int i; ????????????? ?for(i=0;i<count;i++) ????????????? ?{ ???????????????????? ?relay = 1; ???????????????????? ?delay(High); ???????????????????? ?relay = 0; ???????????????????? ?delay(Low); ????????????? ?} ?????? ?} 延遲代碼: void ? delay(int x) ?????? ?{ ????????????? ?int i,j; ????????????? ?for(i=0;i<x;i++) ????????????? ?for(j=0;j<60;j++); ?????? ?} ????????????? | ? | ||
| 實驗結果(結論及 分析) | 通過實驗,知道怎么樣給單片機產生一個脈沖信號:一段高電平,一段低電平。 編寫代碼的時候,知道怎么寫一個延遲函數也就是for循環:先知道機器周期12MHZ的晶振是12*1/12=1us。X * 第2個for循環里面的數字約等于幾ms; Delay()函數里面填寫 X數字。 畫電路的時候注意一些要點:加不加電阻和二極管之類的。 編寫代碼的時候:延時函數的第一個for后面沒有分號的,不然會照成延時不對。 | ? | ||
| 成績 | ? ? ? ? | ? | ||
?
總結
- 上一篇: Shell脚本经典之Fork炸弹
- 下一篇: 恢复联想键盘F1-F12标准模式