單片機開發課程設計
一、設計目的1、熟悉單片機開發試驗儀的工作原理.
2、掌握C51語言編程方法。
3、熟悉超聲波測距模塊工作原理。
4、熟悉LCD顯示屏使用方法。
5、熟悉超聲波傳感器、蜂鳴器的原理及使用方法。
2、設計思路1、整體設計思路
圖1 整體設計思路圖(見51hei附件)
2、模塊設計思路1、編寫LCD1602驅動模塊相關程序思路;
在LCD1602程序中,要寫入寫、讀、顯示數據函數模塊。
1、寫數據模塊:
圖2 數據傳輸圖
2、讀數據模塊:
圖3 數據傳輸圖
3、顯示模塊:
圖4 顯示原理圖
3、編寫蜂鳴器驅動模塊相關程序思路;用P1^5口接入蜂鳴器,設計兩個不同頻率的延時模塊。
當距離不同時,分別調用不同頻率的蜂鳴器驅動函數。
4、編寫超聲波傳感器測距模塊相關程序思路。高電平持續時間為超聲波發出到返回接收到一個往返的時間。

圖5 超聲波時序圖
三、設計過程1、總體設計方案1、超聲波測距傳感器的使用:
控制口發一個 10US 以上的高電平,就可以在接收口等待高電平輸出.一有輸出就可以開定時器計時,當此口變為低電平時就可以讀定時器的值,此時就為此次測距的時間,方可算出距離.如此不斷的周期測,就可以達到你移動測量的值了。

圖6超聲波傳感器實物圖
如上實物圖示,超聲波傳感器有4個引腳,VCC電源端、GND接地端、TRIG發送端、ECHO接收端。
超聲波傳感器采用IO觸發測距,trig端發出超聲波,模塊自動發送8個40Khz的方波,自動檢測是否有信號返回,到echo端接收到超聲波,在此過程中一直持續高電平信號,高點平的持續時間就是超聲波從發出到接收到這一過程的時間。
測試距離=(高電平時間*聲速(340m/s))/2
2、模塊電路1、超聲波測距模塊工作原理(程序見附件):
(1)采用 IO 觸發測距,給至少 10us 的高電平信號;
(2)模塊自動發送 8 個 40khz 的方波,自動檢測是否有信號返回;
(3)有信號返回,通過 IO 輸出一高電平,高電平持續的時間就是超聲波從發射到返回的時間.測試距離=(高電平時間*聲速(340M/S))/2;
最遠探測距離調節
圖7 超聲波模塊圖
上圖標志電阻即 R3,可以調節最大探測距離。R3 電阻為 392,探測距離最大 4.5M 左右,探測角度小于15度;R3電阻為472,探測距離最大7M 左右,盲區在2CM左右,探測角度小于30度;出廠默認392,即最大探測距離4.5M左右。R3電阻大,接收部分增益高,檢測距離大,但檢測角度會相應變大,容易檢測到前方旁邊的物體。當然,客戶在不要求很高的測試距離的條件下,可以改小R3來減小探測角度,這時最大測距會減小。超聲波模塊測距接口: 圖8 超聲波模塊測距接口圖
字符的顯示 :
用LCD顯示一個字符時比較復雜,因為一個字符由6×8或8×8點陣組成,既要找到和顯示屏幕上某幾個位置對應的顯示RAM區的8字節,還要使每字節的不同位為“1”,其它的為“0”,為“1”的點亮,為“0”的不亮。這樣一來就組成某個字符。但由于內帶字符發生器的控制器來說,顯示字符就比較簡單了,可以讓控制器工作在文本方式,根據在LCD上開始顯示的行列號及每行的列數找出顯示RAM對應的地址,設立光標,在此送上該字符對應的代碼即可。

圖9 LCD1602模塊接口電路圖

圖10 蜂鳴器模塊接口電路圖
蜂鳴器的BZ接到單片機的P1^5口上,當接收到低電平是低電平是,蜂鳴器報警,當是高電平蜂鳴器不響應。
四、系統調試與結果程序調試:
在Keil-uVision4軟件中對程序進行編譯,如下圖所示,在調試的過程中,蜂鳴器在不同的測試距離下應該發出不同頻率的報警聲。期初,我未能透徹理解蜂鳴器發聲原理,所以在寫蜂鳴器報警程序時,遇到了很多問題,很長時間都不能發出不同頻率的聲音。最后經過查看資料、研究它的發聲原理,

圖11 程序調試顯示圖
功能調試:
(1)當超聲波測距傳感器此時與物體距離為0.13m,當超聲波測距傳感器與物體距離小于10時,蜂鳴器報警會發出滴---滴---滴---的聲音。

圖12 功能調試圖
(2)當超聲波測距傳感器與物體距離為0.13,當超聲波測距傳感器與物體距離在10~30cm之間時,蜂鳴器報警會發出滴滴滴滴滴滴的聲音。

圖13 功能調試圖
(3)當物體與超聲波傳感器的距離超過30cm時,不發生報警。

圖14 功能調試圖
五、主要元器件與設備開發平臺:X86-PC windows開發工具:Keil uVersion4
目標平臺:STC89C52RC 單片機
主要元器件:
單片機開發試驗儀:
板載硬件:STC89C52RC、DS1302、LED 數碼管、蜂鳴器、LCD1602、8*8 LED 矩陣、矩陣鍵盤、獨立按鍵、74LS138 等;
超聲波測距傳感器
六、課程設計體會與建議6.1、設計體會 通過這四天的課程設計學習,不僅加強了我的學習理論的能力,而且也增強了我的動手寫程序,也讓我更深一步的認識了單片機,當然,遇到問題是在所難免的,有了問題才有進步的空間,也只有發現問題,才知道自己的水平是怎樣的,才會讓自己沉下心去認真分析與反思,細心總結,在學習中進步。
在項目中,我們要編寫代碼,進行功能的測試。在寫程序時,老師帶著我們寫了主要的部分,讓我們做擴展功能,在寫的時后我犯了不少錯誤。C語言語法運用的不夠熟練,會犯很基礎的低級錯誤。
總之,在經歷了這次課程設計工作之后,讓我明白,不管遇到什么問題都要認證分析,堅持嘗試,不斷的努力去此外,對于問題要認真分析,仔細考慮有關的方方面面,才能解決問題。更要多去練習,相信孰能生巧。
6.2、設計建議我還是比較喜歡課程設計這一教學模式,因為這不僅是一個課程設計,在做一個實際的項目中所面臨的問題遠超于課本。
在這次單片機課程設計讓我學到了很多東西,認識到了動手寫程序的重要性,希望學校可以安排多次這樣的課程設計,多讓我們做一些有意義的設計,希望老師也能多發一些這樣的課題讓我們一起討論、學習和設計。
七、參考文獻[1] 康華光. 電子技術基礎. 北京:高等教育出版社,1999年;
[2] 彭華林等編. 數字電子技術. 長沙:湖南大學出版社,2004年;
[3] 金唯香等編. 電子測試技術. 長沙:湖南大學出版社,2004年;
[4] 侯建軍. 數字電路實驗一體化教程. 北京:清華大學出版社,北京交通大學出版社,2005年;
[5] 閻石. 數字電子技術基礎. 北京:高等教育出版社,2001年;
[6] 趙春華、張學軍.電子技術基礎仿真實驗. 北京:機械工業出版社出版社,2007年;
設計程序代碼:
main.c程序:
完整的Word格式文檔51黑下載地址(含源碼):
超聲測距.doc
(2.41 MB, 下載次數: 27)
2018-3-12 19:52 上傳
點擊文件名下載附件
超聲測距