版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
單片機課程設計題目基于51單片機的溫度控制系統(tǒng)設計學院工學院專業(yè)2012級農(nóng)業(yè)電氣化與自動化學號2012094055姓名張盼指導教師高曉陽楊梅二零一五年七月二十三日目錄TOC\o"1-2"\h\u8312摘要 程序設計4.1各部分程序設計及其子程序流程圖系統(tǒng)程序主要包括主程序,讀出溫度子程序,溫度轉(zhuǎn)換命令子程序,計算溫度子程序,報警子程序和顯示數(shù)據(jù)刷新子程序等。主程序:主程序的主要功能是負責溫度的實時顯示,讀出并處理DS18B20的測量溫度值。溫度測量每5s進行一次。主程序流程圖如圖4.1所示。圖4-1主程序流程圖讀出溫度子程序:讀出溫度子程的主要功能是讀出RAM中的9字節(jié)。在讀出時須進行CRC校驗,校驗有錯時不能進行溫度數(shù)據(jù)的改寫。讀出溫度子程序流程圖如圖4.2所示。圖4-2溫度子程序流程圖溫度轉(zhuǎn)換命令子程序:溫度轉(zhuǎn)換命令子程序主要是發(fā)溫度轉(zhuǎn)換開始命令。當采用12位分辨率時,轉(zhuǎn)換時間約為750ms。在本程序設計中,采用5s顯示程序延時法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖4.3所示。圖4-3溫度轉(zhuǎn)換子程序流程圖計算溫度子程序:計算溫度子程序?qū)AM中讀取的值進行十進制的轉(zhuǎn)換運算,并進行溫度值正負的判斷。其流程圖如圖4.4所示。圖4-4計算溫度子程序流程圖顯示數(shù)據(jù)刷新子程序:顯示數(shù)據(jù)刷新子程序主要是對顯示緩沖器中的顯示數(shù)據(jù)進行刷新操作,當最高數(shù)據(jù)顯示位為0時,將符號顯示位移入下一位。顯示數(shù)據(jù)刷新子程序流程圖如圖4.5所示。圖4-5顯示數(shù)據(jù)刷新子程序流程圖4.2溫度采集DS18B20部分程序設計分析由于DS18B20單線通信功能是分時完成的,它有嚴格的時隙概念,因此讀寫時序很重要。系統(tǒng)對DS18B20的一般操作過程為:初始化DS18B20(發(fā)復位脈沖)→發(fā)ROM功能命令→發(fā)存儲器操作命令→處理數(shù)據(jù)。=1\*GB3①初始化:單片機將數(shù)據(jù)線拉低480-960us后釋放,等待15-60us,單總線器件即可輸出一個持續(xù)時間為60-240us的低電平(應答信號),單片機收到此應答后即可進行后續(xù)操作;=2\*GB3②寫時序:當主機將數(shù)據(jù)線的電平從高拉到低時,形成寫時序,有寫0和寫1兩種時序。寫時序開始后,DS18B20在15-60us期間從數(shù)據(jù)線上采樣,如果采樣到低電平,則向DS18B20寫0,否則寫1,兩個獨立的時序之間至少需要1us的回復時間按(拉高總線電平);=3\*GB3③讀時序:當主機從DS18B20讀取數(shù)據(jù)時,產(chǎn)生讀時序,此時,主機將數(shù)據(jù)線的電平從高拉到低使讀時序被初始化。如果此后5s內(nèi),主機在總線上采樣到低電平,則從DS18B20讀0,否則讀1。5總結(jié)這次為期兩周的單片機課程設計讓我學到很多東西。首先,我們的課題難度較大,涉及的某些內(nèi)容是我們從來沒有學習過的,比如:單總線傳輸(使用DS18B20)、使用Proteus仿真。這就要求我們自己去收集資料,并且獨立自主地學習。經(jīng)過此次課程設計,我收獲很多,在原來了解相關的單片機理論知識的基礎上,通過自己的動手實踐,理論與實踐的結(jié)合使得對知識的理解更加深刻,并且慢慢學會培養(yǎng)自己的創(chuàng)新精神,感覺很有成就感,但同時我又了解到自己在單片機方面還有很多不足,尤其是單片機指令系統(tǒng)及AT89C51各引腳的第二功能等等知識不夠了解,因此在設計中遇到了很多不懂的知識,我會主動地查資料或請教老師和同學,而這些問題也漸漸得到解決。從查資料找合適的方案和電路開始,到編寫并調(diào)試程序,Proteus仿真,都是由我們自己完成。途中遇到了很多問題,比如:修改程序使之符合自己的電路并調(diào)試成功等。每一步都有可能出現(xiàn)問題,我們所做的就是迎接問題,改正錯誤,使自己的作品更加完善。在做單片機課程設計的過程中,我對單片機的工作原理有了更深一步的體會,在編程時自學了DS18B20的工作原理,學習使用Keil與Proteus軟件并進行聯(lián)合仿真,復習了LCD液晶數(shù)碼管動態(tài)顯示和二進制轉(zhuǎn)換為十進制的程序設計。在找資料的過程中,我接觸到一個精彩紛呈的單片機世界,這激發(fā)了我對單片機的學習熱情,也為我以后的學習生活指明了奮斗目標和方向。在今后的學習生活中,我會記住在實驗過程中的經(jīng)驗教訓,爭取獲得更大的進步。實驗過程中,使我更加扎實的掌握了有關單片機的基礎知識,在設計過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經(jīng)驗不足。實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。過而能改,善莫大焉。在課程設計過程中,我不斷發(fā)現(xiàn)錯誤,不斷改正,不斷領悟,不斷獲取。最終的調(diào)試運行環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設計終于順利完成了,在設計中遇到了很多問題,最后在老師的指導下,終于迎刃而解。此次設計也讓我明白有什么不懂不明白的地方要及時請教老師和同學或上網(wǎng)查詢,只要認真鉆研,動腦思考,動手實踐,就沒有弄不懂的知識,收獲就多。在今后社會的發(fā)展和學習實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠不可能收獲成功,收獲喜悅,也永遠不可能得到社會及他人對你的認可!參考文獻[1]謝自美.電子線路設計.實驗.測試[M].武漢:華中科技大學出版,2000.[2]郁有文等.傳感器原理及工程應用[M].西安:西安電子科技大學出版社,2003.[3]何立民等.單片機實驗與實踐教程[M].北京:北京航空航天大學出版社,2004.[4]松井邦彥.傳感器實用電路設計與制作[M].北京:科學出版社,2005.[5]彭介華.電子技術課程設計指導[M].北京:高等教育出版社,2005.[6]李全利,仲偉峰,徐軍著.單片機原理及應用.北京:清華大學社,2006.[7]華成英,童詩白.模擬電子技術基礎(第四版)[M].北京:高等教育出版社,2006.[8]康華光.電子技術基礎數(shù)字部分(第五版)[M].北京:高等教育出版社,2006.[9]鐘富昭著.8051單片機典型模塊設計與應用.北京:人民郵電出版,2007.[10]張一斌等.單片機課程設計指導[M].長沙:中南大學出版社,2009.[11]張毅剛,彭喜元,彭宇.單片機原理及應用.高等教育出版社,2011.附錄一程序設計#include<reg51.h>#defineucharunsignedchar#defineuintunsignedintsbitDQ=P3^2;//ds18b20與單片機連接口sbitRS=P1^0;RS定義為p1.0接口sbitRW=P1^1;RW定義為p1.1接口sbitEN=P1^2;EN定義為p1.2接口sbitPSB=P1^6;sbitzeng=P3^4;加鍵輸入定義為p3.4sbitjian=P3^5;減鍵輸入定義為p3.5sbitbeep=P1^5;蜂鳴器輸出接口定義為p1.6sbithigh=P2^7;sbitlow=P2^6;sbitjiare=P2^5;sbitJDQ=P1^4;繼電器輸出定義為端口p1.4unsignedcharcodestr1[]={"Temperature:"};unsignedcharcodestr2[]={""};bitflag;uchardatadisdata[5];uinttvalue;//溫度值uchartflag;//溫度正負標志uintsetvalue;//設置溫度/*************************lcd1602程序**************************/voiddelay1ms(unsignedintms)定義延時{unsignedinti,j;for(i=0;i<ms;i++)ms=1s時循環(huán)100次for(j=0;j<100;j++);}voidwr_com(unsignedcharcom)//寫指令//{delay1ms(1);RS=0;RS復位RW=0;RW復位EN=0;使能端低電平P0=com;定義變量delay1ms(1);延時1msEN=1;使能端干電平delay1ms(1);延時1msEN=0;使能端低電平}voidwr_dat(unsignedchardat)//寫數(shù)據(jù)//{RS=1;RS置位RW=0;RW復位EN=0;使能端為低電平P0=dat;定義數(shù)據(jù)變量delay1ms(1);延時1msEN=1;使能端為高電平delay1ms(1);延時1msEN=0;使能端為低電平}voidlcd_init()//初始化設置//{delay1ms(15);延時15mswr_com(0x38);delay1ms(5);//設置液晶工作模式,意思:16*2行顯示,5*7點陣,8位數(shù)據(jù)wr_com(0x08);delay1ms(5);wr_com(0x01);delay1ms(5);//清顯示wr_com(0x06);delay1ms(5);;//整屏不移動,光標自動右移wr_com(0x0c);delay1ms(5);//開顯示不顯示光標}voiddisplay(unsignedchar*p)//顯示//{while(*p!='\0')表示顯示內(nèi)容不為空時執(zhí)行循環(huán)體代碼段或者理解成判斷顯示內(nèi)容是否到達結(jié)尾了。{wr_dat(*p);p++;delay1ms(1);}}init_play()//初始化顯示{lcd_init();wr_com(0x80); display(str1); wr_com(0xc0); display(str2);}/*********************ds18b20程序***********************/voiddelay_18B20(unsignedinti){ while(i--);}voidds1820rst()/*ds18b20復位*/{unsignedcharx=0; DQ=1;//DQ復位 delay_18B20(4);//延時 DQ=0;//DQ拉低 delay_18B20(100);//精確延時大于480us DQ=1;//拉高 delay_18B20(40); }uchards1820rd()/*讀數(shù)據(jù)*/{unsignedchari=0; unsignedchardat=0; for(i=8;i>0;i--) {DQ=0;//給脈沖信號 dat>>=1; DQ=1;//給脈沖信號 if(DQ) dat|=0x80; delay_18B20(10); } return(dat);}voidds1820wr(ucharwdata)/*寫數(shù)據(jù)*/{unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=wdata&0x01;delay_18B20(10);DQ=1;wdata>>=1;}}voidkey_trans()interrupt2{flag=1;}read_temp()/*讀取溫度值并轉(zhuǎn)換*/{uchara,b;ds1820rst();ds1820wr(0xcc);//*跳過讀序列號*/ds1820wr(0x44);//*啟動溫度轉(zhuǎn)換*/ds1820rst();ds1820wr(0xcc);//*跳過讀序列號*/ds1820wr(0xbe);//*讀取溫度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue|a;if(tvalue>0x0&&tvalue<0x032){tflag=0;}tvalue=tvalue*(0.625);//溫度值擴大10倍,精確到1位小數(shù)return(tvalue);}voidds1820disp(uintvalue)//溫度值顯示 {ucharflagdat; disdata[0]=value/1000+0x30;//百位數(shù)disdata[1]=value%1000/100+0x30;//十位數(shù)disdata[2]=value%100/10+0x30;//個位數(shù)disdata[3]=value%10+0x30;//小數(shù)位if(tflag==0) flagdat=0x20;//正溫度不顯示符號elseflagdat=0x2d;//負溫度顯示負號if(disdata[0]==0x30) {disdata[0]=0x20;//如果百位為0,不顯示 if(disdata[1]==0x30) {disdata[1]=0x20;//如果百位為0,十位為0也不顯示 } }wr_com(0xc0); wr_dat(flagdat);//顯示符號位 wr_com(0xc1); wr_dat(disdata[0]);//顯示百位 wr_com(0xc2); wr_dat(disdata[1]);//顯示十位 wr_com(0xc3); wr_dat(disdata[2]);//顯示個位 wr_com(0xc4); wr_dat(0x2e);//顯示小數(shù)點 wr_com(0xc5); wr_dat(disdata[3]);//顯示小數(shù)位}/*************************beep*******************************/voidbeeper(){chari;beep=1;for(i=0;i<10;i++){beep=!beep;delay1ms(100);}}/******************************T0interrupt******************/T0_int()interrupt1{read_temp();//讀取溫度TH0=(65536-50000)/256;TL0=(65536-50000)%256;}/********************主程序***********************************/voidmain(){zeng=1;增1jian=1;減一low=1;低1high=1;高1jiare=1;加熱以1為單位JDQ=1;繼電器動作1setvalue=25;IP=0x04;IE=0x84;TMOD=0x01;TH0=(65536-1000)/256;TL0=(65536-1000)%256;ET0=1;TR0=1;setvalue=setvalue*10;init_play();//初始化顯示
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年高職(工業(yè)分析技術)食品成分檢驗綜合測試試題及答案
- 2025年大學通識選修(藝術鑒賞)試題及答案
- 2025年高職建筑工程技術(模板支護工藝)試題及答案
- 2025年高職航空裝備類(航空裝備基礎)試題及答案
- 2025年高職水路運輸與海事管理(海事管理實務)試題及答案
- 2025 小學四年級思想品德下冊公共場合優(yōu)化禮儀學習效果反饋課件
- 養(yǎng)老院老人心理健康制度
- 養(yǎng)老院康復設備管理制度
- 2026年學生檔案管理崗位面試指南含答案
- 2026年鄉(xiāng)村醫(yī)生信息化小測含答案
- 減速機知識培訓資料課件
- 冷庫消防安全培訓課件
- 普陀區(qū)一模高三數(shù)學試卷
- 光熱儲能電站發(fā)電項目項目管理各階段主要任務
- 2026年中考語文復習:非連續(xù)性文本閱讀 中考真題練習題匯編(含答案解析)
- 醫(yī)療工作者榜樣學習心得體會
- 部隊安全駕駛課件
- 裝修裝飾工程成品保護方案
- 鄉(xiāng)土地理教學
- 房產(chǎn)代持委托協(xié)議書
評論
0/150
提交評論