




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、單片機課程設計報告題目: 數字溫度計院 (系) 工學院 專 業 電子信息工程 年 級 10-2 姓 名 宋玉 學 號 10043206 指導教師 舒昌 2013年 12 月 6 日 電子信息工程專業10級學生單片機原理課程設計任務書課程設計題目三、數字溫度計指導教師舒昌職稱講師設計任務和要求:1 基本要求(1) 采用DS18B20作為溫度傳感器進行溫度檢測(2) 對采集溫度進行顯示(顯示溫度分辨率0.1)(3) 采集溫度數值應采用數字濾波措施,保證顯示數據穩定(4) 顯示數據,無數據位必須消隱。2.設計步驟(1) 使用Proteus按設計要求繪制電路圖。(2) 按要求編寫相應程序。(3) 使用
2、Proteus仿真程序,對程序進行調試。(4) 撰寫課程設計報告3撰寫課程設計報告課程設計報告內容包括題目、摘要、目錄、正文、結論、致謝、參考文獻等。學生在完成上述全部工作之后,應將全部內容以先后順序寫成設計報告一份,闡述整個設計內容,要求重點突出、特色鮮明、語言簡練、文字通暢,字跡工整。報告書以A4紙打印,裝訂成冊(文字不少于3000 字)。數字溫度計摘要:隨著信息化的高速發展,單片機作為一種最經典的微控制器,已普及到我們生活中的各個領域,本次課程設計介紹一種基于單片機的智能數字溫度計,具有讀數方便,測溫范圍廣,測溫精確,數字顯示,適用范圍寬,性價比很高等特點。它的主要元件是:控制器AT89
3、C2051、溫度傳感器DS18B20、數碼管LED。主要原理是利用DS18B20可以很好的轉換溫度值,并且直接顯示溫度值,它的性能優于傳統的感溫元件并且省去了AD、和模擬開關的設計。AT89C2051體積小并且還可以直接驅動LED,這樣大大化簡了設計的難度并且降低了成本。一、設計任務、要求及目的1.設計任務(1)焊制單片機最小系統,以其為核心,設計并制作一個數字式溫度計。(2)使用Proteus按設計要求繪制電路圖。(3)按要求編寫相應程序。(4)使用Proteus仿真程序,對程序進行調試。(5)撰寫課程設計報告。 2.基本要求(1)采用DS18B20作為溫度傳感器進行溫度檢測。(2)對采集溫
4、度進行顯示(顯示溫度分辨率0.1)。(3)采集溫度數值應采用數字濾波措施,保證顯示數據穩定。(4)顯示數據,無數據位必須消隱。 3.設計目的(1)加強學生理論聯系實際的能力,提高學生的動手能力。(2)學會基本電子元器件的識別和檢測。(3)學會應用EDA軟件Proteus進行電路的設計和仿真。(4)基本掌握單片機的基本原理,并能將其應用于系統的設計。(5)通過實訓,提高學生的學習興趣,激發自主學習能力,培養創新意識。二、設計思路1.設計原理:本次課程設計是基于單片機的數字溫度計設計,在開始課程設計的時候我們要理解并掌握對單片機的開發,學會使用KEIL及Proteus等仿真軟件。根據設計任務要求選
5、擇好器件,編寫好程序運行成功之后進行軟件聯調,驗證系統是否正確。通過篩選,我們組選用單片機AT89S52作為主控制系統;用1602液晶顯示模塊芯片作為溫度數據顯示裝置;智能溫度傳感器采用DS18B20器件作為測溫電路主要組成部分。2.設計方案及其總體設計框圖(1)溫度計設計系統流程圖程序設計流程圖如圖1所示。開始進入緩沖區初始化復位DS18B20發跳過ROM命令溫度轉換命令 延時復位DS18B20,跳過ROM命令讀存儲器命令讀溫度命令將溫度轉換為BCD碼更新數據緩沖區圖1 設計流程圖(2)設計方案圖1602顯示器單片機芯片 AT89S52 晶振控制溫度檢測電路 DS18B20圖2設計方案圖三、
6、數字溫度計應用系統的硬件設計1元器件的選取(1)選用AT89S52型號單片機進行操作 AT89S52是一個低功耗,高性能CMOS 8位單片機,片內含8k Bytes ISP的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS -51指令系統及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S52可為許多嵌入式控制應用系統提供高性價比的解決方案。 AT89S52具有如下特點:40個引腳,8k Bytes Flash片內程序存儲器,256 byte
7、s的隨機存取數據存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優先級2層中斷嵌套中斷,2個16位可編程定時計數器,2個 全雙工串行通口,此外,AT89S52設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式。空閑模式下,CPU暫停工作,而RAM定時計數器,串行口,外中斷 系統可繼續工作,掉電模式凍結振蕩器而保存RAM的數據,停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有PDIP、TQFP和PLCC等三 種封裝形式,以適應不同產品的需求。圖3 AT89S52引腳圖18(2)DS18B20能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現9-12位的數字值讀
8、數方式。性能特點如下:1.獨特的單線接口僅需要一個端口引腳進行通信,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。2.DS18B20支持多點組網功能,多個DS18B20可以并聯在惟一的三線上,實現多點組網測溫;3.無須外部器件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內;4.可通過數據線供電,電壓范圍為3.0-5.5;5.零待機功耗;6.溫度以9或12位數字,對應的分辨溫度分別為0.5、0.25、0.125和0.0625,可實現高精度測溫;7.用戶可定義報警設置;8.報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;9.負電壓
9、特性,電源極性接反時,不會因發熱而燒毀,但不能正常工作;10.測量結果直接輸出數字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力DS18B20采用3腳PR35封裝或8腳SOIC封裝,其引腳排列及內部結構框圖圖4 內部結構框圖(3)1602液晶顯示屏1602液晶顯示流程圖如圖5所示:調用子程序設置第二行顯示位置與內容調用子程序設置第一行顯示位置與內容延時初始化1602開始 圖5液晶顯示流程圖2.單片機小系統的基本組成及硬件圖圖6單片機小系統的基本組成及硬件圖3.外圍電路工作原理及系統硬件圖 圖7外圍電路工作原理及系統硬件圖四、系統軟
10、件程序的設計: 1. 軟件流程框圖:發DS18B20復位命令初始化發跳過ROM命令調用顯示子程序N發讀取溫度命令是否正確讀取操作并進行校驗NY初次上串YN字節是否讀完N讀出溫度值,溫度計算,處理顯示,數據刷新YN校驗是否正確發溫度轉換開始命令移入溫度暫存器(a) 主程序流程圖結束(b) 讀溫度流程圖圖8軟件流程框圖五、課程設計心得體會: 經過此次單片機課程設計,終于完成了數字溫度計,雖然不是很完美,但是是我一個進步的起點。此次設計使我發現單片機課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法,例如以前寫的那幾次,數據加減時,我用的都是BCD碼,這一次,我全部用的都是16進制的數直接加減
11、,顯示處理時在用除法去刪分,感覺效果比較好,有好多的東西,只有我們去試著做了,才能真正的掌握,只學習理論有些東西是很難理解的并且意識到要理論聯系實際,把我們所學的理論知識用到實際當中,程序只有在經常的寫與讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。另一方面讓我了解了設計電路的程序以及關于數字溫度計的原理與設計理念,要設計一個電路總要先用仿真仿真成功之后才實際接線的。但是最后的成品卻不一定與仿真時完全一樣,因為,再實際接線中有著各種各樣的條件制約著。而且,在仿真中無法成功的電路接法,在實際中因為芯片本身的特性而能夠成功。所以,在設計時應考慮兩者的差異,從中找出最適合的設計方法。 通過
12、這次學習,讓我對各種電路都有了大概的了解,所以說,從實踐中獲取真理,對于這些電路還是應該自己動手實際操作才會有深刻理解。六、參考文獻:1曹天漢,單片機原理與接口技術,電子工業出版社,20062科技教育創新中國科技信息2010 年第11 期 附件:程序 /使用1602LCD顯示DS18B20轉換的溫度值 #include <reg52.H> #include <intrins.H> #include <math.H> #define uchar unsigned char #define uint unsigned int sbit RS = P26; /數據
13、/命令選擇端(H/L) sbit LCDEN = P27; /使能端 void delayUs() /短延時 _nop_(); void delayMs(uint a) /長延時 uint i, j; for(i = a; i > 0; i-) for(j = 100; j > 0; j-); /第一行開始地址為0x80, 第二行開始地址為0xc0; /寫命令:RS=0, RW=0; void writeComm(uchar comm) RS = 0; P1 = comm; LCDEN = 1; delayUs(); LCDEN = 0; delayMs(1); /寫數據:RS=1
14、, RW=00 void writeData(uchar dat) RS = 1; P1 = dat; LCDEN = 1; delayUs(); LCDEN = 0; delayMs(1); /初始化函數 /顯示模式, 固定指令為00111000=0x38, 16*2顯示, 5*7點陣,8位數據接口 /顯示開/關及光標設置00001100=0x0c /指令1: 00001DCB : D:開顯示/關顯示(H/L); C:顯示光標/不顯示(H/L), B:光標閃爍/不閃爍(H/L) /指令2: 000001NS : /N=1, 當讀/寫一個字符后地址指針加1, 且光標也加1; N=0則相反 /S
15、=1, 當寫一個字符, 整屏顯示左移(N=1)或右移(N=0), 但光標不移動; S=0, 整屏不移動 void init() writeComm(0x38); /顯示模式 writeComm(0x0c); /開顯示, 關光標 writeComm(0x06); /寫字符后地址加1, 光標加1 writeComm(0x01); /清屏 void writeString(uchar * str, uchar length) uchar i; for(i = 0; i < length; i+) writeData(stri); /*DS18B20*/ sbit ds = P34; /初始化D
16、S18B20 /讓DS18B20一段相對長時間低電平, 然后一段相對非常短時間高電平, 即可啟動 void dsInit() /對于11.0592MHz時鐘, unsigned int型的i, 作一個i+操作的時間大于為8us unsigned int i; ds = 0; i = 100; /拉低約800us, 符合協議要求的480us以上 while(i>0) i-; ds = 1; /產生一個上升沿, 進入等待應答狀態 i = 4; while(i>0) i-; void dsWait() unsigned int i; while(ds); while(ds); /檢測到應
17、答脈沖 i = 4; while(i > 0) i-; /向DS18B20讀取一位數據/讀一位, 讓DS18B20一小周期低電平, 然后兩小周期高電平, /之后DS18B20則會輸出持續一段時間的一位數據bit readBit() unsigned int i; bit b; ds = 0; i+; /延時約8us, 符合協議要求至少保持1us ds = 1; i+; i+; /延時約16us, 符合協議要求的至少延時15us以上 b = ds; i = 8; while(i>0) i-; /延時約64us, 符合讀時隙不低于60us要求 return b;/讀取一字節數據, 通過
18、調用readBit()來實現unsigned char readByte() unsigned int i; unsigned char j, dat; dat = 0; for(i=0; i<8; i+) j = readBit(); /最先讀出的是最低位數據 dat = (j << 7) | (dat >> 1); return dat;/向DS18B20寫入一字節數據void writeByte(unsigned char dat) unsigned int i; unsigned char j; bit b; for(j = 0; j < 8; j+
19、) b = dat & 0x01; dat >>= 1;/寫"1", 將DQ拉低15us后, 在15us60us內將DQ拉高, 即完成寫1 if(b) ds = 0; i+; i+; /拉低約16us, 符號要求1560us內 ds = 1; i = 8; while(i>0) i-; /延時約64us, 符合寫時隙不低于60us要求 else /寫"0", 將DQ拉低60us120us ds = 0; i = 8; while(i>0) i-; /拉低約64us, 符號要求 ds = 1; i+; i+; /整個寫0時隙
20、過程已經超過60us, 這里就不用像寫1那樣, 再延時64us了 /向DS18B20發送溫度轉換命令void sendChangeCmd() dsInit(); /初始化DS18B20, 無論什么命令, 首先都要發起初始化 dsWait(); /等待DS18B20應答 delayMs(1); /延時1ms, 因為DS18B20會拉低DQ 60240us作為應答信號 writeByte(0xcc); /寫入跳過序列號命令字 Skip Rom writeByte(0x44); /寫入溫度轉換命令字 Convert T/向DS18B20發送讀取數據命令void sendReadCmd() dsIni
21、t(); dsWait(); delayMs(1); writeByte(0xcc); /寫入跳過序列號命令字 Skip Rom writeByte(0xbe); /寫入讀取數據令字 Read Scratchpad/獲取當前溫度值int getTmpValue() unsigned int tmpvalue; int value; /存放溫度數值 float t; unsigned char low, high; sendReadCmd(); /連續讀取兩個字節數據 low = readByte(); high = readByte(); /將高低兩個字節合成一個整形變量 /計算機中對于負數是
22、利用補碼來表示的 /若是負值, 讀取出來的數值是用補碼表示的, 可直接賦值給int型的value tmpvalue = high; tmpvalue <<= 8; tmpvalue |= low; value = tmpvalue; /使用DS18B20的默認分辨率12位, 精確度為0.0625度, 即讀回數據的最低位代表0.0625度 t = value * 0.0625; /將它放大10倍, 使顯示時可顯示小數點后一位, 并對小數點后第二位進行4舍5入 /如t=11.0625, 進行計數后, 得到value = 111, 即11.1 度 /如t=-11.0625, 進行計數后,
23、 得到value = -111, 即-11.1 度 value = t * 10 + (value > 0 ? 0.5 : -0.5); /大于0加0.5, 小于0減0.5 return value;void display(int v) unsigned char count; unsigned char datas = 0, 0, 0, 0; unsigned int tmp = abs(v); datas0 = tmp / 1000; datas1 = tmp % 1000 / 100; datas2 = tmp % 100 / 10; datas3 = tmp % 10; writeComm(0xc0+3); if(v < 0) writeString(&q
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 比亞迪基金合伙協議書
- 簽署補充協議書
- 自愿購車協議書
- 電費報銷協議書
- 管道賠償協議書
- 道館加盟協議書
- 商業街小吃合同協議書
- 舞美搭建協議書
- 廢棄物清運處理協議書
- 景觀亭維修彩畫協議書
- GB/T 11023-2018高壓開關設備六氟化硫氣體密封試驗方法
- 腦卒中風險評估(改良的弗明漢卒中量表)老年健康與醫養結合服務管理
- 九年級十二班走讀生家長會課件
- 工改工政策分析課件
- 醇基燃料技術資料
- 施工企業資質及承接工程的范圍
- 泥漿測試記錄表
- 《摩擦力》說課課件(全國獲獎實驗說課案例)
- 個人信用報告異議申請表
- 初中數學 北師大版 七年級下冊 變量之間的關系 用圖象表示的變量間關系 課件
- 2023年藝術與審美期末試卷答案參考
評論
0/150
提交評論