畢業(yè)設(shè)計(jì)(論文)基于51單片機(jī)的電子萬年歷與溫度檢測報(bào)警系統(tǒng)_第1頁
畢業(yè)設(shè)計(jì)(論文)基于51單片機(jī)的電子萬年歷與溫度檢測報(bào)警系統(tǒng)_第2頁
畢業(yè)設(shè)計(jì)(論文)基于51單片機(jī)的電子萬年歷與溫度檢測報(bào)警系統(tǒng)_第3頁
畢業(yè)設(shè)計(jì)(論文)基于51單片機(jī)的電子萬年歷與溫度檢測報(bào)警系統(tǒng)_第4頁
畢業(yè)設(shè)計(jì)(論文)基于51單片機(jī)的電子萬年歷與溫度檢測報(bào)警系統(tǒng)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目錄摘要 1一、 設(shè)計(jì)要求與方案論證11設(shè)計(jì)要求 212系統(tǒng)方案選擇和論證 213電路最終方案確定 4二、電子萬年歷與溫度采集報(bào)警硬件設(shè)計(jì)和實(shí)現(xiàn)21系統(tǒng)設(shè)計(jì) 421.1系統(tǒng)設(shè)計(jì)框圖 421.2系統(tǒng)硬件需求介紹 422系統(tǒng)硬件各模塊作用 522.1單片機(jī)核心控制模塊 522.2實(shí)時(shí)時(shí)鐘電路模塊 622.3數(shù)字溫度傳感器模塊 1322.4液晶顯示電路模塊 1722.5蜂鳴器電路模塊(2個(gè))2222.6 usb和外部電源供電模塊 2323系統(tǒng)電路圖設(shè)計(jì)2323.1系統(tǒng)電路原理框圖和原理圖23三、軟件設(shè)計(jì)與分析31系統(tǒng)軟件流程圖2531.1ds12c87程序流程圖2531.2ds18b20程序流程圖2

2、631.3鍵盤掃描程序流程圖2731.4主程序流程圖28四、系統(tǒng)測試41測試工具2942軟件測試2943硬件測試30五、設(shè)計(jì)總結(jié)和心得41設(shè)計(jì)總結(jié)與心得31參考文獻(xiàn)32附錄一:程序清單33附錄三:實(shí)物圖片48基于單片機(jī)的萬年歷與溫度檢測報(bào)警系統(tǒng)摘要隨著社會(huì)發(fā)展需求的改變,電子萬年歷是一個(gè)應(yīng)用非常廣泛的實(shí)用日常計(jì)時(shí)工具,帶有顯示世紀(jì),年,月,日,星期,時(shí),分,秒和按鍵可調(diào)時(shí)間及其按鍵設(shè)置鬧鐘的功能,同時(shí)具有月末自動(dòng)更新,閏年補(bǔ)償功能等多種功能。溫度檢測報(bào)警系統(tǒng)也是在日常生活和工業(yè)應(yīng)用非常廣泛的工具,能實(shí)時(shí)采集周圍的溫度信息進(jìn)行顯示,程序內(nèi)部設(shè)定有報(bào)警上下限,根據(jù)應(yīng)用環(huán)境不同可設(shè)定不同的報(bào)警上下限

3、。此系統(tǒng)是基于stc89c52單片機(jī)設(shè)計(jì)的,包含液晶顯示模塊,ds12c887實(shí)時(shí)時(shí)鐘模塊,ds18b20溫度采集模塊,鍵盤掃描模塊,報(bào)警模塊。stc89c52作為控制核心,具有功耗低,功能強(qiáng)等特點(diǎn),電壓可選3到5v電源供電。顯示模塊采用1602液晶動(dòng)態(tài)顯示,相對數(shù)碼管而言經(jīng)濟(jì)實(shí)用,占用空間小,對于顯示數(shù)字、字母最為合適,而且與單片機(jī)連線簡單,占用io口相對較少。實(shí)時(shí)時(shí)鐘芯片ds12c887是一款與ds12c885實(shí)時(shí)時(shí)鐘兼容的替代產(chǎn)品,該器件提供rtc/日歷、定時(shí)鬧鐘等功能,如果檢測到主電源故障,該器件可自動(dòng)切換到備用電源供電,ds12c887將石英晶體與電池集成在一起,在斷電后仍可精確走1

4、0年。溫度檢測報(bào)警模塊采用數(shù)字式溫度傳感器ds18b20,該芯片具有精度高,測量范圍廣等優(yōu)點(diǎn),易與單片機(jī)連接,模塊電路組成簡單并同時(shí)具有溫度報(bào)警功能。關(guān)鍵詞:stc89c52,ds12c887,ds18b20,1602液晶顯示,電子萬年歷,采集周圍設(shè)備溫度、溫度報(bào)警一、設(shè)計(jì)要求與方案論證11.1設(shè)計(jì)要求設(shè)計(jì)一個(gè)能夠?qū)崿F(xiàn)世紀(jì),年,月,日,星期,小時(shí),分,秒顯示附帶溫度檢測顯示的實(shí)時(shí)時(shí)鐘電子萬年歷,同時(shí)具有時(shí)間調(diào)節(jié)和鬧鐘設(shè)置功能,以及時(shí)間預(yù)設(shè)報(bào)警、溫度報(bào)警、報(bào)警解除等功能。該產(chǎn)品共設(shè)有四個(gè)按鍵,每個(gè)按鍵具有多種功能,充分利用各個(gè)按鍵。在溫度報(bào)警的同時(shí)還有發(fā)光二極管做相應(yīng)的指示。并且通過編程還可以控

5、制繼電器的開閉,從而控制外部設(shè)備的運(yùn)行,通過對鬧鐘和溫度報(bào)警的設(shè)置可進(jìn)行定時(shí)對設(shè)備進(jìn)行自動(dòng)化控制,也體現(xiàn)了產(chǎn)品的智能化。11.3系統(tǒng)方案選擇和論證stc89c52單片機(jī)作為核心控制體,該單片機(jī)具有高可靠,超低價(jià),低功耗,無法解密等優(yōu)點(diǎn)。該單片機(jī)屬于雙列直插式封裝的pdi40口管腳。具有4個(gè)輸入輸出端口,分別為port0,prot1,prot2,prot3,其中p0口是一組8位漏極開路型雙向io口,校驗(yàn)時(shí),要求接上拉電阻。其他三個(gè)內(nèi)部有30k的電阻,所以不用再外接電阻。此單片機(jī)具有6個(gè)中斷,其中包括三個(gè)定時(shí)器中斷,二個(gè)外部中斷,一個(gè)串口中斷,為全雙工通信口。內(nèi)部有靜態(tài)非易失eeprom和看門狗。

6、片內(nèi)含8kbbytes的可反復(fù)檫寫的只讀程序存儲(chǔ)器(perom)和256bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(ram),功能強(qiáng)大,適合許多較為復(fù)雜的控制應(yīng)用場合。相比較其他芯片來說比較適合學(xué)生試驗(yàn)所用,故采用此單片機(jī)作為核心控制芯片。ds12c887為實(shí)時(shí)時(shí)鐘芯片,功能豐富,可以用來直接代替ibmpc上的時(shí)鐘日歷芯片ds12887,同時(shí),它的管腳也和mc146818b、ds12887相兼容。由于ds12c887能夠自動(dòng)產(chǎn)生世紀(jì)、年、月、日、時(shí)、分、秒等時(shí)間信息,其內(nèi)部又增加世紀(jì)寄存器,從而利用硬件電路解決子“千年”問題:ds12c887中自帶有鋰電池,外部掉電時(shí),其內(nèi)部信息還能夠保持10年之久;對于

7、一天內(nèi)的時(shí)間記錄,有12小時(shí)制和24小時(shí)制兩種模式。在12小時(shí)制模式中,用am和pm區(qū)分上午和下午;時(shí)間表示方法也有兩種,一種用二進(jìn)制數(shù)表示,一種用bcd碼表示;ds12c887中帶有128字節(jié)ram,其中有11字節(jié)ram用來儲(chǔ)存時(shí)間信息,4字節(jié)ram用來儲(chǔ)存ds12c887的控制信息,稱為控制寄存器,113字節(jié)通用ram使用戶使用;此外用戶還可以對ds12c887進(jìn)行編程以實(shí)現(xiàn)多種方波輸出,并對其內(nèi)部的三路中斷進(jìn)行屏蔽。芯片內(nèi)部石英晶體與充電電池,具有三個(gè)可單獨(dú)屏蔽中斷標(biāo)志位的中斷輸出,閏年補(bǔ)償至2100年。+5v或+3.3v工作電源,工業(yè)級溫度范圍,自動(dòng)電源故障檢測和切換電路,故此芯片適合

8、應(yīng)用于工業(yè)生產(chǎn)和家庭應(yīng)用中。ds18b20是數(shù)字式溫度傳感器,采用單總線通信協(xié)議。ds18b20具有體積小,硬件開銷低,抗干擾能力強(qiáng),精度高附加功能強(qiáng),封裝形式多樣等特點(diǎn)。適合各種狹小空間內(nèi)設(shè)備的數(shù)字測溫和控制。同時(shí)單線可掛接多個(gè)元件,因?yàn)槊總€(gè)元件都有唯一的一個(gè)64位光刻rom編碼,家族碼為28h,可以多個(gè)也可單個(gè)操作。電壓測量范圍是3.0v到5.5v。內(nèi)部含有eeprom,其報(bào)警上、下限溫度值和設(shè)定的分辨率倍數(shù)在芯片掉電的情況不丟失。并且內(nèi)部帶有ad轉(zhuǎn)換電路,技術(shù)較為成熟,所以采用此芯片最為合適。1602液晶應(yīng)用非常廣泛,操作簡單,功能強(qiáng)大,采用1602液晶顯示各種數(shù)字信息最為合適,通過對單

9、片機(jī)的編程來控制ds12c887和ds18b20芯片的讀寫操作來獲取相應(yīng)的信息,再通過對液晶的編程控制將獲取到的信息通過一系列轉(zhuǎn)換從而顯示到1602液晶上。最后達(dá)到有電子萬年歷和溫度采集報(bào)警等功能。系統(tǒng)論證時(shí)通過在單片機(jī)學(xué)習(xí)板上的試驗(yàn)操作,能夠達(dá)到預(yù)期的效果!12最終方案確定核心控制體:stc89c52單片機(jī)實(shí)時(shí)時(shí)鐘芯片:ds12c887數(shù)字式溫度傳感器:ds18b20總共設(shè)有四個(gè)按鍵,為節(jié)約資源考慮,每個(gè)按鍵都有多種功能。每個(gè)按鍵分別標(biāo)號為a,b,c,d.第一次按下b,c,d都沒有反應(yīng),首先按下a鍵可選擇指針位置,b,c鍵為加減鍵,d鍵為鬧鐘設(shè)置鍵。b同時(shí)又是鬧鐘報(bào)警消除鍵。操作簡單,按鍵靈

10、活。兩個(gè)報(bào)警模塊,分為溫度報(bào)警和鬧鐘報(bào)警兩種。二、電子萬年歷與溫度采集報(bào)警硬件設(shè)計(jì)和實(shí)現(xiàn)主控模塊時(shí)鐘模塊溫度檢測模塊1602顯示模塊鍵盤掃描模塊報(bào)警模塊2.。1系統(tǒng)設(shè)計(jì)框圖 圖1 系統(tǒng)組成框圖21.2系統(tǒng)硬件需求介紹stc89c52單片機(jī)一片,ds12c887實(shí)時(shí)時(shí)鐘芯片一個(gè),ds18b20數(shù)字式溫度傳感器一個(gè),+5v無源蜂鳴器二個(gè),12mhz晶振一個(gè),多個(gè)按鍵和開關(guān),常用電容電阻,連接線,三極管,二極管若干,滑動(dòng)變阻器一個(gè),usb母口一個(gè)。22系統(tǒng)硬件各模塊作用22.1單片機(jī)核心控制模塊核心控制器件選用stc89c52單片機(jī)。stc89c52單片機(jī)為40管腳雙列直插芯片,它是一種高性能,低功

11、耗的8位cmos微處理器芯片,市場應(yīng)用最多。而且價(jià)格便宜,控制方便,便于應(yīng)用有4個(gè)i/o口分別為p1,p2,p3,p4。其中每一個(gè)管腳都能做獨(dú)立的輸入輸出管腳,它的第9腳位復(fù)位管腳,接上電容和上拉電阻再帶個(gè)開關(guān)構(gòu)成復(fù)位電路。18,19管腳接外部晶振和兩個(gè)微調(diào)電容構(gòu)成外部晶振電路。單片機(jī),復(fù)位電路,晶振,5v電源構(gòu)成單片機(jī)最小系統(tǒng)。其中與at89s52單片機(jī)管腳容。圖2 單片機(jī)最小電路圖2為單片機(jī)最小電路,其中晶振頻率可以根據(jù)自己需要進(jìn)行選擇,范圍在0-24mhz,常用12mhz。復(fù)位電路得電容一般用10uf,但并不唯一,只要rc所得時(shí)間大于兩個(gè)機(jī)器周期即可。還有其p0內(nèi)部無上拉電阻,所以在執(zhí)行

12、輸出功能時(shí),外部必須接上拉電阻(一般10k即可)。p0口有兩個(gè)作用,一個(gè)接上ds12c887的ad0-ad7(雙向地址/數(shù)據(jù)復(fù)用總線),控制著ds12c887的8位并行數(shù)據(jù)的地址和數(shù)據(jù)的傳輸,另接上液晶的db0-db7(數(shù)據(jù)總線)控制著向液晶發(fā)送8位并行數(shù)據(jù)。p17接上ds18b20的單數(shù)據(jù)線,發(fā)送并接受數(shù)據(jù),地址的操作。p30到p33作為獨(dú)立按鍵口。p24口為液晶的數(shù)據(jù)/命令選擇端,1為數(shù)據(jù),二為命令,p25口控制液晶讀/寫選擇端,1為讀命令,0為寫操作,p26口控制液晶使能信號。對ds12c887:p20口控制ds12c887的片選信號的輸入(cs),p21口控制地址選通輸入(as),p2

13、2口為讀寫輸入(r/w),p23控制著數(shù)據(jù)選通或讀輸入(ds)。p32(外部中斷0)接reset管腳,當(dāng)鬧鐘時(shí)間到時(shí)便由此觸發(fā)外部中斷0,進(jìn)入到外部中斷0程序中。p10和p11口分別控制著蜂鳴器的報(bào)警,當(dāng)溫度、時(shí)間到達(dá)限定值時(shí)會(huì)發(fā)出高低電平脈沖,以至發(fā)出報(bào)警聲音。22.2實(shí)時(shí)時(shí)鐘電路模塊時(shí)鐘模塊選用ds12c887芯片,ds12c887芯片能夠自動(dòng)產(chǎn)生世紀(jì),年,月,日,星期,時(shí),分,秒信息,閏年補(bǔ)償至2100年,具有鬧鐘功能。內(nèi)部自帶鋰電池,在外部掉電時(shí)信息不丟失,并且能精確走10年之久。同時(shí)ds12c887能自動(dòng)檢測電源故障和切換電路,有工業(yè)級溫度范圍。此芯片可以廣泛應(yīng)用于對環(huán)境要求嚴(yán)格的控

14、制系統(tǒng)中。如嵌入式系統(tǒng),電表,安全系統(tǒng),網(wǎng)絡(luò)集線器,網(wǎng)橋,路由器。 圖3 ds12c887硬件連接圖d12c887電路圖,工作電源采用5v。第一管腳(mot)是motorola或intel總線時(shí)序選擇端,利用此引腳選擇兩種總線類型中的一種,連接到vcc時(shí)選擇motoroal總線時(shí)序,接gnd或懸空選擇intel總線時(shí)序。該引腳內(nèi)部有一個(gè)下拉電阻。d0到d7為雙向地址/數(shù)據(jù)復(fù)用總線。地址于總線周期的開始發(fā)送到總線上。并由as信號的下降沿鎖存到ds12c887中。所寫的數(shù)據(jù)由ds信號的下降沿(motoroal時(shí)序)或r/w信號的上升沿(intel時(shí)序)鎖存。讀周期中,ds12c887于ds信號的后

15、期(motoroal時(shí)序中ds和r/w均為高,intel時(shí)序中ds為低、r/w為高)將數(shù)據(jù)發(fā)送到總線上。讀周期結(jié)束后,總線恢復(fù)到高阻狀態(tài),同時(shí)ds在motoroal時(shí)序中變低,在intel時(shí)序中變高。12腳為gnd。13腳叫cs-片選信號輸入,片選信號低電平有效,在訪問ds12c887的總線周期內(nèi)必須保持低電平intel時(shí)序中的ds和r/w信號工作期間,cs必須保持有效,在cs信號無效情況下,總線操作將鎖存地址,不能訪問芯片。當(dāng)vcc低于vpf電壓時(shí),ds12c887內(nèi)部通過禁止cs輸入來拒絕訪問,此舉旨在斷電時(shí)保護(hù)rtc數(shù)據(jù)和ram數(shù)據(jù)。所以在訪問期間cs片選信號應(yīng)保持低電平。14管腳as-

16、地址選通輸入。有低變?yōu)楦叩牡刂愤x通脈沖用來分離總線信號。在as信號的下降沿,地址鎖存到ds12c887內(nèi),無論cs信號是否有效,as的下一個(gè)上升沿都將清除地址,地址選通信號必須先于每個(gè)讀或?qū)懺L問。如果在cs信號無效的情況下執(zhí)行了讀或?qū)懖僮鳎瑒t必須在cs信號有效時(shí)且在讀或?qū)懺L問之前,從新發(fā)送一次地址選通信號。15管腳r/w讀/寫輸入。r/w引腳有兩種操作模式,在mot引腳接vcc的motoroal時(shí)序中,r/w電平用來指示當(dāng)前周期是讀還是寫。ds為高時(shí),r/w為高電平表示讀周期,r/w為低電平則表示寫周期,在mot引腳接gnd的intel時(shí)序中,r/w為低電平有效,在此模式下,r/w引腳與普通r

17、am的寫時(shí)能信號(we)工作方式類似,在信號的上升沿鎖存數(shù)據(jù)。17管腳ds-數(shù)據(jù)選通或讀輸入,ds引腳根據(jù)mot引腳電平有兩種模式,mot引腳接vcc時(shí),選擇motorola總線時(shí)序,此模式下,總線周期的后期ds為正脈沖,稱作數(shù)據(jù)選通脈沖,在讀周期中,ds表明ds12c887將要驅(qū)動(dòng)雙向總線,在寫周期,ds信號的下降沿使使ds12c887鎖存所寫的數(shù)據(jù),當(dāng)mot接gnd時(shí),選擇intel總線時(shí)序,ds表示讀取ds12c887數(shù)據(jù)驅(qū)動(dòng)總線的時(shí)間周期,此模式下,ds引腳與普通ram的輸出使能信號(oe)工作方式類似。18管腳reset-復(fù)位輸入,低電平有效reset引腳對時(shí)鐘、日歷或ram不起作用

18、,上電時(shí)可將reset引腳首先保持低電平,以等待電源穩(wěn)定下來,保持低電平時(shí)間可根據(jù)應(yīng)用需要而定,但是,如果上電時(shí)使用reset信號,reset保持低電平時(shí)間應(yīng)當(dāng)超過200ms,以保證控制ds12c887上電時(shí)的內(nèi)部定時(shí)器結(jié)束,當(dāng)reset為低電平,而且vcc大于vpf時(shí),將產(chǎn)生以下操作:a周期性中斷使能(pie)位清0;b鬧鐘中斷使能(aie)位清0;c更新結(jié)束中斷使能(uie)位清0;d周期中斷標(biāo)志(pf)位清0;e鬧鐘中斷標(biāo)志(af)位清0;f更新結(jié)束中斷標(biāo)志(uf)位清0;g中斷請求狀態(tài)標(biāo)志(irqf)位清0;h irq引腳置為高阻狀態(tài);i直到reset恢復(fù)為高電平才能訪問器件;j方波使

19、能(sqwe)位清0。在典型應(yīng)用中,將reset與vcc連接。使得ds12c887在進(jìn)入或退出電源失效狀態(tài)時(shí)不影響任何控制寄存器的值。19管腳irq-中斷請求輸出。ds12v887的irq引腳低電平有效,可用作處理器的中斷請求輸入,只要引起中斷的狀態(tài)位置位,并且相應(yīng)中斷使能位也置位,irq將一直保持低電平。處理器程序通常讀取c寄存器來清除irq引腳輸出,reset引腳也會(huì)清除未處理的中斷,沒有中斷發(fā)生時(shí)irq為高阻狀態(tài),可將多個(gè)中斷器件接到一條irq總線上,只要他們均為漏極開路輸出,irq引腳為漏極開路輸出,需要使用一個(gè)上拉電阻與vcc相連。23腳sqw-方波輸出,因?yàn)槲覀兇藢?shí)驗(yàn)中不需要方波輸

20、出,故不接。vcc主電源的dc電源引腳。vcc在正常范圍時(shí),可訪問器件的所有功能,并能進(jìn)行數(shù)據(jù)讀寫,如果vcc低于vpf,則禁止讀和寫。ds12c887采用的是并行通信協(xié)議,8位同時(shí)傳遞,對應(yīng)到d0到d7八位端口。d0到d7接p0口,作為地址/數(shù)據(jù)選通復(fù)用總線。并行通信控制簡單,傳輸速度快,適合近距離傳輸。圖4 intel總線寫時(shí)序圖圖5 intel讀時(shí)序圖intel總線如上圖所示,編寫程序如圖時(shí)序圖所示。因?yàn)槠鋾r(shí)序延時(shí)都為納秒級的,軟件執(zhí)行一句簡單語句為微秒級。所以在編寫程序是可直接跳過,不用做軟件延時(shí)。對此相對降低了軟件編寫的難度。ds12c887有4個(gè)控制寄存器,在任何時(shí)間都可以進(jìn)行訪問

21、,即使處于更新周期。寄存器a字節(jié)的內(nèi)容如下。msb lsb uip dv2 dv1 dv0 rs3 rs2 rs1 rs0uip: 更新標(biāo)志位。為只讀位且不受復(fù)位操作的影響,為1時(shí),表示即將發(fā)生的數(shù)據(jù)更新;為0時(shí),表示至少244us不會(huì)更新數(shù)據(jù)。當(dāng)uip為0時(shí),可以獲得所有時(shí)鐘、日歷、鬧鐘信息。將寄存器b中的set位置1可以限制任何數(shù)據(jù)更新操作,并且清除uip位。dv2、dv1、dv0:此3位為010時(shí)將打開晶振,并開始計(jì)時(shí)。res3、res2、res1、res0:用于設(shè)置周期性中斷產(chǎn)生的時(shí)間周期和輸出方波的頻率。寄存器b字節(jié)的內(nèi)容如下。 msb lsb set pie aie uie sqw

22、e dm24/12 dseset:設(shè)置位,可讀寫,不受復(fù)位操作影響。為0時(shí),不處于設(shè)置狀態(tài),芯片進(jìn)行正常時(shí)間數(shù)據(jù)更新;為1時(shí),抑制數(shù)據(jù)更新,可以通過程序設(shè)定時(shí)間和日歷信息。pie:周期性中斷使能位,可讀寫,復(fù)位時(shí)清除此位。為1時(shí),允許寄存器c中的周期中斷標(biāo)志位pf,驅(qū)動(dòng)/irq引腳為低產(chǎn)生中斷信號輸出,中斷信號產(chǎn)生的周期由rs3re0決定。aie:鬧鐘中斷使能位,可讀寫。為1時(shí),允許寄存器c中的鬧鐘中斷標(biāo)志位af、鬧鐘發(fā)生時(shí)就會(huì)通過/irq引腳產(chǎn)生中斷輸出。uie:數(shù)據(jù)更新結(jié)束中斷使能位,可讀寫。復(fù)位或者set位為1時(shí)清除此位。為1時(shí)允許寄存器c中的更新結(jié)束標(biāo)志uf,更新結(jié)束時(shí)就會(huì)通過/irq

23、引腳產(chǎn)生中斷輸出。sqwe:方波使能位,可讀寫,復(fù)位時(shí)清除此位。為0時(shí),sqw引腳保持低電平;為1時(shí),sqw引腳輸出方波信號,其頻率由rs3rs0決定。dm:數(shù)據(jù)模式位,可讀寫,不受復(fù)位操作影響。為0時(shí),設(shè)置時(shí)間、日歷信息為二進(jìn)制數(shù)據(jù);為1時(shí),設(shè)置為bcd碼數(shù)據(jù)。24/12:時(shí)間模式設(shè)置為,可讀寫,不受復(fù)位操作影響。為0時(shí),設(shè)置為12小時(shí)模式;為1時(shí),設(shè)置為24小時(shí)模式。dse:為1時(shí),會(huì)引起兩次特殊的時(shí)間更新;4月的第一個(gè)星期日凌晨1:59:59會(huì)直接更新到3:00:00,10月的最后一個(gè)星期日凌晨1:59:59會(huì)直接更新到1:00:00;為0時(shí),時(shí)間信息正常更新,此位可讀寫,不受復(fù)位操作影

24、響。寄存器c字節(jié)內(nèi)容如下。 msb lsb irqf pf af uf 0 0 0 0iqrf:中斷申請標(biāo)志位。為1時(shí),/irq引腳為低,產(chǎn)生中斷申請。當(dāng)pf、pie為1時(shí)或者af、ate為1或者uf、uie為1時(shí),此位為1,否則置0.pf:中期中斷標(biāo)志位。為1時(shí),它是只讀位,和pie位狀態(tài)無關(guān),由復(fù)位操作或者寄存器c操作清除。af:鬧鐘中斷標(biāo)志位。為1時(shí),表示當(dāng)前時(shí)間和鬧鐘設(shè)定時(shí)間一至,由復(fù)位操作或讀寄存器c操作清除。uf:數(shù)據(jù)更新結(jié)束中斷標(biāo)志位。每個(gè)更新周期后此位都會(huì)置1,當(dāng)uie位位置1時(shí),uf若為1就會(huì)引起irqf置1,將驅(qū)動(dòng)/irq引腳為低電平,申請中斷。此位由復(fù)位操作或讀寄存器c操

25、作清除。寄存器d字節(jié)的內(nèi)容如下。 msb lsb 0 0 0 0 0 0 0 0vrt;ram和時(shí)間有效位。用于指示和vbat引腳連接的電池狀態(tài)。此位不可寫,也不受操作為影響,正常情況下讀取時(shí)總?cè)?,如果出現(xiàn)讀取為0的情況,則表示電池耗盡,時(shí)間數(shù)據(jù)和ram中的數(shù)據(jù)就會(huì)出現(xiàn)問題。芯片ds12cr887的113字節(jié)普通ram空間為非易失性ram空間,他不專門用于某些特別功能,而是可以在未處理器程序中作為非易失性內(nèi)存空間使用。如write_ds(0x0a,0x20);write_ds(0x0b,0x26);分別表示向a,b寄存器發(fā)送0x20,0x26命令。0x20表示ram中時(shí)鐘、日歷和鬧鐘信息都

26、可以訪問;啟動(dòng)振蕩器使能中斷和sqw輸出都禁止。0x26表示更新傳輸功能正常進(jìn)行;阻止周期性中斷輸出;開鬧鐘中斷使能;選擇二進(jìn)制格式;24小時(shí)格式;關(guān)閉夏令時(shí)使能。read_ds(0x0c)意義為讀取c寄存器的地址。芯片ds12cr887的113字節(jié)普通ram空間為非易失性ram空間,他不專門用于某些特別功能,而是可以在未處理器程序中作為非易失性內(nèi)存空間使用。通過軟件編程將讀到的信息顯示到1602液晶中,顯示世紀(jì),年,月,日,星期,小時(shí),分,秒。通過設(shè)置按鍵可以進(jìn)行時(shí)間調(diào)節(jié),在調(diào)節(jié)時(shí)間時(shí)時(shí)鐘暫時(shí)停止走,再通過功能鍵回到正常工作狀態(tài)中,并且具有鬧鐘設(shè)定功能,但在設(shè)定鬧鐘時(shí)期內(nèi)部時(shí)間仍然在走。當(dāng)時(shí)

27、,分,秒,相符時(shí)通過蜂寧器進(jìn)行報(bào)警,再設(shè)置按鍵關(guān)閉鬧鐘。實(shí)現(xiàn)隨意控制鬧鐘的開啟和關(guān)閉。22.3數(shù)字溫度傳感器模塊數(shù)字溫度傳感器選用ds18b20,采用單總線通信協(xié)議。ds18b20主要特性有:1、適應(yīng)電壓范圍更寬,電壓范圍:3.05.5v,在寄生電源方式下可由數(shù)據(jù)線供電。2、獨(dú)特的單線接口方式,ds18b20在與微處理器連接時(shí)僅需要一條口線即可實(shí)現(xiàn)微處理器與ds18b20的雙向通訊。3、ds18b20支持多點(diǎn)組網(wǎng)功能,多個(gè)ds18b20可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)組網(wǎng)多點(diǎn)測溫4、ds18b20在使用中不需要任何外圍元件,全部傳感元件及轉(zhuǎn)換電路集成在形如一只三極管的集成電路內(nèi)。5、溫范圍5512

28、5,在-10+85時(shí)精度為0.5。6、可編程的分辨率為912位,對應(yīng)的可分辨溫度分別為0.5、0.25、0.125和0.0625,可實(shí)現(xiàn)高精度測溫。7、在9位分辨率時(shí)最多在93.75ms內(nèi)把溫度轉(zhuǎn)換為數(shù)字,12位分辨率時(shí)最多在750ms內(nèi)把溫度值轉(zhuǎn)換為數(shù)字,速度更快。8、測量結(jié)果直接輸出數(shù)字溫度信號,以一線總線串行傳送給cpu,同時(shí)可傳送crc校驗(yàn)碼,具有極強(qiáng)的抗干擾糾錯(cuò)能力。9、負(fù)壓特性:電源極性接反時(shí),芯片不會(huì)因發(fā)熱而燒毀,但不能正常工作。ds1820的操作指令分為rom操作命令和存儲(chǔ)器操作命令:(1)、rom操作命令及其含義skip rom指令代碼(cch):此命令執(zhí)行后的存儲(chǔ)器操作將針

29、對在線的所有ds1820。alarm search指令代碼(ech):當(dāng)溫度值高于th或低于tl中的數(shù)值時(shí),此命令可以讀出報(bào)警的ds1820。(2)、存儲(chǔ)器操作指令代碼及其含義read scratchpad指令代碼(beh):讀取溫度寄存器的溫度值。copy scratchpad指令代碼(48h):將溫度寄存器的數(shù)值拷貝到eeram中,保證溫度值不丟失。convert t指令代碼(44h):啟動(dòng)在線ds1280做溫度a/d轉(zhuǎn)換。recall e2指令代碼(b8h):將eeram中的數(shù)值拷貝到溫度寄存器中。溫度測量步驟如下:(1).read rom(33h),每次對ds1820進(jìn)行操作之前都要對

30、它進(jìn)行初始化,主要目的在于確定傳感器已經(jīng)連接到單總線上。(2).search rom(f0h),這條指令使處理器用排除的方法去辨別總線上的ds1820。(3).match rom(55h),只有準(zhǔn)確的符合64位rom序列的ds1820才能響應(yīng)其后的指令,當(dāng)然,單點(diǎn)測溫時(shí)可以使用skiprom(cch)指令來跳過這一步。(4).convert t(44h),發(fā)完指令后應(yīng)查詢總線上的電平,當(dāng)電平位高時(shí)溫度轉(zhuǎn)換完成。(5).read scratchpad(beh),將讀指令發(fā)出后,就可從總線上讀得表示溫度的2字節(jié)二進(jìn)制數(shù)由于采用單總線數(shù)據(jù)傳輸方式,ds18b20的數(shù)據(jù)i/o均由同一條線完成,因此,對

31、讀寫的操作時(shí)序要求嚴(yán)格。為了保證ds18b20的嚴(yán)格i/o時(shí)序。需要做較精確的延時(shí)。它的各種時(shí)序如下圖所示:ds18b20初始化時(shí)序 圖6 ds18b20溫度傳感器 ds18b20采用+5v電源供電22.4液晶顯示模塊字符型液晶顯示模塊是一種專門用于顯示字母、數(shù)字、符號等點(diǎn)陣式lcd,本設(shè)計(jì)采用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

32、背光源正極8d1數(shù)據(jù)16blk背光源負(fù)極引腳接口說明:第1腳:vss為地電源。第2腳:vdd接5v正電源。第3腳:vl為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10k的電位器調(diào)整對比度。第4腳:rs為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。第5腳:r/w為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。當(dāng)rs和r/w共同為低電平時(shí)可以寫入指令或者顯示地址,當(dāng)rs為低電平r/w為高電平時(shí)可以讀忙信號,當(dāng)rs為高電平r/w為低電平時(shí)可以寫入數(shù)據(jù)。第6腳:e端為使能端,當(dāng)e端由高電平跳變成低電平時(shí),液晶模塊

33、執(zhí)行命令。第714腳:d0d7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。1602lcd的指令說明及時(shí)序:1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表1-2所示:序號指令rsr/wd7d6d5d4d3d2d1d01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001i/ds4顯示開/關(guān)控制0000001dcb5光標(biāo)或字符移位000001s/cr/l*6置功能00001dlnf*7置字符發(fā)生存貯器地址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01bf計(jì)數(shù)器地址10寫數(shù)到cgram或ddram)10

34、要寫的數(shù)據(jù)內(nèi)容11從cgram或ddram讀數(shù)11讀出的數(shù)據(jù)內(nèi)容字符控制命令說明:1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令碼01h,光標(biāo)復(fù)位到地址00h位置。指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00h。指令3:光標(biāo)和顯示模式設(shè)置 i/d:光標(biāo)移動(dòng)方向,高電平右移,低電平左移 s:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。指令4:顯示開關(guān)控制。 d:控制整體顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 c:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) b:控制光標(biāo)是否閃爍,高電平閃爍,低

35、電平不閃爍。指令5:光標(biāo)或顯示移位 s/c:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令 dl:高電平時(shí)為4位總線,低電平時(shí)為8位總線 n:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 f: 低電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。指令7:字符發(fā)生器ram地址設(shè)置。指令8:ddram地址設(shè)置。指令9:讀忙信號和光標(biāo)地址 bf:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)?;静僮鲿r(shí)序表,讀寫操作時(shí)序如圖所示: 圖7 讀操作時(shí)序 圖8 寫操作時(shí)序 圖9 液晶部分電路連接圖22.5蜂鳴器電路模塊(2

36、個(gè))圖10 溫度報(bào)警圖11 鬧鐘報(bào)警蜂鳴器用cs9013三極管驅(qū)動(dòng),蜂鳴器用5v的無源蜂鳴器,并接一個(gè)發(fā)光二極管作為指示燈,同時(shí)在發(fā)光二極管前串接個(gè)限流電阻,數(shù)據(jù)端口分別接p10,p11(由單片機(jī)的p10,p11直接輸出驅(qū)動(dòng))。設(shè)置兩個(gè)報(bào)警時(shí)為了防止鬧鐘和溫度報(bào)警發(fā)生重疊,影響判斷!22.6 usb和外部電源供電電路圖12 電源部分電路如圖可接插usb口,從而獲取電源,也可外部供給+5v電源。此電路圖最大優(yōu)點(diǎn)就是可以連接多個(gè)vcc和gnd,方便電路連接。有發(fā)光二極管做電源指示燈,方便操作。23系統(tǒng)電路圖設(shè)計(jì)23.1系統(tǒng)原理框圖和原理圖stc89c52單片機(jī)溫度傳感器進(jìn)行溫度采集,經(jīng)過a/d轉(zhuǎn)換

37、(ds18b20內(nèi)部完成此操作),送入單片機(jī)存儲(chǔ),通過定時(shí)器0進(jìn)行定時(shí)讀取。通過對實(shí)時(shí)時(shí)鐘的讀寫操作,將讀取到時(shí)間信息顯示到1602液晶上,通過按鍵可對時(shí)間和鬧鐘進(jìn)行調(diào)節(jié),為方便調(diào)節(jié)考慮,在調(diào)節(jié)時(shí)間不讀取溫度值。調(diào)節(jié)完成后再讀取溫度值。蜂寧器報(bào)警,在溫度達(dá)到相應(yīng)設(shè)定的溫度值和鬧鐘時(shí)間到時(shí),觸發(fā)蜂寧器發(fā)出響聲,進(jìn)行報(bào)警。再通過相應(yīng)按鍵進(jìn)行消除報(bào)警聲。(設(shè)置兩個(gè)報(bào)警時(shí)為了防止兩個(gè)報(bào)警發(fā)生重疊)鍵盤掃描,按鍵進(jìn)行時(shí)間調(diào)節(jié),鬧鐘設(shè)定鬧鐘設(shè)定,關(guān)閉蜂寧器報(bào)警聲。液晶顯示,開機(jī)時(shí)顯示welcome have a nice day字樣,過幾秒鐘后顯示時(shí)間和溫度值,圖8 系統(tǒng)原理框圖下面是系統(tǒng)硬件電路連線圖(

38、原理圖)三、軟件測試與分析31系統(tǒng)軟件流程圖3.1.1ds12c887程序流程圖開始初始化,寫地址、數(shù)據(jù),讀地址。將相應(yīng)地址和數(shù)據(jù)寫入控制寄存器a、b中讀取秒鬧鐘,分鬧鐘,時(shí)鬧鐘寄存器到相應(yīng)的存儲(chǔ)變量中(read-alarm()函數(shù)),調(diào)用write-ds()函數(shù)將時(shí)分秒鬧鐘的地址和數(shù)據(jù)寫入此函數(shù)中。讀取c控制寄存器的地址讀取年,月,日,星期,時(shí),分,秒寄存器的相應(yīng)地址當(dāng)flag,flag1標(biāo)志位允許時(shí),通過調(diào)用時(shí)分秒,年月日顯示函數(shù)將相應(yīng)信息顯示到液晶確定的位置上去。 31.2 ds18b20程序流程圖初始化ds18b20檢測ds18b20序列號(單個(gè)掛接不需要)yesno發(fā)送跳過讀rom的

39、操作啟動(dòng)溫度轉(zhuǎn)換稍微延時(shí),給硬件一點(diǎn)反應(yīng)時(shí)間yesno主機(jī)發(fā)出復(fù)位脈沖以檢測從機(jī)是否有應(yīng)答主機(jī)再次發(fā)出復(fù)位脈沖以檢測從機(jī)是否有應(yīng)答開始發(fā)送跳過讀rom的操作讀取溫度寄存器的值,并經(jīng)過溫度轉(zhuǎn)換,返回溫度值。當(dāng)flag-di,keyxuan標(biāo)志位允許時(shí)將數(shù)字溫度數(shù)據(jù)送到1602液晶上顯示。31.3 鍵盤掃描程序模塊進(jìn)入鍵盤掃描a鍵按下,延時(shí)去抖。此時(shí)設(shè)定flag=1,keyxuan=0時(shí)間停止走,溫度將暫不進(jìn)行動(dòng)態(tài)顯示(為液晶穩(wěn)定性考慮)。a每按下一次s1num+一次,指針落在不同位置上(利用switch(s1num),case語句來實(shí)現(xiàn)是需要調(diào)節(jié)時(shí)間,日期,還是星期)。最后一次按下s1num=8

40、時(shí),將各位數(shù)據(jù)送到液晶上顯示,同時(shí)將flag=0,keyxuan=1,即正常顯示時(shí)間,動(dòng)態(tài)掃描溫度,s1num=0.在a鍵還沒有退出時(shí)。b,c鍵根據(jù)功能鍵a選擇指針位置switch(s1num),case,然后每按b一次加一,按下c減一,直到調(diào)節(jié)到準(zhǔn)確時(shí)間為止(其中每按下一次按鍵都進(jìn)行一次顯示刷新)。鬧鐘時(shí)間已到?否則不進(jìn)入yes按下b鍵消除鬧鐘報(bào)警當(dāng)調(diào)節(jié)好時(shí)間后,再按a鍵,直至將s1num+到8為止,即退出了鍵盤掃描程序,此時(shí)將調(diào)節(jié)好的各個(gè)時(shí)間信息讀取到相應(yīng)的寄存器中,調(diào)用write-ds()函數(shù),讀取相應(yīng)的時(shí)分秒等信息的地址和數(shù)據(jù),最后發(fā)出清屏命令,將flag,flag1,keyxuan標(biāo)

41、志位改為有效位。從而正常顯示時(shí)間信息和實(shí)現(xiàn)溫度動(dòng)態(tài)掃描。另外需要調(diào)節(jié)鬧鐘時(shí)就在按下a后再按下d鬧鐘鍵flag1=1,標(biāo)志位無效(即暫不顯示萬年歷信息)。延時(shí)去抖后調(diào)用在字符顯示函數(shù)(set alarm字樣),再利用b,c鍵將時(shí)分秒加加或減減(每按下一次按鍵都會(huì)有刷新顯示)。調(diào)用read-alarm()函數(shù)。將調(diào)節(jié)好的時(shí)間送入相應(yīng)時(shí)分秒寄存器中。再次按下d鍵時(shí),將讀取到的時(shí)分秒信息送到set-alarm()函數(shù)中,并發(fā)出清屏命令。標(biāo)志位(flag,flag1,keyxuan)為有效。從而正常顯示時(shí)間和動(dòng)態(tài)顯示溫度值。3.1.6 主程序流程圖各個(gè)io端口的設(shè)定,各個(gè)變量初始化液晶初始化,ds12c

42、887,ds18b20,定時(shí)器0初始化顯示welcome! heve a nice day !字樣簡單延時(shí)30s,然后發(fā)出清屏命令進(jìn)入主循環(huán)體有鍵按下,調(diào)用鍵盤掃描程序鬧鐘時(shí)間已到?(通過外部中斷0實(shí)現(xiàn)中斷)觸發(fā)進(jìn)入外部中斷掃描無鍵按下,全部標(biāo)志位允許,調(diào)用讀取ds12c887時(shí)間函數(shù)ds18b20函數(shù),并調(diào)用其1602顯示各數(shù)據(jù)的函數(shù),調(diào)用星期顯示函數(shù),其他字符函數(shù)開始設(shè)置標(biāo)志位,從而調(diào)用蜂寧器報(bào)警程序,發(fā)出的聲音可以根據(jù)自己喜好設(shè)定。讀取c寄存器表示響應(yīng)了中斷鍵盤掃描定時(shí)器時(shí)間到(即flag-di=1用定時(shí)器0實(shí)現(xiàn)),溫度標(biāo)志位有效,通過定時(shí)器0實(shí)現(xiàn)讀取溫度值,再將此標(biāo)志位設(shè)為無效,以便顯

43、示。將溫度的各位顯示到液晶上,并設(shè)定溫度報(bào)警上下限高于上限或低于下限?按下b鍵可以解除鬧鐘報(bào)警noyes蜂鳴器發(fā)出報(bào)警聲,并伴有發(fā)光二極管閃爍返回到主循環(huán)體四、系統(tǒng)測試41測試工具52單片機(jī)學(xué)習(xí)板42軟件測試電子萬年歷與數(shù)字式溫度傳感器功能強(qiáng)大,芯片簡化了硬件電路設(shè)計(jì)的同時(shí)也無形加大了軟件編寫的復(fù)雜程度,為方便程序的調(diào)試和提高效率,故將軟件編寫分模塊進(jìn)行,先將實(shí)時(shí)時(shí)鐘模塊一步步調(diào)試,按照時(shí)序圖將讀寫函數(shù)寫好后,會(huì)顯示秒部分,并準(zhǔn)時(shí)走,但液晶屏不穩(wěn)定,有一些亂碼和光標(biāo)亂閃。經(jīng)檢查發(fā)現(xiàn)有些發(fā)生地址重疊的沖突,寫按鍵部分程序是發(fā)現(xiàn)調(diào)節(jié)好后在最后刷新屏幕時(shí)調(diào)節(jié)好的時(shí)間沒有讀取到,還有鬧鐘不能實(shí)現(xiàn)鬧鐘報(bào)

44、警功能,不斷調(diào)節(jié),不斷燒寫進(jìn)學(xué)習(xí)板,然后看結(jié)果,最終發(fā)現(xiàn)時(shí)沒有將調(diào)節(jié)好的時(shí)間讀取到寄存器中。加上溫度傳感器部分后發(fā)現(xiàn)在調(diào)節(jié)時(shí)間時(shí)出現(xiàn)亂碼和不穩(wěn)定現(xiàn)象,光標(biāo)亂跳的現(xiàn)象。經(jīng)過不斷檢查軟件,發(fā)現(xiàn)在按鍵調(diào)節(jié)時(shí)軟件讀取溫度值的標(biāo)志位是允許的,也就是說它在調(diào)節(jié)時(shí)間時(shí)又在動(dòng)態(tài)顯示周圍環(huán)境中的溫度值,這樣會(huì)導(dǎo)致光標(biāo)不穩(wěn)定的現(xiàn)象。經(jīng)過再添加keyxuan標(biāo)志允許位時(shí),這個(gè)問題得到很好的解決。在軟件編寫的過程中遇到非常多的問題,遠(yuǎn)遠(yuǎn)不止這些,在暑假期間也花費(fèi)了大量的時(shí)間去不斷修改,以上只是列舉些有代表性的問題作為反映。43硬件測試首先單片機(jī)最小系統(tǒng)的設(shè)計(jì)幾乎都是統(tǒng)一的,ds12c887,ds18b20接線靈活,i

45、o口的設(shè)置具有多樣性,開始我想溫度用數(shù)碼管顯示,萬年歷用液晶顯示。后來經(jīng)過何老師的提醒,將數(shù)碼管撤去,統(tǒng)一用液晶顯示數(shù)據(jù),這樣節(jié)約了硬件的開銷,用杜邦線將芯片與單片機(jī)學(xué)習(xí)板按照電路原理圖連接好,經(jīng)過不斷的軟件,硬件的反復(fù)修改,最終實(shí)現(xiàn)了軟件編寫的目標(biāo)功能!五、設(shè)計(jì)總結(jié)與心得大一下學(xué)期利用課余時(shí)間學(xué)習(xí)了單片機(jī),并買了塊52單片機(jī)學(xué)習(xí)板,在期間學(xué)習(xí)到了單片機(jī)的簡單部分,算是有點(diǎn)入門,在暑假期間決定做個(gè)作品出來,便一邊學(xué)習(xí),一邊動(dòng)手實(shí)踐做,利用52單片機(jī)學(xué)習(xí)板自己寫些程序,下載到學(xué)習(xí)板中看試驗(yàn)結(jié)果,一步步的感覺到了學(xué)習(xí)單片機(jī)的樂趣所在,便決定做個(gè)電子萬年歷和溫度報(bào)警系統(tǒng),開始一頭霧水,覺得無從下手,

46、但我相信事在人為,別人可以的,我一樣可以做到!因?yàn)樵诩依?,無法向?qū)W長和老師請教些技術(shù)性問題。唯一可以利用的就是郭天祥老師的視頻,走了不少彎路。第一步便是學(xué)習(xí)如何看懂芯片時(shí)序圖,對此,英語閱讀能力對我也是個(gè)挑戰(zhàn)。一邊參照視頻里的指點(diǎn),一邊也開始了編寫程序。許多東西以前都沒有概念,需要一一開始建立,所以花費(fèi)的時(shí)間也相對較長。每天的時(shí)間都花在了這個(gè)實(shí)驗(yàn)上,程序?qū)懸稽c(diǎn),燒一點(diǎn),一點(diǎn)點(diǎn)看試驗(yàn)結(jié)果,有時(shí)候一段小程序需要調(diào)試幾天,但我還是一步步的堅(jiān)持了下去。就這樣,思路也逐漸清晰起來,找到了問題的方向。通過在學(xué)習(xí)板上用杜邦線外接其他芯片構(gòu)造成所要達(dá)到的目標(biāo)電路,即電子萬年歷和溫度報(bào)警系統(tǒng)。電路連接好后,接下

47、來便是復(fù)雜的調(diào)程序步驟,一點(diǎn)點(diǎn)的改進(jìn),修改,一直花了整整兩個(gè)星期,最終達(dá)到了預(yù)期的效果。對此,感到了些許欣慰吧! 通過這么久的學(xué)習(xí)單片機(jī)的過程,自己也感受頗多,很多東西有想法只是一小部分,關(guān)鍵在于自己肯不肯實(shí)際動(dòng)手去做。大一上學(xué)期覺得自己很迷茫,不知道該干什么,通過自己不斷對本專業(yè)的了解,發(fā)現(xiàn)專業(yè)技能的學(xué)習(xí)才是我的方向,記得大一上學(xué)期有位大三的學(xué)長為我們做新生交流時(shí)說到專業(yè)方向的問題,他說大三的專業(yè)課非常多,要想每門學(xué)好幾乎不可能,必須要有自己的側(cè)重點(diǎn),我想在大一多學(xué)點(diǎn)東西為大三節(jié)約時(shí)間。后來發(fā)現(xiàn)了學(xué)習(xí)單片機(jī)的樂趣和重要性所在。便決定提前自學(xué)單片機(jī),開始很多東西都沒有概念,需要一步步建立,為此

48、也花費(fèi)了大量的時(shí)間,一遍遍的看書,加上有硬件支持,最終做出了這個(gè)成品。相信在今后的不斷學(xué)習(xí)中,會(huì)收獲更多!同時(shí)也很感謝學(xué)校能夠提供這樣一個(gè)學(xué)習(xí)平臺(tái),讓我們能夠在學(xué)習(xí)之余參加這類實(shí)做的比賽,對我們對知識的掌握有很大的幫助!參考資料一、 例說51單片機(jī)(c語言版),人民郵電出版社。二、全國大學(xué)生電子設(shè)計(jì)競賽單片機(jī)應(yīng)用技能精解,電子工業(yè)出版社。三、快速精通altium designer6電路圖和pcb設(shè)計(jì),化學(xué)工業(yè)出版社。四、郭天祥視頻講解十天征服單片機(jī),與配套資料。附錄一:程序清單#include#include#include#define uchar unsigned char#define

49、uint unsigned int/各個(gè)io口的初始化sbit dscs=p20;sbit dsas=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=se

50、t 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 write_temperture(uchar tz,uchar tx);void readtemperature();void ds18b20();unsigned char readon

51、echar();void writeonechar(unsigned char dat);void ddelay(unsigned int i);void dididi();void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/液晶寫數(shù)據(jù)與命令函數(shù)void write_com(uchar com)rs=0;rw=0;e=0;p0=com;delay(5);e=1;delay(5);e=0;void write_date(uchar date)rs=1;rw=0;e=0;p0=date;delay(5);e=1;delay(5);e=0;void init()rw=0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);ea=1;ex0=1;it0=1;tmod=0x01;th0=(65536-50000)/256;tl0=(65536-50000)%256;e

溫馨提示

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

評論

0/150

提交評論