基于單片機(jī)的液晶顯示數(shù)字鐘設(shè)計(jì)【畢業(yè)論文】_第1頁(yè)
已閱讀1頁(yè),還剩39頁(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、<p>  本科畢業(yè)設(shè)計(jì)(論文)</p><p><b>  ( 屆)</b></p><p>  論文題目 基于單片機(jī)的液晶顯示數(shù)字鐘設(shè)計(jì)</p><p>  (英文) Design on LCD Digital Clock Based on MCU</p><p>  所在學(xué)院 電子信息學(xué)院

2、 </p><p>  專(zhuān)業(yè)班級(jí) 電子信息工程 </p><p>  學(xué)生姓名 學(xué)號(hào) </p><p>  指導(dǎo)教師 職稱(chēng) </p><p>  完成日期 年 月 日<

3、/p><p><b>  摘 要</b></p><p>  數(shù)字鐘是一種數(shù)字顯示的計(jì)時(shí)裝置。隨著生活節(jié)奏的加快,人們的時(shí)間觀也日益增強(qiáng),多功能數(shù)字鐘的作用也就越來(lái)越明顯,而隨著單片機(jī)的發(fā)展越來(lái)越快,特別是在小型的嵌入式系統(tǒng)的應(yīng)用優(yōu)勢(shì)也越來(lái)越強(qiáng)。因此,本次設(shè)計(jì)的多功能數(shù)字鐘以STC89C51單片機(jī)為核心,以達(dá)拉斯公司生產(chǎn)的時(shí)鐘芯片DS1302為時(shí)鐘源,外圍擴(kuò)展數(shù)字溫度傳

4、感器用來(lái)采集環(huán)境溫度,LCD顯示等相關(guān)電路作為系統(tǒng)硬件架構(gòu),同時(shí)在硬件架構(gòu)的基礎(chǔ)上,給出了系統(tǒng)運(yùn)行流程圖、C語(yǔ)言源代碼和硬件PCB圖。</p><p>  本次設(shè)計(jì)能夠?qū)崿F(xiàn)多功能數(shù)字鐘的常規(guī)功能,顯示“時(shí)”、“分”、“秒”,環(huán)境溫度測(cè)量等功能。與傳統(tǒng)的機(jī)械鐘相比,具有更高的準(zhǔn)確率和使用壽命,相信在日常生活的應(yīng)用也將會(huì)越來(lái)越廣泛。</p><p>  關(guān)鍵詞:數(shù)字鐘;STC89C51;時(shí)鐘芯

5、片;溫度傳感器</p><p><b>  Abstract</b></p><p>  Digital clock is one kind of timer devices by the digital circuit. Because of the pace of life be faster and faster,people's concept of

6、time are also increasing, and the function of digital clock be more and more obvious. With the development of MCU, especially the superiority of apply small embedded system is stronger and stronger. Therefore, this digit

7、al clock is designed by using the STC89C51 chip, DS1302, temperature sensors and LCD. The clock chip DS1302 produces from Dallas company to be t</p><p>  The multi-function of digital clock is designed and r

8、ealized. It is able to display " hour", "minutes", "seconds" and temperature. Compared with the traditional mechanical clocks, it has a better accuracy rate and service life, and it will be

9、more extensive applications in daily life.</p><p>  Key words: digital clock;STC89C51;clock chip;temperature sensor</p><p><b>  目 錄</b></p><p><b>  1緒論- 1 -</

10、b></p><p>  1.1數(shù)字電子鐘的背景- 1 -</p><p>  1.2數(shù)字電子鐘的意義- 1 -</p><p>  1.3數(shù)字電子鐘的應(yīng)用- 1 -</p><p>  1.4本文的章節(jié)結(jié)構(gòu)- 2 -</p><p>  2整體設(shè)計(jì)方案- 3 -</p><p>

11、;  2.1 系統(tǒng)結(jié)構(gòu)- 3 -</p><p>  2.2單片機(jī)的歷史和發(fā)展概況- 3 -</p><p>  2.3 主控電路及單片機(jī)的選擇- 5 -</p><p>  2.4 時(shí)鐘電路- 8 -</p><p>  2.5溫度采集單元- 8 -</p><p>  2.6顯示單元- 8 -</

12、p><p>  2.7電源處理單元- 8 -</p><p>  3多功能數(shù)字鐘的硬件設(shè)計(jì)- 9 -</p><p>  3.1單片機(jī)最小系統(tǒng)設(shè)計(jì)- 9 -</p><p>  3.1.1系統(tǒng)時(shí)鐘電路- 10 -</p><p>  3.1.2復(fù)位電路- 10 -</p><p>  3.

13、2時(shí)鐘電路- 10 -</p><p>  3.3溫度采集單元- 12 -</p><p>  3.4顯示單元- 13 -</p><p>  3.5電源處理單元- 15 -</p><p>  4系統(tǒng)軟件實(shí)現(xiàn)- 16 -</p><p>  4.1系統(tǒng)軟件實(shí)現(xiàn)流程圖- 16 -</p>&l

14、t;p>  4.2 主程序- 17 -</p><p>  4.3 LCD初始化函數(shù)- 19 -</p><p>  4.4時(shí)鐘芯片初始化函數(shù)- 20 -</p><p>  4.5時(shí)間顯示函數(shù)- 21 -</p><p>  4.6溫度顯示函數(shù)- 24 -</p><p>  4.7讀取溫度函數(shù)-

15、25 -</p><p>  4.8讀取時(shí)間函數(shù)- 26 -</p><p>  4.9調(diào)試與分析- 28 -</p><p>  5總結(jié)- 29 -</p><p><b>  致謝- 30 -</b></p><p>  參考文獻(xiàn)- 31 -</p><p>

16、  附錄1 電路原理圖- 32 -</p><p>  附錄2 PCB圖- 33 -</p><p>  附錄3 PCB3D圖- 34 -</p><p><b>  1緒論</b></p><p>  1.1數(shù)字電子鐘的背景 </p><p>  新的世紀(jì),科技得到了迅速的發(fā)展,尤

17、其是電子技術(shù)更是日新月異,而現(xiàn)在生活中各種電子產(chǎn)品無(wú)處不在,大大的推動(dòng)了社會(huì)信息化的高速發(fā)展[1]。</p><p>  目前,單片機(jī)正朝著高性能和多品種方向發(fā)展趨勢(shì)將是進(jìn)一步向著CMOS化、低功耗、小體積、大容量、高性能、低價(jià)格和外圍電路內(nèi)裝化等幾個(gè)方面發(fā)展。下面是單片機(jī)的主要發(fā)展趨勢(shì)。單片機(jī)在科技和生活中有很大的意義之處,改變了傳統(tǒng)意義上的控制系統(tǒng)設(shè)計(jì)思想和設(shè)計(jì)方法[2]。使我們由從前的模擬電路或數(shù)字電路實(shí)現(xiàn)

18、轉(zhuǎn)變成用單片機(jī)通過(guò)軟件方法來(lái)實(shí)現(xiàn)了。從而使我們由原來(lái)的硬件控制技術(shù)走向了用軟件控制技術(shù),是控制技術(shù)新的一次重大改變。</p><p>  單片機(jī)模塊中最常見(jiàn)的是數(shù)字鐘,數(shù)字鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無(wú)機(jī)械裝置,具有更更長(zhǎng)的使用壽命,因此得到了廣泛的使用[3]。</p><p>  1.2數(shù)字電子鐘的意義</p>

19、<p>  數(shù)字鐘是采用數(shù)字電路實(shí)現(xiàn)對(duì)時(shí),分,秒.而我們?cè)谏钪袕V泛使用數(shù)字顯示的計(jì)時(shí)裝置,常用于家庭,工廠,辦公室等地方,是我們?nèi)粘I詈蛯W(xué)習(xí)中不可缺少的。由于科技的高速發(fā)展,我們的數(shù)字集成電路和石英晶體振蕩器在我們生活和學(xué)習(xí)中得到了廣泛應(yīng)用,其最新的數(shù)字鐘的精度和功能,大大超過(guò)老式鐘表各種功能。而數(shù)字鐘的由從前鐘表單一報(bào)時(shí)功能從走多功能發(fā)展趨勢(shì),使我們的生活和學(xué)習(xí)帶來(lái)了很大的便利[4]。比如人們常用到的定時(shí)自動(dòng)報(bào)警、自動(dòng)

20、起閉路燈等功能在我們生活得到廣泛的了利用。而這些都是以鐘表數(shù)字化為基礎(chǔ)的而發(fā)展起來(lái)。因此,人們更加深入的研究和探討數(shù)字鐘,有著不平凡的意義所在。</p><p>  1.3數(shù)字電子鐘的應(yīng)用 </p><p>  數(shù)字鐘已成為人們?nèi)粘I钪校罕夭豢缮俚谋匦杵罚瑥V泛用于個(gè)人家庭以及車(chē)站、碼頭、劇場(chǎng)、辦公室等公共場(chǎng)所,給人們的生活、學(xué)習(xí)、工作、娛樂(lè)帶來(lái)極大的方便。由于數(shù)字集成電路技術(shù)的發(fā)展和采用

21、了先進(jìn)的石英技術(shù),使數(shù)字鐘具有走時(shí)準(zhǔn)確、性能穩(wěn)定、攜帶方便等優(yōu)點(diǎn),它還用于計(jì)時(shí)、自動(dòng)報(bào)時(shí)及自動(dòng)控制等各個(gè)領(lǐng)域[5]。</p><p>  1.4本文的章節(jié)結(jié)構(gòu) </p><p>  本文設(shè)計(jì)了一種基于單片機(jī)的多功能數(shù)字鐘,按照設(shè)計(jì)思路,本文共分五個(gè)部分:</p><p>  第一部分:緒論。主要表述本文的研究背景,研究的意義和應(yīng)用。</p><p

22、>  第二部分:對(duì)整體設(shè)計(jì)方案進(jìn)行說(shuō)明。</p><p>  第三部分:硬件電路設(shè)計(jì)(主要以STC89C51RC單片機(jī)作為核心,設(shè)計(jì)最小單片機(jī)系統(tǒng)等)。</p><p>  第四部分:軟件實(shí)現(xiàn)原理(使用keil51編譯器,并且在其軟件下進(jìn)行程序編譯及仿真調(diào)試)。</p><p>  第五部分:總結(jié)本論文所做的工作和對(duì)該課題的展望,以及整個(gè)系統(tǒng)設(shè)計(jì)中遇到的問(wèn)題和

23、解決辦法。</p><p><b>  2整體設(shè)計(jì)方案</b></p><p><b>  2.1 系統(tǒng)結(jié)構(gòu)</b></p><p>  系統(tǒng)由單片機(jī)主控單元、時(shí)鐘電路、溫度采集單元、LCD顯示單元,電源處理單元五大部分組成。</p><p>  圖2-1系統(tǒng)結(jié)構(gòu)框圖</p><

24、p>  主控單元我們采用宏晶科技的MCS51內(nèi)核8位單片機(jī)STC89C51RC作為系統(tǒng)核心,下面我們針對(duì)51系列單片機(jī)作下簡(jiǎn)要介紹:</p><p>  2.2單片機(jī)的歷史和發(fā)展概況 </p><p>  人們通常講的單片機(jī)是指單片微型計(jì)算機(jī),是常見(jiàn)的典型嵌入式微控制器(Microcontroller Unit),我們通常用MCU三個(gè)英語(yǔ)字母縮寫(xiě)表示單片機(jī),而單片機(jī)很早就被人用于

25、工業(yè)各種領(lǐng)域。由其是單片機(jī)在控制領(lǐng)域得到了廣泛應(yīng)用,為使更多的業(yè)內(nèi)人士、學(xué)生、愛(ài)好者,產(chǎn)品開(kāi)發(fā)人員掌握單片機(jī)這門(mén)技術(shù),于是產(chǎn)生單片機(jī)開(kāi)發(fā)板。當(dāng)時(shí)為了使計(jì)算系統(tǒng)變得更小,從而改變計(jì)算機(jī)因體積原因而無(wú)法使集成電路復(fù)雜化。人們通過(guò)設(shè)計(jì),使大量的外圍設(shè)備與CPU集成在一個(gè)芯片當(dāng)中[6]。于是人們發(fā)明了INTEL的Z80處理器。于是日后,單片機(jī)和專(zhuān)用處理器朝著不同方向而發(fā)展。</p><p>  剛開(kāi)始的單片機(jī)都是4位或8

26、位的。而其中INTEL的8031因?yàn)槠湫阅苁址€(wěn)定并且功能卓越得到廣大的好評(píng),使其大獲成功。此后人們?cè)?031的基礎(chǔ)上人們發(fā)明了MCS51系列的單片機(jī)系統(tǒng)。并且這種單片機(jī)系統(tǒng)一直沿用至今。然后隨著人們對(duì)工業(yè)控制領(lǐng)域要求不斷的提高,單片機(jī)出現(xiàn)了16位功能,尤其但是條件原因,性?xún)r(jià)比不是很高沒(méi)有在工業(yè)得到廣泛的應(yīng)用。然后隨著時(shí)代的發(fā)展,人們對(duì)消費(fèi)電子產(chǎn)品需求量大增,在90年代之后,單片機(jī)的各項(xiàng)技術(shù)突飛猛進(jìn),得到了迅速的發(fā)展和提高。之后擁有32

27、位的ARM系統(tǒng)單片機(jī)迅速取代16位單片機(jī)的市場(chǎng)地方,并且進(jìn)入主流市場(chǎng)。而傳統(tǒng)的8位單片機(jī)的性能也得到了飛速提高,處理能力比起80年代提高了數(shù)百倍。目前,人們使用高端32位單片機(jī)主頻都已經(jīng)在300MHz之上,而其性能和功能更是可以和90年代中期的專(zhuān)用處理器相比媲美。隨著工業(yè)的發(fā)展,單片機(jī)的價(jià)格越發(fā)便宜,一般普通的型號(hào)價(jià)格1美元左右,其最高端的型號(hào)一般也只有10美元左右。而隨著單片機(jī)的功能和性能的發(fā)展,現(xiàn)在人們已經(jīng)不會(huì)在裸機(jī)環(huán)境下使用和開(kāi)發(fā)

28、研究,而大量專(zhuān)用的嵌入式操作系統(tǒng)更是被廣泛應(yīng)用與全系列的單片機(jī)上。而現(xiàn)在最高端的單片機(jī)能直接使</p><p>  經(jīng)過(guò)人們長(zhǎng)期研究,相比專(zhuān)用處理器,人們發(fā)現(xiàn)單片機(jī)更加適用于嵌入式系統(tǒng),所以它得到更加廣泛的使用和應(yīng)用。實(shí)際上世界上數(shù)量最多的計(jì)算機(jī)就是單片機(jī)。而21世紀(jì)人類(lèi)的生活中幾乎所以的電子和機(jī)械產(chǎn)品中都會(huì)使用集成單片機(jī)。比如我們常用的移動(dòng)手機(jī)、固定電話、電腦等各類(lèi)配件中,基本都配有1-3個(gè)單片機(jī)。而在一些復(fù)雜

29、的工業(yè)控制系統(tǒng)上,可能會(huì)有數(shù)百甚至上千臺(tái)單片機(jī)在同時(shí)運(yùn)行工作!目前,單片機(jī)的數(shù)量早已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)PC機(jī)和其它各類(lèi)計(jì)算數(shù)量的總和,甚至比人類(lèi)人口數(shù)量還要多。</p><p>  我們通常稱(chēng)單片機(jī)為單片微控制器,它不是為了完成某個(gè)邏輯功能的芯片,而是把一個(gè)計(jì)算機(jī)系統(tǒng)集成在這個(gè)芯片上,使其性能和功能與一個(gè)微型的計(jì)算機(jī)相差無(wú)異。然后單片機(jī)和普通計(jì)算機(jī)相比較,單片機(jī)只是缺少了I/O設(shè)備??傮w上來(lái)講:一塊芯片能就成了一臺(tái)微型計(jì)

30、算機(jī)。因?yàn)閱纹瑱C(jī)不僅價(jià)格便宜,而且質(zhì)量輕,體積小。從而使人們?cè)谘芯?、學(xué)習(xí)、開(kāi)發(fā)中提供了許多有利的條件。并且,通過(guò)學(xué)習(xí)和使用單片機(jī),能使我們更加的了解和明白計(jì)算機(jī)原理和結(jié)構(gòu)[7]。</p><p>  單片機(jī)內(nèi)部也有許多電腦功能類(lèi)似的模塊。例如像電腦一樣的CPU,內(nèi)存,并行總線,跟硬盤(pán)作用大致相同的存儲(chǔ)器件。當(dāng)然它們之間也有許多的不同之處,雖然單片機(jī)的這些部件性能和功能比普通的電腦弱很多,但是單片機(jī)的價(jià)格十分的低廉

31、,一般在10元左右,但是其功能和性能還是十分卓越,用它來(lái)做一些不是特別復(fù)雜的電器工作已經(jīng)足夠了。我們現(xiàn)在用的全自動(dòng)滾筒洗衣機(jī)、排煙罩、VCD等等的家電里面都可以看到它的身影,而其控制部分的核心部件就是單片機(jī)。</p><p>  單片機(jī)的程序不僅可以運(yùn)行,并且可以根據(jù)人們的需求進(jìn)行修改。根據(jù)所想的功能人們寫(xiě)出不同的程序來(lái)實(shí)現(xiàn)。當(dāng)人們遇到需要一些特殊的功能,這時(shí)如果用別的普通器件可能需要花費(fèi)很多的力氣和時(shí)間,而其不

32、一定能做成。然后我們使用單片機(jī),其結(jié)果就會(huì)有天壤之別。只因?yàn)閱纹瑱C(jī)是通過(guò)我們編寫(xiě)的程序可以實(shí)現(xiàn)高智能,高效率,以及高可靠性。</p><p>  2.3 主控電路及單片機(jī)的選擇 </p><p>  微型計(jì)算機(jī)有一個(gè)重要分支就是單片機(jī)微型計(jì)算機(jī)。而我們通常說(shuō)的單片機(jī)其實(shí)單片機(jī)微型計(jì)算機(jī)簡(jiǎn)稱(chēng),常常被人們用于控制領(lǐng)域,所以又叫做微控制器。</p><p>  通常,單片

33、機(jī)一般會(huì)由一塊集成電路芯片而構(gòu)成,但是其內(nèi)部卻含有一般計(jì)算機(jī)的基本功能部件。例如:I/O接口電路、存儲(chǔ)器和中央處理器等[8]。所以,一般的單片機(jī)只需要外部設(shè)備和適當(dāng)?shù)能浖嘟Y(jié)合,就能成為一個(gè)單片機(jī)控制系統(tǒng)。</p><p>  隨著單片機(jī)經(jīng)過(guò)1、2、3、4代的發(fā)展,單片機(jī)正朝著多功能、高性能、低電壓、低功耗、低價(jià)格、大存儲(chǔ)容量、強(qiáng)I/O功能及較好的結(jié)構(gòu)兼容性方向發(fā)展。其發(fā)展趨勢(shì)不外乎以下幾個(gè)方面:</p&g

34、t;<p><b>  1、多功能</b></p><p>  單片機(jī)中盡可能地把所需要的I/O口和存儲(chǔ)器都集成在一塊芯片上,使得單片機(jī)可以實(shí)現(xiàn)更多的功能。比如A/D、PWM、PCA(可編程計(jì)數(shù)器陣列)、WDT(監(jiān)視定時(shí)器---看門(mén)狗)、高速I(mǎi)/O口及計(jì)數(shù)器的捕獲/比較邏輯等。</p><p>  有的單片機(jī)針對(duì)某一個(gè)應(yīng)用領(lǐng)域,集成了相關(guān)的控制設(shè)備,以減

35、少應(yīng)用系統(tǒng)的芯片數(shù)量。例如,有的芯片以51內(nèi)核為核心,集成了USB控制器、SMART CARD接口、MP3解碼器、CAN或者I*I*C總線控制器等,LED、LCD或VFD顯示驅(qū)動(dòng)器也開(kāi)始集成在8位單片機(jī)中。</p><p><b>  2、高效率和高性能</b></p><p>  為了提高執(zhí)行速度和執(zhí)行效率,單片機(jī)開(kāi)始使用RISC、流水線和DSP的設(shè)計(jì)技術(shù),使單片機(jī)

36、的性能有了明顯的提高,表現(xiàn)為:?jiǎn)纹瑱C(jī)的時(shí)鐘頻率得到提高;同樣頻率的單片機(jī)運(yùn)行效率也有了很大的提升;由于集成度的提高,單片機(jī)的尋址能力、片內(nèi)ROM(FLASH)和RAM的容量都突破了以往的數(shù)量和限制。</p><p>  由于系統(tǒng)資源和系統(tǒng)復(fù)雜程度的增加,開(kāi)始使用高級(jí)語(yǔ)言(如C語(yǔ)言)來(lái)開(kāi)發(fā)單片機(jī)的程序[9]。使用高級(jí)語(yǔ)言可以降低開(kāi)發(fā) 難度,縮短開(kāi)發(fā)周期,增強(qiáng)軟件的可讀性和可移植性,便于改進(jìn)和擴(kuò)充功能。</p&

37、gt;<p><b>  3、低電壓和低功耗</b></p><p>  單片機(jī)的嵌入式應(yīng)用決定了低電壓和低功耗的特性十分重要。由于CMOS等工藝的大量采用,很多單片機(jī)可以在更低的電壓下工作(1.2V或0.9V),功耗已經(jīng)降低到uA級(jí)。這些特性使得單片機(jī)系統(tǒng)可以在更小電源的支持下工作更長(zhǎng)的時(shí)間。</p><p><b>  4、低價(jià)格</

38、b></p><p>  單片機(jī)應(yīng)用面廣,使用數(shù)量大,帶來(lái)的直接好處就是成本的降低。目前世界各大公司為了提高競(jìng)爭(zhēng)力,在提高單片機(jī)性能的同時(shí),十分注意降低其產(chǎn)品的價(jià)格。</p><p>  下面大致介紹一下單片機(jī)的主要應(yīng)用領(lǐng)域和特點(diǎn)。</p><p><b> ?。?)家用電器領(lǐng)域</b></p><p>  用單片

39、機(jī)控制系統(tǒng)取代傳統(tǒng)的模擬和數(shù)字控制電路,使家用電器(如洗衣機(jī)、空調(diào)、冰箱、微波爐、和電視機(jī)等)功能更完善,更加智能化和易于使用。</p><p> ?。?)辦公自動(dòng)化領(lǐng)域</p><p>  單片機(jī)作為嵌入式系統(tǒng)廣泛應(yīng)用于現(xiàn)代辦公設(shè)備,如計(jì)算機(jī)的鍵盤(pán)、磁盤(pán)驅(qū)動(dòng)、打印機(jī)、復(fù)印機(jī)、電話機(jī)和傳真機(jī)等。</p><p><b> ?。?)商業(yè)應(yīng)用領(lǐng)域</b&

40、gt;</p><p>  商業(yè)應(yīng)用系統(tǒng)部分與家用和辦公應(yīng)用系統(tǒng)相似,但更加注重設(shè)備的穩(wěn)定性、可靠性和安全性。商用系統(tǒng)中廣泛使用的電子計(jì)量?jī)x器、收款機(jī)、條形碼閱讀器、安全監(jiān)測(cè)系統(tǒng)、空氣調(diào)節(jié)系統(tǒng)和冷凍保鮮系統(tǒng)等,都采用了單片機(jī)構(gòu)成的專(zhuān)用系統(tǒng)。與通用計(jì)算機(jī)相比,這些系統(tǒng)由于比較封閉,可以更有效地防止病毒和電磁干擾等,可靠性更高。</p><p><b>  (4)工業(yè)自動(dòng)化</

41、b></p><p>  在工業(yè)控制和機(jī)電一體化控制系統(tǒng)中,除了采用工控計(jì)算機(jī)外,很多都是以單片機(jī)為核心的單片機(jī)和多機(jī)系統(tǒng)。</p><p> ?。?)智能儀表與集成智能傳感器</p><p>  目前在各種電氣測(cè)量?jī)x表中普遍采用了單片機(jī)應(yīng)用系統(tǒng)來(lái)代替?zhèn)鹘y(tǒng)的測(cè)量系統(tǒng),使得測(cè)量系統(tǒng)具有存儲(chǔ)、數(shù)據(jù)處理、查詢(xún)及聯(lián)網(wǎng)等智能功能。將單片機(jī)和傳感器相結(jié)合,可以構(gòu)成新一代的

42、智能傳感器。它將傳感器變換后的物理量作進(jìn)一步的變化和處理,使其成為數(shù)字信號(hào),可以遠(yuǎn)距離傳輸并與計(jì)算機(jī)接口。</p><p> ?。?)現(xiàn)代交通與航空航天領(lǐng)域</p><p>  通常應(yīng)用于電子綜合顯示系統(tǒng)、動(dòng)力監(jiān)控系統(tǒng)、自動(dòng)駕駛系統(tǒng)、通信系統(tǒng)以及運(yùn)行監(jiān)視系統(tǒng)等。這些領(lǐng)域?qū)w積、功耗、穩(wěn)定性和實(shí)時(shí)性的要求往往比商用系統(tǒng)還要高,因此采用單片機(jī)系統(tǒng)更加重要。</p><p&g

43、t;  目前,我國(guó)生產(chǎn)很多型號(hào)的單片機(jī),在此,我們采用型號(hào)為STC89C51RC的單片機(jī)。因?yàn)椋篠TC89C51RC是一個(gè)低電壓,高性能單片機(jī),與其他單片機(jī)不同的是STC系列單片機(jī)在,低功耗,可靠性,抗干擾方面做的非常不錯(cuò)。下面介紹一下STC89C51RC內(nèi)部資源及特點(diǎn)</p><p>  STC89C51RC系列單片機(jī)是兼容8051內(nèi)核的單片機(jī),是低功耗、高速度的新一代8051單片機(jī),其6時(shí)鐘/機(jī)器周期和12/

44、時(shí)鐘機(jī)器周期可以被人們反復(fù)進(jìn)行設(shè)置和利用。 </p><p><b>  特點(diǎn):</b></p><p>  增強(qiáng)型6 時(shí)鐘/機(jī)器周期,12時(shí)鐘/機(jī)器周期;</p><p>  工作電壓:5.5V - 3.4V(5V 單片機(jī)) / 3.8V - 2.0V(3V 單片機(jī));</p><p>  3. STC89C51RC單

45、片機(jī)的頻率范圍:0-40MHz,相當(dāng)于普通8051單片機(jī)的0~80MHz.實(shí)際工作頻率最高可達(dá)48MHz;</p><p>  4. 用戶(hù)的應(yīng)用程序一般需要空間4K字節(jié);</p><p>  5. 片上集成 512 字節(jié) RAM;</p><p>  6. 通用I/O 口(32/36 個(gè)),復(fù)位后為: P1/P2/P3/P4 是準(zhǔn)雙向口/ 弱上拉(一般的8051單片

46、機(jī)的傳統(tǒng)I/O 口)P0 口則是開(kāi)漏輸出,而用作總線擴(kuò)展用時(shí),不需要加上拉電阻,當(dāng)作為I/O 口用時(shí),則需加上拉電阻;</p><p>  7 .IAP是應(yīng)用編程,ISP是在系統(tǒng)編程,不需專(zhuān)用的編程器;</p><p>  8. EEPROM 功能;</p><p><b>  9. 看門(mén)狗;</b></p><p> 

47、 10. STC89C51RC單片機(jī)的內(nèi)部集成了MAX810專(zhuān)用復(fù)位的電路(D 版本才有),一般當(dāng)外部的晶體在20M以下的時(shí)候可省外部復(fù)位的電路;</p><p>  11. STC89C51RC單片機(jī)一共有3 個(gè)16 位定時(shí)器/ 計(jì)數(shù)器;</p><p>  12. STC89C51RC單片機(jī)外部一有2路中斷,低電平觸發(fā)中斷和下降沿中斷,而Power Down 模式可由外部中斷低電平觸發(fā)

48、中斷方式喚醒;</p><p>  13. 通用異步串行口(UART);</p><p>  14.工作溫度范圍: 0 - 75℃ / -40 - +85℃;</p><p>  15.封裝: PDIP-40,PLCC-44,PQFP-44。</p><p><b>  2.4 時(shí)鐘電路</b></p>&

49、lt;p>  系統(tǒng)顯示的時(shí)間信息要達(dá)到高精度要求,采用單片機(jī)內(nèi)部的定時(shí)器往往是不夠的。所以此次擴(kuò)展了一塊時(shí)鐘芯片作為時(shí)間源[10]。作為數(shù)字鐘的標(biāo)準(zhǔn)時(shí)間源,低功耗和高精度是選擇時(shí)鐘IC最關(guān)鍵的兩個(gè)因素,此次選用美國(guó)達(dá)拉斯公司推出的高性能低功耗的實(shí)時(shí)時(shí)鐘芯片DS1302[11]。結(jié)合合理的電路設(shè)計(jì),可以實(shí)現(xiàn)不間斷時(shí)鐘,即使斷電也能保證時(shí)間正確的走時(shí)。</p><p><b>  2.5溫度采集單元&

50、lt;/b></p><p>  環(huán)境溫度是影響人們生活最重要的因素,一般大多數(shù)數(shù)字鐘都只有顯示時(shí)間功能,這里我們擴(kuò)展了溫度顯示功能,溫度傳感器采用達(dá)拉斯的單線式數(shù)字溫度傳感器DS18B20,這樣省去了常規(guī)的模擬溫度傳感器AD采樣等相關(guān)電路[12]。</p><p><b>  2.6顯示單元</b></p><p>  數(shù)字鐘的主要目的

51、就是將數(shù)據(jù)時(shí)間信息和溫度信息直觀的顯示出來(lái),此次使用的是LCD1602作為顯示終端。</p><p><b>  2.7電源處理單元</b></p><p>  由于硬件電路采用單片機(jī)實(shí)驗(yàn)板,電源來(lái)自于電腦USB取電,所以基本上不用對(duì)電源進(jìn)行處理。</p><p>  3多功能數(shù)字鐘的硬件設(shè)計(jì)</p><p>  3.1

52、單片機(jī)最小系統(tǒng)設(shè)計(jì)</p><p>  單片機(jī)最小系統(tǒng)主要以STC89C51RC單片機(jī)作為核心,再附帶一些使單片機(jī)能夠運(yùn)行的最小資源,主要包括時(shí)鐘電路、復(fù)位電路和擴(kuò)展接口電路等部分,其結(jié)構(gòu)如下圖所示:</p><p>  圖3-1單片機(jī)最小系統(tǒng)原理圖</p><p><b>  主控單元電路如下:</b></p><p>

53、;  圖3-2單片機(jī)最小系統(tǒng)</p><p>  3.1.1系統(tǒng)時(shí)鐘電路</p><p>  如圖3-2所示,Y1為晶體振蕩器,提供單片機(jī)工作所需要的時(shí)鐘,由于實(shí)驗(yàn)板可能用到串口通信,為了保證波特率的準(zhǔn)確性我們采用11.0592M晶振,當(dāng)單片機(jī)串口工作在方式1的時(shí)候,假設(shè)需要設(shè)置9600波特率,波特率=fosc/(32×(65536-RCAP2H,RCAP2L)),晶振頻率是11

54、.0592×106 HZ,代入運(yùn)算得RCAP2H=0xff,RCAP2L=0xdc,假設(shè)使用12×106 HZ晶振, RCAP2H、RCAP2L均得不到一個(gè)整數(shù),所以當(dāng)使用串口時(shí),晶振頻率對(duì)通信誤差起著決定性作用,誤差太大容易造成傳輸誤差、誤碼。電路中C7和C8起到幫助晶振起振的作用。</p><p><b>  3.1.2復(fù)位電路</b></p><

55、p>  在單片機(jī)系統(tǒng)中,一般需要一個(gè)硬件復(fù)位電路,用于用戶(hù)的手動(dòng)復(fù)位而51單片機(jī)是高電平復(fù)位有效,常用的復(fù)位電路由一個(gè)電阻、一個(gè)電容,其原理圖如上圖所示,RST按鍵是單片機(jī)的手動(dòng)復(fù)位,其中R1的作用是限流。上電復(fù)位,R2和C7組成單片機(jī)的上電復(fù)位電路,當(dāng)給系統(tǒng)上電時(shí),由于電容兩端電壓不能突變,所以C7的正極=VCC,負(fù)極也=VCC,電容開(kāi)始充電,充電電流接近無(wú)窮大,電阻上的電壓≈VCC,單片機(jī)即復(fù)位,當(dāng)單片機(jī)運(yùn)行時(shí)單片機(jī)9腳復(fù)位引

56、腳是低電平,因?yàn)殡娙荻艘呀?jīng)充滿(mǎn)了電,充電電流≈0,電阻上基本上沒(méi)有壓降,單片機(jī)不會(huì)復(fù)位。此時(shí)需要手動(dòng)復(fù)位即要把9腳電平拉高,按鍵S1按下去即可把9腳拉到VCC,但是C7上充滿(mǎn)了VCC的電荷,如果沒(méi)有R1,相當(dāng)于將C7短路,可能造成拉弧現(xiàn)象,影響單片機(jī)正常復(fù)位,同時(shí)火花也會(huì)時(shí)按鍵彈片發(fā)熱燒黑,時(shí)間久了便會(huì)出現(xiàn)接觸不良。電源使用5V直流電源,電源部分后面會(huì)具體介紹,RP1為8位的10K排阻,給P0口提供上拉,因?yàn)镻0口是單片機(jī)的數(shù)據(jù)總線地址

57、總線復(fù)用口,所以是集電極開(kāi)路結(jié)構(gòu),這里是作為IO口使用,所以需要加上拉電阻。</p><p>  3.2時(shí)鐘電路 </p><p>  此次設(shè)計(jì)選用的DS1302時(shí)鐘芯片具有高性能、低功耗等性能。附加31字節(jié)靜態(tài)RAM,采用的是CPU與SPI三線接口同步通信,而且可使用突發(fā)方式一次傳送RAM數(shù)據(jù)和多個(gè)字節(jié)的時(shí)鐘信號(hào)。此實(shí)時(shí)時(shí)鐘可以提供年、月、星期、日、時(shí)、分、秒,并且當(dāng)遇到一個(gè)小月時(shí)

58、可以與31天時(shí)進(jìn)行自動(dòng)調(diào)整,并且具有閏年的補(bǔ)償功能。其時(shí)鐘的工作電壓范圍在2.5~5.5V。采用的是雙電源供電(備用電源和主電源),而備用電源的充電方式我們可以進(jìn)行設(shè)置。DS1302時(shí)鐘芯片的外部引腳分配如圖3-3所示及內(nèi)部結(jié)構(gòu)如圖3-4所示。</p><p>  圖3-3 DS1302引腳圖</p><p>  圖3-4 DS1302內(nèi)部結(jié)構(gòu)</p><p>

59、 ?。?)DS1302各引腳的功能: </p><p>  Vcc1:主要電源;Vcc2:備用電源。當(dāng)Vcc2>Vcc1+0.2V時(shí),由Vcc2會(huì)向DS1302進(jìn)行供電,而當(dāng)Vcc2< Vcc1時(shí),由Vcc1則向DS1302進(jìn)行供電。 </p><p>  SCLK:串行時(shí)鐘,輸入,控制數(shù)據(jù)的輸入與輸出; </p><p>  I/O:是三線接口時(shí)的雙向

60、數(shù)據(jù)線; </p><p>  CE:輸入信號(hào),在寫(xiě)和讀的數(shù)據(jù)期間,必須為高。而這個(gè)引腳有兩個(gè)重要作用:第一,CE開(kāi)始控制字訪問(wèn)移位寄存器的控制邏輯;其次,CE提供結(jié)束單字節(jié)多字節(jié)或單字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā?</p><p>  (2)DS1302的幾組寄存器: </p><p>  DS1302有關(guān)的日歷、時(shí)間寄存器共有12個(gè),其中有7個(gè)寄存器(讀時(shí)81h~8Dh,

61、寫(xiě)時(shí)80h~8Ch),存放的數(shù)據(jù)格式為BCD碼形式,如圖3-5所示。</p><p>  圖3-5 DS1302有關(guān)日歷、時(shí)間的寄存器</p><p><b> ?。?)電路結(jié)構(gòu)</b></p><p>  圖3-6時(shí)鐘電路電路原理圖</p><p>  電路中VCC是主電源,BT0是3V紐扣電池,當(dāng)主電源斷電后,紐扣

62、電池自動(dòng)切入給時(shí)鐘IC,保證時(shí)間不停的運(yùn)轉(zhuǎn),第二次上電時(shí)只要單片機(jī)讀取時(shí)鐘IC的時(shí)間數(shù)據(jù)即可顯示當(dāng)前的時(shí)間。</p><p>  3.3溫度采集單元 </p><p>  溫度傳感器主要用以采集環(huán)境當(dāng)前溫度,方便簡(jiǎn)潔的設(shè)計(jì)對(duì)于系統(tǒng)軟件結(jié)構(gòu)也是非常有利的,此次選用極具代表性的數(shù)字溫度傳感器DS18B20具有體積小、適用電壓范圍更大、經(jīng)濟(jì)實(shí)惠等有點(diǎn)。而DS18B20更是具有“一線總線”的功能

63、?!耙痪€總線”具有經(jīng)濟(jì)并且獨(dú)特等特點(diǎn),讓用戶(hù)可以很容易的組建起傳感器網(wǎng)絡(luò),為新的測(cè)量系統(tǒng)的構(gòu)建引入一種全新的概念。DS18B20測(cè)量的溫度為 -55℃~+125℃,當(dāng)測(cè)量溫度在-10~+85℃范圍時(shí),其精度在±0.5℃。而現(xiàn)場(chǎng)溫度會(huì)以“一線總線”的數(shù)字方式傳輸,從而提高了系統(tǒng)的抗干擾性。常常用在比較環(huán)境惡劣的現(xiàn)場(chǎng)溫度測(cè)量。比如:環(huán)境控制和測(cè)溫類(lèi)消費(fèi)電子產(chǎn)品等。相比之前的產(chǎn)品,新的產(chǎn)品可以在3~5.5V的電壓范圍內(nèi)正常工作,而系

64、統(tǒng)設(shè)計(jì)更靈活、方便。并且價(jià)格低廉,體積更小。 DS18B20可以根據(jù)程序的設(shè)定使其分辨率在9~12位,精確度在±0.5℃。并且能在更小的封裝里面,電壓范圍更寬。當(dāng)分辨率進(jìn)行設(shè)定,以及用戶(hù)設(shè)定的報(bào)警溫度存儲(chǔ)在EEPROM中之后,即使拔掉電源其依然可以保存。DS18B20不僅價(jià)格便宜而且性格卓越,所以在新一代產(chǎn)品用廣泛的應(yīng)用。</p><p>  DS18B20四個(gè)內(nèi)部結(jié)構(gòu)組成: TL配置寄存器、非揮發(fā)的溫

65、度報(bào)警觸發(fā)器TH、溫度傳感器和64位光刻ROM。DS18B20的管腳排列如圖3-7。</p><p>  圖3-7 溫度傳感器電路圖</p><p><b>  3.4顯示單元</b></p><p>  為了直觀的顯示當(dāng)前溫度和時(shí)間,系統(tǒng)安排了LCD1602作為顯示顯示終端。</p><p>  圖3-8 LCD160

66、2接口圖</p><p>  下面對(duì)LCD1602作簡(jiǎn)要介紹: </p><p>  (1)LCD1602顯示器的結(jié)構(gòu):LCD1602的RAM地址映射及標(biāo)準(zhǔn)字庫(kù)表,液晶顯示模塊式一個(gè)慢顯示器件,所以在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志位低電平,表示不忙,否則此指令失效。要顯示字符時(shí)要先輸入顯示字符地址,也就是告訴模塊要在哪里顯示字符。</p><p>  圖3-

67、10 LCD1602的內(nèi)部顯示地址</p><p>  (2)LCD1602的技術(shù)參數(shù)</p><p>  顯示容量:16×2個(gè)字符;</p><p>  芯片工作電壓范圍:4.5V-5V;</p><p>  工作電流:2mA(5V);</p><p>  字符尺寸:2.95×4.35(W

68、5;H)mm。</p><p><b>  (3)引腳功能說(shuō)明</b></p><p>  表3-1 LCD1602各管腳描述</p><p>  R/S是數(shù)據(jù)/命令的選擇端,高電平時(shí)為數(shù)據(jù)選擇狀態(tài),低電平是命令選擇狀態(tài);</p><p>  R/W是讀寫(xiě)狀態(tài)選擇端,為高電平時(shí)是讀?。睢?shù)據(jù))狀態(tài),低電平是寫(xiě)入(命令

69、、數(shù)據(jù))狀態(tài);EN端為使能端,只有當(dāng)EN腳為高電平時(shí),整個(gè)芯片才能正常運(yùn)作。</p><p><b>  基本操作時(shí)序:</b></p><p>  1 讀狀態(tài):輸入:RS=L,RW=H,EN=H,輸出:D0-D7=狀態(tài)字</p><p>  (一般為了簡(jiǎn)化硬件設(shè)計(jì),RW我們直接拉低,就是只寫(xiě),不讀狀態(tài),軟件方面作一定延時(shí)問(wèn)題都不大)</

70、p><p>  2 寫(xiě)指令:輸入:RS=L,RW=L, D0-D7=指令碼, EN=高脈沖,輸出:無(wú)</p><p>  3 讀數(shù)據(jù):輸入:RS=L,RW=H,EN=H,輸出:D0-D7=數(shù)據(jù)(一般比較少用)</p><p>  4 寫(xiě)數(shù)據(jù):輸入:RS=L,RW=L, D0-D7=數(shù)據(jù), EN=高脈沖,輸出:無(wú)初始化操作(復(fù)位過(guò)程)</p><p&g

71、t;<b>  3.5電源處理單元</b></p><p>  全系統(tǒng)工作在+5V且功耗較低,所以采用USB電源供電即可滿(mǎn)足。</p><p><b>  圖3-11電源模塊</b></p><p>  芯片前級(jí)對(duì)地分別連接10uF進(jìn)行電源濾波,電路中LED指示燈用以指示電路中通電情況。</p><p&

72、gt;<b>  4系統(tǒng)軟件實(shí)現(xiàn)</b></p><p>  單片機(jī)的軟件設(shè)計(jì)通常要考慮以下幾個(gè)方面的問(wèn)題:</p><p>  (1)根據(jù)軟件功能要求,將系統(tǒng)軟件劃分為若干個(gè)相對(duì)獨(dú)立的部分,設(shè)計(jì)出來(lái)的總體結(jié)構(gòu)必須合理,并且使用軟件開(kāi)發(fā)時(shí)需要清晰、簡(jiǎn)潔和流程合理;</p><p> ?。?)編輯是需要有的良好風(fēng)格,比如思考如何結(jié)構(gòu)化程序設(shè)計(jì)、實(shí)

73、行模塊化、子程序化。這樣不僅能修改、移植,而且方便與調(diào)試、鏈接;</p><p>  (3)努力建立一個(gè)正確的數(shù)學(xué)模型,通過(guò)實(shí)驗(yàn)的仿真,提高所需系統(tǒng)的功能和性能,并且要為其選擇合適的參數(shù);</p><p>  (4)學(xué)會(huì)并且能出繪制程序的流程圖;</p><p> ?。?)能合理的分配系統(tǒng)中的各個(gè)資源;</p><p> ?。?)為程序加入注

74、釋?zhuān)岣呖勺x性,實(shí)施軟件工程;</p><p>  (7)注意軟件的抗干擾設(shè)計(jì),提高系統(tǒng)的可靠性。</p><p>  為利于該設(shè)計(jì)的多功能的實(shí)現(xiàn)和更高的編程效率。采用c語(yǔ)言進(jìn)行編程。為實(shí)現(xiàn)編程結(jié)構(gòu)清晰,采用各個(gè)模塊單獨(dú)編程,最后實(shí)現(xiàn)各個(gè)模塊的綜合連接。主程序的框架由時(shí)間讀取子程序,溫度采集子程序,顯示子程序,對(duì)于溫度顯示則利用DS18B20的控制字要求嚴(yán)格編寫(xiě),DSl302的程序也按照芯

75、片的規(guī)格要求編寫(xiě)。</p><p>  4.1系統(tǒng)軟件實(shí)現(xiàn)流程圖</p><p>  這次的數(shù)字電子鐘設(shè)計(jì)用到很多子程序,它們的流程圖如下所示。</p><p>  主程序先開(kāi)始,然后對(duì)時(shí)鐘芯片DS1302進(jìn)行初始化,初始化完畢后進(jìn)入系統(tǒng)大循環(huán),大循環(huán)里有四個(gè)任務(wù)分別是1:顯示時(shí)間2、顯示溫度值,3、采集溫度,4、讀取時(shí)間數(shù)據(jù)。下面是主程序流程圖:</p>

76、;<p><b>  圖4-1總流程圖</b></p><p>  圖中顯示了本次多功能數(shù)字時(shí)鐘的基本功能和架構(gòu)。主要包括時(shí)間和溫度的讀取,時(shí)間和溫度的顯示。</p><p><b>  示例代碼如下:</b></p><p><b>  4.2 主程序</b></p>&

77、lt;p>  /****************主程序********************/</p><p>  void main(void)</p><p><b>  {</b></p><p>  uchar clk_time[7]={0x00,0x55,0x09,0x09,0x01,0x03,0x08}; </p>

78、;<p>  //秒,分,時(shí),日,月,星期,年寄存器初始值</p><p>  uchar temp=0x80; </p><p>  uchar i,j;</p><p>  lcd_init();</p><p>  write_1302(0x8e,0x00); //WP=0 寫(xiě)操

79、作</p><p>  for(i=0;i<7;i++)</p><p><b>  {</b></p><p>  write_1302(temp,clk_time[i]);</p><p><b>  temp+=2;</b></p><p><b>  

80、}</b></p><p>  write_1302(0x8e,0x80); //WP=1 寫(xiě)保護(hù)</p><p><b>  while(1)</b></p><p><b>  { </b></p><p>  for(j=0;j<5;j++)<

81、/p><p><b>  {</b></p><p>  Sdisplay_lcd(clk_time);</p><p>  Wdisplay_lcd(num);</p><p><b>  }</b></p><p>  temp=0x81;</p><p&

82、gt;  num=DS18b20_readTemp(); </p><p>  for(i=0;i<7;i++)</p><p><b>  {</b></p><p>  clk_time[i]=read_1302(temp);</p><p><b>  temp

83、+=2;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  主程序流程圖如圖4-1所示,單片機(jī)上電時(shí)IO的電平是不確定的,所以為了避免連接IO的外設(shè)出現(xiàn)不定狀態(tài),所以在

84、單片機(jī)上電開(kāi)始運(yùn)行的時(shí)候,需要對(duì)IO進(jìn)行初始化從而初始化外擴(kuò)設(shè)備,從而不至于產(chǎn)生誤動(dòng)作或亂碼顯示,如果用到其他模塊比如定時(shí)器、串口、中斷等片內(nèi)外設(shè),還需對(duì)片內(nèi)外設(shè)進(jìn)行初始化,本次沒(méi)有用到片內(nèi)外設(shè),所以不做說(shuō)明,外擴(kuò)設(shè)備初始化步驟如下。</p><p>  1)變量定義,clk_time數(shù)組時(shí)定義時(shí)間數(shù)組,從DS1302讀取出來(lái)的時(shí)間信息全部存在該數(shù)組,通過(guò)LCD1602顯示函數(shù)調(diào)用該數(shù)據(jù)即可顯示時(shí)間信息。定義數(shù)組

85、時(shí)候一般都需要賦初始值,此處我們初始值是2008年星期3,1月9日,9點(diǎn)55分00秒。 temp是DS1302初始地址(秒寄存器)。</p><p>  2)LCD初始化,為了顯示不出現(xiàn)亂碼,上電后需要對(duì)LCD1602的工作模式,顯示方式,進(jìn)行設(shè)置,同時(shí)進(jìn)行清屏,具體步驟在下面初始化函數(shù)有介紹。</p><p>  3)DS1302上電時(shí),內(nèi)部數(shù)據(jù)可能是亂的,為了走時(shí)時(shí)間準(zhǔn)確性,我需要把c

86、lk_time數(shù)組里面的時(shí)間信息寫(xiě)進(jìn)去,寫(xiě)進(jìn)去之前先打開(kāi)寫(xiě)保護(hù),寫(xiě)完之后關(guān)閉寫(xiě)保護(hù),從而實(shí)現(xiàn)走時(shí)過(guò)程中數(shù)據(jù)寄存器不被干擾出新亂碼。</p><p>  4)初始化完畢,進(jìn)入大循環(huán)。運(yùn)行初始化程序后大概花費(fèi)6.8ms,初始化完畢后進(jìn)入大循環(huán),大循環(huán)總共有4個(gè)任務(wù),四個(gè)任務(wù)依次運(yùn)行,1是時(shí)間顯示函數(shù);2是溫度顯示函數(shù);3是讀取溫度;4是讀取時(shí)間,具體下文有介紹,整個(gè)大循環(huán)的周期為305ms左右,相當(dāng)于1秒能夠采集3次

87、溫度和時(shí)間,完全符合實(shí)時(shí)應(yīng)用要求。下面分別對(duì)各個(gè)子程序進(jìn)行介紹:</p><p>  4.3 LCD初始化函數(shù)</p><p>  /**********LCD初始化**************/</p><p>  lcd_init()</p><p><b>  {</b></p><p>&

88、lt;b>  dula=0;</b></p><p><b>  wela=0;</b></p><p>  lcd_wcmd(0x38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口</p><p>  delay(1);//短延時(shí)</p><p>  lcd_wcmd(0x0c);//開(kāi)顯示,顯示

89、光標(biāo)</p><p>  delay(1); //短延時(shí)</p><p>  lcd_wcmd(0x06);//光標(biāo)設(shè)置</p><p>  delay(1); //短延時(shí)</p><p>  lcd_wcmd(0x01);//關(guān)顯示</p><p>  delay(1); //短延時(shí)</p><p

90、><b>  }</b></p><p>  LCD1602在工作之前需要對(duì)內(nèi)部寄存器進(jìn)行初始化操作,具體步驟如下:</p><p>  圖4-2 LCD1602初始化流程圖</p><p>  根據(jù)LCD1602初始化流程:</p><p>  首先寫(xiě)指令0x38,設(shè)置16*2,5*7點(diǎn)陣的顯示模式,8位數(shù)據(jù)模式

91、;</p><p>  因?yàn)楹瘮?shù)沒(méi)有對(duì)忙標(biāo)志進(jìn)行檢測(cè),所以每發(fā)送一條指令需要延時(shí)一下,等待內(nèi)部操作完畢,才可以響應(yīng)后面的指令delay(1);短延時(shí)函數(shù)大概軟件延時(shí)1ms,。</p><p>  寫(xiě)指令0x0c,打開(kāi)顯示并顯示光標(biāo)。</p><p>  寫(xiě)指令0x06,光標(biāo)設(shè)置,當(dāng)讀或?qū)懸粋€(gè)字符后,地址指針自動(dòng)加1,且光標(biāo)加1。</p><p&g

92、t;  寫(xiě)指令0x01,數(shù)據(jù)指針清零,所有顯示清零。至此LCD1602初始化完畢。</p><p>  4.4時(shí)鐘芯片初始化函數(shù)</p><p>  /******DS1302:寫(xiě)入數(shù)據(jù)(先送地址,再寫(xiě)數(shù)據(jù))*******/ </p><p>  void write_1302(unsigned char addr,unsigned char da)</p&g

93、t;<p><b>  {</b></p><p>  T_RST=0; //停止工作</p><p>  T_CLK=0; </p><p>  T_RST=1; //重新工作</p><p>  write_byte(addr);

94、 //寫(xiě)入地址</p><p>  write_byte(da);</p><p><b>  T_RST=0;</b></p><p><b>  T_CLK=1;</b></p><p><b>  }</b></p><p>  write_

95、1302(0x8e,0x00); //WP=0 寫(xiě)操作</p><p>  for(i=0;i<7;i++)</p><p><b>  {</b></p><p>  write_1302(temp,clk_time[i]);</p><p><b>  temp+=2;<

96、/b></p><p>  }//向DS1302寫(xiě)入秒,分,時(shí),日,月,星期,年寄存器初始值</p><p>  write_1302(0x8e,0x80); //WP=1 寫(xiě)保護(hù)</p><p>  DS1302初始化函數(shù),主要需要對(duì)內(nèi)部時(shí)間信息進(jìn)行賦值,數(shù)據(jù)寫(xiě)入如下:</p><p>  圖4-3 DS130

97、2數(shù)據(jù)寫(xiě)入流程</p><p>  上電后,對(duì)年月日星期時(shí)分秒地址進(jìn)行賦值,完畢后DS1302即開(kāi)始以設(shè)置的時(shí)間為起始值進(jìn)行走時(shí),主程序只要不斷讀取時(shí)間值就可以了。</p><p><b>  4.5時(shí)間顯示函數(shù)</b></p><p>  Sdisplay_lcd(clk_time);無(wú)返回值</p><p>  有參

98、數(shù)*poi=所要顯示的數(shù)據(jù)緩存地址指針</p><p>  Sdisplay_lcd(clk_time);參數(shù)傳遞過(guò)程中等價(jià)于poi=& clk_time[0];</p><p>  void Sdisplay_lcd(uchar *poi)</p><p><b>  {</b></p><p>  lcd_w

99、cmd(0xc7);</p><p><b>  delay(1);</b></p><p>  lcd_wdat(lcd_tb[*poi%16]);//顯示秒個(gè)位</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0xc6);</p>

100、<p><b>  delay(1);</b></p><p>  lcd_wdat(lcd_tb[*poi/16]);//顯示秒十位</p><p><b>  delay(1);</b></p><p><b>  poi++;</b></p><p> 

101、 lcd_wcmd(0xc5);</p><p><b>  delay(1);</b></p><p>  lcd_wdat(':');</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0xc4);</p><

102、p><b>  delay(1);</b></p><p>  lcd_wdat(lcd_tb[*poi%16]);//顯示分個(gè)位</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0xc3);</p><p><b>  delay

103、(1);</b></p><p>  lcd_wdat(lcd_tb[*poi/16]);//顯示分十位</p><p><b>  delay(1);</b></p><p><b>  poi++;</b></p><p>  lcd_wcmd(0xc2);</p>

104、<p><b>  delay(1);</b></p><p>  lcd_wdat(':');</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0xc1);</p><p><b>  delay(1);&

105、lt;/b></p><p>  lcd_wdat(lcd_tb[*poi%16]);//顯示時(shí)個(gè)位</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0xc0);</p><p><b>  delay(1);</b></p>

106、<p>  lcd_wdat(lcd_tb[*poi/16]);//顯示時(shí)十位</p><p><b>  delay(1);</b></p><p><b>  poi++;</b></p><p>  lcd_wcmd(0x89);</p><p><b>  dela

107、y(1);</b></p><p>  lcd_wdat(lcd_tb[*poi%16]);//顯示日個(gè)位</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0x88);</p><p><b>  delay(1);</b></p

108、><p>  lcd_wdat(lcd_tb[*poi/16]);//顯示日十位</p><p><b>  delay(1);</b></p><p><b>  poi++;</b></p><p>  lcd_wcmd(0x87);</p><p><b>

109、  delay(1);</b></p><p>  lcd_wdat('/');</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0x86);</p><p><b>  delay(1);</b></p>

110、<p>  lcd_wdat(lcd_tb[*poi%16]);//顯示月個(gè)位</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0x85);</p><p><b>  delay(1);</b></p><p>  lcd_wdat(

111、lcd_tb[*poi/16]);//顯示月十位</p><p><b>  delay(1);</b></p><p><b>  poi++;</b></p><p>  lcd_wcmd(0x8b);</p><p><b>  delay(1);</b></

112、p><p>  lcd_wdat('*');</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0x8c);</p><p><b>  delay(1);</b></p><p>  lcd_wdat(lcd_tb

113、[*poi%16]);//顯示星期位</p><p><b>  delay(1);</b></p><p><b>  poi++;</b></p><p>  lcd_wcmd(0x84);</p><p><b>  delay(1);</b></p>

114、<p>  lcd_wdat('/');</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0x83);</p><p><b>  delay(1);</b></p><p>  lcd_wdat(lcd_tb[*poi

115、%16]);//顯示年個(gè)位</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0x82);</p><p><b>  delay(1);</b></p><p>  lcd_wdat(lcd_tb[*poi/16]);//顯示年十位</

116、p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0x81);</p><p><b>  delay(1);</b></p><p>  lcd_wdat('0');//顯示年百位</p><p><b>

117、  delay(1);</b></p><p>  lcd_wcmd(0x80);</p><p><b>  delay(1);</b></p><p>  lcd_wdat('2');//顯示年千位</p><p><b>  delay(1);</b><

118、/p><p><b>  }</b></p><p>  時(shí)間顯示函數(shù)程序流程如下:</p><p>  圖4-4 時(shí)間顯示流程</p><p>  顯示之前需要對(duì)起始地址進(jìn)行設(shè)置,后面寫(xiě)的數(shù)據(jù)LCD1602的指針地址即會(huì)自動(dòng)加1,lcd_wcmd(0xc7);,=0x80+0x47;秒十位實(shí)際顯示位置應(yīng)該是0x47,秒個(gè)位

119、是0x48,具體位置見(jiàn)3-10,后面的數(shù)據(jù)顯示操作類(lèi)似,這里就不作冗敘。</p><p><b>  4.6溫度顯示函數(shù)</b></p><p>  void Wdisplay_lcd(uint k)</p><p><b>  {</b></p><p>  uchar a,b,c,x;</

120、p><p><b>  a=k/100;</b></p><p><b>  x=k%100;</b></p><p><b>  b=x/10;</b></p><p>  c=x%10;//溫度值處理</p><p>  lcd_wcmd(0xca);&

121、lt;/p><p><b>  delay(1);</b></p><p>  lcd_wdat(lcd_tb[a]);</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0xcb);</p><p><b>  delay(

122、1);</b></p><p>  lcd_wdat(lcd_tb[b]);</p><p><b>  delay(1);</b></p><p>  lcd_wcmd(0xcc);</p><p><b>  delay(1);</b></p><p>  l

溫馨提示

  • 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ù)僅提供信息存儲(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)論