電子信息工程畢業(yè)論文 車載可測溫式電子萬年歷_第1頁
已閱讀1頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  x x x x 大 學</p><p>  畢 業(yè) 論 文</p><p>  論文題目: 車載可測溫式電子萬年歷 </p><p>  學生姓名: xx </p><p>  指導教師: xxx

2、 </p><p>  所學專業(yè): 電子信息工程 </p><p><b>  2009年6月</b></p><p>  Chengdong College of Northeast</p><p>  Agricultural University</p>&

3、lt;p><b>  Thesis</b></p><p>  Thesis topic: The Vehicle Carries Temperature Measurement Type Electron Ten Thousand Calendars </p><p>  Student name:

4、 </p><p>  Tutor name: </p><p>  Specialty: Electronic And Information Engineering </p>&l

5、t;p><b>  June 2009</b></p><p>  車載可測溫式電子萬年歷</p><p><b>  摘 要</b></p><p>  隨著電子技術的迅速發(fā)展,特別是隨著大規(guī)模集成電路的出現(xiàn),給人類生活帶來了根本性的改變。尤其是單片機技術的應用產(chǎn)品已經(jīng)走進了千家萬戶,如電子萬年歷的出現(xiàn)給人們的生

6、活帶來了諸多方便。</p><p>  本文描述了系統(tǒng)硬件工作原理,并附以系統(tǒng)結(jié)構(gòu)框圖加以說明,著重介紹了本系統(tǒng)所應用的各硬件及其接口技術和各硬件模塊的功能及工作過程;其次,詳細闡述了程序的各個模塊和實現(xiàn)過程。本設計以數(shù)字集成電路技術為基礎,單片機技術為核心。編寫的主導思想軟硬件相結(jié)合,以硬件為基礎,來進行各功能模塊的編寫。</p><p>  本系統(tǒng)為了便于擴展和更改,軟件的設計采用模塊

7、化結(jié)構(gòu),使程序設計的邏輯關系更加簡潔明了。系統(tǒng)通過傳感器采集溫度。用四個數(shù)碼管顯示數(shù)據(jù),可以顯示時間和溫度,也可以通過按鍵調(diào)整時間。</p><p>  關鍵詞:電子萬年歷;單片機;時鐘芯片;溫度傳感器;數(shù)碼管顯示</p><p>  The Vehicle Carries Temperature Measurement Type Electron Ten Thousand Calenda

8、rs</p><p><b>  Abstract</b></p><p>  Along with electronic technology's rapidly expand, specially along with large scale integrated circuit's appearance, lived for the human

9、ity has brought the fundamental change. Especially the monolithic integrated circuit technology's application product already entered everyone, if the electronic ten thousand calendar's appearances have brought c

10、onveniently many for people's life.</p><p>  This article described the system hardware principle of work, and attaches by the system structure diagram explained that introduced emphatically this system

11、applies various hardware and connection technology and various hardware module function and work process; Next, elaborated in detail procedure each module and realizes the process. This design take the digital integrated

12、 circuit technology as the foundation, the monolithic integrated circuit technology is a core. The compilation guiding ide</p><p>  This system for ease of the expansion and the change, software's design

13、 uses the modular structure, causes the programming the logical relation even more simple and brief. System through two group of nixietube demonstration data. May the tell time and the week, after pressing down cuts the

14、key, may the show date.</p><p>  Key word:Electronic ten thousand calendars; Monolithic integrated circuit; Clock chip; Temperature sensor ;Nixietube demonstration</p><p><b>  目 錄</b&g

15、t;</p><p><b>  摘 要I</b></p><p>  AbstractII</p><p><b>  前 言1</b></p><p><b>  1 方案選擇2</b></p><p>  1.1 整機設計方案選擇2&

16、lt;/p><p>  1.2 單片機芯片的選擇2</p><p>  1.3 時鐘芯片的選擇2</p><p>  1.4 溫度傳感器的選擇3</p><p><b>  2 硬件設計4</b></p><p>  2.1 電路組成框圖4</p><p>  2.2

17、 系統(tǒng)硬件概述及整機工作原理4</p><p>  2.3 各芯片介紹6</p><p>  2.3.1 AT89S51單片機6</p><p>  2.3.2 DS12887時鐘芯片8</p><p>  2.3.2.1 DS12887主要功能簡介9</p><p>  2.3.2.2 DS12887引腳說

18、明9</p><p>  2.3.2.3 時間,日歷和定鬧單元10</p><p>  2.3.2.4 DS12887的控制寄存器11</p><p>  2.3.3 DS18B20溫度傳感器12</p><p>  2.4 數(shù)碼管顯示電路設計13</p><p>  2.4.1 顯示模塊的選擇與方案論證1

19、3</p><p>  2.4.2 LED顯示器工作原理13</p><p>  3 系統(tǒng)軟件設計15</p><p>  3.1 系統(tǒng)功能模塊及主程序流程圖15</p><p>  3.2 DS12887初始化程序設計16</p><p>  3.3 顯示子程序設計16</p><p&

20、gt;  3.4 時間調(diào)整程序設計17</p><p>  3.5 溫度采集程序設計22</p><p>  3.5.1 DS18B20的初始化22</p><p>  3.5.2 DS18B20的寫操作22</p><p>  3.5.3 DS18B20的讀操作22</p><p>  3.6 溫度值與時間

21、的顯示25</p><p>  4 電路安裝與調(diào)試27</p><p>  4.1 電路安裝27</p><p>  4.2 電路調(diào)試27</p><p>  4.2.1 硬件調(diào)試27</p><p>  4.2.2 軟件調(diào)試27</p><p>  4.2.3 綜合調(diào)試28<

22、;/p><p><b>  5 結(jié) 論29</b></p><p>  參 考 文 獻30</p><p><b>  致  謝31</b></p><p><b>  前 言</b></p><p>  隨著人們生活水平的提高,家庭中的時鐘也在悄悄

23、地發(fā)生變化。早期的機械式小型時鐘大部分被現(xiàn)代的電子時鐘所代替。大大小小的時鐘在人們的生活中發(fā)揮著重要的作用。</p><p>  在清朝的時候,出現(xiàn)了第一批時鐘,是從外國引進的。它是一種掛在脖子上的懷表,表盤是圓形,帶一個蓋子,打開它就可以看時間。表盤上有一個環(huán),環(huán)中有一條鏈子,就是通過它掛在脖子上,而且表的樣式也只有這一種。盡管這樣,也是只有皇親國戚、鄉(xiāng)紳官吏和留過洋的人才能擁有??梢哉f在那時它可是一個罕見的寶

24、貝,所以,它的價值可想而知,普通人是很難擁有的。那時的老百姓只有靠看日頭來估算時間。</p><p>  接著,我們不斷的從外國引進他們先進的技術,所以,時鐘的生產(chǎn)和樣式也有了許多的提高,市場上涌現(xiàn)了許多各式各樣的時鐘。這些時鐘,不僅質(zhì)量和款式不同,還有了各種品牌。從質(zhì)量上分,有機械的,石英的等等。從款式上分,有男式的和女式的。不過有一點相同,它們大多是帶在手腕上的。與清朝時比,已經(jīng)有了很大的進步。</p&

25、gt;<p>  慢慢地,隨著科學的進步,技術水平的提高,到現(xiàn)在,時鐘可以說是樣式繁多,款式新穎。不提它的質(zhì)量,僅僅它的款式就可以讓消費者眼花繚亂,難以選擇?,F(xiàn)在的時鐘,不僅分男女樣式,還出現(xiàn)了情侶表。生產(chǎn)者還為盲人著想,專門生產(chǎn)了盲人使用的手表。為了追求時尚,還出現(xiàn)了還出現(xiàn)了許多項鏈式的手表、手鏈式的手表、戒指式的手表等等。為了家居擺設,出現(xiàn)了立式的和掛式的等。還有,就是為了提醒我們不忘記某些事,而生產(chǎn)了鬧鐘等。將來隨著

26、時鐘的發(fā)展,它將給人們帶來更大的方便。</p><p>  隨著科學技術的飛速發(fā)展,單片機以其卓越的性能,在各個領域中得到了廣泛的應用。一方面向著高速、智能化的巨型機方向發(fā)展,另一方面向著嵌入式微型機的方向發(fā)展。其中,單片機其性能和容量不斷提高,而價格不斷下降的趨勢,使其在社會各個領域仍至家庭生活中發(fā)揮著越來越大的作用。</p><p>  現(xiàn)如今在電子系統(tǒng)非常廣泛的應用領域內(nèi),為使人們用

27、最方便快捷的方式享受生活,設計人員能在更小的空間內(nèi)實現(xiàn)更多功能,從而提高系統(tǒng)可靠性和速度。如銀行﹑公交車﹑酒店等公共場所到處可見的電子萬年歷。讓人們對生活方有了一個更便捷﹑更舒適的感覺,本文為對這種萬年歷設計的介紹和說明。</p><p><b>  1 方案選擇</b></p><p>  1.1 整機設計方案選擇</p><p>  本文主

28、要講述的是電子萬年歷的設計與實現(xiàn),此設計實現(xiàn)主要有兩種方案:一是由數(shù)字電路來實現(xiàn);二是由單片機編程控制來實現(xiàn)。選用數(shù)字電路雖然硬件連接簡單不需要軟件編程,但因為數(shù)字電路實現(xiàn)必須要有移位寄存器對字符數(shù)據(jù)進行存儲,然后串行輸入到顯示數(shù)碼管上,不但如此,而且需要很大一部分的擴展電路才能實現(xiàn),且設計出的電路的靈活性差、不易調(diào)試、成本高等缺點,所以不選用此方案。</p><p>  此次設計是基于單片機來實現(xiàn)的。由于單片機

29、具有體積小、重量輕、價格便宜、功耗低、控制功能強及運算速度快等特點,因而在國民經(jīng)濟建設、軍事及家用電器等諸多領域起到了舉足輕重的作用。編程語言采用C語言,由此設計出的電子萬年歷具有操作靈活便攜等諸多優(yōu)點。</p><p>  1.2 單片機芯片的選擇</p><p>  方案一:采用89C51芯片作為硬件核心,采用Flash ROM,內(nèi)部具有4KB ROM 存儲空間,能于3V的超低壓工作,

30、而且與MCS-51系列單片機完全兼容,但是運用于電路設計中時由于不具備ISP在線編程技術, 當在對電路進行調(diào)試時,由于程序的錯誤修改或?qū)Τ绦虻男略龉δ苄枰獰氤绦驎r,對芯片的多次拔插會對芯片造成一定的損壞。</p><p>  方案二:采用89S51芯片作為硬件核,AT89S51 是一個低功耗,高性能CMOS 8位單片機,片內(nèi)含4k Bytes ISP(In-system programmable)的可反復擦寫1

31、000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89S51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案,再者因為AT89S51為當今市場上主流產(chǎn)品,其價格也比較低廉,所以選擇此方案。</p><p>  1.3 時鐘芯片的選擇<

32、/p><p>  方案一:直接采用單片機定時計數(shù)器提供秒信號,使用程序?qū)崿F(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。所以不采用此方案。</p><p>  方案二:采用DS12887時鐘芯片實現(xiàn)時鐘,DS12887芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),而且精度高,位的RAM做為數(shù)據(jù)暫存

33、區(qū),另外其在沒有外部電源的情況下可工作10年自帶晶體震蕩器及電池。其可以計算到2100年前的秒、分、小時、星期、日期、月、年七種日歷信息。</p><p>  1.4 溫度傳感器的選擇</p><p>  方案一:采用AD590為溫度傳感器,AD590雖然有價格低、精度高等優(yōu)點,但是它還需要外圍的模擬轉(zhuǎn)數(shù)字電路,其測溫點數(shù)量也較少,用起來占空間大也比較麻煩。</p><

34、p>  方案二:采用DS18B20測溫,DS18B20采用單線接口方式,與微處理器連接時僅需要一條線即可實現(xiàn)雙向通訊;其適應電壓范圍更寬;支持多點組網(wǎng)測溫;在使用中不需任何外圍元件,全部傳感元件及轉(zhuǎn)換電路都集成在一只如三極管的集成電路內(nèi);價格也較低;DS18B20缺點是測溫范圍比較小,范圍為-55度到+125度,但是用在本設計也 足夠了,所以采用此方案。</p><p><b>  2 硬件設計

35、</b></p><p>  2.1 電路組成框圖</p><p>  該電路主要由時鐘芯片、CPU(AT89S51)、鍵盤、驅(qū)動電路、溫度采集、顯示電路組成。其中鍵盤調(diào)整可以對顯示的內(nèi)容進行切換及對時間進行調(diào)整??驁D如圖2-1所示:</p><p>  圖2-1 電子萬年歷方框圖</p><p>  2.2 系統(tǒng)硬件概述及整機

36、工作原理</p><p>  此設計CPU采用低功耗,高性能CMOS 8位單片機AT89S51;時鐘芯片用的是美國達接斯半導體公司(Dallas)推出的串行接口實時時鐘芯片DS12887,采用CMOS技術制成,具有內(nèi)部晶振和時鐘芯片備份鋰電池;驅(qū)動電路用的是ULN2003芯片;LED顯示部分用的是四個共陰型數(shù)碼管,顯示采用動態(tài)掃描并行輸出方式。鍵盤有三個分別為位調(diào)整鍵,加調(diào)整鍵,減調(diào)整鍵。整機工作原理是先初始化D

37、S12887時鐘芯片接著CPU從時鐘芯片讀取時間及日期信息又從溫度傳感器采集溫度送驅(qū)動電路進而送LED顯示,其中鍵盤調(diào)整可以對時間進行調(diào)整,對時間進行調(diào)整時其更改值寫入DS12887,再允許DS12887時間更新并讀出時間送顯示,溫度值和時間輪流交替顯示在數(shù)碼管上。電路圖如圖2-2所示。</p><p>  圖2-2 整機電路圖</p><p><b>  2.3 各芯片介紹&

38、lt;/b></p><p>  2.3.1 AT89S51單片機</p><p>  AT89S51是一個低功耗,,高性能CMOS 8位單片機,片內(nèi)含4k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統(tǒng)及80C51引腳結(jié)構(gòu),功能強大

39、的微型計算機的AT89S51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。其引腳排列如2-3所示。</p><p>  圖2-3 AT89S51引腳圖</p><p>  AT89S51具有如下特點:40個引腳,128 bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,片內(nèi)

40、時鐘振蕩器。此外,AT89S51設計和配置了振蕩頻率可為0Hz并可通過軟件設置省電模式??臻e模式下,CPU暫停工作,而RAM定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復位。</p><p><b>  管腳說明:</b></p><p>  40個引腳按其功能來分,可分為三個部分:</p&

41、gt;<p>  電源及時鐘引腳 控制引腳 I/O口引腳</p><p>  (1)電源及時鐘引腳 </p><p>  電源引腳接入單片機的工作電源。 </p><p>  VCC(40)引腳:接+5V電源。 </p><p>

42、  VSS(20)引腳:接地。 </p><p>  兩個時鐘引腳XTAL0、XTAL1為單片機提供了時鐘控制信號。</p><p>  XTAL0(18腳):接外部晶體的一個引腳。</p><p>  XTAL1(19腳):接外部晶體的另一端。</p><p><b> ?。?)控制引腳</b></p>

43、;<p>  RST是復位信號的輸入端,高電平有效。當單片機正常工作時,在此引腳加上持續(xù)時間大于兩個機器周期(24個時鐘振蕩周期)的高電平時,就可完成復位操作。在單片機正常工作時,復位端應小于或等于0.5V的低電平。</p><p>  PSEN(29腳)程序存儲器允許輸出控制端。在單片機訪問外部程序存儲器時,此引腳輸出脈沖負跳沿作為外部程序存儲器的選通信號。</p><p>

44、;  ALE(30腳)ALE為地址鎖存允許信號,當單片機上電正常工作后,ALE引腳不斷輸出正脈沖信號。當單片機訪問外部存儲器時,ALE輸出信號的負跳沿用作單片機發(fā)出的低8位地址的鎖存控制信號。即使不訪問外部鎖存器,ALE端仍有正脈沖信號輸出,頻率為時鐘振蕩頻率fOSC的1/6。</p><p>  EA(31腳)功能為內(nèi)/外程序存儲器選擇控制端。當EA腳為高電平時,單片機訪問片內(nèi)程序存儲器,當EA腳為低電平時,單

45、片機則只訪問外部程序存儲器。所以此次設計,須把單片機的31腳接到高電平。</p><p><b>  (3)I/O引腳</b></p><p>  P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下,P0具有

46、內(nèi)部上拉電阻。在flash編程時,P0口也用來接收指令字節(jié);在程序校驗時,輸出指令字節(jié)。程序校驗時,需要外部上拉電阻。</p><p>  P1 口:P1 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P1 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1

47、.2分別作定時器/計數(shù)器2的外部計數(shù)輸入。在flash編程和校驗時,P1口接收低8位地址字節(jié)。</p><p>  P1 口引腳號的第二功能如表2-1所示。</p><p>  表2-1 P1口引腳的第二功能</p><p>  P2 口:P2 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動4 個TTL 邏輯電平。對P2 端口寫“1”時,內(nèi)部

48、上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR)時,P2 口送出高八位地址。在這種應用中,P2 口使用很強的內(nèi)部上拉發(fā)送1。在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內(nèi)容在flash編程和校驗時,P2口也接收高8位地址字節(jié)和一些控制信號。</

49、p><p>  P3 口:P3 口是一個具有內(nèi)部上拉電阻的8 位雙向I/O 口,對P3 端口寫“1”時,內(nèi)部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,在flash編程和校驗時,P3口也接收一些控制信號。</p><p>  P3 口引腳號的第二功能如表2-2所示。&l

50、t;/p><p>  表2-2 P3 口引腳號的第二功能</p><p>  2.3.2 DS12887時鐘芯片</p><p>  圖2-4 DS12887引腳圖</p><p>  DS12887是美國達接斯半導體公司(Dallas)最新推出的串行接口實時時鐘芯片,采用CMOS技術制成,具有內(nèi)部晶振和時鐘芯片備份鋰電池,同時它與目前IBM A

51、T計算機常用的時鐘芯片MC146818B和DS1287管腳兼容,可直接替換。DS12887芯片具有微功耗,外圍接口簡單,精度高,工作穩(wěn)定可靠等優(yōu)點,可廣泛用于各種需要較高精度的實時時鐘系統(tǒng)中。</p><p>  2.3.2.1 DS12887主要功能簡介</p><p> ?。?)內(nèi)含一個鋰電池,斷電后運行十年以上不丟失數(shù)據(jù)。</p><p> ?。?)計秒,分,

52、時,天,星期,日,月,年,并有閏年補嘗功能。</p><p> ?。?)二進制數(shù)碼或BCD碼表示時間,日歷和定鬧。</p><p> ?。?)12小時或24小時制,12小時時鐘模式帶有PM和AM指示,有夏令時功能。</p><p> ?。?)Motorola和Intel總線時序選擇。</p><p>  (6)有128個字節(jié)RAM單元與軟件接

53、口,其中14個字節(jié)作為時鐘和控制寄存器,114字節(jié)為通用RAM,所有RAM單元數(shù)據(jù)都具有掉電保護功能。</p><p> ?。?)可編程方波信號輸出。</p><p> ?。?)中斷信號輸出(IRQ)和總線兼容,定鬧中斷,周期性中斷、時鐘更新周期結(jié)束中斷可分別由軟件屏蔽,也可分別進行測試。</p><p>  2.3.2.2 DS12887引腳說明</p>

54、;<p>  DS12887內(nèi)部由振蕩電路,分頻電路,周期中斷/方波選擇電路,14字節(jié)時鐘和控制單元,114字節(jié)用戶非易失RAM,十進制/二進制累加器,總線接口電路,電源開關寫保護單元和內(nèi)部鋰電池等部分組成。</p><p>  上電/掉電:當VCC高于4.25V 200ms后,芯片可以被外部程序操作;當VCC低于4.25V時,芯片 處于寫保護狀態(tài)(所有的輸入均無效),同時所有輸出呈高阻狀態(tài);當VC

55、C低于3V時,芯片將自動把供電方式切換為由內(nèi)部電池供電。</p><p>  Vcc:直流電源+5V電壓。當5V電壓在正常范圍內(nèi)時,數(shù)據(jù)可讀寫;當Vcc低于4.25V,讀寫被禁止,計時功能仍繼續(xù);當Vcc下降到3V以下時,RAM和計時器供電被切換到內(nèi)部鋰電池。</p><p>  MOT(模式選擇):MOT引腳接到Vcc時,選擇MOTOROLA時序,當接到GND時,選擇Intel時序。&l

56、t;/p><p>  SQW(方波信號輸出):SQW引腳能從實時鐘內(nèi)部15級分頻器的13個抽頭中選擇一個作為輸出信號,其輸出頻率可通過對寄存器A編程改變。</p><p>  AD0-AD7(雙向地址/數(shù)據(jù)復用線):總線接口,可與Motorola微機系列和Intel微機系列接口。</p><p>  AS(地址選通輸入):用于實現(xiàn)信號分離,在AD/ALE的下降沿把地址鎖

57、入DS12887。</p><p>  DS(數(shù)據(jù)選通或讀輸入):DS/RD引腳有兩種操作模式,取決于MOT引腳的電平,當使用Motorola時序時,DS是一正脈沖,出現(xiàn)在總線周期的后段,稱為數(shù)據(jù)選通;在讀周期,DS指示DS12887驅(qū)動雙向總線的時刻;在寫周期,DS的后沿使DS12887鎖存寫數(shù)據(jù)。選擇Intel時序時,DS稱作(RD),RD與典型存貯器的允許信號(OE)的定義相同。</p>&l

58、t;p>  R/W (讀/寫輸入):R/W引腳也有兩種操作模式。選Motorola時序時,R/W是低電平信號時,指示當前周期是讀或?qū)懼芷?,DS為高電平時,R/W高電平指示讀周期,R/W信號一低電平信號,稱為WR。在此模式下,R/W引腳與通用RAM的寫允許信號(WE)的含義相同。</p><p>  CS(片選輸入):在訪問DS12887的總線周期內(nèi),片選信號必須保持為低。</p><p&

59、gt;  IRQ(中斷申請輸入):低電平有效,可作微處理的中斷輸入。沒有中斷的條件滿足時,IRQ處于高阻態(tài)。IRQ線是漏極開路輸入,要求外接上接電阻。</p><p>  RESET(復位輸出):當該腳保持低電平時間大于200ms,保證DS12887有效復位。</p><p>  另外DS12887的地址由114字節(jié)的用戶RAM存放。10字節(jié)的存放實時時鐘時間,日歷和定鬧RAM及用于控制和

60、狀態(tài)的4字節(jié)特殊寄存器組成,幾乎所有的128個字節(jié)直接讀寫。RTC 實時時鐘加RAM向處理器提供三個獨立的,自動的中斷源。定鬧中斷的發(fā)生率可編程,從每秒一次到每天一次,周期性中斷的發(fā)生率可從500ms到122s選擇。更新結(jié)束中斷用于向程序指示一個更新周期完成。中斷控制和狀態(tài)位在寄存器B和C中。</p><p>  2.3.2.3 時間,日歷和定鬧單元</p><p>  時間和日歷信息通過

61、讀相應的內(nèi)存字節(jié)來獲取,時間,日歷和定鬧通過寫相應的內(nèi)存字節(jié)設置或初始化,其字節(jié)內(nèi)容可以是二進制或BCD形式。時間可選擇12小時制或24小時制,當選擇12小時制時,小時字節(jié)的高門為邏輯“1”代表PM。時間,日歷和定鬧字節(jié)是雙緩沖的,總是可訪問的。每秒鐘這10個字節(jié)走時1 秒,檢查一次定鬧條件,如在更新時,讀時間和日歷可能引起錯誤,三個字節(jié)的定鬧字節(jié)有兩種使用方法。第一種,當定鬧時間寫入相應時,分,秒,定鬧單元,在定允許鬧位置高的條件下,

62、定鬧中斷每天準時起動一次。第二種,在三個定鬧字節(jié)中插入一個或多個不關心碼。不關心碼是任意從O0到FF的16進制數(shù)。當小時字節(jié)的不關心碼位置位時,定鬧每小時發(fā)生一次;同樣,當小時和分鐘定鬧字節(jié)置不關心位時,每分鐘定鬧一次;當三個字節(jié)都置不關心位時,每秒中斷一次。</p><p>  2.3.2.4 DS12887的控制寄存器</p><p>  DS12887有四個控制寄存器,他們可以在任何

63、時候讀寫。</p><p><b> ?。?)寄存器0AH</b></p><p>  表2-3 寄存器0AH中的位</p><p>  UIP:更新周期進行標志位,UIP = 1時,芯片正處于或?qū)㈤_始新周期,此期間不允許讀寫時標寄存器。</p><p>  DV2~DV0:為010時晶振工作,其他組合時晶振停止。 &l

64、t;/p><p>  RS3~RS0:中斷周期時間和SQW輸出頻率選擇位。</p><p><b> ?。?)寄存器0BH</b></p><p>  表2-4 寄存器0BH中的位</p><p>  SET:為1時禁止更新。為0時正常。 </p><p>  PIE:為1時周期中斷允許。</

65、p><p>  AIE:為1時警報中斷允許。</p><p>  UIE:為1時更新結(jié)束中斷允許。</p><p>  SQWE:為1時方波輸出允許。</p><p>  DM:為0時時間為BCD碼,為1時為二進制。</p><p>  24/12:為1時是24小時進制。為0時是12小時進制。</p><

66、;p><b>  DSE:置0。</b></p><p><b> ?。?)寄存器0CH</b></p><p>  表2-5寄存器0CH中的位</p><p>  IRQF:中斷申請標志。</p><p>  PF:周期中斷標志。</p><p>  AF:警報中斷標

67、志。</p><p>  UF:更新結(jié)束中斷標志。</p><p><b> ?。?)寄存器0DH</b></p><p>  表2-6寄存器0DH中的位</p><p>  VRT:為0時表示內(nèi)部鋰電池耗盡。</p><p>  2.3.3 DS18B20溫度傳感器</p><

68、;p>  DS18B20的主要特性</p><p> ?。?)適應電壓范圍更寬,電壓范圍:3.0~5.5V,在寄生電源方式下可由數(shù)據(jù)線供電?!?(2)獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊?!?(3)DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫。  (4)DS18B20在使用中不需

69、要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。  (5)溫范圍-55℃~+125℃,在-10~+85℃時精度為±0.5℃?!?(6)可編程的分辨率為9~12位,對應的可分辨溫度分別為0.5℃、0.25℃、0.125℃和0.0625℃,可實現(xiàn)高精度測溫?!?(7)在9位分辨率時最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快?!?(8)

70、測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。  (9)負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。</p><p>  其引腳圖和功能表如圖2-5所示。</p><p>  圖2-5 DS18B20引腳圖及功能</p><p>  2.4 數(shù)碼管顯示電路設

71、計</p><p>  2.4.1 顯示模塊的選擇與方案論證</p><p> ?。?)采用LED液晶顯示屏,液晶顯示屏的顯示功能強大,可顯示大量文字、圖形、顯示多樣,清晰可見,但是價格昂貴,需要的接口線多,所以在此設計中不采用LED液晶顯示屏。</p><p>  (2)采用點陣式數(shù)碼管顯示,點陣式數(shù)碼管是由八行八列的發(fā)光二極管組成,對于顯示文字比較適合,如采用在

72、顯示數(shù)字顯得太浪費,且價格也相對較高,所以也不用此種作為顯示。</p><p> ?。?)采用LED數(shù)碼管動態(tài)掃描,LED數(shù)碼管價格適中,對于顯示數(shù)字最合適,而且采用動態(tài)掃描法與單片機連接時,占用的單片機口線少。所以采用LED數(shù)碼管作為顯示。</p><p>  2.4.2 LED顯示器工作原理</p><p>  在4位LED顯示器中段選線控制顯示字符的的字型,而

73、位選線為各個LED顯示塊的公共端,它控制該LED顯位的亮、暗。LED顯示器有靜態(tài)顯示和動態(tài)顯示兩種顯示方式。</p><p> ?。?)LED靜態(tài)顯示方式</p><p>  顯示器工作于靜態(tài)顯示方式時,各個的共陰極(或共陽極)連接在一起并接地(或+5V);每位的短選線(a-dp)分別與一個8位的鎖存器輸出相連。所以稱為靜態(tài)顯示。各個LED的顯示字符一經(jīng)確定,相應鎖存器的輸出將維持不變,直

74、到顯示另一個字符為止。也正因為如此,靜態(tài)顯示器的亮度都比較高。這種顯示方式接口編程容易,付出的代價是占用口線較多。若要用I/O口接口,則要占用4個8位I/O口,若要用鎖存器(如74LS373)接口,則要用4片74LS373芯片。如果顯示位數(shù)增多,則靜態(tài)顯示方式更是無法適應。因此在顯示位數(shù)較多的情況下,一般采用動態(tài)顯示方式。</p><p> ?。?)LED動態(tài)顯示方式</p><p>  

75、在多位LED顯示時,為了簡化硬件電路,通常將所有位的段選線相應地并聯(lián)在一起,由一個8位I/O口控制,形成段選線的多路復用。而各位的共陽極或共陰極分別由相應的I/O線控制,實現(xiàn)各位的分時選通。在動態(tài)顯示方式中若要各位LED能夠顯示出與本位相應的顯示字符,就必須采用掃描顯示方式,即在某一時刻,只讓某一位的位選線處選通狀態(tài),而其他各位的位選線處于關閉狀態(tài),同時,段選線上輸出相應位要顯示字符的段碼。這樣同一時刻,4位LED中只有那一位顯示出字符

76、,而其他三位則是熄滅的。同樣,在下一時刻,只讓下一位的位選線處于選通狀態(tài),而其他各位的位選線處于關閉狀態(tài),同時,在段選線上輸出相應位將要顯示字符段碼,則同一時刻,只有選通位顯示出相應的字符,而其他各位則是熄滅的。如循環(huán)下去,就可以使各位顯示出將要顯示的字符,雖然這些字符是在不同時刻出現(xiàn)的,而且同一時刻,只有一位顯示,其他各位熄滅,但由于LED顯示器的余輝和人眼的視覺暫留作用,只要每位顯示間隔足夠短,則可造成多位同時亮的假象,達到同時顯示

77、的目的。</p><p>  如何確定LED不同位顯示的時間間隔,例如對8位LED顯示器,假若顯示一位保持1ms時間,則顯示完所有8位只后,只需8ms。上述保持1ms的時間是根據(jù)實際情況而定。不能太短,因為發(fā)光二極管從導通到發(fā)光有一定的延時,導通時間太短,發(fā)光太弱人眼無法看清。但也不能太長,因為畢竟要受限于臨界閃爍頻率,而且此時間越長,占用CPU時間也越多。另外,顯示位越多,也將占用大量的CPU時間,因此動態(tài)顯示

78、實質(zhì)是以犧牲CPU時間來換取元件的減少。</p><p>  此設計顯示電路采用的就是動態(tài)顯示即一位一位地輪流點亮顯示器的各個位(掃描),對于顯示器的每一位來說,每隔一段時間點亮一次。利用人的視覺暫留效應可以看到整個顯示,但必須保證掃描速度足夠快,字符才不閃爍。顯示器的亮度既與導通電流有關,也與點亮時間和間隔時間的比例有關。調(diào)整電流和時間參數(shù),可實現(xiàn)亮度較高較穩(wěn)定的顯示。因為本顯示的位數(shù)不大于8位,所以控制顯示器

79、公共極只需一個I/O口(掃描口),控制顯示器的各位所顯示的字型也需一個8位口(段數(shù)據(jù)口)。本設計顯示部分電路連接如圖2-6所示。</p><p>  圖2-6 數(shù)碼管顯示部分電路圖</p><p><b>  3 系統(tǒng)軟件設計</b></p><p>  3.1 系統(tǒng)功能模塊及主程序流程圖</p><p>  軟件編程思

80、路:先DS12887初始化接著從其內(nèi)讀取當前時間供參考,然后掃描鍵盤以取得輸入的更改值,接下來將更改值寫入DS12887,允許DS12887時間更新并讀出時間以顯示,把顯示程序放在定時中斷內(nèi)掃描,主程序先讀出DS12887內(nèi)小時、分鐘、秒的值再送顯示,然后加延時再讀DS18B20所測溫度值再送顯示。</p><p>  系統(tǒng)功能模塊主要有:</p><p><b>  (1)初始

81、化程序</b></p><p> ?。?)對DS12887的讀寫程序</p><p><b> ?。?)顯示子程序</b></p><p> ?。?)時間調(diào)子整程序</p><p> ?。?)溫度與時間顯示切換程序</p><p>  主程序流程如圖3-1所示。</p>

82、<p>  圖3-1 主程序流程圖</p><p>  3.2 DS12887初始化程序設計</p><p>  因為使用了時鐘芯片DS12887,只需從DS12887各寄存器中讀出年、月、日、周、小時、分、秒等數(shù)據(jù),再處理即可。在首次對DS12887進行操作之前,必須對它進行初始化,然后從DS12887中讀出數(shù)據(jù),再經(jīng)過處理后,送給顯示緩沖單元。</p><

83、;p><b>  程序如下:</b></p><p><b>  csh()</b></p><p><b>  {</b></p><p>  XBYTE[0x7f0b]=0xa6;</p><p>  XBYTE[0x7f00]=0x00;</p>&l

84、t;p>  XBYTE[0x7f02]=0x00;</p><p>  XBYTE[0x7f04]=0x00;</p><p>  XBYTE[0x7f0b]=0x26;</p><p>  i=XBYTE[0x7f0a]=0x20;</p><p>  i=XBYTE[0x7f0d];</p><p>  i=

85、XBYTE[0x7f0c];</p><p><b>  }</b></p><p>  3.3 顯示子程序設計</p><p>  主要是開啟中斷,選擇定時器工作方式及給定時器高低字節(jié)送初值,最后使DS12887開始工作并通過給DS12887的控制寄存器寫相應命令使其禁止DS12887芯片更新,此時時鐘、日歷、和鬧鐘信息可以通過讀寫相應的字節(jié)

86、獲得和設置,接著開啟DS12887的晶體振蕩器并且保持時鐘運行,設置DS12887的SQW輸出為方波,時鐘運行周期為24時制等這些都完成系統(tǒng)上電后就可以從DS12887讀取時間信息送進而顯示電路顯示了。</p><p><b>  程序如下:</b></p><p>  void time0() interrupt 1//定時器掃描顯示</p><

87、;p><b>  {</b></p><p><b>  q++;</b></p><p>  TH0=0xea; </p><p><b>  TL0=0xea;</b></p><p><b>  if(q==1)</b></p>

88、<p><b>  {</b></p><p>  P1=tab[cc];</p><p><b>  P2=0xde;</b></p><p><b>  }</b></p><p><b>  if(q==2)</b></p>

89、<p><b>  {</b></p><p>  P1=tab[dd];</p><p><b>  P2=0xee;</b></p><p><b>  }</b></p><p><b>  if(q==3)</b></p>

90、<p><b>  {</b></p><p>  P1=tab[ee];</p><p><b>  P2=0xf6;</b></p><p><b>  }</b></p><p><b>  if(q==4)</b></p>

91、<p><b>  {</b></p><p>  P1=tab[ff];</p><p><b>  P2=0xfa;</b></p><p><b>  q=0;</b></p><p><b>  }</b></p>&l

92、t;p>  c=XBYTE[0x7e00];</p><p><b>  P30=c0;</b></p><p><b>  }</b></p><p>  3.4 時間調(diào)整程序設計</p><p>  時間調(diào)整是由三個按鍵組成的,它是最簡單的單片機輸入設備,通過按鍵輸入或調(diào)整數(shù)據(jù),實現(xiàn)

93、簡單的人機對話.時間調(diào)整的三個按鍵分別接在CPU的P3.2,P3.4,P3.5三個口。三個按鍵的功能分別為:P32為選位鍵,按下時進行調(diào)時選位功能,被選中的那個數(shù)碼管就閃爍準備調(diào)時;選中一位后按下P3.4對該位進行加操作,按下P3.5對該位進行減操作,流程圖如圖3-2所示。</p><p>  圖3-2 時間整程序框圖</p><p><b>  程序如下:</b>&

94、lt;/p><p>  if(P32==0)</p><p><b>  {</b></p><p>  delay1(500);</p><p>  while(!P32);</p><p>  delay1(20);</p><p>  while(P32)</p&g

95、t;<p><b>  {</b></p><p><b>  cc=10;</b></p><p>  delay1(500);</p><p><b>  cc=j;</b></p><p>  delay1(500);</p><p>

96、;  if(P34==0)</p><p><b>  {</b></p><p>  while(!P34);</p><p><b>  j++;</b></p><p><b>  if(j==10)</b></p><p><b&g

97、t;  j=0;</b></p><p>  d=j+(10*i);</p><p><b>  }</b></p><p>  else if(P35==0)</p><p><b>  {</b></p><p>  while(!P35);</p&g

98、t;<p><b>  if(j==0)</b></p><p><b>  j=10;</b></p><p><b>  j--;</b></p><p>  d=j+(10*i);</p><p><b>  }</b></p&g

99、t;<p>  XBYTE[0x7e02]=d;</p><p>  XBYTE[0x7e04]=e;</p><p><b>  }</b></p><p>  while(!P32)</p><p><b>  {</b></p><p>  delay1(

100、500);</p><p>  while(!P32);</p><p>  delay1(20);</p><p><b>  }</b></p><p>  while(P32)</p><p><b>  {</b></p><p><b&

101、gt;  dd=10;</b></p><p>  delay1(500);</p><p><b>  dd=i;</b></p><p>  delay1(500);</p><p>  if(P34==0)</p><p><b>  {</b></p

102、><p>  while(!P34);</p><p><b>  i++;</b></p><p><b>  if(i==6)</b></p><p><b>  i=0;</b></p><p>  d=j+(10*i);</p>&l

103、t;p><b>  }</b></p><p>  else if(P35==0)</p><p><b>  {</b></p><p>  while(!P35);</p><p><b>  if(i==0)</b></p><p><

104、b>  i=6;</b></p><p><b>  i--;</b></p><p>  d=j+(10*i);</p><p><b>  }</b></p><p>  XBYTE[0x7e02]=d;</p><p>  XBYTE[0x7e04]=

105、e;</p><p><b>  }</b></p><p>  while(!P32)</p><p><b>  {</b></p><p>  delay1(500);</p><p>  while(!P32);</p><p>  delay

106、1(20);</p><p><b>  }</b></p><p>  while(P32)</p><p><b>  {</b></p><p><b>  ee=10;</b></p><p>  delay1(500);</p>

107、<p><b>  ee=m;</b></p><p>  delay1(500);</p><p>  if(P34==0)</p><p><b>  {</b></p><p>  while(!P34);</p><p><b>  m++;<

108、;/b></p><p><b>  if(m==10)</b></p><p><b>  m=0;</b></p><p>  e=m+(10*n);</p><p><b>  }</b></p><p>  else if(P35==0)

109、</p><p><b>  {</b></p><p>  while(!P35);</p><p><b>  if(m==0)</b></p><p><b>  m=10;</b></p><p><b>  m--;</b>

110、;</p><p>  e=m+(10*n);</p><p><b>  }</b></p><p>  XBYTE[0x7e02]=d;</p><p>  XBYTE[0x7e04]=e;</p><p><b>  }</b></p><p>

111、  while(!P32)</p><p><b>  {</b></p><p>  delay1(500);</p><p>  while(!P32);</p><p>  delay1(20);</p><p><b>  }</b></p><p

112、>  while(P32)</p><p><b>  {</b></p><p><b>  ff=10;</b></p><p>  delay1(500);</p><p><b>  ff=n;</b></p><p>  delay1(5

113、00);</p><p>  if(P34==0)</p><p><b>  {</b></p><p>  while(!P34);</p><p><b>  n++;</b></p><p><b>  if(n==3)</b></

114、p><p><b>  n=0;</b></p><p>  e=m+(10*n);</p><p><b>  }</b></p><p>  else if(P35==0)</p><p><b>  {</b></p><p>

115、;  while(!P35);</p><p><b>  if(n==0)</b></p><p><b>  n=3;</b></p><p><b>  n--;</b></p><p>  e=m+(10*n);</p><p><b>

116、;  }</b></p><p>  XBYTE[0x7e02]=d;</p><p>  XBYTE[0x7e04]=e;</p><p><b>  }</b></p><p>  delay1(2000); </p><p><b>  }</b>

117、;</p><p>  3.5 溫度采集程序設計</p><p>  3.5.1 DS18B20的初始化</p><p> ?。?)先將數(shù)據(jù)線置高電平“1”。</p><p>  (2)延時(該時間要求的不是很嚴格,但是盡可能的短一點)。</p><p> ?。?)數(shù)據(jù)線拉到低電平“0”。</p><

118、;p> ?。?)延時750微秒(該時間的時間范圍可以從480到960微秒)。</p><p> ?。?)數(shù)據(jù)線拉到高電平“1”。</p><p> ?。?)延時等待(如果初始化成功則在15到60毫秒時間之內(nèi)產(chǎn)生一個由DS18B20所返回的低電平“0”。據(jù)該狀態(tài)可以來確定它的存在,但是應注意不能無限的進行等待,不然會使程序進入死循環(huán),所以要進行超時控制)。</p><

119、;p>  (7)若CPU讀到了數(shù)據(jù)線上的低電平“0”后,還要做延時,其延時的時間從發(fā)出的高電平算起(第(5)步的時間算起)最少要480微秒。</p><p> ?。?)將數(shù)據(jù)線再次拉高到高電平“1”后結(jié)束。</p><p>  3.5.2 DS18B20的寫操作</p><p> ?。?)數(shù)據(jù)線先置低電平“0”。</p><p>  (

120、2)延時確定的時間為15微秒。</p><p> ?。?)按從低位到高位的順序發(fā)送字節(jié)(一次只發(fā)送一位)。</p><p> ?。?)延時時間為45微秒。</p><p> ?。?)將數(shù)據(jù)線拉到高電平。</p><p> ?。?)重復上(1)到(6)的操作直到所有的字節(jié)全部發(fā)送完為止。</p><p>  (7)最后將

121、數(shù)據(jù)線拉高。</p><p>  3.5.3 DS18B20的讀操作</p><p> ?。?)將數(shù)據(jù)線拉高“1”。</p><p><b> ?。?)延時2微秒。</b></p><p>  (3)將數(shù)據(jù)線拉低“0”。</p><p>  (4)延時15微秒。</p><p&

122、gt; ?。?)將數(shù)據(jù)線拉高“1”。</p><p> ?。?)延時15微秒。</p><p>  (7)讀數(shù)據(jù)線的狀態(tài)得到1個狀態(tài)位,并進行數(shù)據(jù)處理。</p><p> ?。?)延時30微秒。</p><p><b>  程序如下:</b></p><p>  sbit TMDAT=P2^7;&

溫馨提示

  • 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論