單片機程序設計課程設計_第1頁
單片機程序設計課程設計_第2頁
單片機程序設計課程設計_第3頁
單片機程序設計課程設計_第4頁
單片機程序設計課程設計_第5頁
已閱讀5頁,還剩13頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、智能澆花裝置程序設計課程設計名稱:單片機程序設計基礎題 目:智能澆花裝置程序設計 學 期:2013-2014學年第二學期專 業: 測控技術與儀器 班 級: 測控11-1 姓 名: 學 號: 指導教師: 完成日期:2014年5月30日遼寧工程技術大學課 程 設 計 成 績 評 定 表學 期2013-2014(二)姓 名專 業測控技術與儀器班 級測控11-1課程名稱單片機程序設計基礎論文題目智能澆花裝置程序設計評 定 指 標評定指標分值得分知識創新性20理論正確性20內容難易性15結合實際性10知識掌握程度15書寫規范性10工作量10總成績100評語:任課教師時 間2014年 6月 8 日備 注課

2、 程 設 計 任 務 書一、設計題目智能澆花裝置系統程序設計二、設計任務設計在單片機為核心的前提下,完成對花盆的澆水,對水箱的補水以及低溫報警功能。通過使用繼電器,溫度傳感器,濕度傳感器等元件,編寫合適的驅動程序進行控制,完成裝置的全部功能。三、設計計劃本設計共1周。第1天:針對選題查資料,確定設計方案;第2天:方案分析比較,確定程序的邏輯順序,執行步驟;通過網上搜索,學習并理解部分芯片的程序操作。第3天:編寫主程序流程圖和軟件程序;第4天:對編寫程序進行語法和邏輯糾錯,并下載運行;第5天:編寫整理設計報告。四、設計要求 1、繪制軟件流程圖并利用C語言編寫軟件程序;2、形成設計報告。指 導 教

3、師: 教研室主任: 2014年 5月 26 日目錄1、系統程序功能及設計思路41.1系統主要功能41.2程序設計思路42、主程序及其他程序的設計62.1 主程序流程設計62.2 系統狀態檢測程序72.3 系統操控程序92.4 數據顯示程序113、調試143.1 程序邏輯檢查及語法校正143.2程序編譯及裝載144、總結155、設計體會16參考文獻171、系統程序功能及設計思路1.1 系統主要功能智能澆花裝置主要功能如下:1、檢測土壤濕度并自動澆水,通過電磁閥控制花盆內水量2、通過繼電器控制水泵進行自動補水功能。3、低溫報警。室溫低影響花卉生長,此時需要聲音提醒。4、人機交互顯示。使用LCD51

4、10液晶進行顯示。上述各個功能均有不同電路模塊進行控制,核心芯片為STC12C5A60S2,程序代碼兼容8051系列單片機。1.2 程序設計思路圖1 智能澆花裝置硬件工作原理智能澆花系統程序語言以C語言為主,根據設計所實現的不同功能,將系統程序分為主程序和驅動程序兩部分。其中,主程序的作用包含控制邏輯的實現、驅動程序的調用及配合、功能區分以及系統初始化。驅動程序主要為部分傳感器及芯片的通信協議、數據采集和處理程序、液晶顯示所用字庫以及單片機操作程序,由于驅動程序涉及硬件電路中的各個模塊,因此,驅動程序比較繁多,主要有LCD5110驅動、DS18b20通信協議、DHT11通信協議、繼電器控制程序

5、、水位檢測控制程序以及單片機中斷和AD轉換功能設定程序。主程序中包含4個子程序塊分別為系統初始化程序、系統全狀態檢測程序、系統操控程序和數據顯示程序。主要功能如下:1、系統初始化程序完成系統上電時,對部分芯片的初始設定、單片機定時器中斷功能的設定、液晶初始顯示內容以及相關標志位的賦值。2、全狀態檢測程序主要用于對空氣溫濕度、土壤濕度、水箱水位的檢測,當系統初次通電、復位以及其他可能用于檢測時,都會使用該程序或者首先執行該檢測程序,保證整個裝置在正常情況下工作以便完成相應的功能。3、系統操控程序主要是在采集到系統狀態參數后,針對不同情況執行不同的功能,命令部分硬件機構處理相應問題如土壤濕度低,會

6、命令繼電器吸合使電磁閥開始澆水等。4、數據顯示程序利用LCD5110液晶為使用者提供有關系統的檢測參數如土壤濕度,空氣溫濕度等,同時,在執行某些功能時,顯示提示信息,實時監控系統各參數的變化。驅動程序以.H文件形式存在于主函數之外,通過全局變量或者臨時標志位,互通信息,執行主函數的控制指令。驅動程序因芯片而不同,通信時序千差萬別,部分驅動程序以芯片數據手冊提供的C語言程序為主,無需自己編寫即可使用,但是,由于STC12C5A60S2單片機指令執行速度快于8051系列,因此,驅動程序中的通信時序要經過調試、驗證后才能真正在本系統程序中使用。2、主程序及其他程序的設計2.1 主程序流程設計圖2 系

7、統主程序流程圖系統主程序流程設計如圖2所示,程序詳細內容如下:/*/* 系統主程序 */*/void main()Init(); /系統初始化while(N) Stateful_Inspection(); / 系統狀態監測System_Control();/系統操控 Status_Display();/系統數據顯示與提醒 上述程序中,N的賦值操作在初始化程序內對DS18B20的忙信號檢測程序段中,當溫度傳感器未有信號應答時,N=0,將不執行while循環,而是在液晶上提示傳感器未接入系統,如果傳感器正常工作,N=1,執行while循環。2.2 系統狀態檢測程序圖3 狀態檢測程序流程圖上圖展示了

8、系統對自身狀態檢測的運行過程,其中,WaterLe_key1、 WaterLe_key2分別為高低水位檢測傳感器的使能標志位,當程序執行對水箱水位檢測的功能時,必須對二者賦值為1,若為0,則關閉傳感器無法獲取信號。檢測程序獲取到狀態信息后,不用直接去調用某些功能驅動程序,只需要將相應的標志位賦值即可,這樣,可使程序整體執行效率提高,編寫時容易發現錯誤。程序中所有條件判斷語句均使用ifelse,程序詳細內容如下:/* 系統全狀態檢測 */void Stateful_Inspection()if(SI)WaterLe_key1=1;WaterLe_key2=1;calculate_T(); /計算

9、溫度T_Value=TN; / 讀出溫度整數部分,為“溫度報警”做準備RH(); /計算濕度RH S_Value=1000-2*ADC_Result(0); /AD轉換輸出的是十進制整形數據,該公式用于直 /接計算濕度的百分比,計算所得數據需要除以10if(T_Value<=T_Alert)KW_view=1; /報警開啟else if(Water_level2=1)/檢查低水位傳感器信號,等于1 ,說明水箱無水,則上水Draw_water=1;else if(S_Value<=S_AlertL)/在溫度適宜,水箱有足夠水的情況下,檢測土壤干濕度Water_on=1; /小于最低濕

10、度則執行澆水操作,此處置標志位為1即開啟上述程序中:1、SI標志位用于實現程序不同情況下都可對系統的檢查,使該程序利用率提高,當遇到需要檢測的狀況時,直接調用并對標志位賦值,不用在重復編寫某些檢測程序。2、函數名為calculate_T、RH、ADC_Result的程序分別用于對空氣溫度、濕度和土壤濕度的數據采集與處理。3、標志位KW_view用于執行溫度報警, 標志位Draw_water用于水箱上水, 標志位Water_on用于花盆澆水。三者均置1,表示功能可執行。2.3 系統操控程序圖4 系統操控程序流程圖系統操控程序依賴單片機的定時器中斷功能而執行。使用定時器主要為了量化澆水或者上水動作

11、的執行時間,使其間隔一定時間執行一次。與前述程序相同,程序中使用標志位來調用相應的子函數。程序詳細內容如下:/* 系統操控 */void System_Control()if(KW_view)SI=0;WaterLe_key1=0;WaterLe_key2=0;ET0=0;ET1=0;TR0=0;TR1=0;Draw_water=0;Water_on=0;calculate_T(); /計算溫度T_Value=TN; / 讀出溫度整數部分,為“溫度報警”做準備if(T_Value>T_Alert)KW_view=0;/溫度達到后停止報警與顯示提醒,并重新進行系統狀態監測SI=1; if(

12、Draw_water)/上水Draw_water=0;DW_view=1;SI=0;t1=0;TR1=1;/開啟定時器1ET1=1;/開啟定時器1中斷WaterLe_key1=1;WaterLe_key2=1;if(Water_on) /澆水Water_on=0;WO_view=1;WaterLe_key2=1;SI=0;t0=0;TR0=1;/開啟定時器0ET0=1;/開啟定時器0中斷2.4 數據顯示程序圖5 數據顯示程序流程圖在經過檢測程序對相關標志位賦值后,數據顯示程序執行時通過判斷標志位是否為1,來進一步執行相應的子程序。當所有標志位為0時,液晶正常顯示即沒有任何有關警告或提示的內容顯

13、示出來。程序詳細內容如下:/* 系統檢測數據全顯示 */void Status_Display()if(KW_view=0)&&(DW_view=0)&&(WO_view=0)Draw_water=0;Display_Scan();Display_T(); /此處顯示溫度Display_RH();/此處顯示空氣濕度Display_soilRH(1000-2*ADC_Result(0);/此處顯示土壤濕度if(KW_view)Keep_Warm();/低溫提示:請注意保溫beep(); /聲音提示delay1ms(100);beep();delay1ms(100)

14、;if(DW_view)Clear5110();Display5110(5,2,chinese3,14,2,25); / 正 Display5110(19,2,chinese3,14,2,26);/在Display5110(33,2,chinese3,14,2,29);/上Display5110(47,2,chinese3,14,2,28);/水delay1ms(100);if(WO_view)Clear5110();Display5110(4,2,chinese3,14,2,25);/正Display5110(18,2,chinese3,14,2,26); /在Display5110(32,

15、2,chinese3,14,2,27);/澆Display5110(46,2,chinese3,14,2,28);/水 Display_soilRH(1000-2*ADC_Result(0);/澆水過程繼續顯示土壤濕度,實時監測濕度變化3、調試3.1 程序邏輯檢查及語法校正根據系統不同功能和實際的操作過程,分析各程序塊中的語句的前后搭配和邏輯判斷條件是否合理,由于實際環境以及硬件執行機構的限制,需要人為地將部分程序分出優先級,分步分時執行相應的功能,避免程序執行過程中,邏輯混亂,操作失誤,便于以后對部分程序的修改。除此而外,還需要對C語言的語法進行檢查,在本程序設計中,主要有if.else,w

16、hile循環,中斷服務程序和指針等相關語句,編寫時尤為注意。3.2程序編譯及裝載當程序邏輯順序和語法檢查無誤后,開始對程序進行編譯與裝載。在調試過程中,需要結合硬件的執行情況對程序中不妥之處進行更正,也可以注釋掉部分程序,僅執行未注釋的程序,逐個觀察并修改相應功能的子程序語句。當所有程序執行的功能均符合設計需要時,程序設計工作基本完成。4、總結經過對程序整體思路的把握,合理安排各功能程序邏輯關系和順序,編寫正確的語句進行控制,通過軟件編譯糾錯和硬件調試修改,基本完成了設計要求的有關功能,修改、更正了錯誤的程序邏輯和語法錯誤。通過實際的調試和觀察,本次智能澆花裝置系統程序圓滿完成。5、設計體會通

17、過設計智能澆花裝置的程序,我學會了運用KEIL C軟件編輯單片機程序工程以及利用軟件進行程序調試。另外,鞏固了曾經學過的C語言知識,并且在實際應用中總結了不少經驗和教訓,使我對C語言的編譯有了更新的認識,提高了我對C語言程序的應用能力,同時,也掌握了不少有關數據處理方面的程序算法如平均值濾波法。編寫設計程序時,不僅需要創新的思路和靈感,還需要細心認真的態度,在本次設計過程中,出現了很多因一時疏忽導致的語法或者邏輯錯誤,致使硬件調試時系統工作不正常甚至損壞部分機構。因此,程序的編輯不僅要求我們掌握熟練的C語言應用技能,還要戒驕戒躁,仔細排除編寫過程中的細小錯誤,這樣,在后續的調試過程中,提高工作效率,避免不必要的危險發生。對程序進行設計應當特別注意使用者的習慣操作,以及實際可能發生的錯誤操作,提高程序功能的執行人性化,合理化。程序編輯的合情合理有時可以保護硬件機構或電路板免受沖擊和破壞,這使得系統整體的安全性能增強,實用性大幅提高。參考文獻1 譚浩強. C語言程序設計基礎M. 清華大學出版社, 2004.2 王選民. 智能儀器原理及設計M. 清華大學出版社, 2008.3 張毅剛. 單片機原理及應用M. 高等教育出版社, 2002.4 何利民. 單片機應用技術選

溫馨提示

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

評論

0/150

提交評論