




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、前 言 單片機技術作為計算機技術的一個分支,廣泛地應用于工業控制,智能儀器儀表,機電一體化產品,家用電器等各個領域。“單片機原理與應用”在工科院校各專業中已作為一門重要的技術基礎課而普遍開設。學生在課程設計,畢業設計,科研項目中會廣泛應用到單片機知識,而且,進入社會后也會廣泛接觸到單片機的工程項目。鑒于此,提高“單片機原理及應用”課的教學效果,讓學生參與課程設計實習甚為重要。單片機應用技術涉及的內容十分廣泛,如何使學生在有限的時間內掌握單片機應用的基本原理及方法,是一個很有價值的教學項目。為此,我們進行了“單片機的學習與應用”方面的課程設計,鍛煉學生的動腦動手以及協作能力。 單片機課程設計是針
2、對模擬電子技術,數字邏輯電路,電路,單片機的原理及應用課程的要求,對我們進行綜合性實踐訓練的實踐學習環節,它包括選擇課設任務、軟件設計,硬件設計,調試和編寫課設報告等實踐內容。通過此次課程設計實現以下三個目標:第一,讓學生初步掌握單片機課程的試驗、設計方法,即學生根據設計要求和性能約束,查閱文獻資料,收集、分析類似的相關題目,并通過元器件的組裝調試等實踐環節,使最終硬件電路達到題目要求的性能指標;第二,課程設計為后續的畢業設計打好基礎,畢業設計是系統的工程設計實踐,而課程設計的著眼點是讓學生開始從理論學習的軌道上逐漸引向實際運用,從已學過的定性分析、定量計算的方法,逐步掌握工程設計的步驟和方法
3、,了解科學實驗的程序和實施方法。第三,培養學生勤于思考樂于動手的習慣,同時通過設計并制作單片機類產品,使學生能夠自己不斷地學習接受新知識(如在本課設題目中存在智能測溫器件DS18B20,就是課堂環節中不曾提及的“新器件”),通過多人的合作解決現實中存在的問題,從而不斷地增強學生在該方面的自信心及興趣,也提高了學生的動手能力,對學生以后步入社會參加工作打下一定良好的實踐基礎。 摘要:隨著時代的進步和發展,單片機技術已經普及到我們生活,工作,科研,各個領域,已經成為一種比較成熟的技術,單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優點,廣泛應用于儀器儀表中,結合不同種類的傳感器
4、,可實現諸如電壓、濕度、溫度、速度、硬度、壓力等的物理量的測量。本文將介紹一種基于單片機控制理論及其應用系統設計的數字溫度計。 本文主要介紹了一個基于AT89C51單片機的測溫系統,詳細描述了利用數字溫度傳感器DS18B20開發測溫系統的過程,重點對傳感器在單片機喜愛的硬件連接,軟件編程以及各模塊系統流程進行了詳盡分析,對各部分的電路也進行一一介紹,該系統可以方便的是實現溫度采集和顯示,并可以根據需要任意設定上下限報警溫度,它使用起來方便,具有精度高、量程寬、靈敏度高、體積小、功耗低等優點,適合我們日常生活和工農業生產中的溫度測量,也可以當做溫度處理模塊嵌入其他系統中,作為其他主系統的輔助擴展
5、。DS18B20和AT89C51結合實現最簡溫度檢測系統,該系統結構簡單,抗干擾能力強,適合與惡劣環境下進行現場溫度測量,有廣泛的應用前景。 本設計首先是確定目標,氣候是各個功能模塊的設計,再在Proteus軟件上進行仿真,修改,仿真。本溫度計屬于多功能溫度計,可以設置上下報警溫度,當溫度不在設置范圍內時,可以報警。 關鍵詞:單片機,數字控制,溫度計, DS18B20,AT89C51目 錄 前言1 摘要3 關鍵字3一單片機簡介511單片機的應用512單片機的開發過程6二、設計方案621設計任務和要求622方案辯證71溫度計軟件設計流程圖72元器件的選取73系統最終設計方案8三、設計方案的總體設
6、計框圖831硬件電路框圖832硬件電路概述933主控電路934顯示電路1035報警溫度調節電路1036溫度傳感器及 DS18B20測溫原理11四、系統軟件算法設計1541主程序1542讀出溫度子程序1643溫度轉換命令子程序1744 計算溫度子程序1745 顯示數據刷新子程序1746 1602的液晶顯示18五、軟件仿真1851系統仿真設計1852系統原理圖19結與體會20附錄21參考文獻29一、單片機簡介 二十世紀跨越了三個“電”的時代,即電氣時代、電子時代和現已進入的電腦時代。不過,這種電腦,通常是指個人計算機,簡稱PC機。它由主機、鍵盤、顯示器等組成。還有一類計算機,大多數人卻不怎么熟悉。
7、這種計算機就是把智能賦予各種機械的單片機(亦稱微控制器)。顧名思義,這種計算機的最小系統只用了一片集成電路,即可進行簡單運算和控制。因為它體積小,通常都藏在被控機械的“肚子”里。它在整個裝置中,起著有如人類頭腦的作用,它出了毛病,整個裝置就癱瘓了。現在,這種單片機的使用領域已十分廣泛,如智能儀表、實時工控、通訊設備、導航系統、家用電器等。各種產品一旦用上了單片機,就能起到使產品升級換代的功效,常在產品名稱前冠以形容詞“智能型”,如智能型洗衣機等。 計算機的產生加快了人類改造世界的步伐,但是它畢竟體積大。單片機在這種情況下誕生了。截止今日,單片機應用技術飛速發展,縱觀我們現在生活的各個領域,從導
8、彈的導航裝置,到飛機上各種儀表的控制,從計算機的網絡通訊與數據傳輸,到工業自動化過程的實時控制和數據處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機。單片機自70年代問世以來得到蓬勃發展,目前單片機功能正日漸完善:單片機集成越來越多資源,內部存儲資源日益豐富,用戶不需要擴充資源就可以完成項目開發,不僅是開發簡單,產品小巧美觀,同時抗干擾能力加強,系統也更加穩定,使得它更加適合工業控制領域,具有更加廣闊的市場前景;提供在線編程能力,加速了產品的開發進程,為企業產品上市贏得寶貴時間。此外單片機具有性能高、速度快、體積小、價格低、穩定可靠、應用廣泛、通用性強等突出優點。單
9、片機的設計目標主要是增強“控制”能力,滿足實時控制(就是快速反應) 的需要。 我作為21世紀的工科大學生,學的是電氣的專業,無論是從事科學研究工作,還是開辦電子器件的工廠還是經營電子廠品的貿易,不僅要熟練地使用通用微機進行各種數據處理,還要把計算機技術運用到本專業領域或相關領域,既具有開發創新能力。這就要求我們要熟練地掌握單片機。單片機是一種集成在電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的
10、一個小而完善的計算機系統。這些電路能在軟件的控制下準確、迅速、高效地完成程序設計者實現規定的任務。11單片機的應用單片機廣泛應用于儀器儀表、家用電器、醫用設備、航空航天、專用設備的智能化管理及過程控制等領域,大致可分如下幾個范疇:1.在智能儀器儀表上的應用 單片機具有體積小、功耗低、控制功能強、擴展靈活、微型化和使用方便等優點,廣泛應用于儀器儀表中,結合不同類型的傳感器,可實現諸如電壓、功率、頻率、濕度、溫度、流量、速度、厚度、角度、長度、硬度、元素、壓力等物理量的測量。采用單片機控制使得儀器儀表數字化、智能化、微型化,且功能比起采用電子或數字電路更加強大。例如精密的測量設備(功率計,示波器,
11、各種分析儀)。2.在工業控制中的應用 用單片機可以構成形式多樣的控制系統、數據采集系統。例如工廠流水線的智能化管理,電梯智能化控制、各種報警系統,與計算機聯網構成二級控制系統等。 3.在家用電器中的應用 可以這樣說,現在的家用電器基本上都采用了單片機控制,從電飯褒、洗衣機、電冰箱、空調機、彩電、其他音響視頻器材、再到電子秤量設備,五花八門,無所不在。 4.在計算機網絡和通信領域中的應用 現代的單片機普遍具備通信接口,可以很方便地與計算機進行數據通信,為在計算機網絡和通信設備間的應用提供了極好的物質條件,現在的通信設備基本上都實現了單片機智能控制,從手機,電話機、小型程控交換機、樓宇自動通信呼叫
12、系統、列車無線通信、再到日常工作中隨處可見的移動電話,集群移動通信,無線電對講機等。 5.單片機在醫用設備領域中的應用 單片機在醫用設備中的用途亦相當廣泛,例如醫用呼吸機,各種分析儀,監護儀,超聲診斷設備及病床呼叫系統等等。 6.在各種大型電器中的模塊化應用 某些專用單片機設計用于實現特定功能,從而在各種電路中進行模塊化應用,而不要求使用人員了解其內部結構。如音樂集成單片機,看似簡單的功能,微縮在純電子芯片中(有別于磁帶機的原理),就需要復雜的類似于計算機的原理。如:音樂信號以數字的形式存于存儲器中(類似于ROM),由微控制器讀出,轉化為模擬音樂電信號(類似于聲卡)。 在大型電路中,這種模塊化
13、應用極大地縮小了體積,簡化了電路,降低了損壞、錯誤率,也方便于更換。 7.單片機在汽車設備領域中的應用 單片機在汽車電子中的應用非常廣泛,例如汽車中的發動機控制器,基于CAN總線的汽車發動機智能電子控制器,GPS導航系統,abs防抱死系統,制動系統等等。 此外,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣泛的用途。12單片機的開發過程這里所說的開發過程并不是一般書中所說的從任務分析開始,我們假設已設計并制作好硬件,下面就是編寫軟件的工作。在編寫軟件之前,首先要確定一些常數、地址,事實上這些常數、地址在設計階段已被直接或間接地確定下來了。如當某器件的連線設計好后,其地址也就被確
14、定了,當器件的功能被確定下來后,其控制字也就被確定了。然后用文本編輯器(如EDIT、CCED等)編寫軟件,編寫好后,用編譯器對源程序文件編譯,查錯,直到沒有語法錯誤,除了極簡單的程序外,一般應用仿真機對軟件進行調試,直到程序運行正確為止。運行正確后,就可以寫片(將程序固化在EPROM中)。在源程序被編譯后,生成了擴展名為HEX的目標文件,一般編程器能夠識別這種格式的文件,只要將此文件調入即可寫片。二、設計方案21設計務任和要求1、基本范圍-201252、精度誤差小于0.53、LED 數碼直讀顯示4、可以任意設定溫度的上下限報警功能.22方案辯證1溫度計軟件設計流程圖: 設置堆棧指針將溫度轉換為
15、BCD碼發讀存儲器命令讀溫度數據復位DS18B20發跳過ROM命令顯示緩沖區初始化更新數據緩沖區延時發溫度轉換命令復位DS18B20發跳過ROM命令開始 2元器件的選取:單片機芯片的選取:方案一.采用89C51芯片作為硬件核心,利用Flash ROM,內部具有4KB ROM 存儲空間,能于3V的超低壓工作,而且與MCS-51系列單片機完全兼容,但是運用于電路設計中時由于不具備ISP在線編程技術, 當在對電路進行調試時,由于程序的錯誤修改或對程序的新增功能需要燒入程序時,對芯片的多次拔插會對芯片造成一定的損壞。方案二:采用AT89C51單片機與MCS-51系列單片機相比有兩大優勢:第一,片內程序
16、存儲器采用閃存,使程序的寫入更加方便;第二,提供了更小尺寸的芯片,使整個硬件電路的體積更小,且管腳數目為20個,與MCS-51相比減少一倍,使理解更容易。綜上所述:本課設中單片機芯片采用AT89C51。 溫度傳感器的選取: 方案一:采用熱敏電阻傳感器。利用熱敏電阻隨溫度變化而顯著變化,能直接將溫度的變化轉換為能量的變化,進而制成溫度計。但是其測溫傳感器比較復雜,而且不易通過編制程序來控制測溫精度,增大系統設計的難度。 方案二: 采用DS18B20溫度傳感器。DS18B20的內部3腳(或8腳)封裝;使用特有的溫度測量技術,將被測溫度轉換成數值信號;3.05.5V的電源供電方式和寄生電源供電方式;
17、ROM由64位二進制數字組成,共分為8個字節;RAM由9個字節的高速暫存器和非易失性電擦寫ROM組成。綜上所述:溫度傳感器選取智能測溫器件DS18B20。本設計顯示電路采用1602液晶顯示模塊芯片。3系統最終設計方案:綜上各方案所述,對此次課設的方案選定: 采用AT89C51作為主控制系統; 1602液晶顯示模塊芯片作為溫度數據顯示裝置;而智能溫度傳感器DS18B20器件作為測溫電路主要組成部分。至此,系統最終方案確定。三、設計方案的總體設計框圖溫度計電路設計總體設計方框圖如圖所示,控制器采用單片機AT89C51,溫度傳感器采用DS18B20,用1602液晶顯示屏以串口傳送數據實現溫度顯示。3
18、.1硬件電路框圖: 單片機芯片AT89C51復位電路晶振控制1602 顯示器溫度檢測電路DS18B20報警溫度調整鍵蜂鳴器,指示燈 圖總體設計方框圖3.2硬件電路概述:系統由單片機最小系統、顯示電路、按鍵、溫度傳感器等組成。本電路是由AT89C51單片機為控制核心,具有與MCS-51系列單片機完全兼容,程序加密等功能,帶2KB字節可編程閃存,工作電壓范圍為2.76V,全靜態工作頻率為024MHZ;顯示電路由1602液晶顯示模塊芯片,可以進行多行顯示;溫度報警按鍵設為五個,可以顯示華氏溫度,調節高低報警溫度;溫度傳感器電路主要由DS18B20測溫器件構成,該器件主要功能有:采用單總線技術;每只D
19、S18B20具有一個獨立的不可修改的64位序列號;低壓供電,電源范圍為35V;測溫范圍為-20+125,誤差為±0.5;復位電路是10K電阻構成的上電自動復位。3.3主控電路單片機AT89C51 具有低電壓供電和體積小等特點,四個端口只需要兩個口就能滿足電路系統的設計需要,很適合便攜手持式產品的設計使用系統可用二節電池供電。晶振采用12MHZ。復位電路采用上電加自動復位。主控芯片AT89C51 晶振電路 復位電路3.4顯示電路 本設計顯示電路采用1602液晶顯示模塊芯片,該芯片可現實16x2個字符,比以前的七段數碼管LED顯示器在顯示字符的數量上要多得多。另外,由于1602芯片編程比
20、較簡單,界面直觀,因此更加易于使用者的操作和觀測。1602A芯片的接口信號說明如下表:1602A芯片的接口信號說明圖 液晶顯示電路35報警溫度調節電路本系統一共設置了五個按鍵,k1鍵只是顯示華氏溫度,k4鍵按下不松開顯示高低報警溫度,松開后恢復顯示正常溫度,k2鍵和k3鍵是分別用來調節高低報警溫度,k鍵控制調節時的上調或下調。具體調節如將高溫報警溫度調高,第一步將k4鍵按下不松,k鍵升起位置,調節k2鍵,則高溫報警溫度向上增加,反之亦然。低溫報警同理。圖 報警點調節電路3.6溫度傳感器及DS18B20測溫原理DS18B20溫度傳感器是美國DALLAS半導體公司最新推出的一種改進型智能溫度傳感器
21、,與傳統的熱敏電阻等測溫元件相比,它能直接讀出被測溫度,并且可根據實際要求通過簡單的編程實現9-12位的數字值讀數方式。DS18B20的性能特點如下:(1)獨特的單線接口僅需要一個端口引腳進行通信,DS18B20在與微處理器連接時僅需要一條口線即可實現微處理器與DS18B20的雙向通訊。(2)DS18B20支持多點組網功能,多個DS18B20可以并聯在惟一的三線上,實現多點組網測溫;(3)無須外部器件,全部傳感元件及轉換電路集成在形如一只三極管的集成電路內;(4)可通過數據線供電,電壓范圍為3.0-5.5;(5)零待機功耗;(6)溫度以9或12位數字,對應的可分辨溫度分別為0.5、0.25、0
22、.125和0.0625,可實現高精度測溫;(7)用戶可定義報警設置;(8)報警搜索命令識別并標志超過程序限定溫度(溫度報警條件)的器件;(9)負電壓特性,電源極性接反時,溫度計不會因發熱而燒毀,但不能正常工作;(10)測量結果直接輸出數字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力DS18B20采用3腳PR35封裝或8腳SOIC封裝,其引腳排列及內部結構框圖如圖及測溫原理圖如下所示:圖 引腳排列圖 內部結構框圖預置斜率累加器比較低溫度系數振蕩器計數器1溫度寄存器Tx預置=0高溫度系數振蕩器-0計數器2T1加1停止T2圖 DS18
23、B20測溫原理圖64位ROM的結構開始8位是產品類型的編號,接著是每個器件的惟一的序號,共有48位,最后8位是前面56位的CRC檢驗碼,這也是多個DS18B20可以采用一線進行通信的原因。溫度報警觸發器TH和TL,可通過軟件寫入戶報警上下限。DS18B20溫度傳感器的內部存儲器還包括一個高速暫存RAM和一個非易失性的可電擦除的EERAM。高速暫存RAM的結構為8字節的存儲器,結構如圖4所示。頭2個字節包含測得的溫度信息,第3和第4字節TH和TL的拷貝,是易失的,每次上電復位時被刷新。第5個字節,為配置寄存器,它的內容用于確定溫度值的數字轉換分辨率。DS18B20工作時寄存器中的分辨率轉換為相應
24、精度的溫度數值。該字節各位的定義如圖5所示。低5位一直為1,TM是工作模式位,用于設置DS18B20在工作模式還是在測試模式,DS18B20出廠時該位被設置為0,用戶不要去改動,R1和R0決定溫度轉換的精度位數,來設置分辨率。溫度 LSB溫度 MSBTH用戶字節1TL用戶字節2配置寄存器保留保留保留CRCTMR1R011111圖5 DS18B20的字節定義 DS18B20的分辨率定義如表1所示表1 分辨率設置表R0R1分辨率最大溫度轉移時間009位96.75ms0110位187.5ms1011位375ms1112位750ms由表1可見,DS18B20溫度轉換的時間比較長,而且分辨率越高,所需要
25、的溫度數據轉換時間越長。因此,在實際應用中要將分辨率和轉換時間權衡考慮。主機控制DS18B20完成溫度轉換過程是:每一次讀寫之前都要對DS18B20進行復位,即將數據總線下拉500us,然后釋放,DS18B20收到信號后等待16-60us左右,之后發出60-240us的存在低脈沖,主CPU收到此此信號表示復位成功;復位成功后發送一條ROM指令,然后發送RAM指令,這樣才能對DS18B20進行預訂的讀寫操作。表2 ROM指令集指令約定代碼功能讀ROM33H讀DS18B20中的編碼符合ROM55H發出此命令后,接著發出64位ROM編碼,訪問單線總線上與該編輯相對應的DS18B20使之做出響應,為下
26、一步對該DS18B20的讀寫作準備搜索ROM0F0H用于確定掛接在同一總線上的DS18B20個數和識別64位ROM地址,為操作各器件作準備跳過ROM0CCH忽略64位ROM地址,直接向DS18B20發送溫度變換指令告警搜索命令0ECH執行后,只有溫度跳過設定值上限或下限的片子才能做出反應表3 RAM指令集指令約定代碼功能溫度轉換44H啟動DS18B20進行溫度轉換讀暫存器0BEH讀暫存器9個字節內容寫暫存器4EH將數據寫入暫存器的TH、TL字節復制暫存器48H把暫存器的TH、TL字節寫到E2RAM中重調E2RAM0B8H把E2RAM中的TH、TL字節寫到暫存器TH、TL字節讀供電方式0B4H啟
27、動DS18B20發送電源供電方式的信號給主CPUDS18B20的測溫原理是這這樣的,器件中低溫度系數晶振的振蕩頻率受溫度的影響很小,用于產生固定頻率的脈沖信號送給減法計數器1;高溫度系數晶振隨溫度變化其振蕩頻率明顯改變,所產生的信號作為減法計數器2的脈沖輸入。器件中還有一個計數門,當計數門打開時,DS18B20就對低溫度系數振蕩器產生的時鐘脈沖進行計數進而完成溫度測量。計數門的開啟時間由高溫度系數振蕩器來決定,每次測量前,首先將最低溫所對應的一個基數分別置入減法計數器1、溫度寄存器中,計數器1和溫度寄存器被預置在最低溫所對應的一個基數值。減法計數器1對低溫度系數晶振產生的脈沖信號進行減法計數,
28、當減法計數器1的預置值減到0時,溫度寄存器的值將加1,減法計數器1的預置將重新被裝入,減法計數器1重新開始對低溫度系數晶振產生的脈沖信號進行計數,如此循環直到減法計數器計數到0時,停止溫度寄存器的累加,此時溫度寄存器中的數值就是所測溫度值。其輸出用于修正減法計數器的預置值,只要計數器門仍未關閉就重復上述過程,直到溫度寄存器值大致被測溫度值。測溫電路四、系統軟件算法設計整個系統是由硬件配合軟件來實現的,在硬件確定后,編寫的軟件的功能也就基本定型了。所以軟件的功能大致可分為兩個部分:一是監控,這也是系統的核心部分,二是執行部分,完成各個具體的功能。系統程序主要包括主程序,讀出溫度子程序,溫度轉換命
29、令子程序,計算溫度子程序,顯示數據刷新子程序等。4.1主程序主程序的主要功能是負責溫度的實時顯示、讀出并處理DS18B20的測量的當前溫度值,溫度測量每1s進行一次。這樣可以在一秒之內測量一次被測溫度,其程序流程見圖所示。Y發DS18B20復位命令發跳過ROM命令發讀取溫度命令讀取操作,CRC校驗9字節完?CRC校驗正?確?移入溫度暫存器結束NNY初始化調用顯示子程序1S到?初次上電讀出溫度值溫度計算處理顯示數據刷新發溫度轉換開始命令NYNY圖 主程序流程圖圖讀溫度流程圖4.2讀出溫度子程序讀出溫度子程序的主要功能是讀出RAM中的9字節,在讀出時需進行CRC校驗,校驗有錯時不進行溫度數據的改寫
30、。其程序流程圖如圖示發DS18B20復位命令發跳過ROM命令發溫度轉換開始命令 結束 圖 溫度轉換流程圖4.3溫度轉換命令子程序溫度轉換命令子程序主要是發溫度轉換開始命令,當采用12位分辨率時轉換時間約為750ms,在本程序設計中采用1s顯示程序延時法等待轉換的完成。溫度轉換命令子程序流程圖如上圖,圖9所示4.4 計算溫度子程序計算溫度子程序將RAM中讀取值進行BCD碼的轉換運算,并進行溫度值正負的判定,其程序流程圖如圖所示。 開始溫度零下?溫度值取補碼置“”標志計算小數位溫度BCD值 計算整數位溫度BCD值 結束置“+”標志NY溫度數據移入顯示寄存器十位數0?百位數0?十位數顯示符號百位數不
31、顯示百位數顯示數據(不顯示符號) 結束NNYY圖計算溫度流程圖 圖顯示數據刷新流程圖4.5 顯示數據刷新子程序顯示數據刷新子程序主要是對顯示緩沖器中的顯示數據進行刷新操作,當最高顯示位為0時將符號顯示位移入下一位。程序流程圖如圖。4.6 1602的液晶顯示1602液晶顯示流程圖:五、軟件仿真5.1系統仿真設計本設計是在Proteus環境下進行仿真的,仿真所用到的器件有:單片機AT89C51,DS1820溫度傳感器,蜂鳴器,液晶顯示器,一些電阻,電容等。仿真結果如下: 顯示器顯示 傳感器溫度 高低報警溫度 高溫報警 低溫報警報警時的led燈提示5.2系統原理圖六、總結與體會 經過將近三周的單片機
32、課程設計,終于完成了我的數字溫度計的設計,雖然沒有完全達到設計要求,但從心底里說,還是高興的,畢竟這次設計把實物都做了出來,高興之余不得不深思呀!在本次設計的過程中,我發現很多的問題,雖然以前還做過這樣的設計但這次設計真的讓我長進了很多,單片機課程設計重點就在于軟件算法的設計,需要有很巧妙的程序算法,雖然以前寫過幾次程序,但我覺的寫好一個程序并不是一件簡單的事,舉個例子,以前寫的那幾次,數據加減時,我用的都是BCD碼,這一次,我全部用的都是16進制的數直接加減,顯示處理時在用除法去刪分,感覺效果比較好,有好多的東西,只有我們去試著做了,才能真正的掌握,只學習理論有些東西是很難理解的,更談不上掌
33、握。從這次的課程設計中,我真真正正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的寫與讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。通過這次對數字溫度計的設計與制作,讓我了解了設計電路的程序,也讓我了解了關于數字溫度計的原理與設計理念,要設計一個電路總要先用仿真仿真成功之后才實際接線的。但是最后的成品卻不一定與仿真時完全一樣,因為,再實際接線中有著各種各樣的條件制約著。而且,在仿真中無法成功的電路接法,在實際中因為芯片本身的特性而能夠成功。所以,在設計時應考慮兩者的差異,從中找出最適合的設計方法。 通過這次學習,讓我對
34、各種電路都有了大概的了解,所以說,坐而言不如立而行,對于這些電路還是應該自己動手實際操作才會有深刻理解。 從這次的課程設計中,我真真正正的意識到,在以后的學習中,要理論聯系實際,把我們所學的理論知識用到實際當中,學習單機片機更是如此,程序只有在經常的寫與讀的過程中才能提高,這就是我在這次課程設計中的最大收獲。 附錄:/*#include<reg51.h>#include<intrins.h> /shiyongyanshi#include<math.h> #define uchar unsigned char#define uint unsigned ints
35、bit DQ=P33; sbit RS =P20;sbit RW =P21;sbit EN =P22;sbit k=P10;sbit k1=P14;sbit k2=P15;sbit k3=P16;sbit k4=P17;sbit led_red=P25;sbit led_blue=P26;sbit BEEP=P37;uchar bz=1;/BEEP=0;uchar ng=0; /fuhaobiaoshiwei uchar TempBuffer ="TEMP: "int temp_value; /溫度值 uchar code dis_title="-current
36、temp-" void xianshi_huashi();uchar gw=40;char dw= 10;uchar xianshi_title=" TEMP ALARM "uchar xianshi_baojing="HI: LO: " /345 10 12/-延時- void delayxus(uint x) uchar i; while(x-) for(i=0;i<200;i+); /*LCD 控制*/讀lcd 狀態uchar read_lcd_state() uchar state ; RS=0;RW=1;EN=1;delayxu
37、s(1);state=P0;EN=0;delayxus(1); return state; / 忙等待void lcd_busy_wait() while(read_lcd_state()&0x80)=0x80);delayxus(5);/向LCD寫數據 void write_lcd_data(uchar dat) lcd_busy_wait(); RS=1;RW=0;EN=0;P0=dat;EN=1;delayxus(1);EN=0; /向LCD寫指令 void write_lcd_cmd(uchar cmd) lcd_busy_wait(); RS=0;RW=0;EN=0;P0=c
38、md;EN=1;delayxus(1);EN=0; /-/LCD初始化void init_lcd() write_lcd_cmd(0x38); delayxus(1); write_lcd_cmd(0x01) ; delayxus(1); write_lcd_cmd(0x06); delayxus(1); write_lcd_cmd(0x0C) ; delayxus(1); /- /設置液晶顯示位置 void set_lcd_pos(uchar p) write_lcd_cmd(p| 0x80); /- /在LCD上顯示字符串 void dis_lcd_string(uchar p,uchar
39、 *s) /位置,字符指針 uchar i; set_lcd_pos(p);for(i=0;i<16;i+) /16*2 write_lcd_data(si) ; delayxus(1); /- void delay_18B20(unsigned int i)while(i-);/-蜂鳴器- void beep() uchar i; for(i=0;i<100;i+) delayxus(1);BEEP=BEEP; BEEP=1; /延時2void delay2(uint x)while(-x); /= /初始化DS!* /*ds18b20初始化函數*/void Init_DS18B
40、20(void) unsigned char x=0; DQ = 1; /DQ復位 delay_18B20(8); /稍做延時 DQ = 0; /單片機將DQ拉低 delay_18B20(80); /精確延時 大于 480us DQ = 1; /拉高總線 delay_18B20(14); x=DQ; /稍做延時后 如果x=0則初始化成功 x=1則初始化失敗 delay_18B20(20);/*ds18b20讀一個字節*/ uchar ReadOneChar(void)uchar i=0;uchar dat = 0;for (i=8;i>0;i-) DQ = 0; / 給脈沖信號 dat&
41、gt;>=1; DQ = 1; / 給脈沖信號 if(DQ) dat|=0x80; delay_18B20(4); return(dat);/*ds18b20寫一個字節*/ void WriteOneChar(uchar dat) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = dat&0x01; delay_18B20(5); DQ = 1; dat>>=1; /*讀取ds18b20當前溫度*/void ReadTemp(void)unsigned char a=0;unsigned char b=0;un
42、signed char t=0;Init_DS18B20();WriteOneChar(0xCC); / 跳過讀序號列號的操作WriteOneChar(0x44); / 啟動溫度轉換delay_18B20(100); / this message is wery importantInit_DS18B20();WriteOneChar(0xCC); /跳過讀序號列號的操作WriteOneChar(0xBE); /讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度delay_18B20(100);a=ReadOneChar(); /讀取溫度值低位 aaaaaaaaaaaaaaaaaaaab=R
43、eadOneChar(); /讀取溫度值高位 bbbbbbbbbb b.a temp_value= b<<4; temp_value+=(a&0xf0)>>4; void temp_to_str() /溫度數據轉換成液晶字符顯示 if(temp_value & 0xE0)=0xE0) temp_value =temp_value +1 ; ng=1;elseng=0; if(k1=0) /while(k1=0); bz=(bz+1) %2; if(bz=0) temp_value =(int)(temp_value )*(9.0/5.0)+32; if(
44、ng=1) TempBuffer9=temp_value/100+'0' if(TempBuffer9= ' ') TempBuffer9='-' TempBuffer10=temp_value%100/10+'0' /十位 TempBuffer11=temp_value%10+'0' /個位 TempBuffer12=0xdf; /溫度符號 TempBuffer13='C' TempBuffer14='0' /TempBuffer1=ng %10+ '0' if(n
45、g=0) TempBuffer9=temp_value/100+'0' if(temp_value/100=0) TempBuffer9 =' ' TempBuffer10=temp_value % 100/10+'0' /十位 if(temp_value % 100/10=0) TempBuffer10 =' ' TempBuffer11=temp_value%10+'0' /個位 / if(temp_value%10=0) TempBuffer11 =' ' TempBuffer13='
46、C' /溫度符號 if(bz=0) TempBuffer13='F' TempBuffer14='0' /TempBuffer1=ng%10+'0' void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;i<count;i+)for(j=0;j<120;j+);/*延時子程序*/void mdelay(uint delay)uint i; for(;delay>0;delay-) for(i=0;i<62;i+) ; /1ms延時. void show_
47、time() /液晶顯示程序 ReadTemp(); /開啟溫度采集程序 temp_to_str(); /溫度數據轉換成液晶字符 dis_lcd_string(0x40,TempBuffer); /顯示溫度 dis_lcd_string(0x00,dis_title); / Delay1ms(400); /掃描延時void xianshi_dw() if(dw>=0) xianshi_baojing3=gw/100+'0' xianshi_baojing4=gw%100/10+'0' xianshi_baojing5=gw%10+'0' xianshi_baojing10=dw/100+'0' xianshi_baojing11=dw%100/10+
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國黑龍江飼料項目創業計劃書
- 中國蠟燭草項目創業計劃書
- 中國計算機系統維護項目創業計劃書
- 2025二手壓縮機采購合同
- 中國南洋杉項目創業計劃書
- 中國干鱈魚項目創業計劃書
- 中國動畫制作軟件項目創業計劃書
- 中國兒科呼吸機項目創業計劃書
- 2025年安徽省銅陵市銅官山區人事局事業單位工作人員公開招聘考前自測高頻考點模擬試題及答案詳解1套
- 智能化網絡安全防護體系-洞察闡釋
- 建筑工程公司安全生產管理實施細則(2篇)
- 2024年考研英語一閱讀理解80篇試題及答案
- DB65-T 4824-2024 干旱區蒸散發量計算規范
- 地域文化(專)-終結性考試-國開(SC)-參考資料
- 2025屆高考生物備考說課稿:生態系統的物質循環、信息傳遞和穩定性
- 我是為了您的孩子 您是為了我的學生-期中測試家長會 課件
- 2024年全縣金融工作會議講話材料例文(5篇)
- 委托監護協議書格式
- 2024年保密培訓課件:員工保密知識要點
- 車站值班員(高級)技能鑒定理論題庫(濃縮400題)
- 《向量加法運算及其幾何意義》參考課件1
評論
0/150
提交評論