基于51單片機的電子萬年歷與溫度檢測報警系統(tǒng)(共51頁)_第1頁
基于51單片機的電子萬年歷與溫度檢測報警系統(tǒng)(共51頁)_第2頁
基于51單片機的電子萬年歷與溫度檢測報警系統(tǒng)(共51頁)_第3頁
基于51單片機的電子萬年歷與溫度檢測報警系統(tǒng)(共51頁)_第4頁
基于51單片機的電子萬年歷與溫度檢測報警系統(tǒng)(共51頁)_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上序號:編碼: 重慶理工大學第十八屆“開拓杯”學生課外學術科技作品競賽參賽作品作品名稱:基于單片機的萬年歷與溫度檢測報警系統(tǒng)作品類別:B類別:A自然科學類學術論文 B 科技發(fā)明制作C哲學社會科學類學術論文與社會調(diào)查報告目錄摘要·····························&

2、#183;························· 1一、 設計要求與方案論證11設計要求·····················

3、;······················ 212系統(tǒng)方案選擇和論證·························

4、3;······· 213電路最終方案確定··································· 4二、電子萬年歷與溫度采集報警硬件設計和實現(xiàn)21系統(tǒng)設計·

5、;·········································· 421.1系統(tǒng)設計框圖······

6、;·························· 421.2系統(tǒng)硬件需求介紹·····················

7、83;······· 422系統(tǒng)硬件各模塊作用································· 522.1單片機核心控制模塊·····

8、;······················ 522.2實時時鐘電路模塊·························

9、83;··· 622.3數(shù)字溫度傳感器模塊··························· 1322.4液晶顯示電路模塊··············

10、83;·············· 1722.5蜂鳴器電路模塊(2個)··························2222.6 USB和外部電源供電模塊···&#

11、183;···················· 2323系統(tǒng)電路圖設計···························&#

12、183;···········2323.1系統(tǒng)電路原理框圖和原理圖······················23三、軟件設計與分析31系統(tǒng)軟件流程圖··········

13、·····························2531.1DS12C87程序流程圖··················

14、············2531.2DS18B20程序流程圖·······························2631.3鍵盤掃描程序流程圖·

15、83;····························2731.4主程序流程圖···················

16、83;················28四、系統(tǒng)測試41測試工具·······························&

17、#183;·············2942軟件測試···································

18、;··········2943硬件測試······································

19、83;······30五、設計總結(jié)和心得41設計總結(jié)與心得·······································31參考文獻&

20、#183;·················································&

21、#183;··32附錄一:程序清單·············································33附

22、錄三:實物圖片·············································48基于單片機的萬年歷與溫度檢測報警系統(tǒng)摘要隨

23、著社會發(fā)展需求的改變,電子萬年歷是一個應用非常廣泛的實用日常計時工具,帶有顯示世紀,年,月,日,星期,時,分,秒和按鍵可調(diào)時間及其按鍵設置鬧鐘的功能,同時具有月末自動更新,閏年補償功能等多種功能。溫度檢測報警系統(tǒng)也是在日常生活和工業(yè)應用非常廣泛的工具,能實時采集周圍的溫度信息進行顯示,程序內(nèi)部設定有報警上下限,根據(jù)應用環(huán)境不同可設定不同的報警上下限。此系統(tǒng)是基于STC89C52單片機設計的,包含液晶顯示模塊,DS12C887實時時鐘模塊,DS18B20溫度采集模塊,鍵盤掃描模塊,報警模塊。STC89C52作為控制核心,具有功耗低,功能強等特點,電壓可選3到5V電源供電。顯示模塊采用1602液晶

24、動態(tài)顯示,相對數(shù)碼管而言經(jīng)濟實用,占用空間小,對于顯示數(shù)字、字母最為合適,而且與單片機連線簡單,占用IO口相對較少。實時時鐘芯片DS12C887是一款與DS12C885實時時鐘兼容的替代產(chǎn)品,該器件提供RTC/日歷、定時鬧鐘等功能,如果檢測到主電源故障,該器件可自動切換到備用電源供電,DS12C887將石英晶體與電池集成在一起,在斷電后仍可精確走10年。溫度檢測報警模塊采用數(shù)字式溫度傳感器DS18B20,該芯片具有精度高,測量范圍廣等優(yōu)點,易與單片機連接,模塊電路組成簡單并同時具有溫度報警功能。關鍵詞:STC89C52,DS12C887,DS18B20,1602液晶顯示,電子萬年歷,采集周圍設

25、備溫度、溫度報警一、設計要求與方案論證11.1設計要求設計一個能夠?qū)崿F(xiàn)世紀,年,月,日,星期,小時,分,秒顯示附帶溫度檢測顯示的實時時鐘電子萬年歷,同時具有時間調(diào)節(jié)和鬧鐘設置功能,以及時間預設報警、溫度報警、報警解除等功能。該產(chǎn)品共設有四個按鍵,每個按鍵具有多種功能,充分利用各個按鍵。在溫度報警的同時還有發(fā)光二極管做相應的指示。并且通過編程還可以控制繼電器的開閉,從而控制外部設備的運行,通過對鬧鐘和溫度報警的設置可進行定時對設備進行自動化控制,也體現(xiàn)了產(chǎn)品的智能化。11.3系統(tǒng)方案選擇和論證STC89C52單片機作為核心控制體,該單片機具有高可靠,超低價,低功耗,無法解密等優(yōu)點。該單片機屬于雙

26、列直插式封裝的PDI40口管腳。具有4個輸入輸出端口,分別為PORT0,PROT1,PROT2,PROT3,其中P0口是一組8位漏極開路型雙向IO口,校驗時,要求接上拉電阻。其他三個內(nèi)部有30K的電阻,所以不用再外接電阻。此單片機具有6個中斷,其中包括三個定時器中斷,二個外部中斷,一個串口中斷,為全雙工通信口。內(nèi)部有靜態(tài)非易失EEPROM和看門狗。片內(nèi)含8Kbbytes的可反復檫寫的只讀程序存儲器(PEROM)和256bytes的隨機存取數(shù)據(jù)存儲器(RAM),功能強大,適合許多較為復雜的控制應用場合。相比較其他芯片來說比較適合學生試驗所用,故采用此單片機作為核心控制芯片。DS12C887為實時

27、時鐘芯片,功能豐富,可以用來直接代替IBMPC上的時鐘日歷芯片DS12887,同時,它的管腳也和MCB、DS12887相兼容。由于DS12C887能夠自動產(chǎn)生世紀、年、月、日、時、分、秒等時間信息,其內(nèi)部又增加世紀寄存器,從而利用硬件電路解決子“千年”問題:DS12C887中自帶有鋰電池,外部掉電時,其內(nèi)部信息還能夠保持10年之久;對于一天內(nèi)的時間記錄,有12小時制和24小時制兩種模式。在12小時制模式中,用AM和PM區(qū)分上午和下午;時間表示方法也有兩種,一種用二進制數(shù)表示,一種用BCD碼表示;DS12C887中帶有128字節(jié)RAM,其中有11字節(jié)RAM用來儲存時間信息,4字節(jié)RAM用來儲存D

28、S12C887的控制信息,稱為控制寄存器,113字節(jié)通用RAM使用戶使用;此外用戶還可以對DS12C887進行編程以實現(xiàn)多種方波輸出,并對其內(nèi)部的三路中斷進行屏蔽。芯片內(nèi)部石英晶體與充電電池,具有三個可單獨屏蔽中斷標志位的中斷輸出,閏年補償至2100年。+5V或+3.3V工作電源,工業(yè)級溫度范圍,自動電源故障檢測和切換電路,故此芯片適合應用于工業(yè)生產(chǎn)和家庭應用中。DS18B20是數(shù)字式溫度傳感器,采用單總線通信協(xié)議。DS18B20具有體積小,硬件開銷低,抗干擾能力強,精度高附加功能強,封裝形式多樣等特點。適合各種狹小空間內(nèi)設備的數(shù)字測溫和控制。同時單線可掛接多個元件,因為每個元件都有唯一的一個

29、64位光刻ROM編碼,家族碼為28H,可以多個也可單個操作。電壓測量范圍是3.0V到5.5V。內(nèi)部含有EEPROM,其報警上、下限溫度值和設定的分辨率倍數(shù)在芯片掉電的情況不丟失。并且內(nèi)部帶有AD轉(zhuǎn)換電路,技術較為成熟,所以采用此芯片最為合適。1602液晶應用非常廣泛,操作簡單,功能強大,采用1602液晶顯示各種數(shù)字信息最為合適,通過對單片機的編程來控制DS12C887和DS18B20芯片的讀寫操作來獲取相應的信息,再通過對液晶的編程控制將獲取到的信息通過一系列轉(zhuǎn)換從而顯示到1602液晶上。最后達到有電子萬年歷和溫度采集報警等功能。系統(tǒng)論證時通過在單片機學習板上的試驗操作,能夠達到預期的效果!1

30、2最終方案確定核心控制體:STC89C52單片機實時時鐘芯片:DS12C887數(shù)字式溫度傳感器:DS18B20總共設有四個按鍵,為節(jié)約資源考慮,每個按鍵都有多種功能。每個按鍵分別標號為A,B,C,D.第一次按下B,C,D都沒有反應,首先按下A鍵可選擇指針位置,B,C鍵為加減鍵,D鍵為鬧鐘設置鍵。B同時又是鬧鐘報警消除鍵。操作簡單,按鍵靈活。兩個報警模塊,分為溫度報警和鬧鐘報警兩種。二、電子萬年歷與溫度采集報警硬件設計和實現(xiàn)主控模塊時鐘模塊溫度檢測模塊1602顯示模塊鍵盤掃描模塊報警模塊2.。1系統(tǒng)設計框圖 圖1 系統(tǒng)組成框圖21.2系統(tǒng)硬件需求介紹STC89C52單片機一片,DS12C887實

31、時時鐘芯片一個,DS18B20數(shù)字式溫度傳感器一個,+5V無源蜂鳴器二個,12MHZ晶振一個,多個按鍵和開關,常用電容電阻,連接線,三極管,二極管若干,滑動變阻器一個,USB母口一個。22系統(tǒng)硬件各模塊作用22.1單片機核心控制模塊核心控制器件選用STC89C52單片機。STC89C52單片機為40管腳雙列直插芯片,它是一種高性能,低功耗的8位CMOS微處理器芯片,市場應用最多。而且價格便宜,控制方便,便于應用有4個I/O口分別為P1,P2,P3,P4。其中每一個管腳都能做獨立的輸入輸出管腳,它的第9腳位復位管腳,接上電容和上拉電阻再帶個開關構(gòu)成復位電路。18,19管腳接外部晶振和兩個微調(diào)電容

32、構(gòu)成外部晶振電路。單片機,復位電路,晶振,5V電源構(gòu)成單片機最小系統(tǒng)。其中與AT89S52單片機管腳容。圖2 單片機最小電路圖2為單片機最小電路,其中晶振頻率可以根據(jù)自己需要進行選擇,范圍在0-24MHZ,常用12MHZ。復位電路得電容一般用10UF,但并不唯一,只要RC所得時間大于兩個機器周期即可。還有其P0內(nèi)部無上拉電阻,所以在執(zhí)行輸出功能時,外部必須接上拉電阻(一般10K即可)。P0口有兩個作用,一個接上DS12C887的AD0-AD7(雙向地址/數(shù)據(jù)復用總線),控制著DS12C887的8位并行數(shù)據(jù)的地址和數(shù)據(jù)的傳輸,另接上液晶的DB0-DB7(數(shù)據(jù)總線)控制著向液晶發(fā)送8位并行數(shù)據(jù)。P

33、17接上DS18B20的單數(shù)據(jù)線,發(fā)送并接受數(shù)據(jù),地址的操作。P30到P33作為獨立按鍵口。P24口為液晶的數(shù)據(jù)/命令選擇端,1為數(shù)據(jù),二為命令,P25口控制液晶讀/寫選擇端,1為讀命令,0為寫操作,P26口控制液晶使能信號。對DS12C887:P20口控制DS12C887的片選信號的輸入(CS),P21口控制地址選通輸入(AS),P22口為讀寫輸入(R/W),P23控制著數(shù)據(jù)選通或讀輸入(DS)。P32(外部中斷0)接reset管腳,當鬧鐘時間到時便由此觸發(fā)外部中斷0,進入到外部中斷0程序中。P10和P11口分別控制著蜂鳴器的報警,當溫度、時間到達限定值時會發(fā)出高低電平脈沖,以至發(fā)出報警聲音

34、。22.2實時時鐘電路模塊時鐘模塊選用DS12C887芯片,DS12C887芯片能夠自動產(chǎn)生世紀,年,月,日,星期,時,分,秒信息,閏年補償至2100年,具有鬧鐘功能。內(nèi)部自帶鋰電池,在外部掉電時信息不丟失,并且能精確走10年之久。同時DS12C887能自動檢測電源故障和切換電路,有工業(yè)級溫度范圍。此芯片可以廣泛應用于對環(huán)境要求嚴格的控制系統(tǒng)中。如嵌入式系統(tǒng),電表,安全系統(tǒng),網(wǎng)絡集線器,網(wǎng)橋,路由器。 圖3 DS12C887硬件連接圖D12C887電路圖,工作電源采用5V。第一管腳(MOT)是Motorola或Intel總線時序選擇端,利用此引腳選擇兩種總線類型中的一種,連接到Vcc時選擇Mo

35、toroal總線時序,接GND或懸空選擇Intel總線時序。該引腳內(nèi)部有一個下拉電阻。D0到D7為雙向地址/數(shù)據(jù)復用總線。地址于總線周期的開始發(fā)送到總線上。并由AS信號的下降沿鎖存到DS12C887中。所寫的數(shù)據(jù)由DS信號的下降沿(Motoroal時序)或R/W信號的上升沿(Intel時序)鎖存。讀周期中,DS12C887于DS信號的后期(Motoroal時序中DS和R/W均為高,Intel時序中DS為低、R/W為高)將數(shù)據(jù)發(fā)送到總線上。讀周期結(jié)束后,總線恢復到高阻狀態(tài),同時DS在Motoroal時序中變低,在Intel時序中變高。12腳為GND。13腳叫CS-片選信號輸入,片選信號低電平有效

36、,在訪問DS12C887的總線周期內(nèi)必須保持低電平Intel時序中的DS和R/W信號工作期間,CS必須保持有效,在CS信號無效情況下,總線操作將鎖存地址,不能訪問芯片。當Vcc低于Vpf電壓時,DS12C887內(nèi)部通過禁止CS輸入來拒絕訪問,此舉旨在斷電時保護RTC數(shù)據(jù)和RAM數(shù)據(jù)。所以在訪問期間CS片選信號應保持低電平。14管腳AS-地址選通輸入。有低變?yōu)楦叩牡刂愤x通脈沖用來分離總線信號。在AS信號的下降沿,地址鎖存到DS12C887內(nèi),無論CS信號是否有效,AS的下一個上升沿都將清除地址,地址選通信號必須先于每個讀或?qū)懺L問。如果在CS信號無效的情況下執(zhí)行了讀或?qū)懖僮?,則必須在CS信號有效時

37、且在讀或?qū)懺L問之前,從新發(fā)送一次地址選通信號。15管腳R/W讀/寫輸入。R/W引腳有兩種操作模式,在MOT引腳接Vcc的Motoroal時序中,R/W電平用來指示當前周期是讀還是寫。DS為高時,R/W為高電平表示讀周期,R/W為低電平則表示寫周期,在MOT引腳接GND的Intel時序中,R/W為低電平有效,在此模式下,R/W引腳與普通RAM的寫時能信號(WE)工作方式類似,在信號的上升沿鎖存數(shù)據(jù)。17管腳DS-數(shù)據(jù)選通或讀輸入,DS引腳根據(jù)MOT引腳電平有兩種模式,MOT引腳接Vcc時,選擇Motorola總線時序,此模式下,總線周期的后期DS為正脈沖,稱作數(shù)據(jù)選通脈沖,在讀周期中,DS表明D

38、S12C887將要驅(qū)動雙向總線,在寫周期,DS信號的下降沿使使DS12C887鎖存所寫的數(shù)據(jù),當MOT接GND時,選擇Intel總線時序,DS表示讀取DS12C887數(shù)據(jù)驅(qū)動總線的時間周期,此模式下,DS引腳與普通RAM的輸出使能信號(OE)工作方式類似。18管腳RESET-復位輸入,低電平有效RESET引腳對時鐘、日歷或RAM不起作用,上電時可將RESET引腳首先保持低電平,以等待電源穩(wěn)定下來,保持低電平時間可根據(jù)應用需要而定,但是,如果上電時使用RESET信號,RESET保持低電平時間應當超過200ms,以保證控制DS12C887上電時的內(nèi)部定時器結(jié)束,當RESET為低電平,而且Vcc大于

39、Vpf時,將產(chǎn)生以下操作:A周期性中斷使能(PIE)位清0;B鬧鐘中斷使能(AIE)位清0;C更新結(jié)束中斷使能(UIE)位清0;D周期中斷標志(PF)位清0;E鬧鐘中斷標志(AF)位清0;F更新結(jié)束中斷標志(UF)位清0;G中斷請求狀態(tài)標志(IRQF)位清0;H IRQ引腳置為高阻狀態(tài);I直到RESET恢復為高電平才能訪問器件;J方波使能(SQWE)位清0。在典型應用中,將RESET與Vcc連接。使得DS12C887在進入或退出電源失效狀態(tài)時不影響任何控制寄存器的值。19管腳IRQ-中斷請求輸出。DS12V887的IRQ引腳低電平有效,可用作處理器的中斷請求輸入,只要引起中斷的狀態(tài)位置位,并且

40、相應中斷使能位也置位,IRQ將一直保持低電平。處理器程序通常讀取C寄存器來清除IRQ引腳輸出,RESET引腳也會清除未處理的中斷,沒有中斷發(fā)生時IRQ為高阻狀態(tài),可將多個中斷器件接到一條IRQ總線上,只要他們均為漏極開路輸出,IRQ引腳為漏極開路輸出,需要使用一個上拉電阻與Vcc相連。23腳SQW-方波輸出,因為我們此實驗中不需要方波輸出,故不接。VCC主電源的DC電源引腳。VCC在正常范圍時,可訪問器件的所有功能,并能進行數(shù)據(jù)讀寫,如果VCC低于VPF,則禁止讀和寫。DS12C887采用的是并行通信協(xié)議,8位同時傳遞,對應到D0到D7八位端口。D0到D7接P0口,作為地址/數(shù)據(jù)選通復用總線。

41、并行通信控制簡單,傳輸速度快,適合近距離傳輸。圖4 Intel總線寫時序圖圖5 Intel讀時序圖Intel總線如上圖所示,編寫程序如圖時序圖所示。因為其時序延時都為納秒級的,軟件執(zhí)行一句簡單語句為微秒級。所以在編寫程序是可直接跳過,不用做軟件延時。對此相對降低了軟件編寫的難度。DS12C887有4個控制寄存器,在任何時間都可以進行訪問,即使處于更新周期。寄存器A字節(jié)的內(nèi)容如下。MSB LSB UIP DV2 DV1 DV0 RS3 RS2 RS1 RS0UIP: 更新標志位。為只讀位且不受復位操作的影響,為1時,表示即將發(fā)生的數(shù)據(jù)更新;為0時,表示至少244US不會更新數(shù)據(jù)。當UIP為0時,

42、可以獲得所有時鐘、日歷、鬧鐘信息。將寄存器B中的SET位置1可以限制任何數(shù)據(jù)更新操作,并且清除UIP位。DV2、DV1、DV0:此3位為010時將打開晶振,并開始計時。RES3、RES2、RES1、RES0:用于設置周期性中斷產(chǎn)生的時間周期和輸出方波的頻率。寄存器B字節(jié)的內(nèi)容如下。 MSB LSB SET PIE AIE UIE SQWE DM24/12 DSESET:設置位,可讀寫,不受復位操作影響。為0時,不處于設置狀態(tài),芯片進行正常時間數(shù)據(jù)更新;為1時,抑制數(shù)據(jù)更新,可以通過程序設定時間和日歷信息。PIE:周期性中斷使能位,可讀寫,復位時清除此位。為1時,允許寄存器C中的周期中斷標志位P

43、F,驅(qū)動/IRQ引腳為低產(chǎn)生中斷信號輸出,中斷信號產(chǎn)生的周期由RS3RE0決定。AIE:鬧鐘中斷使能位,可讀寫。為1時,允許寄存器C中的鬧鐘中斷標志位AF、鬧鐘發(fā)生時就會通過/IRQ引腳產(chǎn)生中斷輸出。UIE:數(shù)據(jù)更新結(jié)束中斷使能位,可讀寫。復位或者SET位為1時清除此位。為1時允許寄存器C中的更新結(jié)束標志UF,更新結(jié)束時就會通過/IRQ引腳產(chǎn)生中斷輸出。SQWE:方波使能位,可讀寫,復位時清除此位。為0時,SQW引腳保持低電平;為1時,SQW引腳輸出方波信號,其頻率由RS3RS0決定。DM:數(shù)據(jù)模式位,可讀寫,不受復位操作影響。為0時,設置時間、日歷信息為二進制數(shù)據(jù);為1時,設置為BCD碼數(shù)據(jù)

44、。24/12:時間模式設置為,可讀寫,不受復位操作影響。為0時,設置為12小時模式;為1時,設置為24小時模式。DSE:為1時,會引起兩次特殊的時間更新;4月的第一個星期日凌晨1:59:59會直接更新到3:00:00,10月的最后一個星期日凌晨1:59:59會直接更新到1:00:00;為0時,時間信息正常更新,此位可讀寫,不受復位操作影響。寄存器C字節(jié)內(nèi)容如下。 MSB LSB IRQF PF AF UF 0 0 0 0IQRF:中斷申請標志位。為1時,/IRQ引腳為低,產(chǎn)生中斷申請。當PF、PIE為1時或者AF、ATE為1或者UF、UIE為1時,此位為1,否則置0.PF:中期中斷標志位。為1

45、時,它是只讀位,和PIE位狀態(tài)無關,由復位操作或者寄存器C操作清除。AF:鬧鐘中斷標志位。為1時,表示當前時間和鬧鐘設定時間一至,由復位操作或讀寄存器C操作清除。UF:數(shù)據(jù)更新結(jié)束中斷標志位。每個更新周期后此位都會置1,當UIE位位置1時,UF若為1就會引起IRQF置1,將驅(qū)動/IRQ引腳為低電平,申請中斷。此位由復位操作或讀寄存器C操作清除。寄存器D字節(jié)的內(nèi)容如下。 MSB LSB 0 0 0 0 0 0 0 0VRT;RAM和時間有效位。用于指示和VBAT引腳連接的電池狀態(tài)。此位不可寫,也不受操作為影響,正常情況下讀取時總?cè)?,如果出現(xiàn)讀取為0的情況,則表示電池耗盡,時間數(shù)據(jù)和RAM中的

46、數(shù)據(jù)就會出現(xiàn)問題。芯片DS12CR887的113字節(jié)普通RAM空間為非易失性RAM空間,他不專門用于某些特別功能,而是可以在未處理器程序中作為非易失性內(nèi)存空間使用。如write_ds(0x0a,0x20);write_ds(0x0b,0x26);分別表示向A,B寄存器發(fā)送0X20,0X26命令。0X20表示RAM中時鐘、日歷和鬧鐘信息都可以訪問;啟動振蕩器使能中斷和SQW輸出都禁止。0X26表示更新傳輸功能正常進行;阻止周期性中斷輸出;開鬧鐘中斷使能;選擇二進制格式;24小時格式;關閉夏令時使能。Read_ds(0x0c)意義為讀取C寄存器的地址。芯片DS12CR887的113字節(jié)普通RAM空

47、間為非易失性RAM空間,他不專門用于某些特別功能,而是可以在未處理器程序中作為非易失性內(nèi)存空間使用。通過軟件編程將讀到的信息顯示到1602液晶中,顯示世紀,年,月,日,星期,小時,分,秒。通過設置按鍵可以進行時間調(diào)節(jié),在調(diào)節(jié)時間時時鐘暫時停止走,再通過功能鍵回到正常工作狀態(tài)中,并且具有鬧鐘設定功能,但在設定鬧鐘時期內(nèi)部時間仍然在走。當時,分,秒,相符時通過蜂寧器進行報警,再設置按鍵關閉鬧鐘。實現(xiàn)隨意控制鬧鐘的開啟和關閉。22.3數(shù)字溫度傳感器模塊數(shù)字溫度傳感器選用DS18B20,采用單總線通信協(xié)議。DS18B20主要特性有:1、適應電壓范圍更寬,電壓范圍:3.05.5V,在寄生電源方式下可由數(shù)

48、據(jù)線供電。2、獨特的單線接口方式,DS18B20在與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。3、DS18B20支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在唯一的三線上,實現(xiàn)組網(wǎng)多點測溫4、DS18B20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。5、溫范圍55125,在-10+85時精度為0.5。6、可編程的分辨率為912位,對應的可分辨溫度分別為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ù)字,速度

49、更快。8、測量結(jié)果直接輸出數(shù)字溫度信號,以"一線總線"串行傳送給CPU,同時可傳送CRC校驗碼,具有極強的抗干擾糾錯能力。9、負壓特性:電源極性接反時,芯片不會因發(fā)熱而燒毀,但不能正常工作。DS1820的操作指令分為ROM操作命令和存儲器操作命令:(1)、ROM操作命令及其含義Skip ROM指令代碼(CCh):此命令執(zhí)行后的存儲器操作將針對在線的所有DS1820。Alarm Search指令代碼(ECh):當溫度值高于TH或低于TL中的數(shù)值時,此命令可以讀出報警的DS1820。 (2)、存儲器操作指令代碼及其含義 Read Scratchpad指令代碼

50、(BEh):讀取溫度寄存器的溫度值。Copy Scratchpad指令代碼(48h):將溫度寄存器的數(shù)值拷貝到EERAM中,保證溫度值不丟失。Convert T指令代碼(44h):啟動在線DS1280做溫度A/D轉(zhuǎn)換。Recall E2指令代碼(B8h):將EERAM中的數(shù)值拷貝到溫度寄存器中。溫度測量步驟如下:(1).Read ROM(33 h),每次對DS1820進行操作之前都要對它進行初始化,主要目的在于確定傳感器已經(jīng)連接到單總線上。(2).Search ROM(F0h),這條指令使處理器用排除的方法去辨別總線上的DS1820。(3).Match ROM(55h),只有準確的符

51、合64位ROM序列的DS1820才能響應其后的指令,當然,單點測溫時可以使用Skip ROM(CCh)指令來跳過這一步。(4).Convert T(44h),發(fā)完指令后應查詢總線上的電平,當電平位高時溫度轉(zhuǎn)換完成。(5).Read Scratchpad(BEh),將讀指令發(fā)出后,就可從總線上讀得表示溫度的2字節(jié)二進制數(shù)由于采用單總線數(shù)據(jù)傳輸方式,DS18B20的數(shù)據(jù)I/O均由同一條線完成,因此,對讀寫的操作時序要求嚴格。為了保證DS18B20的嚴格I/O時序。需要做較精確的延時。它的各種時序如下圖所示:DS18B20初始化時序 圖6 DS18B20溫度傳感器 DS18B20采用+5V

52、電源供電22.4液晶顯示模塊字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點陣式LCD,本設計采用16列*2行的字符型LCD1602帶背光的液晶顯示屏。各引腳接口說明如表1-1所示:編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負極引腳接口說明:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地時對比度最高,對比度

53、過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負極。1602LCD的指令說明及時序:1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表1-2所示:序

54、號指令RSR/WD7D6D5D4D3D2D1D01清顯示00000000012光標返回000000001*3置輸入模式00000001I/DS4顯示開/關控制0000001DCB5光標或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標志或地址01BF計數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容字符控制命令說明:1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現(xiàn)的。(說明:1為高電平、0為低電平)指令1

55、:清顯示,指令碼01H,光標復位到地址00H位置。指令2:光標復位,光標返回到地址00H。指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行

56、顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。指令7:字符發(fā)生器RAM地址設置。指令8:DDRAM地址設置。指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)?;静僮鲿r序表,讀寫操作時序如圖所示: 圖7 讀操作時序 圖8 寫操作時序 圖9 液晶部分電路連接圖22.5蜂鳴器電路模塊(2個)圖10 溫度報警圖11 鬧鐘報警蜂鳴器用CS9013三極管驅(qū)動,蜂鳴器用5V的無源蜂鳴器,并接一個發(fā)光二極管作為指示燈,同時在發(fā)光二極管前串接個限流電阻,數(shù)據(jù)端口分別接P10,P11(由

57、單片機的P10,P11直接輸出驅(qū)動)。設置兩個報警時為了防止鬧鐘和溫度報警發(fā)生重疊,影響判斷!22.6 USB和外部電源供電電路圖12 電源部分電路如圖可接插USB口,從而獲取電源,也可外部供給+5V電源。此電路圖最大優(yōu)點就是可以連接多個VCC和GND,方便電路連接。有發(fā)光二極管做電源指示燈,方便操作。23系統(tǒng)電路圖設計23.1系統(tǒng)原理框圖和原理圖STC89C52單片機溫度傳感器進行溫度采集,經(jīng)過A/D轉(zhuǎn)換(DS18B20內(nèi)部完成此操作),送入單片機存儲,通過定時器0進行定時讀取。通過對實時時鐘的讀寫操作,將讀取到時間信息顯示到1602液晶上,通過按鍵可對時間和鬧鐘進行調(diào)節(jié),為方便調(diào)節(jié)考慮,在

58、調(diào)節(jié)時間不讀取溫度值。調(diào)節(jié)完成后再讀取溫度值。蜂寧器報警,在溫度達到相應設定的溫度值和鬧鐘時間到時,觸發(fā)蜂寧器發(fā)出響聲,進行報警。再通過相應按鍵進行消除報警聲。(設置兩個報警時為了防止兩個報警發(fā)生重疊)鍵盤掃描,按鍵進行時間調(diào)節(jié),鬧鐘設定鬧鐘設定,關閉蜂寧器報警聲。液晶顯示,開機時顯示welcome have a nice day字樣,過幾秒鐘后顯示時間和溫度值,圖8 系統(tǒng)原理框圖下面是系統(tǒng)硬件電路連線圖(原理圖)三、軟件測試與分析31系統(tǒng)軟件流程圖3.1.1DS12C887程序流程圖開始初始化,寫地址、數(shù)據(jù),讀地址。將相應地址和數(shù)據(jù)寫入控制寄存器A、B中讀取秒鬧鐘,分鬧鐘,時鬧鐘寄存器到相應

59、的存儲變量中(read-alarm()函數(shù)),調(diào)用write-ds()函數(shù)將時分秒鬧鐘的地址和數(shù)據(jù)寫入此函數(shù)中。讀取C控制寄存器的地址讀取年,月,日,星期,時,分,秒寄存器的相應地址當flag,flag1標志位允許時,通過調(diào)用時分秒,年月日顯示函數(shù)將相應信息顯示到液晶確定的位置上去。 31.2 DS18B20程序流程圖初始化DS18B20檢測DS18B20序列號(單個掛接不需要)YESNO發(fā)送跳過讀ROM的操作啟動溫度轉(zhuǎn)換稍微延時,給硬件一點反應時間YESNO主機發(fā)出復位脈沖以檢測從機是否有應答主機再次發(fā)出復位脈沖以檢測從機是否有應答開始發(fā)送跳過讀ROM的操作讀取溫度寄存器的值,并經(jīng)過溫度轉(zhuǎn)換

60、,返回溫度值。當flag-di,keyxuan標志位允許時將數(shù)字溫度數(shù)據(jù)送到1602液晶上顯示。31.3 鍵盤掃描程序模塊進入鍵盤掃描A鍵按下,延時去抖。此時設定flag=1,keyxuan=0時間停止走,溫度將暫不進行動態(tài)顯示(為液晶穩(wěn)定性考慮)。A每按下一次S1num+一次,指針落在不同位置上(利用switch(S1num),case語句來實現(xiàn)是需要調(diào)節(jié)時間,日期,還是星期)。最后一次按下S1num=8時,將各位數(shù)據(jù)送到液晶上顯示,同時將flag=0,keyxuan=1,即正常顯示時間,動態(tài)掃描溫度,S1num=0.在A鍵還沒有退出時。B,C鍵根據(jù)功能鍵A選擇指針位置switch(S1nu

61、m),case,然后每按B一次加一,按下C減一,直到調(diào)節(jié)到準確時間為止(其中每按下一次按鍵都進行一次顯示刷新)。鬧鐘時間已到?否則不進入YES按下B鍵消除鬧鐘報警當調(diào)節(jié)好時間后,再按A鍵,直至將S1num+到8為止,即退出了鍵盤掃描程序,此時將調(diào)節(jié)好的各個時間信息讀取到相應的寄存器中,調(diào)用write-ds()函數(shù),讀取相應的時分秒等信息的地址和數(shù)據(jù),最后發(fā)出清屏命令,將flag,flag1,keyxuan標志位改為有效位。從而正常顯示時間信息和實現(xiàn)溫度動態(tài)掃描。另外需要調(diào)節(jié)鬧鐘時就在按下A后再按下D鬧鐘鍵flag1=1,標志位無效(即暫不顯示萬年歷信息)。延時去抖后調(diào)用在字符顯示函數(shù)(SET

62、ALARM字樣),再利用B,C鍵將時分秒加加或減減(每按下一次按鍵都會有刷新顯示)。調(diào)用read-alarm()函數(shù)。將調(diào)節(jié)好的時間送入相應時分秒寄存器中。再次按下D鍵時,將讀取到的時分秒信息送到set-alarm()函數(shù)中,并發(fā)出清屏命令。標志位(flag,flag1,keyxuan)為有效。從而正常顯示時間和動態(tài)顯示溫度值。3.1.6 主程序流程圖各個IO端口的設定,各個變量初始化液晶初始化,DS12C887,DS18B20,定時器0初始化顯示welcome! Heve a nice day !字樣簡單延時30S,然后發(fā)出清屏命令進入主循環(huán)體有鍵按下,調(diào)用鍵盤掃描程序鬧鐘時間已到?(通過外

63、部中斷0實現(xiàn)中斷)觸發(fā)進入外部中斷掃描無鍵按下,全部標志位允許,調(diào)用讀取DS12C887時間函數(shù)DS18B20函數(shù),并調(diào)用其1602顯示各數(shù)據(jù)的函數(shù),調(diào)用星期顯示函數(shù),其他字符函數(shù)開始設置標志位,從而調(diào)用蜂寧器報警程序,發(fā)出的聲音可以根據(jù)自己喜好設定。讀取C寄存器表示響應了中斷鍵盤掃描定時器時間到(即flag-di=1用定時器0實現(xiàn)),溫度標志位有效,通過定時器0實現(xiàn)讀取溫度值,再將此標志位設為無效,以便顯示。將溫度的各位顯示到液晶上,并設定溫度報警上下限高于上限或低于下限?按下B鍵可以解除鬧鐘報警NOYES蜂鳴器發(fā)出報警聲,并伴有發(fā)光二極管閃爍返回到主循環(huán)體四、系統(tǒng)測試41測試工具52單片機

64、學習板42軟件測試電子萬年歷與數(shù)字式溫度傳感器功能強大,芯片簡化了硬件電路設計的同時也無形加大了軟件編寫的復雜程度,為方便程序的調(diào)試和提高效率,故將軟件編寫分模塊進行,先將實時時鐘模塊一步步調(diào)試,按照時序圖將讀寫函數(shù)寫好后,會顯示秒部分,并準時走,但液晶屏不穩(wěn)定,有一些亂碼和光標亂閃。經(jīng)檢查發(fā)現(xiàn)有些發(fā)生地址重疊的沖突,寫按鍵部分程序是發(fā)現(xiàn)調(diào)節(jié)好后在最后刷新屏幕時調(diào)節(jié)好的時間沒有讀取到,還有鬧鐘不能實現(xiàn)鬧鐘報警功能,不斷調(diào)節(jié),不斷燒寫進學習板,然后看結(jié)果,最終發(fā)現(xiàn)時沒有將調(diào)節(jié)好的時間讀取到寄存器中。加上溫度傳感器部分后發(fā)現(xiàn)在調(diào)節(jié)時間時出現(xiàn)亂碼和不穩(wěn)定現(xiàn)象,光標亂跳的現(xiàn)象。經(jīng)過不斷檢查軟件,發(fā)現(xiàn)在

65、按鍵調(diào)節(jié)時軟件讀取溫度值的標志位是允許的,也就是說它在調(diào)節(jié)時間時又在動態(tài)顯示周圍環(huán)境中的溫度值,這樣會導致光標不穩(wěn)定的現(xiàn)象。經(jīng)過再添加keyxuan標志允許位時,這個問題得到很好的解決。在軟件編寫的過程中遇到非常多的問題,遠遠不止這些,在暑假期間也花費了大量的時間去不斷修改,以上只是列舉些有代表性的問題作為反映。43硬件測試首先單片機最小系統(tǒng)的設計幾乎都是統(tǒng)一的,DS12C887,DS18B20接線靈活,IO口的設置具有多樣性,開始我想溫度用數(shù)碼管顯示,萬年歷用液晶顯示。后來經(jīng)過何老師的提醒,將數(shù)碼管撤去,統(tǒng)一用液晶顯示數(shù)據(jù),這樣節(jié)約了硬件的開銷,用杜邦線將芯片與單片機學習板按照電路原理圖連接

66、好,經(jīng)過不斷的軟件,硬件的反復修改,最終實現(xiàn)了軟件編寫的目標功能!五、設計總結(jié)與心得大一下學期利用課余時間學習了單片機,并買了塊52單片機學習板,在期間學習到了單片機的簡單部分,算是有點入門,在暑假期間決定做個作品出來,便一邊學習,一邊動手實踐做,利用52單片機學習板自己寫些程序,下載到學習板中看試驗結(jié)果,一步步的感覺到了學習單片機的樂趣所在,便決定做個電子萬年歷和溫度報警系統(tǒng),開始一頭霧水,覺得無從下手,但我相信事在人為,別人可以的,我一樣可以做到!因為在家里,無法向?qū)W長和老師請教些技術性問題。唯一可以利用的就是郭天祥老師的視頻,走了不少彎路。第一步便是學習如何看懂芯片時序圖,對此,英語閱讀

67、能力對我也是個挑戰(zhàn)。一邊參照視頻里的指點,一邊也開始了編寫程序。許多東西以前都沒有概念,需要一一開始建立,所以花費的時間也相對較長。每天的時間都花在了這個實驗上,程序?qū)懸稽c,燒一點,一點點看試驗結(jié)果,有時候一段小程序需要調(diào)試幾天,但我還是一步步的堅持了下去。就這樣,思路也逐漸清晰起來,找到了問題的方向。通過在學習板上用杜邦線外接其他芯片構(gòu)造成所要達到的目標電路,即電子萬年歷和溫度報警系統(tǒng)。電路連接好后,接下來便是復雜的調(diào)程序步驟,一點點的改進,修改,一直花了整整兩個星期,最終達到了預期的效果。對此,感到了些許欣慰吧! 通過這么久的學習單片機的過程,自己也感受頗多,很多東西有想法只是一小部分,關

68、鍵在于自己肯不肯實際動手去做。大一上學期覺得自己很迷茫,不知道該干什么,通過自己不斷對本專業(yè)的了解,發(fā)現(xiàn)專業(yè)技能的學習才是我的方向,記得大一上學期有位大三的學長為我們做新生交流時說到專業(yè)方向的問題,他說大三的專業(yè)課非常多,要想每門學好幾乎不可能,必須要有自己的側(cè)重點,我想在大一多學點東西為大三節(jié)約時間。后來發(fā)現(xiàn)了學習單片機的樂趣和重要性所在。便決定提前自學單片機,開始很多東西都沒有概念,需要一步步建立,為此也花費了大量的時間,一遍遍的看書,加上有硬件支持,最終做出了這個成品。相信在今后的不斷學習中,會收獲更多!同時也很感謝學校能夠提供這樣一個學習平臺,讓我們能夠在學習之余參加這類實做的比賽,對

69、我們對知識的掌握有很大的幫助!參考資料一、 例說51單片機(C語言版),人民郵電出版社。二、全國大學生電子設計競賽單片機應用技能精解,電子工業(yè)出版社。三、快速精通Altium Designer6電路圖和PCB設計,化學工業(yè)出版社。四、郭天祥視頻講解十天征服單片機,與配套資料。附錄一:程序清單#include<reg52.h>#include<math.h>#include<INTRINS.H>#define uchar unsigned char#define uint unsigned int/各個IO口的初始化sbit dscs=P20;sbit dsa

70、s=P21;sbit dsrw=P22;sbit dsds=P23;sbit irq=P32;sbit s1=P30;sbit s2=P31;sbit s3=P32;sbit s4=P33;sbit beep=P10;sbit beep1=P11;sbit rs=P24;sbit rw=P25;sbit e=P26;sbit DQ=P17; int i,tt=0;uchar table0="WELCOME !"uchar table1="HAVE A NICE DAY!"uchar table2="SET ALARM"int miao,fen,shi,nian,yue,ri,week,s1num=0,num=0,num2=1,flag,flag_di,flag1,amiao,afen,ashi;uchar flag_get,num1,TZ=0;TX=0;keyxuan=1;uchar baiwei,shiwei,gewei,shifen,baifen,qianfen,wanfen;uint wd;void

溫馨提示

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

評論

0/150

提交評論