應(yīng)電1301付盼-論文_第1頁(yè)
應(yīng)電1301付盼-論文_第2頁(yè)
應(yīng)電1301付盼-論文_第3頁(yè)
應(yīng)電1301付盼-論文_第4頁(yè)
應(yīng)電1301付盼-論文_第5頁(yè)
已閱讀5頁(yè),還剩30頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、畢業(yè)設(shè)計(jì)說明書課題名稱: 基于AT89S52的數(shù)字時(shí)鐘及 溫度顯示模塊設(shè)計(jì) 學(xué)生姓名 付 盼 專 業(yè) 應(yīng)用電子技術(shù) 班 級(jí) 1301班 時(shí) 間 2015.10-2016.4 指導(dǎo)教師 汪 洋 電子工程學(xué)院摘要 在科技日益革新的時(shí)代,人們的生活節(jié)奏也在飛快的進(jìn)行著,本設(shè)計(jì)主要為提供一個(gè)準(zhǔn)確的時(shí)間及房間溫度,對(duì)于購(gòu)買溫度計(jì)體積過大不便提供解決方案??梢詫?shí)行多點(diǎn)采集溫度,以便能夠很好的控制環(huán)境溫度。本方案主要利用數(shù)字式溫度傳感器采集溫度數(shù)據(jù),利用顯示芯片1602實(shí)現(xiàn)實(shí)時(shí)溫度數(shù)據(jù)在顯示屏上顯示。本設(shè)計(jì)主要應(yīng)用數(shù)字式溫度傳感器DS18B20檢測(cè)溫度,使用實(shí)時(shí)時(shí)鐘芯片DS12C887儲(chǔ)存具體日期和時(shí)間,單

2、片機(jī)通過單總線方式讀取溫度傳感器的數(shù)據(jù),并通過單片機(jī)控制1602液晶顯示出來,此系統(tǒng)還具有鬧鐘功能,主機(jī)通過蜂鳴器和LED提示到達(dá)預(yù)設(shè)定的時(shí)間。該系統(tǒng)具有良好的通用性、較好的數(shù)據(jù)處理和監(jiān)控能力,適合一般家庭出行。關(guān)鍵詞:DS18B20,DS12C887,STC89C52目錄摘要2目錄3第一章 引言11.1 課題背景和意義1第二章 總體方案設(shè)計(jì)22.1 任務(wù)與要求22.1.1 任務(wù)22.1.2 要求22.2 方案論證22.2.1 溫度傳感器的選型22.2.2 實(shí)時(shí)時(shí)鐘芯片的選型22.2.3 單片機(jī)系統(tǒng)的選型32.2.4 顯示設(shè)備選型32.3 系統(tǒng)總體設(shè)計(jì)3第三章 實(shí)時(shí)溫度與時(shí)間系統(tǒng)設(shè)計(jì)43.1

3、硬件設(shè)計(jì)43.1.1 主控制器簡(jiǎn)介43.1.2溫度傳感器簡(jiǎn)介53.1.3實(shí)時(shí)時(shí)鐘簡(jiǎn)介63.1.4單片機(jī)系統(tǒng)設(shè)計(jì)83.2 單片機(jī)程序設(shè)計(jì)123.2.1 DS12C887模塊程序設(shè)計(jì)123.2.2 溫度傳感器程序設(shè)計(jì)12第四章 程序簡(jiǎn)介13第五章 總結(jié)30致謝32參考文獻(xiàn)32第一章 引言1.1 課題背景和意義數(shù)字時(shí)鐘具有性能穩(wěn)定、精確度高、成本低、易于產(chǎn)品化,以及方便、實(shí)用等特點(diǎn)。適用于家庭、公司、機(jī)關(guān)等眾多場(chǎng)所。為人們的日常生活、出行安排提供了方便,成為人們?nèi)粘I钪胁豢扇鄙俚囊徊糠帧?近些年,隨著科技的發(fā)展和社會(huì)的進(jìn)步,人們對(duì)數(shù)字鐘的要求也越來越高,傳統(tǒng)的時(shí)鐘已不能滿足人們的需求。多功能數(shù)字鐘

4、不管在性能還是在樣式上都發(fā)生了質(zhì)的變化,有電子時(shí)鐘、數(shù)字鬧鐘等等。單片機(jī)在多功能高精度時(shí)鐘中的應(yīng)用已是非常普遍的,人們對(duì)高精度鐘的功能及工作順序都非常熟悉,但是卻很少知道它的內(nèi)部結(jié)構(gòu)以及工作原理。由單片機(jī)作為數(shù)字鐘的核心控制器,可以通過它的時(shí)鐘信號(hào)進(jìn)行計(jì)時(shí)實(shí)現(xiàn)計(jì)時(shí)功能,將其時(shí)間數(shù)據(jù)經(jīng)單片機(jī)輸出,利用顯示器顯示出來。通過鍵盤可以進(jìn)行定時(shí)、校時(shí)功能。輸出設(shè)備顯示器可以用液晶顯示技術(shù)和數(shù)碼管顯示技術(shù)。 本文提出了一種基于STC89C52RC單片機(jī)的時(shí)鐘設(shè)計(jì)方案,本方案以STC89C52RC單片機(jī)作為主控核心,與時(shí)鐘芯片DS12C887、獨(dú)立按鍵、1602LCD顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設(shè)有

5、獨(dú)立按鍵和LCD顯示器,根據(jù)使用者的需要可以隨時(shí)對(duì)時(shí)間進(jìn)行校準(zhǔn)與設(shè)定等操作,綜上所述此電子時(shí)鐘具有讀取方便、顯示直觀、功能多樣、電路簡(jiǎn)潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。第二章 總體方案設(shè)計(jì)2.1 任務(wù)與要求2.1.1 任務(wù)實(shí)現(xiàn)溫度,日期的采集,并能穩(wěn)定的顯示在1602的液晶屏上。2.1.2 要求2.1.2.1基本功能:(1)實(shí)現(xiàn)溫度實(shí)時(shí)采集,。(2)可以設(shè)置時(shí)間到達(dá)提醒,實(shí)現(xiàn)當(dāng)達(dá)到溫度上下限時(shí)有聲光提示報(bào)警。(3)實(shí)現(xiàn)日期數(shù)據(jù)的讀取。2.1.2.2擴(kuò)展功能:1、實(shí)現(xiàn)提醒播放音樂的功能。2、構(gòu)建完整的體系。首先完成基本功能,然后完成擴(kuò)展功能設(shè)計(jì),要求完成電路

6、設(shè)計(jì),完成原理圖的繪制,系統(tǒng)工作可靠。2.1.2.2.1 技術(shù)指標(biāo)1、實(shí)時(shí)溫度采集精確到1度。2、實(shí)現(xiàn)日期數(shù)據(jù)的采集。3、實(shí)現(xiàn)日期,溫度采集,日期,溫度數(shù)據(jù)的顯示,處理。2.2 方案論證2.2.1 溫度傳感器的選型 現(xiàn)有的溫度傳感器有很多種類,按構(gòu)成材料分可以分為熱電偶傳感器、熱電阻、NTC熱敏電阻、半導(dǎo)體溫度傳感器、按輸出信號(hào)方式可分為模擬溫度傳感器和數(shù)字式溫度傳感器。由于本系統(tǒng)需要外圍電路簡(jiǎn)單,測(cè)量精度高和系統(tǒng)穩(wěn)定,故選用DALLAS公司生產(chǎn)的DS18B20數(shù)字式單總線溫度傳感器。2.2.2 實(shí)時(shí)時(shí)鐘芯片的選型市面上的實(shí)時(shí)時(shí)鐘芯片類型很多,一般都具有掉電保護(hù)系統(tǒng),在運(yùn)行時(shí)需要能自行產(chǎn)生時(shí)鐘

7、數(shù)據(jù),并且有掉電數(shù)據(jù)保護(hù),而且能夠自行走時(shí),防止掉電調(diào)試,DS12C887這款時(shí)鐘芯片自帶晶體振蕩器和鋰電池,在沒有外部電源的情況下可以工作10年,且價(jià)格相對(duì)實(shí)惠,適合一般開發(fā)使用。2.2.3 單片機(jī)系統(tǒng)的選型 單片機(jī)系統(tǒng)選用宏晶科技有限公司的STC89C52單片機(jī),宏晶科技的單片機(jī)具有良好的性價(jià)比,而且其體系和架構(gòu)資料豐富,用它能夠快速的開發(fā)出整個(gè)系統(tǒng)。2.2.4 顯示設(shè)備選型 顯示原器件很多,如12864/1208等等,但是考慮到成本和便攜性,故而選擇了1602,這款液晶相對(duì)較小,而且屏幕顯示較為清晰,完全能滿足日常所用。2.3 系統(tǒng)總體設(shè)計(jì)本系統(tǒng)主要應(yīng)用數(shù)字式溫度傳感器DS18B20檢測(cè)

8、溫度,單片機(jī)通過單總線讀取溫度傳感器數(shù)據(jù),應(yīng)用實(shí)時(shí)時(shí)鐘芯片記錄時(shí)間,單片機(jī)讀取實(shí)時(shí)時(shí)鐘芯片內(nèi)寄存器的數(shù)據(jù),并通過1602液晶顯示出來,通過與預(yù)先設(shè)定的時(shí)間進(jìn)行比較,已達(dá)到提醒用戶的目的。 第三章 實(shí)時(shí)溫度與時(shí)間系統(tǒng)設(shè)計(jì)3.1 硬件設(shè)計(jì)3.1.1 主控制器簡(jiǎn)介為了實(shí)現(xiàn)溫度的采集,與時(shí)間的采集,本系統(tǒng)的采用STC89C52為主控制器。STC89C52是一種低功耗、高性能CMOS8位微控制器,具有 8K 在系統(tǒng)可編程Flash 存儲(chǔ)器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)

9、Flash,512字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,內(nèi)置4KB EEPROM,MAX810復(fù)位電路,三個(gè)16 位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),全雙工串行口。另外 STC89X52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。最高運(yùn)作頻率35Mhz,6T/12T可選。 3.1.1.1 STC89C52引腳介紹單片機(jī)的40個(gè)引腳大致可分為4類:電源、時(shí)鐘、控制和I/O引腳。(1)電源:

10、VCC - 芯片電源,接+5V; VSS - 接地端;(2)時(shí)鐘:XTAL1、XTAL2 - 晶體振蕩電路反相輸入端和輸出端。 (3) 控制線:控制線共有4根, ALE/PROG:地址鎖存允許/片內(nèi)EPROM編程脈沖PSEN:外ROM讀選通信號(hào)。RST/VPD:復(fù)位/備用電源。EA/Vpp:內(nèi)外ROM選擇/片內(nèi)EPROM編程電源。3.1.1.2 I/O線STC89C52共有4個(gè)8位并行I/O端口:P0、P1、P2、P3口,共32個(gè)引腳。P3口還具有第二功能,用于特殊信號(hào)輸入輸出和控制信號(hào)(屬控制總線)。 3.1.2溫度傳感器簡(jiǎn)介(1)DS18B20數(shù)字溫度傳感器概述3DS18B20數(shù)字溫度計(jì)是

11、DALLAS公司生產(chǎn)的1Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。其引腳功能描述見表3-1。 表3.1DS18B20詳細(xì)引腳功能描述序號(hào)名稱引腳功能描述1GND地信號(hào)2DQ數(shù)字輸入輸出引腳,開漏單總線接口引腳,當(dāng)使用寄生電源時(shí),可向電源提供電源3VDD可選擇的VDD引腳,當(dāng)工作于寄生電源時(shí),該引腳必須接地 表3-1(2)DS18B20的命令序列初始化ROM命令跟隨著需要交換的數(shù)據(jù);功能命令跟隨著需要交換的數(shù)據(jù)。訪問DS18B20必須嚴(yán)格遵守這一命令序列,如果丟失任何一步或序列混亂,DS18B

12、20都不會(huì)響應(yīng)主機(jī)(除了Search ROM 和Alarm Search這兩個(gè)命令,在這兩個(gè)命令后,主機(jī)都必須返回到第一步)。a初始化:DS18B20所有的數(shù)據(jù)交換都由一個(gè)初始化序列開始。由主機(jī)發(fā)出的復(fù)位脈沖和跟在其后的由DS18B20發(fā)出的應(yīng)答脈沖構(gòu)成。當(dāng)DS18B20發(fā)出響應(yīng)主機(jī)的應(yīng)答脈沖時(shí),即向主機(jī)表明它已處在總線上并且準(zhǔn)備工作。b. ROM命令:ROM命令通過每個(gè)器件64-bit的ROM碼,使主機(jī)指定某一特定器件(如果有多個(gè)器件掛在總線上)與之進(jìn)行通信。DS18B20的ROM如表3-3所示,每個(gè)ROM命令都是8 bit長(zhǎng).DS12C887簡(jiǎn)介DSl8820芯片溫度測(cè)量的啟動(dòng),發(fā)送指令,

13、存取時(shí)鐘等,全部在一組數(shù)據(jù)線上完成,因?yàn)槠鋬?nèi)部結(jié)構(gòu)上集成了溫度電路、存儲(chǔ)器等多功能模塊。DSl8820芯片工作原理示意圖見圖3.1.1所示:主機(jī)初始化脈沖DS18B20芯片響應(yīng)脈沖DS18B20芯片準(zhǔn)備好DS18B20芯片完成其他功能主機(jī)儲(chǔ)存器指令主機(jī)ROM指令否圖3.1.1:D18B20工作原理圖 3.1.3實(shí)時(shí)時(shí)鐘簡(jiǎn)介1. 概述: DS12C887可計(jì)算到2100年前的秒、分、小時(shí)、星期、日期、月、年七種日歷信息并帶閏年補(bǔ)償;自帶晶體振蕩器和鋰電池。在沒有外部電源的情況下可工作10年;對(duì)于一天內(nèi)的時(shí)間記錄,有12小時(shí)制和24小時(shí)制兩種模式。在12小時(shí)制模式中,用AM和PM區(qū)分上午和下午;可

14、選用夏令時(shí)模式時(shí)間表示方法有兩種:一種用二進(jìn)制數(shù)表示,一種用BCD碼表示;DS12C887中帶有128字節(jié)RAM,其中11字節(jié)用來存儲(chǔ)時(shí)間信息,4字節(jié)RAM用來存儲(chǔ)DS12C887的控制信息,稱為控制寄存器,113字節(jié)RAM供用戶使用;數(shù)據(jù)/地址總線復(fù)用用戶可編程以實(shí)現(xiàn)多種方波輸出可應(yīng)用于MOTOROLA和INTEL兩種總線。我這里只闡述INTEL總線實(shí)現(xiàn)方法三種可編程中斷:定鬧中斷、時(shí)鐘更新結(jié)束中斷、周期性中斷2. 芯片的引腳排列:DS12C887各引腳的功能說明GND、VCC:直流電源,其中VCC接+5V輸入,GND接地。當(dāng)VCC輸入為+5V時(shí),用戶可以訪問DS12C887內(nèi)RAM中的數(shù)據(jù)

15、,并可對(duì)其進(jìn)行讀、寫操作;當(dāng)VCC輸入小于+4.25V時(shí),禁止用戶對(duì)內(nèi)部RAM進(jìn)行讀、寫操作,此時(shí)用戶不能正確獲取芯片內(nèi)的時(shí)間信息;當(dāng)VCC輸入小于+3V時(shí),DS12C887會(huì)自動(dòng)將電源切換到內(nèi)部自帶的鋰電池上,以保證內(nèi)部的電路能夠正常工作。MOT:模式選擇引腳DS12C887有兩種工作模式,即Motorola模式和Intel模式。當(dāng)MOT接VCC時(shí),選用的工作模式是Motorola模式;當(dāng)MOT接GND或不接時(shí),選用的是Intel模式。本文主要討論Intel模式。SQW:方波輸出引腳當(dāng)供電電壓VCC大于4.25V時(shí),SQW引腳可進(jìn)行方波輸出,此時(shí)用戶可以通過對(duì)控制寄存器編程來得到13種方波信

16、號(hào)的輸出。AD0AD7:復(fù)用地址/數(shù)據(jù)總線該總線采用時(shí)分復(fù)用技術(shù),在總線周期的前半部分,出現(xiàn)在AD0AD7上的是地址信息,可用以選通DS12C887內(nèi)的RAM;總線周期的后半部分出現(xiàn)在AD0AD7上的是數(shù)據(jù)信息。AS:地址選通輸入引腳在進(jìn)行讀寫操作時(shí),AS的下降沿將AD0AD7上出現(xiàn)的地址信息鎖存到DS12C887上,而下一個(gè)上升沿清除AD0AD7上的地址信息,不論是否有效,DS12C887都將執(zhí)行該操作。DS/RD:數(shù)據(jù)選擇或讀輸入引腳該引腳有兩種工作模式:Motorola工作模式中,每個(gè)總線周期的后一部分的DS為高電平,被稱為數(shù)據(jù)選通。在讀操作中,DS的上升沿使DS12C887將內(nèi)部數(shù)據(jù)送

17、往總線AD0AD7上,以供外部讀取。在寫操作中,DS的下降沿將使總線 AD0AD7上的數(shù)據(jù)鎖存在DS12C887中;Intel工作模式中,DS被稱作RD。該引腳是讀允許輸入腳,即Read Enable。是讀(RD)信號(hào)輸入端。當(dāng)他有效時(shí)表示DS12C887正往總線輸出數(shù)據(jù)。RD信號(hào)線在存儲(chǔ)器芯片上被稱作OE信號(hào)線。R/W:讀/寫輸入端該引腳也有2種工作模式:Motorola工作模式中,該引腳的作用是區(qū)分進(jìn)行的是讀操作還是寫操作,當(dāng)R/W為高電平時(shí)為讀操作,R/W為低電平時(shí)為寫操作;Intel工作模式中,此時(shí)該作為寫允許輸入,即Write Enable。是寫(WR)信號(hào)輸入端。CS:片選輸入,低

18、電平有效。IRQ:中斷請(qǐng)求輸入,低電平有效,該引腳有效對(duì)DS12C887內(nèi)的時(shí)鐘、日歷和RAM中的內(nèi)容沒有任何影響,僅對(duì)內(nèi)部的控制寄存器有影響,在典型的應(yīng)用中,RESET可以直接接VCC,這樣可以保證DS12C887在掉電時(shí),其內(nèi)部控制寄存器不受影響。RESET:復(fù)位端在典型的應(yīng)用中,RESET直接接VCC3.1.4單片機(jī)系統(tǒng)設(shè)計(jì) (1)單片機(jī)最小系統(tǒng)設(shè)計(jì)這是STC89C52單片機(jī)最小系統(tǒng)原理圖,P0使用1K排阻做上拉電阻,復(fù)位端口與5V電源一個(gè)10uF的電容,和地之間接一個(gè)1K的電阻,即可構(gòu)成上電復(fù)位的電路。XTAL1和XTAL2之間并接一個(gè)晶振,然后晶振的兩端和地之間各接一個(gè)30pF電容,

19、這樣就構(gòu)成了單片機(jī)的振蕩電路。 (2)單片機(jī)電源設(shè)計(jì) 單片機(jī)的5V接線端接入5V直流電源,通過一個(gè)雙聯(lián)開關(guān),然后通過0.1uF和10uF的電容對(duì)電源進(jìn)行濾波,最后到達(dá)電源指示燈。電源指示燈為一個(gè)LED串接一個(gè)1K的限流電阻,構(gòu)成電源指示電路。最后輸出的5V電源即可為單片機(jī)供電。(3)DS12C887電路DS12C887驅(qū)動(dòng)電路很簡(jiǎn)單,接上電源和地就可以工作了。(4)1602電路(5)程序仿真圖 3.2 單片機(jī)程序設(shè)計(jì) 3.2.1 DS12C887模塊程序設(shè)計(jì)開始DS12C887 初始化調(diào)用函數(shù)獲取時(shí)鐘信息送數(shù)據(jù)顯示圖3-2 DS12C887的流程圖3.2.2 溫度傳感器程序設(shè)計(jì)開始18B20初

20、始化延時(shí)寫跳過讀ROM指令寫溫度轉(zhuǎn)換指令18B20初始化延時(shí)寫跳過讀ROM指令寫讀暫存器指令讀取數(shù)據(jù)結(jié)束第四章 程序簡(jiǎn)介#include<reg51.h>#include<math.h>#include<intrins.h>#define uchar unsigned char#define uint unsigned intsbit rs=P35;sbit rw=P36;sbit en=P37;sbit dq=P27;sbit AS=P30;sbit RW=P31;sbit DS=P32;sbit CS=P33;sbit k1=P20;sbit k2=P2

21、1;sbit k3=P22;sbit k4=P23;uchar code table='0','1','2','3','4','5','6','7','8','9'uchar code table1="Day" uchar keynum,flag,flag_clk,flag_set=0;uchar c_hour,c_min;uchar miao,fen,shi,y,m,d,Day;void delay1(uchar

22、z)uchar x,y;for(x=z;x>0;x-)for(y=110;y>0;y-);void delay(uchar n) uchari; for(i=n;i!=0;i-);/-延時(shí)750ms程序- voiddelay750ms(void)uchari,j,k; for(i=0;i<4;i+) for(j=0;j<250;j+) for(k=0;k<250;k+);void lcd_com(uchar com)/發(fā)送命令 rs=0;/指令選項(xiàng) P0=com; delay1(5); en=1; delay1(5); en=0;void lcd_data(uch

23、ar date)/發(fā)送數(shù)據(jù) rs=1;/數(shù)據(jù)選項(xiàng) P0=date; delay1(5); en=1; delay1(5); en=0;void lcd1602_inint()/1602液晶的初始化 en=0; rw=0; lcd_com(0x38);/液晶顯示 /lcd_com(0x0f);/光標(biāo)設(shè)置 lcd_com(0x0c);/光標(biāo)不閃爍 lcd_com(0x06);/地址指針設(shè)置 lcd_com(0x01);/清屏設(shè)置 lcd_com(0x80);/*DS18B20溫度芯片初始化*/-初始化單總線-bitinit_ow(void)bitflag;dq=0;delay(83);dq=1;d

24、elay(9);flag=dq;delay(83);returnflag;/-寫字節(jié)子程序-voidwrbyte(uchar m)uchari;for(i=0;i<8;i+)dq=0;_nop_();_nop_();if(m&0x01)dq=1;elsedq=0;delay(9);dq=1;_nop_();m=m>>1;/-字節(jié)讀子程序-ucharrdbyte(void)uchari,m;for(i=0;i<8;i+)dq=0;_nop_();_nop_(); dq=1;delay(1);m=m>>1;if(dq)m=m|0x80;delay(9);

25、returnm;/*溫度的顯示*/void LcdDisplay() /lcd顯示 uchar templ,temph,temp; init_ow();/ 初始化DS18B20wrbyte(0x0cc);/ 發(fā)跳過序列號(hào)匹配命令(0xcc)wrbyte(0x44);/ 發(fā)啟動(dòng)溫度轉(zhuǎn)換命令(0x44) delay750ms();/ 延時(shí)750ms,等待DS18B20的溫度轉(zhuǎn)換結(jié)束init_ow();/ 初始化DS18B20wrbyte(0x0cc);/ 發(fā)跳過序列號(hào)匹配命令(0xcc)wrbyte(0x0be);/ 發(fā)讀高速緩存RAM命令(0x0be)templ=rdbyte();/讀DS18B

26、20的高速緩存字節(jié)0(溫度轉(zhuǎn)換的低字節(jié))temph=rdbyte();/ 讀DS18B20的高速緩存字節(jié)1(溫度轉(zhuǎn)換的高字節(jié))init_ow();/ 初始化DS18B20,結(jié)束讀高速緩存RAMtemp= (temph<<4)|(templ>>4);/ 從溫度轉(zhuǎn)換結(jié)果中取7位整數(shù)溫度值和1位符號(hào)位if(temph&0x80)/ 判斷溫度值是否為負(fù)(最高位是否為1) / 溫度為負(fù)值的處理temp=cabs(temp);/ 對(duì)溫度值取絕對(duì)值lcd_com(0x8b); lcd_data('-'); lcd_com(0x8c); lcd_data(tab

27、letemp/10); lcd_com(0x8d); lcd_data(tabletemp%10); lcd_com(0x8e); lcd_data(0xdf); lcd_com(0x8f); /顯示。 lcd_data('C'); /*時(shí)分秒的顯示*/void write_sfm(uchar add,uchar date)uchar shi,ge;shi=date/10;ge=date%10; lcd_com(0x80+0x42); lcd_data(':'); lcd_com(0x80+0x45); lcd_data(':'); lcd_co

28、m(0x80+0x40+add);lcd_data(tableshi); lcd_com(0x80+0x41+add);lcd_data(tablege);/*DS12C887的初始化*/void write_ds(uchar add,uchar date)/寫數(shù)據(jù)和地址CS=0;AS=1;DS=1;RW=1;P1=add;AS=0;RW=0;P1=date;RW=1;AS=1;CS=1;uchar read_ds(uchar add)/讀數(shù)據(jù) uchar ds_date; AS=1;DS=1;RW=1;CS=0;P1=add;AS=0;DS=0;P1=0xff;ds_date=P1;DS=1

29、;AS=1;CS=1;return ds_date;/*年份的顯示*/void write_nyr(uchar year,uchar mon,uchar day) lcd_com(0x80); lcd_data(table2); lcd_com(0x81); lcd_data(tableyear/100); lcd_com(0x82); lcd_data(tableyear/10%10); lcd_com(0x83); lcd_data(tableyear%10); lcd_com(0x84); lcd_data('-'); lcd_com(0x85); lcd_data(ta

30、blemon/10); lcd_com(0x86); lcd_data(tablemon%10); lcd_com(0x87); lcd_data('-'); lcd_com(0x88); lcd_data(tableday/10); lcd_com(0x89); lcd_data(tableday%10); /*數(shù)據(jù)的初始化*/void set time() write_ds(4,12);/設(shè)置小時(shí) write_ds(2,46);/設(shè)置分鐘 write_ds(7,22);/日 write_ds(8,10);/月 write_ds(9,15);/年 / write_ds(6,2

31、);/星期 /*基本的日期時(shí)間顯示*/void display_basic() uchar i; y=read_ds(9); m=read_ds(8); d=read_ds(7); write_nyr(y,m,d); shi=read_ds(0x04); write_sfm(0,shi); fen=read_ds(2); write_sfm(3,fen); miso=read_ds(0); write_sfm(6,miao); for(i=0;i<3;i+) lcd_com(0x80+0x4b+i); lcd_data(table1i); Day=read_ds(6)-1;/國(guó)外一個(gè)星期

32、是從星期天開始的 lcd_com(0x80+0x4f); lcd_data(tableDay);/*按鍵顯示*/void keys can() if(k2=0) delay1(5); if(k2=0) flag=1; flag_clk=1; while(!k1); if(flag=1) if(k1=0) delay1(5); if(k1=0) keynum+; lcd_com(0x0f);/開光標(biāo) lcd_com(0x80+0x40+7); /秒的地址顯示 while(!k1); if(keynum=2) lcd_com(0x80+0x40+4);/分的地址顯示 if(keynum=3) lc

33、d_com(0x80+0x40+1);/小時(shí)的地址顯示 if(keynum=4) lcd_com(0x80+0x4f);/星期的地址顯示 if(keynum=5)/跳出顯示 lcd_com(0x0c);/關(guān)閉光標(biāo)顯示 flag=0;/掃描開始 flag_clk=0; keynum=0;/還原鍵值顯示 write_ds(0,miao);/設(shè)置結(jié)束后直接顯示出來 write_ds(2,fen); write_ds(4,shi); write_ds(6,Day); if(keynum!=0) if(k3=0) delay1(5); if(k3=0) while(!k3); if(keynum=1)

34、miso=miao+1; if(miso=60) miso=0; write_sfm(6,miao); lcd_com(0x80+0x40+7); if(keynum=2) fen=fen+1; if(fen=60) fen=0; write_sfm(3,fen); lcd_com(0x80+0x40+4); if(keynum=3) shi=shi+1; if(shi=24) shi=0; write_sfm(0,shi); lcd_com(0x80+0x40+1); if(keynum=4) Day=Day+1; if(Day=8) Day=1; lcd_data(tableDay); l

35、cd_com(0x80+0x4f); if(k4=0) delay1(5); if(k4=0) while(!k4); if(keynum=1) miso=miao-1; if(miso=00) miso=59; write_sfm(6,miao); lcd_com(0x80+0x40+7); if(keynum=2) fen=fen-1; if(fen=0) fen=59; write_sfm(3,fen); lcd_com(0x80+0x40+4); if(keynum=3) shi=shi-1; if(shi=0) shi=23; write_sfm(0,shi); lcd_com(0x

36、80+0x40+1); if(keynum=4) Day=Day-1; if(Day=0) Day=7; lcd_data(tableDay); lcd_com(0x80+0x4f); /*鬧鐘設(shè)置*/void clock_set() uchar m; if(k1=0)/進(jìn)入設(shè)置 delay1(5); if(k1=0) m=1; flag_set=1;/只掃描這個(gè)選項(xiàng) flag=1; while(!k1); if(m=1) lcd_com(0x01); while(m=1)/防止不斷清屏 lcd_com(0x83);/顯示鬧鐘 lcd_data(tablec_hour/10); lcd_com

37、(0x84); lcd_data(tablec_hour%10); lcd_com(0x85); lcd_data(':'); lcd_com(0x86); lcd_data(tablec_min/10); lcd_com(0x87); lcd_data(tablec_min%10); if(k3=0) delay1(5); if(k3=0) while(!k3);/松手檢測(cè),保證按一下跳一次 c_hour+; if(c_hour=24) c_hour=0; if(k4=0) delay1(5); if(k4=0) while(!k4);/松手檢測(cè),保證按一下跳一次 c_min

38、+; if(c_min=60) c_min=0; if(k1=0) delay1(5); if(k1=0) m=0; /開始掃描main函數(shù) flag_set=0; flag=0; /*鬧鐘響鈴*/void clock_music() if(shi=c_hour && fen=c_min) lcd_com(0x01); while(c_hour=shi && c_min=fen) lcd_com(0x80+0x40); lcd_data(0x20);/測(cè)試使用 void main() write_ds(0x0B,0x26);/選擇計(jì)時(shí)方式 write_ds(0x

39、0A,0x20);/開時(shí)鐘 set time(); lcd1602_inint(); while(1) if(flag_clk=0) clock_set(); if(flag_set=0) keys can(); if(flag=0) LcdDisplay(); display_basic(); clock_music(); 第五章 總結(jié) 畢業(yè)論文的制作給了我難忘的回憶,在我徜徉書海查找資料的日子里,面對(duì)無數(shù)書本的羅列,最難忘的是每次找到資料時(shí)的激動(dòng)和興奮。親手設(shè)計(jì)電路圖的時(shí)間里,記憶最深的是每一步小小思路實(shí)現(xiàn)時(shí)那幸福的心情。為了論文我曾趕稿到深夜,但看著親手打出的一字一句,心里滿滿的只有喜悅毫無疲憊。這段旅程看似荊棘密

溫馨提示

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

評(píng)論

0/150

提交評(píng)論