關(guān)于單片機的畢業(yè)論文--基于單片機的時間溫度顯示系統(tǒng)_第1頁
已閱讀1頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  畢 業(yè) 設(shè) 計 論 文</p><p>  基于單片機的時間溫度顯示系統(tǒng)</p><p><b>  XXX </b></p><p>  指導(dǎo)老師姓名: XXX</p><p>  專 業(yè) 名 稱:物聯(lián)網(wǎng)工程學(xué)院</p><p>  班 級 學(xué) 號:

2、 11131131</p><p>  論文提交日期: 20XX年X月X日</p><p>  論文答辯日期: 20XX年 月 日</p><p>  20XX年 月 日</p><p><b>  摘 要</b></p><p>  【摘要】:該系統(tǒng)是設(shè)計一個能在液晶屏幕上顯示當(dāng)前日期

3、和溫度的51單片機控制系統(tǒng)。本設(shè)計多功能數(shù)字時鐘系統(tǒng)是由中央控制器、時鐘系統(tǒng)、溫度檢測器、顯示器和鍵盤部分主成。控制器采用單片機AT89C51,溫度檢測部分采用DS18B20溫度傳感器,時鐘系統(tǒng)采用時鐘芯片DS1302,用LCD液晶1602A作為顯示器。單片機通過時鐘芯片DS1302獲取時間數(shù)據(jù)對數(shù)據(jù)處理后顯示時間,溫度傳感器DS18B20采集溫度信號送給單片機處理,單片機再把時間數(shù)據(jù)和溫度數(shù)據(jù)送液晶顯示器1602顯示,結(jié)果能在LCD正

4、常顯示時間和溫度值。</p><p>  【關(guān)鍵詞】:AT89C51單片機 數(shù)字溫度傳感器DS18B20 時鐘芯片DS1302</p><p>  LCD1602液晶顯示器 </p><p><b>  Abstract</b></p><p>  【Abstract】: The system is to d

5、esign a can on the LCD screen displays the current date and temperature of 51 single-chip microcomputer control system. This design multi-function digital clock system is determined by the central controller, clock syste

6、m, temperature detector, a display and a keyboard part as a Lord. Controller by single chip microcomputer AT89C51, part adopts DS18B20 temperature sensor temperature detection, USES the clock chip DS1302 clock system, us

7、ing LCD 1602 a as a display. S</p><p>  【Keywords】: AT89C51 SCM Digital temperature sensor </p><p>  clock chip character type liquid crystal display </p><p><b>  目 錄&

8、lt;/b></p><p>  第一章 設(shè)計原理及要求2</p><p>  1.1設(shè)計原理......................................................... 2</p><p>  1.2設(shè)計思路及實現(xiàn)功能............................................. 2&l

9、t;/p><p>  第二章 系統(tǒng)硬件組成3</p><p>  2.1 AT89C51芯片介紹3</p><p>  2.1.1AT89C51簡介...................................................... 3</p><p>  2.1.2.主要性能.....................

10、.................................... 3</p><p>  2.1.3.管腳說明........................................................ 3</p><p>  2.2單片機系統(tǒng)的晶振3</p><p>  2.3單片機系統(tǒng)的復(fù)位....................

11、........................... 4</p><p>  2.4 LCD1602液晶顯示屏4</p><p>  2.4.1引腳功能及接口方式4</p><p>  2.4.2 LED1602的內(nèi)部控制器5</p><p>  2.5數(shù)字溫度傳感器DS18B206</p><p>  2

12、.5.1 DS18B20封裝圖及接口方式圖6</p><p>  2.5.2 DS18B20功能命令集6</p><p>  2.5.3 DS18B20復(fù)位應(yīng)答關(guān)系及讀寫方式7</p><p>  2.6時鐘芯片DS13028</p><p>  2.6.1 DS1302 的引腳功能及接口方式9</p><p&g

13、t;  2.6.2 DS1302 內(nèi)部寄存器10</p><p>  2.6.3 DS1302數(shù)據(jù)傳送及讀寫時序方式11</p><p>  2.7按鍵部分12</p><p>  2.8 MAX232芯片12</p><p>  第三章 系統(tǒng)軟件實現(xiàn)方式14</p><p>  3.1主程序流程圖14&l

14、t;/p><p>  3.2液晶顯示方式15</p><p>  3.3 時間轉(zhuǎn)換方式16</p><p>  3.4溫度轉(zhuǎn)換方式16</p><p>  第四章 調(diào)試現(xiàn)象17</p><p>  4.1運行環(huán)境17</p><p>  4.2程序下載18</p><

15、p>  4.3實驗過程現(xiàn)象.................................................... 19 </p><p><b>  總結(jié)20</b></p><p><b>  致謝21</b></p><p><b>  參考文獻22</b><

16、/p><p><b>  附錄23</b></p><p>  附錄A:原理圖23</p><p>  附錄B: 元器件清單23</p><p>  附錄C:設(shè)計程序24</p><p><b>  緒 論</b></p><p>  隨著社會文

17、化的不斷發(fā)展,人們的消費標(biāo)準不斷改變,時間顯示器更是扮演著越來越重要的角色,不論是汽車站,火車站,股市交易市場,還是學(xué)校都離不開它,然而傳統(tǒng)的時間顯示器不論是在顯示效果、耗電量還是可修改性上都無法滿足當(dāng)前社會的需求,傳統(tǒng)的時間顯示器亟待改進。</p><p>  由于單片機技術(shù)的不斷發(fā)展與傳統(tǒng)的時間顯示器在顯示效果以及可修改性上都有著無法比擬的優(yōu)勢,而且單片機的日益平民化以及LCD技術(shù)的不斷創(chuàng)新,使得高亮度高清晰

18、的LCD不斷推廣,為其在生活的應(yīng)用奠定了基礎(chǔ)。并且由于電子產(chǎn)品的不斷改良,設(shè)計更加的人性化;不僅為用戶提供方便快捷的操作界面,而且設(shè)計更加實用方便,為用戶會提供更有效的信息.像密碼鎖、智能小車、智能溫控等在人們?nèi)粘I钪械膽?yīng)用;還有一些工業(yè)生產(chǎn)中的智能控制方面的應(yīng)用,在很多工廠里生產(chǎn)的儀器的主控芯片和顯示芯片就是單片機,其中有兩個是控制電機的左右位移和上下高度;比較的實用方便。并且單片機的開發(fā)周期較其他芯片要快,有較強的商業(yè)價值,也為開

19、發(fā)者提供很大的開發(fā)空間</p><p>  第一章 設(shè)計原理及要求</p><p><b>  1.1設(shè)計原理</b></p><p>  DS1302包括時鐘/日歷寄存器和8位的數(shù)據(jù)暫存寄存器,數(shù)據(jù)通信通過一條串行的輸入輸出口,實時時鐘日歷提供包括秒分時日期月份和年份的信息。時間要能夠顯示年,月,日,時,分,秒,周,并且要具有閏年補償功能,年

20、,月,日,時,分,秒,周能夠正常進位……</p><p>  1.2設(shè)計思路及實現(xiàn)功能</p><p>  整個系統(tǒng)主要由五個模塊組成,包括單片機控制模塊,液晶顯示模塊,時鐘模塊,鍵盤模塊,溫度采集模塊,其系統(tǒng)的整體設(shè)計框圖如圖1-1所示:</p><p>  圖1-1 系統(tǒng)的整體設(shè)計框圖 </p><p>  第二章 系統(tǒng)硬件組成</

21、p><p>  2.1 AT89C51芯片介紹</p><p>  2.1.1.AT89C51簡介</p><p>  AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROM-Flash Programmable and Erasable Read Only Memory)的低電壓、高性能COMS 8位微處理器,俗稱單片機。AT89C51是一種帶2K字節(jié)閃存可編程

22、可擦除只讀存儲器的單片機。單片機的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中。</p><p>  2.1.2.主要性能 圖2-1 AT89C51引腳圖 </p><p

23、>  與MCS-51單片機產(chǎn)品兼容 、8K字節(jié)在系統(tǒng)可編程Flash存儲器、 1000次擦寫周期、 全靜態(tài)操作:0Hz~33Hz 、 三級加密程序存儲器 、 32個可編程I/O口線 、三個16位定時器/計數(shù)器、 八個中斷源 、全雙工UART串行通道、 低功耗空閑和掉電模式 、掉電后中斷可喚醒 、看門狗定時器 、雙數(shù)據(jù)指針、掉電標(biāo)識符。</p><p>  2.1.3.管腳說明</p><

24、p>  1.VCC:供電電壓</p><p><b>  2.GND:接地</b></p><p>  3.XTAL1——振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端 </p><p>  4.XTAL2——振蕩器反

25、相放大器的輸出端</p><p>  5.RST——復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機器周期的高電平時間。</p><p>  6.EA/VPP——片外程序存儲器訪問 允許信號。欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地),如果EA端為高電平(接Vcc端),則CPU則執(zhí)行內(nèi)部程序存儲器中的指令。 </p><

26、;p>  7.P1口,P2口——P1,P2是一組帶內(nèi)部上拉電阻的8位雙向I/O口。運行時通過P1口控制驅(qū)動電路的工作,將數(shù)據(jù)送到數(shù)碼管,顯示相應(yīng)的段碼,為了達到減少功耗或滿足端口對最大電流的限制,應(yīng)加上一限流電阻。P2.0——P2.7口控制數(shù)碼管的位選,使六個數(shù)碼管輪流顯示數(shù)據(jù),等于0時位選三極管導(dǎo)通,等于1 時位選三極管截止。</p><p>  2.2單片機系統(tǒng)的晶振電路</p><

27、p>  晶振就是我們所需要的一種理想結(jié)構(gòu),使用晶振和電容可以組成一個選頻網(wǎng)絡(luò),</p><p>  利用單片機內(nèi)部時鐘,就可以產(chǎn)生一個和晶振頻率一樣的時鐘信號。本設(shè)計的晶振電路圖如下圖2-2所示:</p><p>  圖2-2 晶振電路原理圖</p><p>  2.3單片機的復(fù)位電路</p><p>  復(fù)位電路的目的就是在上電的瞬間

28、提供一個與正常工作狀態(tài)下相反的電平。一般利用電容電壓不能突變的原理,將電容與電阻串聯(lián),上電時刻,電容沒有充電,兩端電壓為零,此時,提供復(fù)位脈沖,電源不斷的給電容充電,直至電容兩端電壓為電源電壓,電路進入正常工作狀態(tài)。其復(fù)位電路如圖右圖2-3所示:</p><p>  圖2-3 復(fù)位電路圖</p><p>  2.4 LCD1602液晶顯示屏</p><p>  16

29、02液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由若干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用。</p><p>  2.4.1引腳功能及接口方式</p><p><b>  管腳功能:</b></p><

30、;p>  1.第1腳:VSS為電源地   </p><p>  2.第2腳:VCC接5V電源正極   </p><p>  3.第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高 </p><p>  4.第4腳:RS為寄存器選擇,高電平1時選擇數(shù)據(jù)寄存器、低電平0時選擇指令寄存器    圖2-4 LCD1602

31、引腳圖</p><p>  5.第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作  </p><p>  6.第6腳:E(或EN)端為使能(enable)端   </p><p>  7.第7~14腳:D0~D7為8位雙向數(shù)據(jù)端   </p><p>  8.第15~16腳:空腳或背燈電源,15腳背光正極,16腳背

32、光負極。</p><p>  1602在本設(shè)計中的接口方式如下圖2-5所示:</p><p>  圖2-5 液晶的接口方式</p><p>  2.4.2 LED1602的內(nèi)部控制器</p><p>  1602液晶模塊內(nèi)部的控制器共有11條控制指令,液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實現(xiàn)的,如表2-1所示為LCD1602

33、控制命令表</p><p>  表2-1 1602控制命令表</p><p>  指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置</p><p>  指令2:光標(biāo)復(fù)位,返回到地址00H位置</p><p>  指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,

34、低電平則無效。</p><p>  指令4:顯示開關(guān)控制。 D:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。</p><p>  指令5:光標(biāo)或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標(biāo)。</p><p>  指令6:功能設(shè)置命令

35、DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。</p><p>  指令7:字符發(fā)生器RAM地址設(shè)置。</p><p>  指令8:DDRAM地址設(shè)置。</p><p>  指令9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時模塊不能接收命令或者

36、數(shù)據(jù),如果為低電平表示不忙。</p><p><b>  指令10:寫數(shù)據(jù)。</b></p><p><b>  指令11:讀數(shù)據(jù)。</b></p><p>  2.5 數(shù)字溫度傳感器DS18B20</p><p>  DS18B20是DALLAS公司生產(chǎn)的一線式數(shù)字溫度傳感器。DS18B20通過一

37、個單線接口發(fā)送或接受信息,因此在中央處理器和DS18B20之間僅需一條連接線(加上地線)。它的測溫范圍為-55~+125℃,并且在-10~+85℃精度為±5℃。</p><p>  2.5.1 DS18B20的引腳及接口方式</p><p><b>  引腳功能:</b></p><p>  1.GND 電壓地 </p>

38、<p>  2.DQ 單數(shù)據(jù)總線 </p><p>  3.VDD 電源電壓 </p><p><b>  4.NC 空引腳 </b></p><p>  如圖2-6為本設(shè)計中DS18B20的接口方式圖:</p><p>  圖2-6 DS18B20接口方式圖</p><p>  2.

39、5.2 DS18B20功能命令集</p><p>  在主機發(fā)出ROM 命令以訪問某個指定的DS18B20, 接著就可以發(fā)出DS18B20 支持的某個功能命令。這些命令允許主機寫入或讀出DS18B20 暫存器,啟動溫度轉(zhuǎn)換以及判斷從機的供電方式。DS18B20功能命令集如表2-2所示:</p><p>  表2-2 DS18B20功能命令集</p><p><

40、b>  注:</b></p><p>  1.在溫度轉(zhuǎn)換和復(fù)制暫存器數(shù)據(jù)至EEPROM 期間,主機必須在單總線上允許強上拉,并且在此期間總線上不能進行其它數(shù)據(jù)傳輸。</p><p>  2.通過發(fā)出復(fù)位脈沖,主機能夠在任何時候中斷數(shù)據(jù)傳輸。</p><p>  3.在復(fù)位脈沖發(fā)出前,必須寫入全部的三個字節(jié)。</p><p>

41、  2.5.3 DS18B20復(fù)位應(yīng)答關(guān)系及讀寫方式</p><p>  DS18B20每一次通信之前必須進行復(fù)位,復(fù)位的時間、等待時間、回應(yīng)時間應(yīng)嚴格按時序編程,圖2-7為DS18B20的復(fù)位應(yīng)答圖:</p><p>  圖2-7 DS18B20復(fù)位及應(yīng)答圖</p><p>  DS18B20的數(shù)據(jù)讀寫是通過時序處理位和命令字來確認信息交換的。寫時序分為寫“0”和

42、寫“1”,時序如圖7。在寫數(shù)據(jù)的前15uS總線需要是被控制器拉置低電平,而后則將是芯片對總線數(shù)據(jù)的采樣時間,采樣時間在15~60uS,采樣時間內(nèi)如果控制器將總線拉高則表示寫“1”,如果控制器將總線拉低則表示寫“0”。每一位的發(fā)送都應(yīng)該有一個至少15uS的低電平起始位,隨后的數(shù)據(jù)“0”或“1”應(yīng)該在45uS內(nèi)完成。整個位的發(fā)送時間應(yīng)該保持在60~120uS,否則不能保證通信的正常。如圖2-8為DS18B20的寫時序圖: </p>

43、;<p><b>  圖2-8寫時序圖</b></p><p>  讀時序時控制時的采樣時間應(yīng)該更加的精確才行,讀數(shù)據(jù)也是必須先由主機產(chǎn)生至少1uS的低電平,表示讀時間的起始。隨后在總線被釋放后的15uS中DS18B20會發(fā)送內(nèi)部數(shù)據(jù)位,這時控制如果發(fā)現(xiàn)總線為高電平表示讀出“1”,如果總線為低電平則表示讀出數(shù)據(jù)“0”。每一位的讀取之前都由控制器加一個起始信號。如圖2-9為DS1

44、8B20的讀時序圖: </p><p><b>  圖2-9讀時序圖</b></p><p>  2.6 時鐘芯片DS1302</p><p>  DS1302 是DALLAS 公司推出的涓流充電時鐘芯片內(nèi)含有一個實時時鐘日歷和31 字節(jié),靜態(tài)RAM 通過簡單的串行接口與單片機進行通信實時時鐘、日歷電路提供秒分時日期月年的信息,每月的天數(shù)和閏年

45、的天數(shù)可自動調(diào)整時鐘操作可通過AM/PM 指示決定采用24 或12 小時格式。DS1302 工作時功耗很低保持數(shù)據(jù)和時鐘信息時功率小于1mW。DS1302 是由DS1202 改進而來增加了以下的特性雙電源管腳用于主電源和備份電源供應(yīng)Vcc1 為可編程涓流充電電源附加七個字節(jié)存儲器它廣泛應(yīng)用于電話傳真便攜式儀器以及電池供電的儀器儀表等產(chǎn)品領(lǐng)域。</p><p>  2.6.1 DS1302 的引腳功能及接口方式

46、 </p><p>  DS1302芯片引腳圖如圖2-10所示:</p><p><b>  圖2-10引腳圖</b></p><p>  1.Vcc1:主電源;Vcc2:備份電源。</p><p>  在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2

47、大于Vcc1+0.2V時,Vcc2給DS1302供電。當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電,上電運行時,在Vcc>2.0V之前,RST必須保持低電平。 </p><p>  SCLK:串行時鐘,輸入。</p><p>  控制數(shù)據(jù)的輸入與輸出,只有在SCLK為低電平時,才能將RST置為高電平。 3.I/O:三線接口時的雙向數(shù)據(jù)線。</p><

48、p>  如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。4.CE:輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。</p><p>  該引腳有兩個功能:第一,CE開始控制字訪問移位寄存器的控制邏輯;其次,CE提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā?lt;/p><p>  5.RST :復(fù)位腳,RST是復(fù)位/片選線。</p><p>  通過

49、把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:一、 RST接通控制邏輯,允許地址/命令序列送入移位寄存器;二、 RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)傳送的方法。6.X1和X2:振蕩源,外接32.768kHz晶振。</p><p>  DS1302接口方式圖如圖2-11所示:</p><p>  圖2-11 DS1302接口方式</p><p>  

50、2.6.2 DS1302 內(nèi)部寄存器</p><p>  DS1302內(nèi)部共有12個寄存器,其中有7個寄存器與日歷、時鐘有關(guān),存放的數(shù)據(jù)位為BCD碼形式,其日歷、時間寄存器及控制字。寄存器內(nèi)容的定義如下表2-3所示:</p><p>  表2-3 寄存器內(nèi)容定義表</p><p>  CH:時鐘暫停位,當(dāng)此位設(shè)置為1時,振蕩器停止,DS1302處于低功率的備份方式;

51、當(dāng)此位設(shè)置為0時,時鐘開始啟動。</p><p>  12/24:小時寄存器的位7定義為12或24小時方式選擇位。當(dāng)它為高電平時,選擇12小時方式。在12小時方式下,位5是AM/PM位,此位為邏輯高電平表示PM。在24小時方式下,位5是第2個10小時位(20-23時)。</p><p>  WP:寫保護位,寫保護寄存器的低7位(D0~D6)置為0,在讀操作時總是讀出0。在對時鐘或RAM進行

52、寫操作之前,位7(WP)必須為0,當(dāng)它為高電平時,寫保護位防止對任何其他寄存器進行寫操作。</p><p>  2.6.3 DS1302數(shù)據(jù)傳送及讀寫時序方式</p><p>  DS1302支持單字節(jié)和多字節(jié)兩種數(shù)據(jù)讀寫方式。單字節(jié)方式是在把控制命令字寫入DS1302之后的8個SCLK周期的上升沿輸入/輸出數(shù)據(jù)字節(jié)。</p><p>  單字節(jié)傳送方式描述如2-1

53、2所示:</p><p>  圖2-12 單字節(jié)傳送方式</p><p>  當(dāng)命令字節(jié)為BE 或BF 時DS1302 工作在多字節(jié)傳送模式8 個時鐘/日歷寄存器從寄存器0 地址開始連續(xù)讀寫從0 位開始的數(shù)據(jù)當(dāng)命令字節(jié)為FE 或FF 時DS1302 工作在多字節(jié)RAM 傳送模式31 個RAM 寄存器從0 地址開始連續(xù)讀寫從0 位開始的數(shù)據(jù)。多字節(jié)傳送方式描述如2-13所示:</p&g

54、t;<p>  圖2-13多字節(jié)傳送方式</p><p>  DS1302數(shù)據(jù)傳送必須按照正確的時序才能完成,其讀寫時序如圖2-14、2-15所示</p><p>  圖2-14 DS1302讀時序</p><p>  圖2-15 DS1302寫時序</p><p><b>  2.7 按鍵部分</b>&l

55、t;/p><p>  本設(shè)計采用的是獨立式按鍵,簡單易于控制,四個按鍵通過編程實現(xiàn)一鍵多能的作用,能對時間進行調(diào)整。</p><p>  本設(shè)計的按鍵電路如圖2-16所示: </p><p>  圖2-16 按鍵電路</p><p>  2.8 MAX232芯片</p><p>  MAX232芯片是美信(MAXIM)公司

56、專為RS-232標(biāo)準串口設(shè)計的單電源電平轉(zhuǎn)換芯片,使用+5v單電源供電。如圖2-17為MAX232的引腳圖:</p><p>  圖2-17 MAX引腳圖</p><p>  MAX232的工作原理是把單片機的TTL電平轉(zhuǎn)化為計算機的RS232電平。TTL電平邏輯1為+5V,邏輯0為0V。RS232電平邏輯1為+3V~+15V,邏輯0為-3V~-15V。也就是說我們所轉(zhuǎn)換的數(shù)據(jù)電平+5V

57、->(+3V~+15V),0V->(-3V~-15V)即可。</p><p>  本設(shè)計MAX232引腳連接圖如圖2-18所示:</p><p>  圖 2-18 MAX232引腳連接圖</p><p>  第三章 系統(tǒng)軟件實現(xiàn)方式</p><p><b>  3.1主程序流程圖</b></p>

58、<p>  主函數(shù)包括三個部分。時間的獲取和轉(zhuǎn)換、溫度的采集及轉(zhuǎn)換和將轉(zhuǎn)換后的數(shù)據(jù)發(fā)送到液晶屏1602上。具體如流程圖3-1所示</p><p>  圖3-1 主函數(shù)流程圖</p><p>  3.2液晶顯示流程圖</p><p>  為使液晶正常顯示,先要對液晶進行初始化,對4位總線和雙行顯示設(shè)置,對光標(biāo)定位及文字位置設(shè)置和設(shè)置開顯示和光標(biāo)作用再清屏。

59、對讀取溫度和時間進行數(shù)據(jù)處理,然后通過寫命令確定溫度和時間在液晶上的顯示位置,最后通過寫數(shù)據(jù)將時間和溫度顯示在液晶屏幕上。如圖3-2為液晶顯示的流程圖。</p><p>  圖3-2 液晶顯示流程圖</p><p>  3.3 時間獲取函數(shù)流程圖</p><p>  在本設(shè)計中分別對年月日,時分秒和星期進行寄存然后處理。從DS1302芯片中讀取年的數(shù)據(jù),將高四位進行

60、ASCII碼的轉(zhuǎn)換,也將低四位也進行ASCII碼的轉(zhuǎn)換,再對月、日、時、分、秒進行類似的處理。如圖3-3為溫度轉(zhuǎn)換的流程圖:</p><p>  圖3-3 時鐘獲取模塊流程圖</p><p>  3.4讀取溫度函數(shù)流程圖</p><p>  溫度讀取函數(shù)首先要對DS18B20進行初始化,再跳過ROM指令,然后啟動溫度轉(zhuǎn)換、延時,再進行DS18B20初始化,再跳過RO

61、M指令,然后讀取溫度,讀取溫度中要對負溫度進行判斷,再進行溫度轉(zhuǎn)換,最后顯示實際溫度,溫度轉(zhuǎn)換流程圖如3-4所示:</p><p>  圖3-4 溫度轉(zhuǎn)換圖</p><p><b>  第四章調(diào)試現(xiàn)象</b></p><p><b>  4.1運行環(huán)境</b></p><p>  此實驗還需要運行環(huán)

62、境,51單片機運行的環(huán)境是keil 51。</p><p>  以下圖表顯示Keil的開發(fā)工具以及它們相互之間的接口。如下圖4-1為程序調(diào)試圖:</p><p>  圖4-1 程序調(diào)試圖示</p><p><b>  4.2程序下載</b></p><p>  STC-ISP 是一款單片機下載編程燒錄軟件,是針對STC系

63、列單片機而設(shè)計的,可下載STC89系列、12C2052 系列和12C5410等系列的STC單片機。如圖4-2為程序下載圖:</p><p>  圖4-2 程序下載圖 </p><p><b>  4.3實驗過程現(xiàn)象</b></p><p>  如下圖4-3,4-4為實驗板和實驗現(xiàn)象:</p><p>  圖4-3

64、實驗板 圖4-4 實驗現(xiàn)象</p><p><b>  結(jié) 論</b></p><p>  通過這次的畢業(yè)設(shè)計,我對單片機的知識有了進一步的了解。大學(xué)生活即將結(jié)束,這次的畢業(yè)設(shè)計是對我們?nèi)晁鶎W(xué)知識的檢驗,以此來提高我們的綜合能力同時也對我們所學(xué)知識進行了有效的鞏固。根據(jù)設(shè)計任務(wù),提供參考書目讓我們自己學(xué)習(xí)自己

65、思考,對于在設(shè)計中遇到的重點與難點通過典型分析和老師的講解,啟發(fā)我們思考幫助我們掌握自學(xué)的方法達到很好的效果。</p><p>  這次畢業(yè)設(shè)計的課題是基于單片機的時間溫度顯示系統(tǒng),具體為設(shè)計一個能在液晶屏幕上顯示當(dāng)前日期和溫度的51單片機控制系統(tǒng)。主要選取的芯片是AT89C51單片機,時鐘芯片DS1302,數(shù)字溫度傳感器DS18B20以及字符液晶LCD1602。剛剛拿到這課題時雖然有學(xué)過單片機但還是有點不知所措

66、,結(jié)果在畫原理圖時就出現(xiàn)了很多的問題經(jīng)過大家的努力原理圖終于完成了接下來就是制板,從未弄過的我們不知從何下手還好有會的同學(xué)教我們幫我們監(jiān)督著在他的幫助下終于完成了板子的制作。接下來更困難的是就是寫程序,雖然學(xué)過C語言可是只是懂一些表面的東西匯編雖然也接觸過但是也是上課老師直接給我們的所以編程是一個困難的過程沒。調(diào)試的時候我們發(fā)現(xiàn)了好多錯誤,先是板子的焊接出現(xiàn)錯誤,再是程序的錯誤,然后我們一遍又一遍的更改。畢業(yè)論文是對我大學(xué)三年所學(xué)基礎(chǔ)知

67、識的專業(yè)知識的一次全面檢驗,通過撰寫論文和畢業(yè)答辯,我覺得對自己的語言組織能力,表達能力,溝通交際能力,運用所學(xué)知識的能力,分析問題并解決問題的能力都有所提高。</p><p>  在此項目中不僅學(xué)到了技能,更重要的是學(xué)到一種團隊精神,一種分享收獲的喜悅,一個小組一個團隊要有統(tǒng)一的目標(biāo)、統(tǒng)一的意見和一個優(yōu)秀的領(lǐng)導(dǎo)人,這樣才能更有效的完成我們前進中遇到的難題和困難。做任何事包括做實驗都不是孤立的而是一個需要和他人交

68、往的過程。這就要求我們要團結(jié),要有合作精神,要注意和他人的溝通,要謙虛,不懂就問。從課題的框架到原理圖的設(shè)計,從芯片的選擇到實物模塊的鏈接都凝聚了我們辛勤的汗水,當(dāng)然我們在這中間也磕磕碰碰走過許多彎路,經(jīng)過多次修改與調(diào)整最終我們才完成現(xiàn)在的硬件電路。只有一次次的失敗才能離成功更近,然而我們往往對成功期望太高才會懼怕失敗。</p><p>  在整個實驗操作和論文完成的過程中,我體會到的是實驗的艱辛和收獲的充實,感

69、受到的是一種堅持不懈、契而不舍的科研精神。實驗現(xiàn)象的無法實現(xiàn)會讓我們著急因為我們自己也不知道所走的路是不是成功的方向,但不嘗試又怎會知道。只有嘗試過努力過我們才會走的更遠。</p><p><b>  致 謝</b></p><p>  在這次畢業(yè)設(shè)計的過程中得到了許多人的幫助也在這次的畢業(yè)設(shè)計中學(xué)到了許多。在此我對學(xué)校、老師以及我的同學(xué)表示由衷的感謝,在畢業(yè)設(shè)計階段

70、上老師給予我們悉心的指導(dǎo),從最初的定題到原理圖的確定再到板子的調(diào)試最后論文的定稿老師都給我們提供了幫助,提供了很多專業(yè)知識。更有在我們制板時給予我們很大幫助的同學(xué),從PCB板的到板子的完成都給了我們很大的建議以及幫助。</p><p>  這次的畢業(yè)設(shè)計也讓我感覺到小組團結(jié)的重要性, 在通過小組同學(xué)的共同努力我們的畢業(yè)設(shè)計終于完成了,這意味著大學(xué)的生活即將結(jié)束。在大學(xué)階段,我在學(xué)習(xí)和思想上都受益匪淺這除了自身的努

71、力外,與老師們、同學(xué)和朋友的關(guān)心、支持和鼓勵使分不開的。感謝幫助過我的同學(xué)們?yōu)槲医鉀Q了不少問題也感謝學(xué)校為我提供了一個良好的環(huán)境。雖然大學(xué)生活將要結(jié)束但我依然會努力前進,在沒有老師指導(dǎo)同學(xué)陪伴下依舊努力學(xué)習(xí)。</p><p>  再次感謝學(xué)院,感謝老師,還要我們的組長及組員!</p><p><b>  參考文獻</b></p><p>  [

72、1] 楊加國.單片機原理與應(yīng)用及C51程序設(shè)計.北京:清華大學(xué)出版社.</p><p>  [2] 何立民.單片機應(yīng)用技術(shù)選編〔M〕,北京:北京航空大學(xué)出版社,1998;</p><p>  [3] 李華.MCS-51系列單片機使用接口技術(shù)〔M〕,北京航空航天大學(xué)出版社,1993;</p><p>  [4] 彭為.單片機典型系統(tǒng)設(shè)計實例精講〔M〕,北京電子

73、工業(yè)出版社,2006;</p><p>  [5] 潘永雄.新編單片機原理與應(yīng)用〔M〕,西安電子科技大學(xué)出版社,2003;</p><p>  [6]秦實宏,徐春輝.MCS-51單片機原理及應(yīng)用[M].武漢:華中科技大學(xué)出版社,2010,(6)。</p><p>  [7江志紅. 51 單片機技術(shù)與應(yīng)用系統(tǒng)開發(fā)案例精選[M]. 北京:清華大學(xué)出版社,2008。&l

74、t;/p><p>  [8]鄒應(yīng)全.51系列單片機原理與實驗教程[M].西安:西安電子科技大學(xué)出版社,2007,(12)。</p><p><b>  附錄</b></p><p><b>  附錄A:原理圖</b></p><p><b>  附錄B:元器件清單</b></

75、p><p><b>  附錄C:設(shè)計程序</b></p><p>  #include<reg51.h></p><p>  #include <intrins.h></p><p>  #define uchar unsigned char</p><p>  #define

76、 uint unsigned int</p><p>  #define AM(X)X</p><p>  #define PM(X)(X+12) // 轉(zhuǎn)成24小時制</p><p>  #define DS1302_SECOND0x80</p><p>  #define DS1302_MINUTE0x

77、82</p><p>  #define DS1302_HOUR0x84 </p><p>  #define DS1302_WEEK0x8A</p><p>  #define DS1302_DAY0x86</p><p>  #define DS1302_MONTH0x88</p><p>  #de

78、fine DS1302_YEAR0x8C</p><p>  #define DS1302_RAM(X)(0xC0+(X)*2) //用于計算 DS1302_RAM 地址的宏 </p><p>  void time0_init(void);</p><p>  void delayx_us(unsigned char i);</p>&

79、lt;p>  void soft_10ms(void);</p><p>  void soft_1ms(void);</p><p>  void delay_2s(void);</p><p>  void Delay_1ms(unsigned char ms);</p><p>  void key_scan(void);<

80、/p><p>  uchar Init_DS18B20(void);</p><p>  uchar ReadBit(void);</p><p>  uchar ReadOneChar(void);</p><p>  void WriteOneChar(unsigned char dat);</p><p>  flo

81、at ReadTemperature(void);</p><p>  void DS1302InputByte(unsigned char d);</p><p>  unsigned char DS1302OutputByte(void);</p><p>  void Write1302(unsigned char ucAddr, unsigned char

82、ucData);</p><p>  unsigned char Read1302(unsigned char ucAddr);</p><p>  void DS1302_SetProtect(bit flag);</p><p>  void DS1302_SetTime(unsigned char Address, unsigned char Value);&

83、lt;/p><p>  void DS1302_GetTime(void);</p><p>  void lcd_wrcmd(unsigned char lcdcmd);</p><p>  void Initial_DS1302(void);</p><p>  void lcd_moveto(char position); </p&g

84、t;<p>  void lcd_wrdata(char lcddata);</p><p>  void lcd_string(char *strpoint);</p><p>  void lcd_init(void);</p><p>  uchar DateTime0[8];</p><p>  uchar DateTi

85、me1[8];</p><p>  sbit DQ=P1^7;//定義通信端口 </p><p>  sbit DS1302_CLK=P3^4; //實時時鐘時鐘線引腳 </p><p>  sbit DS1302_IO=P3^5; //實時時鐘數(shù)據(jù)線引腳 </p><p>

86、  sbit DS1302_RST=P3^7; //實時時鐘復(fù)位線引腳</p><p>  sbit ACC0=ACC^0;</p><p>  sbit ACC7=ACC^7;</p><p>  sbit dc=P2^1; //RS </p><p>  sbit rw=P2^

87、2; //R/W </p><p>  sbit cs=P2^3; //E </p><p>  sfr lcdbus=0x80; //lcdbus P0</p><p>  sbit a=P2^0;</p><p>  uchar T[5];</p><p>  uch

88、ar Week ;</p><p>  unsigned char M;//判斷正負標(biāo)志位</p><p>  unsigned char FLAG=0;</p><p>  sbit key_mode=P1^3;</p><p>  sbit key_plus=P1^2;</p><p>  sbit key_mi

89、nus=P1^1;</p><p>  sbit key_enter=P1^0;</p><p>  unsigned char TimeCount,Time_250ms;</p><p>  ////////////////////////////////////</p><p>  void delayx_us(unsigned char

90、 i) //11*x+12</p><p><b>  {</b></p><p>  while(i--); </p><p><b>  }</b></p><p>  void delay1_us() // 1.45us</p><p>  {_nop

91、_();_nop_();_nop_();</p><p>  _nop_();_nop_();_nop_();</p><p><b>  }</b></p><p>  ////////////////////////////////////</p><p>  void soft_10ms(void)</p&g

92、t;<p>  {unsigned int i; </p><p>  for(i=0;i<16000;i++); </p><p><b>  } </b></p><p>  void soft_1ms(void)</p><p>  {unsigned int i; </p>&l

93、t;p>  for(i=0;i<1600;i++); </p><p><b>  } </b></p><p>  void delay_2s(void)</p><p>  {unsigned char i;</p><p>  for(i=0;i<20;i++)</p><p&

94、gt;  soft_10ms();</p><p><b>  }</b></p><p>  void Delay_1ms(unsigned char ms)</p><p><b>  {</b></p><p>  unsigned int i;</p><p>  w

95、hile(ms != 0)</p><p><b>  {</b></p><p>  for(i = 0;i < 980;i++)</p><p>  {_nop_();_nop_();_nop_(); _nop_();}</p><p><b>  ms--;</b></p>

96、<p><b>  }</b></p><p><b>  }</b></p><p>  unsigned char second,minute,hour,day,month,year;</p><p>  unsigned char stop_ds1302_flag = 0;</p><

97、p>  unsigned char mode;</p><p>  void TOBCD(void)</p><p><b>  {</b></p><p>  unsigned char tempyear1 = 0,tempyear2 = 0;</p><p>  unsigned char tempmonth1

98、 = 0,tempmonth2 = 0;</p><p>  unsigned char tempday1 = 0,tempday2 = 0;</p><p>  unsigned char temphour1 = 0,temphour2 = 0;</p><p>  unsigned char tempminute1 = 0,tempminute2 = 0;<

99、;/p><p>  unsigned char tempsecond1 = 0,tempsecond2 = 0;</p><p>  tempyear1 = year / 10;</p><p>  tempyear2 = year % 10;</p><p>  year = (tempyear1<<4) + tempyear2;

100、</p><p>  tempmonth1 = month / 10;</p><p>  tempmonth2 = month % 10;</p><p>  month = (tempmonth1<<4) + tempmonth2;</p><p>  tempday1 = day / 10;</p><

101、p>  tempday2 = day % 10;</p><p>  day = (tempday1<<4) + tempday2;</p><p>  temphour1 = hour / 10;</p><p>  temphour2 = hour % 10;</p><p>  hour = (temphour1&

102、lt;<4) + temphour2;</p><p>  tempminute1 = minute / 10;</p><p>  tempminute2 = minute % 10;</p><p>  minute = (tempminute1<<4) + tempminute2;</p><p>  temps

103、econd1 = second / 10;</p><p>  tempsecond2 = second % 10;</p><p>  second = (tempsecond1<<4) + tempsecond2;</p><p><b>  }</b></p><p>  unsigned char

104、 Mode_Sta;</p><p>  ////////////////////////////.///////</p><p>  void key_scan(void)</p><p><b>  {</b></p><p>  unsigned char i;</p><p>  if(k

105、ey_enter==0) //確認鍵</p><p><b>  {</b></p><p>  if(stop_ds1302_flag == 0)</p><p><b>  {</b></p><p><b>  return;</b></p>

106、<p><b>  }</b></p><p>  Delay_1ms(10);</p><p>  if(key_enter==0)</p><p><b>  {</b></p><p>  while(!key_enter);</p><p><b&

107、gt;  mode=0;</b></p><p><b>  TOBCD();</b></p><p>  Write1302(0x8E,0x00);</p><p>  for(i = 0; i < 6; i++)</p><p><b>  {</b></p>&

108、lt;p>  if(Mode_Sta & 0x01)</p><p><b>  {</b></p><p><b>  switch(i)</b></p><p><b>  {</b></p><p>  case 5:Write1302(DS1302_YEA

109、R,year);mode=0;break;</p><p>  case 4:Write1302(DS1302_MONTH,month);mode=0;break;</p><p>  case 3:Write1302(DS1302_DAY,day);mode=0;break;</p><p>  case 2:Write1302(DS1302_HOUR,hour)

110、;mode=0;break;</p><p>  case 1:Write1302(DS1302_MINUTE,minute);mode=0;break;</p><p>  case 0:Write1302(DS1302_SECOND,second);mode=0;break;</p><p>  default:mode=0;break;</p>

111、;<p><b>  } </b></p><p><b>  }</b></p><p>  Mode_Sta >>= 1;</p><p><b>  }</b></p><p>  Mode_Sta = 0;</p><p&

112、gt;  Write1302(0x8E,0x80);</p><p>  stop_ds1302_flag=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(key_mode==0)</p><p><b&g

113、t;  {</b></p><p>  Delay_1ms(10);</p><p>  if(key_mode==0)</p><p><b>  {</b></p><p>  while(!key_mode);</p><p>  if(mode == 0)</p>

114、<p><b>  {</b></p><p>  DS1302_GetTime();</p><p>  year = DateTime1[6] * 10 + DateTime1[7];</p><p>  month = DateTime1[3] * 10 + DateTime1[4];</p><p&

115、gt;  day = DateTime1[0] * 10 + DateTime1[1];</p><p>  hour = DateTime0[6] * 10 + DateTime1[7];</p><p>  minute = DateTime0[3] * 10 + DateTime1[4];</p><p>  second = DateTime0[0

116、] * 10 + DateTime1[1];</p><p>  mode = 1; </p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  m

117、ode++;</b></p><p>  if(mode>6)</p><p><b>  mode=1;</b></p><p><b>  }</b></p><p>  stop_ds1302_flag=1;//不讀取ds1302的值</p><

118、;p><b>  }</b></p><p><b>  }</b></p><p>  // switch(mode)</p><p><b>  // {</b></p><p>  // case 1: lcd_wrcmd(0x94); //sec

119、ond</p><p>  // lcd_wrcmd(0x0f);</p><p>  // break;</p><p>  // case 2: lcd_wrcmd(0x92); //minute</p><p>  // lcd_wrcmd(0x0f);</p><p

120、>  // break;</p><p>  // case 3: lcd_wrcmd(0x90); //hour</p><p>  // lcd_wrcmd(0x0f);</p><p>  // break;</p><p>  // case 4: lcd_wrcmd(0

121、x85); //day</p><p>  // lcd_wrcmd(0x0f);</p><p>  // break;</p><p>  // case 5: lcd_wrcmd(0x83); //month</p><p>  // lcd_wrcmd(0x0f);</p&

溫馨提示

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

評論

0/150

提交評論