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

下載本文檔

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

文檔簡介

1、序號:編碼: 重慶理工大學(xué)第十八屆“開拓杯”學(xué)生課外學(xué)術(shù)科技作品競賽參賽作品作品名稱:基于單片機(jī)的萬年歷與溫度檢測報(bào)警系統(tǒng)作品類別:B類別:A自然科學(xué)類學(xué)術(shù)論文 B 科技發(fā)明制作C哲學(xué)社會(huì)科學(xué)類學(xué)術(shù)論文與社會(huì)調(diào)查報(bào)告目錄摘要·······························&#

2、183;······················· 1一、 設(shè)計(jì)要求與方案論證11設(shè)計(jì)要求·······················

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

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

5、········································ 421.1系統(tǒng)設(shè)計(jì)框圖········

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

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

8、···················· 522.2實(shí)時(shí)時(shí)鐘電路模塊···························

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

10、3;············ 1722.5蜂鳴器電路模塊(2個(gè))··························2222.6 USB和外部電源供電模塊·····

11、83;·················· 2323系統(tǒng)電路圖設(shè)計(jì)·····························

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

13、#183;··························2531.1DS12C87程序流程圖····················&

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

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

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

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

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

19、3;····30五、設(shè)計(jì)總結(jié)和心得41設(shè)計(jì)總結(jié)與心得·······································31參考文獻(xiàn)··&#

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

21、183;32附錄一:程序清單·············································33附錄三:實(shí)物圖片·

22、············································48基于單片機(jī)的萬年歷與溫度檢測報(bào)警系統(tǒng)摘要隨著社會(huì)發(fā)展需求的改變,電子

23、萬年歷是一個(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)警上下限。此系統(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)

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

25、求與方案論證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)的指示。并且通過編程還可以控制繼電器的開閉,從而控制外部設(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口

26、管腳。具有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和看門狗。片內(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í)鐘芯片,功能豐富,可以用

27、來直接代替IBMPC上的時(shí)鐘日歷芯片DS12887,同時(shí),它的管腳也和MC146818B、DS12887相兼容。由于DS12C887能夠自動(dòng)產(chǎn)生世紀(jì)、年、月、日、時(shí)、分、秒等時(shí)間信息,其內(nèi)部又增加世紀(jì)寄存器,從而利用硬件電路解決子“千年”問題:DS12C887中自帶有鋰電池,外部掉電時(shí),其內(nèi)部信息還能夠保持10年之久;對于一天內(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

28、的控制信息,稱為控制寄存器,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)電源故障檢測和切換電路,故此芯片適合應(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位光刻RO

29、M編碼,家族碼為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ù)字信息最為合適,通過對單片機(jī)的編程來控制DS12C887和DS18B20芯片的讀寫操作來獲取相應(yīng)的信息,再通過對液晶的編程控制將獲取到的信息通過一系列轉(zhuǎn)換從而顯示到1602液晶上。最后達(dá)到有電子萬年歷和溫度采集報(bào)警等功能。系統(tǒng)論證時(shí)通過在單片機(jī)學(xué)習(xí)板上的試驗(yàn)操作,能夠達(dá)到預(yù)期的效果!12最終方案確定

30、核心控制體: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)警消除鍵。操作簡單,按鍵靈活。兩個(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è)

31、,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管腳雙列直插芯片,它是一種高性能,低功耗的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)成外部晶振電

32、路。單片機(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í)行輸出功能時(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接上DS1

33、8B20的單數(shù)據(jù)線,發(fā)送并接受數(shù)據(jù),地址的操作。P30到P33作為獨(dú)立按鍵口。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管腳,當(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í)

34、時(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)格的控制系統(tǒng)中。如嵌入式系統(tǒng),電表,安全系統(tǒng),網(wǎng)絡(luò)集線器,網(wǎng)橋,路由器。 圖3 DS12C887硬件連接圖D12C887電路圖,工作電源采用5V。第一管腳(MOT)是Motorola或Intel總線時(shí)序選擇端,利用此引腳選擇兩種總線類型中的一種,連接到Vcc時(shí)選擇Motoroal總

35、線時(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信號的后期(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-片選信號輸入,片選信號低電平有效,在訪問DS1

36、2C887的總線周期內(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-地址選通輸入。有低變?yōu)楦叩牡刂愤x通脈沖用來分離總線信號。在AS信號的下降沿,地址鎖存到DS12C887內(nèi),無論CS信號是否有效,AS的下一個(gè)上升沿都將清除地址,地址選通信號必須先于每個(gè)讀或?qū)懺L問。如果在CS信號無效的情況下執(zhí)行了讀或?qū)懖僮?,則必須在CS信號有效時(shí)且在讀或?qū)懺L問

37、之前,從新發(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引腳與普通RAM的寫時(shí)能信號(WE)工作方式類似,在信號的上升沿鎖存數(shù)據(jù)。17管腳DS-數(shù)據(jù)選通或讀輸入,DS引腳根據(jù)MOT引腳電平有兩種模式,MOT引腳接Vcc時(shí),選擇Motorola總線時(shí)序,此模式下,總線周期的后期DS為正脈沖,稱作數(shù)據(jù)選通脈沖,在讀周期中,DS表明DS12C887

38、將要驅(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不起作用,上電時(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)

39、生以下操作: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方波使能(SQWE)位清0。在典型應(yīng)用中,將RESET與Vcc連接。使得DS12C887在進(jìn)入或退出電源失效狀態(tài)時(shí)不影響任何控制寄存器的值。19管腳IRQ-中斷請求輸出。DS12V887的IRQ引腳低電平有效,可用作處理器的中斷請求輸入,只要引起中斷的狀態(tài)位置位,并且相應(yīng)中斷使能位

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

41、單,傳輸速度快,適合近距離傳輸。圖4 Intel總線寫時(shí)序圖圖5 Intel讀時(shí)序圖Intel總線如上圖所示,編寫程序如圖時(shí)序圖所示。因?yàn)槠鋾r(shí)序延時(shí)都為納秒級的,軟件執(zhí)行一句簡單語句為微秒級。所以在編寫程序是可直接跳過,不用做軟件延時(shí)。對此相對降低了軟件編寫的難度。DS12C887有4個(gè)控制寄存器,在任何時(shí)間都可以進(jìn)行訪問,即使處于更新周期。寄存器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í)

42、鐘、日歷、鬧鐘信息。將寄存器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 SQWE 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)/IR

43、Q引腳為低產(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引腳產(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:

44、時(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ù)位操作影響。寄存器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í),它是只讀位

45、,和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操作清除。寄存器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)問

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

47、AM空間,他不專門用于某些特別功能,而是可以在未處理器程序中作為非易失性內(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í),分,秒,相符時(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、

48、獨(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、溫范圍55125,在-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、測量

49、結(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ǔ)器操作將針對在線的所有DS1820。Alarm Search指令代碼(ECh):當(dāng)溫度值高于TH或低于TL中的數(shù)值時(shí),此命令可以讀出報(bào)警的DS1820。 (2)、存儲(chǔ)器操作指令代碼及其含義 Read Scratchpad指令代碼(BEh):讀

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

51、序列的DS1820才能響應(yīng)其后的指令,當(dāng)然,單點(diǎn)測溫時(shí)可以使用Skip ROM(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均由同一條線完成,因此,對讀寫的操作時(shí)序要求嚴(yán)格。為了保證DS18B20的嚴(yán)格I/O時(shí)序。需要做較精確的延時(shí)。它的各種時(shí)序如下圖所示:DS18B20初始化時(shí)序 圖6 DS18B20溫度傳感器 DS18B20采用+5V電源供電22.

52、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背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極引腳接口說明:第1腳:VSS為地電源。第2腳:VDD接5V正電源。第3腳:VL為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地時(shí)對比度最高,對比度過高時(shí)會(huì)產(chǎn)生“

53、鬼影”,使用時(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í),液晶模塊執(zhí)行命令。第714腳:D0D7為8位雙向數(shù)據(jù)線。第15腳:背光源正極。第16腳:背光源負(fù)極。1602LCD的指令說明及時(shí)序:1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表1-2所示:序號指令RSR/

54、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要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀數(shù)11讀出的數(shù)據(jù)內(nèi)容字符控制命令說明:1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)指令1:清顯示,指令

55、碼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)是否閃爍,高電平閃爍,低電平不閃爍。指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低

56、電平時(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個(gè))圖10 溫度報(bào)警圖11 鬧鐘報(bào)警蜂鳴器用CS9013三極管驅(qū)動(dòng),蜂鳴器用5V的無源蜂鳴器,并接一個(gè)發(fā)光二極管作為指示燈,同時(shí)在發(fā)光二極管前串接個(gè)限流電阻,數(shù)據(jù)端口分別接P10,P11(由單片機(jī)的P10

57、,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)換(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í)間不讀取

58、溫度值。調(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)硬件電路連線圖(原理圖)三、軟件測試與分析31系統(tǒng)軟件流程圖3.1.1DS12C887程序流程圖開始初始化,寫地址、數(shù)據(jù),讀地址。將相應(yīng)地址和數(shù)據(jù)寫入控制寄存器A、B中讀取秒鬧鐘,分鬧鐘,時(shí)鬧鐘寄存器到相應(yīng)的存儲(chǔ)變量中(

59、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的操作啟動(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)換,返回溫度值。

60、當(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時(shí),將各位數(shù)據(jù)送到液晶上顯示,同時(shí)將flag=0,keyxuan=1,即正常顯示時(shí)間,動(dòng)態(tài)掃描溫度,S1num=0.在A鍵還沒有退出時(shí)。B,C鍵根據(jù)功能鍵A選擇指針位置switch(S1num),case

61、,然后每按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)志位改為有效位。從而正常顯示時(shí)間信息和實(shí)現(xiàn)溫度動(dòng)態(tài)掃描。另外需要調(diào)節(jié)鬧鐘時(shí)就在按下A后再按下D鬧鐘鍵flag1=1,標(biāo)志位無效(即暫不顯示萬年歷信息)。延時(shí)去抖后調(diào)用在字符顯示函數(shù)(SET ALARM字樣

62、),再利用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è)變量初始化液晶初始化,DS12C887,DS18B20,定時(shí)器0初始化顯示welcome! Heve a nice day !字樣簡單延時(shí)30S,然后發(fā)出清屏命令進(jìn)入主循環(huán)體有鍵按下,調(diào)用鍵盤掃描程序鬧鐘時(shí)間已到?(通過外部中斷0實(shí)現(xiàn)中

63、斷)觸發(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è)為無效,以便顯示。將溫度的各位顯示到液晶上,并設(shè)定溫度報(bào)警上下限高于上限或低于下限?按下B鍵可以解除鬧鐘報(bào)警NOYES蜂鳴器發(fā)出報(bào)警聲,并伴有發(fā)光二極管閃爍返回到主循環(huán)體四、系統(tǒng)測試41測試工具52單片機(jī)學(xué)習(xí)板42軟件

64、測試電子萬年歷與數(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)警功能,不斷調(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í)軟件

65、讀取溫度值的標(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接線靈活,IO口的設(shè)置具有多樣性,開始我想溫度用數(shù)碼管顯示,萬年歷用液晶顯示。后來經(jīng)過何老師的提醒,將數(shù)碼管撤去,統(tǒng)一用液晶顯示數(shù)據(jù),這樣節(jié)約了硬件的開銷,用杜邦線將芯片與單片機(jī)學(xué)習(xí)板按照電路原理圖連接好,經(jīng)過不斷的

66、軟件,硬件的反復(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),開始一頭霧水,覺得無從下手,但我相信事在人為,別人可以的,我一樣可以做到!因?yàn)樵诩依?,無法向?qū)W長和老師請教些技術(shù)性問題。唯一可以利用的就是郭天祥老師的視頻,走了不少彎路。第一步便是學(xué)習(xí)如何看懂芯片時(shí)序圖,對此,英語閱讀能力對我也是個(gè)

67、挑戰(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)。電路連接好后,接下來便是復(fù)雜的調(diào)程序步驟,一點(diǎn)點(diǎn)的改進(jìn),修改,一直花了整整兩個(gè)星期,最終達(dá)到了預(yù)期的效果。對此,感到了些許欣慰吧! 通過這么久的學(xué)習(xí)單片機(jī)的過程,自己也感受頗多,很多東西有想法只是一小部分,關(guān)鍵在于自己肯不

68、肯實(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ī),開始很多東西都沒有概念,需要一步步建立,為此也花費(fèi)了大量的時(shí)間,一遍遍的看書,加上有硬件支持,最終做出了這個(gè)成品。相信在今后的不斷學(xué)習(xí)中,會(huì)收獲更多!同時(shí)也很感謝學(xué)校能夠提供這樣一個(gè)學(xué)習(xí)平臺,讓我們能夠在學(xué)習(xí)之余參加這類實(shí)做的比賽,對我們對知識的掌

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

70、bit 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 write_t

溫馨提示

  • 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

提交評論