基于51單片機(jī)和8279芯片的電子時(shí)鐘設(shè)計(jì)報(bào)告_第1頁(yè)
基于51單片機(jī)和8279芯片的電子時(shí)鐘設(shè)計(jì)報(bào)告_第2頁(yè)
基于51單片機(jī)和8279芯片的電子時(shí)鐘設(shè)計(jì)報(bào)告_第3頁(yè)
基于51單片機(jī)和8279芯片的電子時(shí)鐘設(shè)計(jì)報(bào)告_第4頁(yè)
基于51單片機(jī)和8279芯片的電子時(shí)鐘設(shè)計(jì)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、任務(wù)書(shū)題 目基于51單片機(jī)和8279芯片的電子時(shí)鐘設(shè)計(jì) 時(shí) 間安排2014年5月196月1日(第13、14周) 目 的:通過(guò)單片機(jī)原理與應(yīng)用這門(mén)課的課程設(shè)計(jì),學(xué)生應(yīng)能對(duì)MCS-51單片機(jī)有一個(gè)全面的認(rèn)識(shí),掌握以MCS-51單片機(jī)為核心的電子電路的設(shè)計(jì)方法和應(yīng)用技術(shù)。 1.進(jìn)一步掌握8279鍵盤(pán)顯示電路的編程方法。 2.進(jìn)一步掌握定時(shí)器的使用和編程方法。 3.進(jìn)一步掌握中斷處理程序的編程方法。 要 求:(1) 利用AT89C51作為主控器組成一個(gè)電子鐘并具有鬧鐘功能。(2) 利用8位LED用于顯示當(dāng)前時(shí)間。(3) 利用8279芯片進(jìn)行鍵盤(pán)和LED的管理和顯示。(4) 發(fā)揮自己的創(chuàng)造力,實(shí)現(xiàn)盡可能

2、多的功能。總體方案實(shí)現(xiàn): 用AT89C51作為主控制器,并采用8279作為輔助芯片,控制鍵盤(pán)、LED數(shù)碼管等的操作和顯示。指導(dǎo)教師評(píng)語(yǔ): 評(píng)分等級(jí):( ) 指導(dǎo)教師簽名: 目錄一、系統(tǒng)總體設(shè)計(jì)方案規(guī)劃與選定.3二、系統(tǒng)硬件功能及參數(shù)簡(jiǎn)介.42.1 AT89C51單片機(jī)簡(jiǎn)介.42.2 AT89C51單片機(jī)的引腳說(shuō)明.52.3 LED簡(jiǎn)介.72.4 8279基本原理說(shuō)明.102.5 DS1302介紹及基本原理說(shuō)明.132.6 DS18B20介紹及基本工作方式說(shuō)明.17三、系統(tǒng)硬件電路設(shè)計(jì).193.1 proteus仿真接線圖.193.2分塊硬件電路射界.204、 軟件設(shè)計(jì)及實(shí)現(xiàn)過(guò)程.254.1程序

3、設(shè)計(jì)簡(jiǎn)述.254.2系統(tǒng)程序流程圖設(shè)計(jì).26五、系統(tǒng)的調(diào)試過(guò)程.275.1程序性問(wèn)題及解決.275.2調(diào)試過(guò)程出現(xiàn)問(wèn)題及解決.27六、新增功能及實(shí)現(xiàn)方法.296.1新增功能.296.2實(shí)現(xiàn)方法.297、 小節(jié)與體會(huì).31參考文獻(xiàn).33附錄.34硬件連接圖.34程序清單.36一、系統(tǒng)總體設(shè)計(jì)方案規(guī)劃與選定首先,我們對(duì)于整個(gè)系統(tǒng)做了總體的規(guī)劃,大致列了一下我們?cè)O(shè)想中的一些附加功能。由于附加功能較多,我們最終決定,先實(shí)現(xiàn)基本功能,然后在基本功能的基礎(chǔ)上,對(duì)系統(tǒng)進(jìn)行改進(jìn),逐步加入我們?cè)O(shè)想的拓展功能。其次,是編程語(yǔ)言的選擇,我們學(xué)習(xí)過(guò)的編程語(yǔ)言有兩種:C語(yǔ)言與匯編語(yǔ)言。經(jīng)過(guò)比較后決定使用C51編程,因?yàn)?/p>

4、C語(yǔ)言結(jié)構(gòu)整齊,各個(gè)子函數(shù)可以獨(dú)立來(lái)寫(xiě),思路更加清晰顯得簡(jiǎn)單,所以選用C語(yǔ)言來(lái)進(jìn)行編程。同時(shí),利用C語(yǔ)言進(jìn)行編程也有利于我們后續(xù)對(duì)系統(tǒng)的改進(jìn),也就是增加輔助功能,只要利用子函數(shù)實(shí)現(xiàn)就行,并且可以獨(dú)立于整個(gè)系統(tǒng)運(yùn)行,可以單獨(dú)對(duì)子函數(shù)進(jìn)行測(cè)試。對(duì)于所設(shè)想的附加功能,我們首先進(jìn)行相關(guān)資料的查詢(xún),然后可以對(duì)子函數(shù)進(jìn)行編寫(xiě),并進(jìn)行單獨(dú)的調(diào)試??梢哉f(shuō),使用C語(yǔ)言編程在軟件方面增加了我們系統(tǒng)的可拓展性。最后,是有關(guān)硬件的設(shè)計(jì),為了實(shí)現(xiàn)基本功能,我們對(duì)8979芯片以及DS1302芯片進(jìn)行了仔細(xì)的學(xué)習(xí),從網(wǎng)上查閱了不少資料。對(duì)于電路圖的設(shè)計(jì),我們也是按照老師的要求,先實(shí)現(xiàn)按照實(shí)現(xiàn)基本功能進(jìn)行設(shè)計(jì),按照課本進(jìn)行電

5、路圖的鏈接,同時(shí)查閱了關(guān)于8279芯片的使用說(shuō)明書(shū)?;倦娐穲D設(shè)計(jì)完成之后,便查閱有關(guān)資料,對(duì)我們?cè)O(shè)想的附加功能所用到的DS1302時(shí)鐘芯片和DS18B20溫度傳感器進(jìn)行學(xué)習(xí)了解硬件的連接和測(cè)試過(guò)程。而且由于一開(kāi)始對(duì)軟件的使用不熟練,在頁(yè)面的排版布局上也沒(méi)有計(jì)劃,最終顯得整個(gè)電路硬件仿真連接圖較亂,最后有進(jìn)行了重新整理和布局,并配上詳細(xì)說(shuō)明,是的整體看起來(lái)協(xié)調(diào)、美觀。二、系統(tǒng)硬件功能及參數(shù)簡(jiǎn)介2.1 AT89C51單片機(jī)簡(jiǎn)介AT89C51單片機(jī)是在一塊芯片中集成了CPU、RAM、ROM、定時(shí)器/計(jì)數(shù)器和多種功能的I/O線等一臺(tái)計(jì)算機(jī)所需要的基本功能部件,AT89C51單片機(jī)內(nèi)包含下列幾個(gè)部件:

6、(1) 一個(gè)8位CPU;(2)一個(gè)片內(nèi)振蕩器及時(shí)鐘電路;(3)4K字節(jié)ROM程序存儲(chǔ)器;(4)128字節(jié)RAM數(shù)據(jù)存儲(chǔ)器;(5)兩個(gè)16位定時(shí)器/計(jì)數(shù)器;(6)可尋址64K外部數(shù)據(jù)存儲(chǔ)器和64K外部程序存儲(chǔ)器空間的控制電路;(7)32條可編程的I/O線(四個(gè)8位并行I/O端口);(8)一個(gè)可編程全雙工串行口;(9)具有五個(gè)中斷源、兩個(gè)優(yōu)先級(jí)嵌套中斷結(jié)構(gòu)。其內(nèi)部機(jī)構(gòu)框圖如圖2.1所示: 圖2.1 MCS-51單片機(jī)內(nèi)部機(jī)構(gòu)框圖2.2 AT89C51單片機(jī)的引腳說(shuō)明AT89C51單片機(jī)采用40條引腳雙列直插式器件,引腳除5V( 40腳)和電源地( 20腳)外,其功能分為時(shí)鐘電路、控制信號(hào)、輸入/輸

7、出三大部分,邏輯框圖及引腳圖分別如圖2.2(a)(b)所示 (a) (b) 圖2.2 AT89C51單片機(jī)邏輯圖與引腳圖AT89C51單片機(jī)的管腳說(shuō)明如下:(1)VCC:供電電壓(2)GND:接地(3)時(shí)鐘電路 XTAL1(19腳)芯片內(nèi)部振蕩電路(單級(jí)反相放大器)輸入端。 XTAL2(18腳)芯片內(nèi)部振蕩電路(單級(jí)反相放大器)輸出端。 (4)控制信號(hào)RST(9腳)復(fù)位信號(hào):時(shí)鐘電路工作后,在此引腳上將出現(xiàn)兩個(gè)機(jī)器周期的高電平,芯片內(nèi)部進(jìn)行初始復(fù)位,P0口P3口輸出高電平,將初值07H寫(xiě)入堆棧指針。ALE(30腳)地址鎖存信號(hào):當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),P0口輸出的低8位地址由ALE輸出的控制信號(hào)鎖

8、存到片外地址鎖存器,P0口輸出地址低8位后,又能與片外存儲(chǔ)器之間傳送信息。另外,ALE可驅(qū)動(dòng)4個(gè)TTL門(mén)。(29腳)片外程序存儲(chǔ)器讀選通:低電平有效,作為程序存儲(chǔ)器的讀信號(hào),輸出負(fù)脈沖,將相應(yīng)的存儲(chǔ)單元的指令讀出并送到P0口,可驅(qū)動(dòng)8個(gè)TTL門(mén)。/VPP(30腳):當(dāng)為高電平且PC值小于0FFFH時(shí),CPU執(zhí)行內(nèi)部程序存儲(chǔ)器程序;當(dāng)為低電平時(shí),CPU僅執(zhí)行外部程序存儲(chǔ)器程序。2.3 LED簡(jiǎn)介L(zhǎng)ED數(shù)碼管根據(jù)LED的接法不同分為共陰和共陽(yáng)兩類(lèi),了解LED的這些特性,對(duì)編程是很重要的,因?yàn)椴煌?lèi)型的數(shù)碼管,除了它們的硬件電路有差異外,編程方法也是不同的。圖2.3(a)是共陰和共陽(yáng)極數(shù)碼管的內(nèi)部電

9、路圖,它們的發(fā)光原理是一樣的,只是它們的電源極性不同而已。將多只LED的陰極連在一起即為共陰式,而將多只LED的陽(yáng)極連在一起即為共陽(yáng)式。以共陰式為例,如把陰極接地,在相應(yīng)段的陽(yáng)極接上正電源,該段即會(huì)發(fā)光。當(dāng)然,LED的電流通常較小,一般均需在回路中接上限流電阻。假如我們將"b"和"c"段接上正電源,其它端接地或懸空,那么"b"和"c"段發(fā)光,此時(shí),數(shù)碼管顯示將顯示數(shù)字“1”。而將"a"、"b"、"d"、"e"和"g"

10、段都接上正電源,其它引腳懸空,此時(shí)數(shù)碼管將顯示“2”。其它數(shù)字的顯示原理與此類(lèi)同。LED的7段數(shù)碼管利用單只LED組合排列成“8”字型的數(shù)碼管,分別引出它們的電極,點(diǎn)亮相應(yīng)的點(diǎn)劃來(lái)顯示出0-9的數(shù)字。在這次的設(shè)計(jì)中采用的均是共陰極的LED顯示,當(dāng)I/O口輸出為高電平的時(shí)候,對(duì)應(yīng)段就被點(diǎn)亮。LED數(shù)碼管的結(jié)構(gòu)圖如圖2.3(b)所示。 (a)(b)圖2.3 LED分類(lèi)結(jié)構(gòu)圖和結(jié)構(gòu)圖這次設(shè)計(jì)的顯示部分采用AT89C51單片機(jī)動(dòng)態(tài)掃描完成,在多數(shù)的應(yīng)用場(chǎng)合中,我們并不希望使用多I/O端口的單片機(jī),原則上是使用盡量少引腳的器件。在沒(méi)有富余端口的情況下,應(yīng)通過(guò)優(yōu)化設(shè)計(jì)程序和擴(kuò)展電路達(dá)到預(yù)期的目的。動(dòng)態(tài)掃描

11、的頻率有一定的要求,頻率太低,LED將出現(xiàn)閃爍現(xiàn)象。如頻率太高,由于每個(gè)LED點(diǎn)亮的時(shí)間太短,LED的亮度太低,肉眼無(wú)法看清,所以一般均取幾個(gè)ms左右為宜,這就要求在編寫(xiě)程序時(shí),選通某一位LED使其點(diǎn)亮并保持一定的時(shí)間,程序上常采用的是調(diào)用延時(shí)子程序。LED顯示電路:(1) 靜態(tài)顯示電路LDE顯示器工作在靜態(tài)顯示時(shí),其公共陽(yáng)極(或陰極) 接VCC(或GND) ,一直處于顯示有效狀態(tài),所以每一位的顯示內(nèi)容必須由鎖存器加以鎖存,顯示各位相互獨(dú)立。(2) 動(dòng)態(tài)顯示電路 將所有位的段選線的同名端聯(lián)在一起,由一個(gè)8位I/O口控制,形成段選線的多位復(fù)用。而各位的公共陽(yáng)極或公共陰極則分別由相應(yīng)的I/O口線控

12、制,實(shí)現(xiàn)各位的分時(shí)選通,即同一時(shí)刻只有被選通位是能顯示相應(yīng)的字符,而其他所有位都是熄滅的。由于人眼有視覺(jué)暫留現(xiàn)象,只要每位顯示間隔足夠短,則會(huì)造成多位同時(shí)點(diǎn)亮的假象。這就需要單片機(jī)不斷地對(duì)顯示進(jìn)行控制,CPU需要不斷地進(jìn)行顯示刷新,動(dòng)態(tài)顯示電路參見(jiàn)圖2.4,圖2.4中是擴(kuò)展了五位的LED數(shù)碼管顯示,用一個(gè)74LS04作為五個(gè)LED的段選輸入,采用動(dòng)態(tài)顯示的方式連接。類(lèi)似地,16位的LED數(shù)碼管顯示也可以用這種方法來(lái)實(shí)現(xiàn)。 圖2.4 五位LED數(shù)碼管的動(dòng)態(tài)顯示2.4 8279基本原理說(shuō)明8279顯示部分按掃描的方式工作,可以顯示8或16位LED顯示塊。8279電路工作原理:1.I/O控制及數(shù)據(jù)緩

13、沖器數(shù)據(jù)緩沖器是雙向緩沖器,連接內(nèi)、外總線,用于傳送CPU和8279之間的命令或數(shù)據(jù);I/O控制線是CPU對(duì)8279進(jìn)行控制的引線。CS是8279的片選信號(hào),CS=0時(shí),8279才被允許讀出或?qū)懭胄畔?。WR、RD為來(lái)自CPU的控制信號(hào)。A0用于區(qū)別信息特性:A0=1時(shí),表示數(shù)據(jù)緩沖器輸入為指令、輸出為狀態(tài)字;A=0時(shí),輸入、輸出皆為數(shù)據(jù)。2.控制與定時(shí)寄存器及定時(shí)控制控制與定時(shí)寄存器用來(lái)寄存鍵盤(pán)及顯示的工作方式,以及由CPU編程的其它操作方式。這些寄存器一旦接受并鎖存送來(lái)的命令,就通過(guò)譯碼產(chǎn)生相應(yīng)的信號(hào),從而完成相應(yīng)的控制功能。定時(shí)控制包含基本記數(shù)鍵。首級(jí)計(jì)數(shù)器是一個(gè)可編程的N級(jí)計(jì)數(shù)器。N可以

14、231之間由軟件編程,以便從外界時(shí)鐘CLK分頻得到內(nèi)部所需要的100KHZ時(shí)鐘。然后再經(jīng)過(guò)分頻為鍵盤(pán)掃描提供適當(dāng)?shù)闹鹦袙呙桀l率和顯示掃描時(shí)間。3.掃描計(jì)數(shù)器掃描計(jì)數(shù)器有兩種工作方式。按編碼方式工作時(shí),計(jì)數(shù)器作二進(jìn)制記數(shù)。4位記數(shù)狀態(tài)從掃描線SL0SL3輸出,經(jīng)外部譯碼器譯碼后,為鍵盤(pán)和顯示器提供掃描線;按譯碼方式工作時(shí),掃描計(jì)數(shù)器的最低二位被譯碼后,從SL0SL3輸出。因此,SL0SL3提供了4中取1的掃描譯碼。4.回復(fù)緩沖器、鍵盤(pán)去抖及控制來(lái)自RL0RL3的8根回復(fù)線的回復(fù)信號(hào),由回復(fù)緩沖器緩沖并鎖存。在鍵盤(pán)工作方式中,回復(fù)線作為行列式鍵盤(pán)的行列輸入線。在逐行列輸入時(shí),在逐行列掃描時(shí),回復(fù)線

15、用來(lái)搜索每一行列中閉合的鍵。當(dāng)某一鍵閉合時(shí),去抖電路被置位,延時(shí)等待10ms后,再檢驗(yàn)該鍵是否繼續(xù)閉和,并將該鍵的地址和附加的移位、控制狀態(tài)一起形成鍵盤(pán)數(shù)據(jù)被送入8279內(nèi)部FIFO(先進(jìn)先出)存儲(chǔ)器。鍵盤(pán)數(shù)據(jù)格式如下:D7 D6 D5D4 D3 D2 D1 D0控制 移位 掃描 回復(fù)控制和移位(D6、D7)的狀態(tài)由兩個(gè)獨(dú)立的附加開(kāi)關(guān)決定,而掃描(D5、D4、D3)和回復(fù)(D2、D1、D0)則是被按鍵置位的數(shù)據(jù)。D5、D4、D3來(lái)自動(dòng)掃描計(jì)數(shù)器,是按下鍵的行列編碼,而(D7D7D7)則來(lái)自行/列計(jì)數(shù)器,它們是根據(jù)回復(fù)信號(hào)而確定的行/列編碼。在傳感器開(kāi)關(guān)狀態(tài)矩陣方式中,回復(fù)線的內(nèi)容直接被送往和相

16、應(yīng)的傳感器RAM(即FIFO存儲(chǔ)器)。在選通輸入方式中,回復(fù)線的內(nèi)容在CNTL/STB線的脈沖上升沿被送入FIFO存儲(chǔ)5.FIFO/傳感器及其狀態(tài)寄存器FIFO/傳感器RAM是一個(gè)雙重功能的8×8RAM。在鍵盤(pán)或選通方式工作時(shí),它是FIFO存儲(chǔ)器,其輸入或讀出遵循先入先出的原則。FIFO狀態(tài)寄存器用于存放FIFO的工作狀態(tài)。例如,RAM是滿(mǎn)還是空;其中存有多少數(shù)據(jù);是否操作出錯(cuò)等。當(dāng)FIFO存儲(chǔ)器不空,狀態(tài)邏輯將產(chǎn)生IRQ=1信號(hào)向CPU申請(qǐng)中斷。在傳感器矩陣方式工作時(shí),這個(gè)存儲(chǔ)器以是傳感器不是存儲(chǔ)器。它存放著傳感器矩陣中的每一個(gè)傳感器狀態(tài)。在此方式中,若檢索出傳感器的變化,IRQ信

17、號(hào)變?yōu)楦唠娖?,向CPU申請(qǐng)中斷。6.顯示RAM和顯示地址寄存器顯示RAM用來(lái)存儲(chǔ)顯示數(shù)據(jù)。容量為16×8位。在顯示過(guò)程中,存儲(chǔ)的顯示數(shù)據(jù)輪流從顯示寄存器輸出。顯示寄存器分別為A、B兩組,OUTA03和OUTB03可以單獨(dú)送數(shù),也可以組成一個(gè)8位的字。顯示寄存器的輸出與顯示掃描配合,不斷從顯示RAM中讀出顯示數(shù)據(jù),同時(shí)輪流驅(qū)動(dòng)被選中的顯示器件,以達(dá)到多路復(fù)用的目的,使顯示器件呈現(xiàn)穩(wěn)定的顯示狀態(tài)。顯示地址寄存器用來(lái)寄存由CPU進(jìn)行讀/寫(xiě)顯示RAM的地址,它可以由命令設(shè)定,也可以設(shè)置成每次讀寫(xiě)或?qū)懭胫笞詣?dòng)遞減。2.5 DS1302介紹及基本原理說(shuō)明2.5.1 主要功能DS1302 是美國(guó)

18、DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時(shí)提供了對(duì)后備電源進(jìn)行涓細(xì)電流充電的能力。特性: 實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù) 用于高速數(shù)據(jù)暫存的 31×8 RAM 2引腳的串行 I/

19、O 2.5-5.5V滿(mǎn)度工作范圍 用于時(shí)鐘或RAM數(shù)據(jù)讀寫(xiě)的單字節(jié)或 多字節(jié)數(shù)據(jù)傳送 雙電源引腳 可選慢速充電至VCC12.5.2 內(nèi)部結(jié)構(gòu)及引腳功能DS1302內(nèi)部主要包括實(shí)時(shí)時(shí)鐘(real time clock)、輸入移位寄存器(input shift registers)、31字節(jié)靜態(tài)RAM、電源控制部分(power control)、命令控制邏輯(command and control logic)、振蕩器和分頻器(oscillator and divider)等部分。DS1302內(nèi)部結(jié)構(gòu)如圖2-5所示。圖2-5 DS1302內(nèi)部結(jié)構(gòu)2-6 DS1302引腳排列DS1302具有8腳DI

20、P引腳排列如圖2-6所示。VCC1:后備電源,在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行;當(dāng)VCC2大于VCC10.2V時(shí),VCC2給DS1302供電。VCC2:主電源,當(dāng)VCC2小于VCC1時(shí),DS1302由VCC1供電。X1、X2:振蕩源,外接32768Hz晶振。GND:接地端SCLK:串行時(shí)鐘輸入端I/O:串行數(shù)據(jù)輸入輸出端(雙向)。RST:復(fù)位/片選線,通過(guò)把RST輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。2.5.3 工作原理DS1302工作時(shí)為了對(duì)任何數(shù)據(jù)

21、傳送進(jìn)行初始化,需要將復(fù)位腳(RST)置為高電平且將8位地址和命令信息裝入移位寄存器。數(shù)據(jù)在時(shí)鐘(SCLK)的上升沿串行輸入,前8位指定訪問(wèn)地址。命令字裝入移位寄存器后,在之后的時(shí)鐘周期,讀操作時(shí)輸出數(shù)據(jù),寫(xiě)操作時(shí)輸入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8(8位地址+8位數(shù)據(jù)),在多字節(jié)方式下最多可達(dá)8+248。2.5.4 控制字節(jié)及寄存器DS1302的一次數(shù)據(jù)傳送是從發(fā)送控制字節(jié)開(kāi)始的。控制字節(jié)的最高有效位(位7)必須是邏輯1,如果該位為0,則無(wú)法把數(shù)據(jù)寫(xiě)入到DS1302中;位6表示要讀寫(xiě)的數(shù)據(jù)類(lèi)型,為0表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取 RAM數(shù)據(jù);位5至位1指示要操作單元的地址;最低

22、有效位(位 0)表示命令類(lèi)型,為0表示要進(jìn)行寫(xiě)操作,為 1 表示要進(jìn)行讀操作。控制字節(jié)總是從最低位開(kāi)始輸出。其控制字節(jié)格式如圖2-7所示。圖2-7 控制字節(jié)格式2.5.5 時(shí)鐘/日歷存儲(chǔ)區(qū)(時(shí)分秒)2.5.6 數(shù)據(jù)的傳送向 DS1302 寫(xiě)入數(shù)據(jù)時(shí),數(shù)據(jù)在控制字節(jié)輸入后的下一個(gè) SCLK周期的上升沿被寫(xiě)入,多余的 SCLK將被忽略。數(shù)據(jù)寫(xiě)入時(shí)從低位(位0)開(kāi)始;同樣,從DS1302 讀取數(shù)據(jù)時(shí),數(shù)據(jù)在緊跟控制字節(jié)后的下一個(gè) SCLK的下降沿讀出,讀出數(shù)據(jù)時(shí)也是從低位(0位)到高位(7 位),只要RST保持高電平,額外的 SCLK將導(dǎo)致數(shù)據(jù)字節(jié)的持續(xù)讀出,這個(gè)特性用于實(shí)現(xiàn)該芯片的突發(fā)讀模式。對(duì)D

23、S1302 的每一次讀寫(xiě)需 16個(gè)時(shí)鐘脈沖,前 8 個(gè)脈沖輸入操作地址和讀寫(xiě)命令,后8個(gè)脈沖寫(xiě)入或讀出數(shù)據(jù)。數(shù)據(jù)傳送時(shí)序如圖2-8。圖2-8 數(shù)據(jù)讀寫(xiě)時(shí)序圖2.6 DS18B20介紹及基本工作方式說(shuō)明DS18B20總體介紹:DS18B20溫度傳感器是美國(guó)達(dá)拉斯(DALLAS)半導(dǎo)體公司推出的應(yīng)用單總線技術(shù)的數(shù)字溫度傳感器。該器件將半導(dǎo)體溫敏器件、A/D轉(zhuǎn)換器、存儲(chǔ)器等做在一個(gè)很小的集成電路芯片上。本設(shè)計(jì)中溫度傳感器之所以選擇單線數(shù)字器件DS18B20,是在經(jīng)過(guò)多方面比較和考慮后決定的,主要有以下幾方面的原因:(1)系統(tǒng)的特性:測(cè)溫范圍為-55+128 ,測(cè)溫精度為士0.5;溫度轉(zhuǎn)換精度912位

24、可變,能夠直接將溫度轉(zhuǎn)換值以16位二進(jìn)制數(shù)碼的方式串行輸出;12位精度轉(zhuǎn)換的最大時(shí)間為750ms;可以通過(guò)數(shù)據(jù)線供電,具有超低功耗工作方式。(2)系統(tǒng)成本:由于計(jì)算機(jī)技術(shù)和微電子技術(shù)的發(fā)展,新型大規(guī)模集成電路功能越來(lái)越強(qiáng)大,體積越來(lái)越小,而價(jià)格也越來(lái)越低。一支DS18B20的體積與普通三極管相差無(wú)幾,價(jià)格只有十元人民幣左右。(3)系統(tǒng)復(fù)雜度:由于DS18B20是單總線器件,微處理器與其接口時(shí)僅需占用1個(gè)I/O端口且一條總線上可以?huà)旖訋资畟€(gè)DS18B20,測(cè)溫時(shí)無(wú)需任何外部元件,因此,與模擬傳感器相比,可以大大減少接線的數(shù)量,降低系統(tǒng)的復(fù)雜度,減少工程的施工量。(4)系統(tǒng)的調(diào)試和維護(hù):由于引線的

25、減少,使得系統(tǒng)接口大為簡(jiǎn)化,給系統(tǒng)的調(diào)試.DS18B20的復(fù)位時(shí)序圖:由上位機(jī)拉低總線480-960us的時(shí)間然后拉高總線,等待15-60us的時(shí)間,如果在總線上有DS18B20這個(gè)器件,并且將總線拉低60-240us的話(huà),就證明該器件復(fù)位成功,已經(jīng)準(zhǔn)備好發(fā)送或接受數(shù)據(jù)了。圖2-9復(fù)位時(shí)序圖DS18B20的寫(xiě)時(shí)序圖:DS18B20的寫(xiě)時(shí)序分為寫(xiě)0時(shí)序和寫(xiě)1時(shí)序兩個(gè)過(guò)程。DS18B20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序是,單總線要被拉低至少60us,保證DS18B20能夠在15us45us之間能夠正確地采樣I/O總線上的低電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總

26、線。圖2-10寫(xiě)時(shí)序圖DS18B20的讀時(shí)序圖:DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。對(duì)于DS18B20的讀時(shí)序是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20完成一個(gè)讀時(shí)序過(guò)程,至少需要60us。三、系統(tǒng)硬件電路設(shè)計(jì)3.1 proteus仿真接線圖全圖除了分塊電路之外,沒(méi)有明線,看起來(lái)簡(jiǎn)潔明了,并且各個(gè)電路的區(qū)域不同,也便于查找。將鍵盤(pán)、數(shù)碼管、二極管電路整合在一塊,對(duì)系統(tǒng)的調(diào)試可以方便很多。3.2分塊硬件電路射界3.2.1 ds1302時(shí)鐘電路通過(guò)P1.3口將時(shí)鐘芯片內(nèi)部RAM的內(nèi)容讀到單片機(jī)內(nèi)部進(jìn)而進(jìn)行顯示,內(nèi)部R

27、AM的內(nèi)容即為當(dāng)前日期3.2.2 ds18b20溫度傳感器電路通過(guò)P1.0口將溫度傳感器內(nèi)部RAM的溫度讀入單片機(jī),進(jìn)而進(jìn)行顯示。3.2.3 8279電路經(jīng)測(cè)驗(yàn),將SHIFT和CTRL/STB口接地,可以使鍵盤(pán)的前兩位為1,進(jìn)而可以方便的讀出鍵盤(pán)位置,P0口的數(shù)據(jù)通過(guò)圖中藍(lán)色總線傳入8279芯片。P2.0口通過(guò)輸出0或1控制8279用法。3.2.4 二極管電路第一部分二極管直接與單片機(jī)中P1.4-P1.7相連,顯示溫度的溫馨提示。第二部分的二極管電路通過(guò)38譯碼器與單片機(jī)中P3.0、P3.1、P3.4相連,控制燈的開(kāi)關(guān),進(jìn)行節(jié)日顯示。3.2.5 數(shù)碼管顯示電路段選部分直接與8279芯片中OUT

28、A和OUTB相連,用于控制每一位的顯示,而片選部分則通過(guò)38譯碼器與8279中SL0-SL2相連,用于控制位的選擇。3.2.6 4*5鍵盤(pán)電路鍵盤(pán)部分的行部分通過(guò)38譯碼器與8279中SL0-SL2相連,用于返回行值,鍵盤(pán)列部分直接與RL0-RL4相連,用于返回列值。3.2.7 鬧鐘及音樂(lè)播放電路第一部分為鬧鐘電路,通過(guò)控制P3.2口低電平與高電平的交替輸出,進(jìn)行鬧鐘響鈴和整點(diǎn)報(bào)時(shí)功能。第二部分為音樂(lè)電路,通過(guò)控制P3.5口高低電平輸出的頻率產(chǎn)生不同節(jié)拍的音符,進(jìn)而構(gòu)成音樂(lè)。5、 軟件設(shè)計(jì)及實(shí)現(xiàn)過(guò)程4.1程序設(shè)計(jì)簡(jiǎn)述主程序先進(jìn)行8279初始化,輸出HELLO及開(kāi)機(jī)音樂(lè)后,再進(jìn)行整個(gè)系統(tǒng)的初始化

29、。進(jìn)入如圖所示的程序循環(huán)過(guò)程,并在循環(huán)過(guò)程中不斷判斷是否滿(mǎn)足相應(yīng)的判斷語(yǔ)句,進(jìn)行鬧鐘的響鈴和節(jié)日以及溫度的提示,并且等待中斷、進(jìn)行鍵盤(pán)掃描。當(dāng)檢測(cè)到鍵值時(shí),進(jìn)入中斷,根據(jù)鍵值判斷所需要進(jìn)行的功能,轉(zhuǎn)到相應(yīng)的子函數(shù)中進(jìn)行。4.2系統(tǒng)程序流程圖設(shè)計(jì)主函數(shù)程序設(shè)計(jì)流程圖顯示子函數(shù)流程圖五、系統(tǒng)的調(diào)試過(guò)程5.1程序性問(wèn)題及解決1. 由于word 的編寫(xiě)功能較為強(qiáng)大,開(kāi)始使用word進(jìn)行編寫(xiě),然后復(fù)制如keil進(jìn)行調(diào)試,由于使用word的原因,導(dǎo)致程序中出現(xiàn)了很多中問(wèn)字符的空格,進(jìn)行了仔細(xì)查找將空格抹去之后,方可正常運(yùn)行。2. 用proteus話(huà)電路,進(jìn)行程序調(diào)試時(shí),發(fā)現(xiàn)提示硬件錯(cuò)誤,出現(xiàn)器件重名,導(dǎo)致

30、無(wú)法運(yùn)行。5.2調(diào)試過(guò)程出現(xiàn)問(wèn)題及解決1. 數(shù)碼管輸出錯(cuò)誤,與所要輸出的相反。分析原因:程序中數(shù)碼管輸出部分順序不對(duì)。改進(jìn)方法:為了防止對(duì)程序進(jìn)行大改,將命令字改為左端輸入。2. 鬧鐘時(shí)明明輸出高電平,但喇叭并不響。分析原因:上網(wǎng)查詢(xún)之后發(fā)現(xiàn)所用喇叭需要震蕩,及高低電平交替輸出才行。改進(jìn)方法:在程序中加入void di()子函數(shù),使用時(shí)進(jìn)行引用。3. 對(duì)網(wǎng)上找的歌曲代碼進(jìn)行截取時(shí)發(fā)現(xiàn)截取后的蜂鳴器亂響。分析原因:歌曲代碼中沒(méi)兩位表示一個(gè)音符,截取過(guò)程中將兩位拆開(kāi),出現(xiàn)混亂,改進(jìn)方法:以?xún)晌蛔址麨閱挝贿M(jìn)行截取。4. 節(jié)日提示的二極管不亮。分析原因:運(yùn)行時(shí),發(fā)現(xiàn)二極管相應(yīng)的端口顯示低電平,故程序沒(méi)

31、有問(wèn)題,最終發(fā)現(xiàn)馬虎大意導(dǎo)致二極管接反。改進(jìn)方法:反接二極管。5. 溫度顯示錯(cuò)誤,正值時(shí)正常顯示,負(fù)值時(shí)顯示零。分析原因:溫度讀取子函數(shù)有錯(cuò)誤,但無(wú)論怎么修改,扔無(wú)法解決上述問(wèn)題。將<<4去掉之后發(fā)現(xiàn)顯示為正常的16倍,多次調(diào)試未果,改進(jìn)方法:將<<4放入顯示子函數(shù)中,系統(tǒng)則正常顯示溫度。6. 系統(tǒng)運(yùn)行太卡,特別是秒表和時(shí)鐘走的過(guò)慢,系統(tǒng)運(yùn)行過(guò)程中出現(xiàn)死機(jī)現(xiàn)象。分析原因:開(kāi)始以為是電腦的問(wèn)題,故換了電腦進(jìn)行嘗試,發(fā)現(xiàn)雖然有改進(jìn),但改進(jìn)不大,并且系統(tǒng)運(yùn)行過(guò)程中出現(xiàn)死機(jī)現(xiàn)象一點(diǎn)沒(méi)有改變。于是上網(wǎng)查找之后,認(rèn)為程序有問(wèn)題,一是函數(shù)調(diào)用過(guò)于頻繁,二是采用if語(yǔ)句不正確。改進(jìn)方法

32、:仔細(xì)從頭查看程序,將函數(shù)中的調(diào)用能去掉的盡量去掉。讓后,將if語(yǔ)句改成if else 和switch語(yǔ)句。7. 調(diào)整時(shí)間的過(guò)程中出現(xiàn)邊調(diào)整時(shí)間,時(shí)間邊走的問(wèn)題。分析原因:程序循環(huán)的過(guò)程中,一直從1302中讀取時(shí)間,并顯示。改進(jìn)方法:設(shè)置“確定”鍵,用來(lái)將時(shí)間寫(xiě)入1302,并在主函數(shù)中設(shè)定只有的光標(biāo)為零時(shí)才讀取時(shí)間并顯示。六、新增功能及實(shí)現(xiàn)方法6.1新增功能開(kāi)機(jī)歡迎、日期與星期顯示、時(shí)間和日期的調(diào)節(jié)、秒表功能、人性化溫馨提示、整點(diǎn)報(bào)時(shí)功能。6.2實(shí)現(xiàn)方法1、 開(kāi)機(jī)歡迎功能通過(guò)函數(shù)開(kāi)始向8279中輸入HELLO的字型碼和經(jīng)T1定時(shí)器與delay()函數(shù)混合使用播放開(kāi)機(jī)音樂(lè)實(shí)現(xiàn)開(kāi)機(jī)歡迎功能2. 日

33、期與星期顯示通過(guò)DS1302芯片讀取當(dāng)前日期和星期,經(jīng)8279在數(shù)碼管上進(jìn)行顯示3. 時(shí)間、日期調(diào)節(jié)通過(guò)移動(dòng)光標(biāo)(圖中小數(shù)點(diǎn))確定調(diào)節(jié)哪一位,只需要在原來(lái)顯示的基礎(chǔ)上+0x80。通過(guò)串行I/O將調(diào)整好的日期時(shí)間輸入ds1302芯片,進(jìn)而往后可以繼續(xù)進(jìn)行顯示。4. 秒表功能通過(guò)定時(shí)/計(jì)數(shù)器T0實(shí)現(xiàn),由于使用12MHz的晶振,故設(shè)置初值為-50000,每20次中斷,可在秒數(shù)上加1,通過(guò)按鍵控制T0的開(kāi)關(guān),進(jìn)而對(duì)秒表進(jìn)行控制。5. 人性化溫馨提示通過(guò)判斷當(dāng)前時(shí)間與所設(shè)定節(jié)日日期的比較,控制相應(yīng)I/O口的輸出,實(shí)現(xiàn)節(jié)日的溫馨提示,通過(guò)判斷當(dāng)前溫度在某一溫度范圍,控制I/O口的輸出,進(jìn)而實(shí)現(xiàn)溫度的溫馨提

34、示。6. 整點(diǎn)報(bào)時(shí)功能通過(guò)判斷分鐘位與秒位同時(shí)為零,進(jìn)入di()子函數(shù),進(jìn)行整點(diǎn)報(bào)時(shí)功能。七、小節(jié)與體會(huì)歷時(shí)約兩個(gè)星期的單片機(jī)課程設(shè)計(jì)很快就結(jié)束了,在本次課程設(shè)計(jì)中,在楊老師的悉心指導(dǎo)和精心教導(dǎo)下,在設(shè)計(jì)的過(guò)程中,我已經(jīng)對(duì)單片機(jī)的原理與應(yīng)用有了深刻認(rèn)識(shí),也學(xué)習(xí)和應(yīng)用了處理一些問(wèn)題的基本方法,在老師和各位同學(xué)的幫助與支持下,順利的完成了本次單片機(jī)課程設(shè)計(jì):89C51電子時(shí)鐘設(shè)計(jì),并完成報(bào)告的編制。在本次課程設(shè)計(jì)過(guò)程中,我為能理解和應(yīng)用專(zhuān)業(yè)課學(xué)習(xí)成果而感悟頗深,學(xué)習(xí)到了PROTEUS和KEIL兩個(gè)軟件的使用方法,同時(shí)我也深深的感受到了基礎(chǔ)知識(shí)的重要性。在以后的學(xué)習(xí)生活中切不可急于求成而忽略了基礎(chǔ)的

35、夯實(shí),對(duì)一門(mén)系統(tǒng)學(xué)科,應(yīng)該扎實(shí)的學(xué)習(xí)他的每一部分知識(shí),充分利用各種實(shí)踐環(huán)節(jié),切實(shí)做到理論聯(lián)系實(shí)踐,學(xué)以致用。同樣,通過(guò)這次課程設(shè)計(jì)我也體會(huì)到我們學(xué)習(xí)上的不足。課程設(shè)計(jì)的這段時(shí)間過(guò)得相當(dāng)充實(shí),在日后的學(xué)習(xí)與工作中,我仍將認(rèn)真鞏固對(duì)專(zhuān)業(yè)基礎(chǔ)知識(shí)的學(xué)習(xí),繼續(xù)扎實(shí)的學(xué)習(xí)單片機(jī)的相關(guān)知識(shí)。而本次的電子時(shí)鐘裝置的設(shè)計(jì)過(guò)程可謂是一波三折。我們的設(shè)計(jì)程序可謂是七易其稿,最初的程序在我們的不斷改動(dòng)中不斷豐富,不斷完善,不斷趨于精確和穩(wěn)定,雖然這個(gè)過(guò)程是十分痛苦的,有時(shí)候我們真的會(huì)為一個(gè)管教信號(hào)的糾正而花費(fèi)以晚上的時(shí)間。雖然過(guò)程十分辛苦和糾結(jié),但是這讓我們明白了,每一個(gè)華麗而精妙的程序,都是以不斷的琢磨和改善為前

36、提的,不斷完善,遲滯易恒,是每一個(gè)設(shè)計(jì)者、每一次設(shè)計(jì)都要牢記的最寶貴的也是最根本的守則。在此更要感謝楊志堅(jiān)老師,是您帶領(lǐng)我走進(jìn)單片機(jī)這一廣闊高深的領(lǐng)域,是您的悉心指導(dǎo)和關(guān)懷,使我能夠順利的完成此次課程設(shè)計(jì)。在我的學(xué)業(yè)和課程設(shè)計(jì)工作中無(wú)不傾注著老師辛勤的汗水和心血。老師的嚴(yán)謹(jǐn)治學(xué)態(tài)度、淵博的知識(shí)、無(wú)私的奉獻(xiàn)精神使我深受啟迪。從尊敬的老師身上,我不僅學(xué)到了扎實(shí)、寬廣的專(zhuān)業(yè)知識(shí),也學(xué)到了做人的道理。在此我要向我的老師致以最衷心的感謝和深深的敬意。同時(shí),也感謝我們成長(zhǎng)路上的每一位老師給我們的無(wú)微不至的關(guān)懷和細(xì)致入微的指導(dǎo),是他們教會(huì)了我生存的方法,是他們給了我們獨(dú)立的力量,是他們讓我心懷夢(mèng)想,積極的面

37、對(duì)未來(lái)的一切。愿所有老師和同學(xué)工作順利,身體健康!參考文獻(xiàn):1 肖看、李群芳單片機(jī)原理、接口及應(yīng)用嵌入式系統(tǒng)技術(shù)基礎(chǔ).(第二版)北京:清華大學(xué)出版社2 單片機(jī)C語(yǔ)言程序設(shè)計(jì)新余:新余高專(zhuān)3肖洪兵. 跟我學(xué)用單片機(jī). 北京:北京航空航天大學(xué)出版社,2002.84何立民. 單片機(jī)高級(jí)教程 第1版北京:北京航空航天大學(xué)出版社,20015趙曉安. MCS-51單片機(jī)原理及應(yīng)用. 天津:天津大學(xué)出版社,2001.36李廣第 單片機(jī)基礎(chǔ) 第1版北京:北京航空航天大學(xué)出版社,19997徐惠民、安德寧 單片微型計(jì)算機(jī)原理接口與應(yīng)用 第1版 北京:北京郵電大學(xué)出版社,19968何立民從Cygnal 80C51F

38、看8位單片機(jī)發(fā)展之路 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2002年,第5期:P58附錄硬件連接圖:程序清單:52#include"reg51.h"#include"absacc.h"#define COM XBYTE 0X7FFF /定義8279控制口 #define DATA XBYTE 0X7EFF /定義8279數(shù)據(jù)口#define uchar unsigned char#define uint unsigned intsbit beep = P32 ;/定義喇叭sbit RST = P11 ;sbit SCK = P12 ;sbit SDA = P13 ;

39、/用于1302讀取時(shí)鐘信號(hào)sbit DQ = P10 ;/用于溫度傳感器sbit LED1 = P14 ;sbit LED2 = P15 ;sbit LED3 = P16 ;sbit LED4 = P17 ; /用于溫度提示sbit A=P30;sbit D=P31;sbit C=P34;sbit Speak =P35;struct time uchar second ; uchar minute ; uchar hour ; uchar week ; uchar day ; uchar month ; uchar year ;current_time ;#define ctime curre

40、nt_time/定義鬧鐘的時(shí)分秒變量 uchar asec,amin,ahour ;uint flag,flag1=0;/標(biāo)志位flag1為鬧鐘標(biāo)志位,默認(rèn)鬧鐘為關(guān)uint a,keyval;/用于調(diào)整日期時(shí)間uint gb;/光標(biāo)標(biāo)志位uint temp1,t,temp;/溫度顯示使用uchar m,i;/用于秒表uchar Count;/用于開(kāi)機(jī)唱歌uchar code LED11 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,;uchar code LE11 = 0x3f,0x7f,0x06,0x5b,0x4f,0x66

41、,0x6d,0x7d,0x07,0x6f,0x40,;/作為數(shù)碼管顯示代碼unsigned char code SONG = 0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x00;/祝你平安代碼void yanshi(unsigned int i) /溫度讀取的延時(shí)函數(shù) while(i-);/延時(shí)函數(shù)void delay(uint ms) uchar i ; while(ms-)

42、for(i=135;i>0;i-);/*開(kāi)機(jī)唱歌函數(shù)*/void Time0_Init()TMOD = 0x10;IE = 0x88;TH1 = 0xDC;TL1 = 0x00; void Time0_Int() interrupt 3TH1 = 0xDC;TL1 = 0x00;Count+; /長(zhǎng)度加1void Delay_xMs(uint x)uint i,j;for(i=0; i<x; i+)for(j=0; j<3; j+);void Play_Song()uchar Temp1,Temp2;uint Addr;Count = 0; /中斷計(jì)數(shù)器清0Addr = 0;

43、while(1)Temp1 = SONGAddr+;if (Temp1 = 0xFF) /休止符TR1 = 0;Delay_xMs(100);else if (Temp1 = 0x00) /歌曲結(jié)束符return;elseTemp2 = SONGAddr+;TR1 = 1;while(1)Speak = Speak;Delay_xMs(Temp1);if(Temp2 = Count)Count = 0;break;void changge()Time0_Init(); Play_Song(); /*秒表初始化*/void timer0() interrupt 1 TH0 = (65536 -

44、50000) / 256; TL0 = (65536 - 50000) % 256;i+; if(i=20) i= 0; m+; if(m=60) m= 0; void Intmiaobiao() m= 0; i= 0; TMOD = 0x01;IP=0x04;TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; TR0 = 0; ET0 = 1; EA = 1;/*開(kāi)機(jī)唱歌函數(shù)*/void Time0_Init()TMOD = 0x10;IE = 0x88;TH1 = 0xDC;TL1 = 0x00; void Time0_Int

45、() interrupt 3TH1 = 0xDC;TL1 = 0x00;Count+; /長(zhǎng)度加1void Delay_xMs(uint x)uint i,j;for(i=0; i<x; i+)for(j=0; j<3; j+);void Play_Song()uchar Temp1,Temp2;uint Addr;Count = 0; /中斷計(jì)數(shù)器清0Addr = 0;while(1)Temp1 = SONGAddr+;if (Temp1 = 0xFF) /休止符TR1 = 0;Delay_xMs(100);else if (Temp1 = 0x00) /歌曲結(jié)束符return;

46、elseTemp2 = SONGAddr+;TR1 = 1;while(1)Speak = Speak;Delay_xMs(Temp1);if(Temp2 = Count)Count = 0;break;void changge()Time0_Init(); Play_Song(); /*秒表初始化*/void timer0() interrupt 1 TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256;i+; if(i=20) i= 0; m+; if(m=60) m= 0; void Intmiaobiao() m= 0; i=

47、 0; TMOD = 0x01;IP=0x04;TH0 = (65536 - 50000) / 256; TL0 = (65536 - 50000) % 256; TR0 = 0; ET0 = 1; EA = 1; /*DS18b20溫度傳感器函數(shù)*/void Init(void)/初始化 /unsigned char flag=0; DQ = 0; /單片機(jī)將DQ拉低 yanshi(100); /精確延時(shí) 大于 480us小于960us DQ = 1; /拉高總線 yanshi(30); /flag=DQ; /稍做延時(shí)后 如果flag=0則初始化成功 flag=1則初始化失敗 /delay(

48、20);unsigned char Read(void)/讀字節(jié) unsigned char i=0; unsigned char datt=0; for (i=8;i>0;i-) DQ = 0; / 給脈沖信號(hào) datt>>=1; DQ = 1; / 給脈沖信號(hào) if(DQ) datt|=0x80; yanshi(5); return(datt);void Write1(unsigned char datt)/寫(xiě)字節(jié) unsigned char i=0; for (i=8; i>0; i-) DQ = 0; DQ = datt&0x01; yanshi(5); DQ = 1; datt>>=1; void ReadTemperature() unsigned char tl=0,th=0,i=100; while(i-) Init(); Write1(0xCC); / 跳過(guò)讀序號(hào)列號(hào)的操作 Write1(0x44); / 啟動(dòng)溫度轉(zhuǎn)換 yanshi(100); Init(); Write1(0xCC); /跳過(guò)讀序號(hào)列號(hào)的操作 Write1(0xBE); /讀取

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論