2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩39頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科畢業(yè)設計(論文)</p><p><b>  ( 屆)</b></p><p>  論文題目 基于單片機的液晶顯示數(shù)字鐘設計</p><p>  (英文) Design on LCD Digital Clock Based on MCU</p><p>  所在學院 電子信息學院

2、 </p><p>  專業(yè)班級 電子信息工程 </p><p>  學生姓名 學號 </p><p>  指導教師 職稱 </p><p>  完成日期 年 月 日<

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

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

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ù)字電子鐘的應用- 1 -</p><p>  1.4本文的章節(jié)結構- 2 -</p><p>  2整體設計方案- 3 -</p><p>

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

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

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

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

15、25 -</p><p>  4.8讀取時間函數(shù)- 26 -</p><p>  4.9調(diào)試與分析- 28 -</p><p>  5總結- 29 -</p><p><b>  致謝- 30 -</b></p><p>  參考文獻- 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>  新的世紀,科技得到了迅速的發(fā)展,尤

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

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

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

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

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

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

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

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

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

26、位的。而其中INTEL的8031因為其性能十分穩(wěn)定并且功能卓越得到廣大的好評,使其大獲成功。此后人們在8031的基礎上人們發(fā)明了MCS51系列的單片機系統(tǒng)。并且這種單片機系統(tǒng)一直沿用至今。然后隨著人們對工業(yè)控制領域要求不斷的提高,單片機出現(xiàn)了16位功能,尤其但是條件原因,性價比不是很高沒有在工業(yè)得到廣泛的應用。然后隨著時代的發(fā)展,人們對消費電子產(chǎn)品需求量大增,在90年代之后,單片機的各項技術突飛猛進,得到了迅速的發(fā)展和提高。之后擁有32

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

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

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

30、算機。因為單片機不僅價格便宜,而且質(zhì)量輕,體積小。從而使人們在研究、學習、開發(fā)中提供了許多有利的條件。并且,通過學習和使用單片機,能使我們更加的了解和明白計算機原理和結構[7]。</p><p>  單片機內(nèi)部也有許多電腦功能類似的模塊。例如像電腦一樣的CPU,內(nèi)存,并行總線,跟硬盤作用大致相同的存儲器件。當然它們之間也有許多的不同之處,雖然單片機的這些部件性能和功能比普通的電腦弱很多,但是單片機的價格十分的低廉

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

32、一定能做成。然后我們使用單片機,其結果就會有天壤之別。只因為單片機是通過我們編寫的程序可以實現(xiàn)高智能,高效率,以及高可靠性。</p><p>  2.3 主控電路及單片機的選擇 </p><p>  微型計算機有一個重要分支就是單片機微型計算機。而我們通常說的單片機其實單片機微型計算機簡稱,常常被人們用于控制領域,所以又叫做微控制器。</p><p>  通常,單片

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

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

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

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

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

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

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

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

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

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

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

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

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

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

47、 10. STC89C51RC單片機的內(nèi)部集成了MAX810專用復位的電路(D 版本才有),一般當外部的晶體在20M以下的時候可省外部復位的電路;</p><p>  11. STC89C51RC單片機一共有3 個16 位定時器/ 計數(shù)器;</p><p>  12. STC89C51RC單片機外部一有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 時鐘電路</b></p>&

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

76、;<p><b>  圖4-1總流程圖</b></p><p>  圖中顯示了本次多功能數(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>  //秒,分,時,日,月,星期,年寄存器初始值</p><p>  uchar temp=0x80; </p><p>  uchar i,j;</p><p>  lcd_init();</p><p>  write_1302(0x8e,0x00); //WP=0 寫操

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 寫保護</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所示,單片機上電時IO的電平是不確定的,所以為了避免連接IO的外設出現(xiàn)不定狀態(tài),所以在

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

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

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

87、溫度和時間,完全符合實時應用要求。下面分別對各個子程序進行介紹:</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);//設置16*2顯示,5*7點陣,8位數(shù)據(jù)接口</p><p>  delay(1);//短延時</p><p>  lcd_wcmd(0x0c);//開顯示,顯示

89、光標</p><p>  delay(1); //短延時</p><p>  lcd_wcmd(0x06);//光標設置</p><p>  delay(1); //短延時</p><p>  lcd_wcmd(0x01);//關顯示</p><p>  delay(1); //短延時</p><p

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

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

92、t;  寫指令0x01,數(shù)據(jù)指針清零,所有顯示清零。至此LCD1602初始化完畢。</p><p>  4.4時鐘芯片初始化函數(shù)</p><p>  /******DS1302:寫入數(shù)據(jù)(先送地址,再寫數(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、 //寫入地址</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 寫操作</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寫入秒,分,時,日,月,星期,年寄存器初始值</p><p>  write_1302(0x8e,0x80); //WP=1 寫保護</p><p>  DS1302初始化函數(shù),主要需要對內(nèi)部時間信息進行賦值,數(shù)據(jù)寫入如下:</p><p>  圖4-3 DS130

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

98、數(shù)*poi=所要顯示的數(shù)據(jù)緩存地址指針</p><p>  Sdisplay_lcd(clk_time);參數(shù)傳遞過程中等價于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]);//顯示秒個位</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]);//顯示分個位</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]);//顯示時個位</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]);//顯示時十位</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]);//顯示日個位</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]);//顯示月個位</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]);//顯示年個位</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ù)程序流程如下:</p><p>  圖4-4 時間顯示流程</p><p>  顯示之前需要對起始地址進行設置,后面寫的數(shù)據(jù)LCD1602的指針地址即會自動加1,lcd_wcmd(0xc7);,=0x80+0x47;秒十位實際顯示位置應該是0x47,秒個位

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

評論

0/150

提交評論