電子鐘的設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩36頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  題 目:電子時(shí)鐘的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b>  摘 要</b></p><p>  電子時(shí)鐘主要是利用電子技術(shù)將時(shí)鐘電子化、數(shù)字化,擁有時(shí)鐘精確、體積 小、界面友好、可擴(kuò)展性能強(qiáng)等特點(diǎn),被廣泛應(yīng)用于生活和工作當(dāng)中。另外,在生活和工農(nóng)業(yè)生產(chǎn)中,也常常需要溫度,這就需要電子時(shí)鐘具有多功能性。</p><p>

2、  本設(shè)計(jì)主要為實(shí)現(xiàn)一款可正常顯示時(shí)鐘/日歷、測(cè)量環(huán)境溫度、帶有定時(shí)鬧鈴的多功能電子時(shí)鐘。</p><p>  本文對(duì)當(dāng)前電子鐘開發(fā)手段進(jìn)行了比較和分析,最終確定了采用單片機(jī)技術(shù)實(shí)現(xiàn)多功能電子時(shí)鐘。本設(shè)計(jì)應(yīng)用AT89C51芯片作為核心,7位LED數(shù)碼管顯示,使用DS1302實(shí)時(shí)時(shí)鐘日歷芯片完成時(shí)鐘/日歷的基本功能,同時(shí)利用DS18B20溫度傳感器測(cè)量環(huán)境溫度。這種實(shí)現(xiàn)方法的優(yōu)點(diǎn)是電路簡(jiǎn)單,性能可靠,實(shí)時(shí)性好,時(shí)間

3、和溫度精度高,操作簡(jiǎn)單,編程容易。</p><p>  該電子時(shí)鐘可以應(yīng)用于一般的生活和工作中,也可通過(guò)改裝,提高性能,增加新功能,從而給人們的生活和工作帶來(lái)更多的方便。</p><p>  關(guān)鍵詞:電子時(shí)鐘;多功能;AT89C51;時(shí)鐘日歷芯片;溫度傳感器</p><p><b>  Abstract</b></p><p

4、>  The electronic clock mainly uses the electronic technology make the clock computerization, the digitization, with the clock precision, small size, friendly interface, scalable performance and other characteristics,

5、 was widely used in life and work. Measuring temperature, in life, industry and agricultural production, so electronic clock need multi-function.</p><p>  The design for the main implementing a clock/calenda

6、r can be displayed normal, collecting personal ambient temperature, with the timing alarm of the multi-function electronic clock.</p><p>  Comparing and analysising the development technology of the electron

7、 clock, the design determines to use the MCU technology to realize the multi-functional electron clock. This design application AT89C51 as a core chips, 7 LED digital displaying, using DS1302 real-time clock chip to com

8、plete the basic function of the clock/calendar. At the same time the design use of DS18B20 temperature sensors to collect the environmental temperature. The method has the advantage of being simple circuit, relia</p&g

9、t;<p>  The electronic clock can be applied to the general living and working ,can also be modified to improve performance, add new functions, and brings more convenient to people’s life and work.</p><p

10、>  Key words: Electronic clock; Multi-function; AT89C51; DS1302; Temperature pickup 目 錄</p><p><b>  摘 要1</b></p><p>  Abstract2</p><p><b>  第一章 引 言5</b&

11、gt;</p><p>  1.1 多功能電子時(shí)鐘研究的背景和意義5</p><p>  1.2 電子時(shí)鐘的功能6</p><p>  第二章 電子時(shí)鐘設(shè)計(jì)方案分析7</p><p>  2.1 FPGA設(shè)計(jì)方案7</p><p>  2.2 NE555時(shí)基電路設(shè)計(jì)方案7</p><p&g

12、t;  2.3 單片機(jī)設(shè)計(jì)方案8</p><p>  第三章 基于單片機(jī)的電子時(shí)鐘硬件設(shè)計(jì)10</p><p>  3.1 主要IC芯片選擇10</p><p>  3.1.1 微處理器選擇10</p><p>  3.1.2 環(huán)境溫度傳感器選擇16</p><p>  3.2 電子時(shí)鐘硬件電路設(shè)計(jì)19&l

13、t;/p><p>  3.2.1 時(shí)鐘電路設(shè)計(jì)20</p><p>  3.2.2 環(huán)境溫度采集電路設(shè)計(jì)21</p><p>  3.2.3 顯示電路21</p><p>  3.2.4 按鍵電路設(shè)計(jì)23</p><p>  3.2.5 鬧鈴電路設(shè)計(jì)24</p><p>  3.2.6 復(fù)

14、位電路設(shè)計(jì)25</p><p>  第四章 電子時(shí)鐘軟件設(shè)計(jì)27</p><p>  4.1 主程序設(shè)計(jì)27</p><p>  4.2 子程序設(shè)計(jì)27</p><p>  4.2.1 實(shí)時(shí)時(shí)鐘日歷子程序設(shè)計(jì)27</p><p>  4.2.2 環(huán)境溫度采集子程序設(shè)計(jì)28</p><p&

15、gt;  4.2.3 顯示子程序設(shè)計(jì)31</p><p>  4.2.4 鍵盤掃描子程序31</p><p>  4.2.5 鬧鈴子程序設(shè)計(jì)31</p><p>  第五章 系統(tǒng)調(diào)試35</p><p>  5.1 硬件調(diào)試35</p><p>  5.1.1 單片機(jī)基礎(chǔ)電路調(diào)試35</p>

16、<p>  5.1.2 顯示電路調(diào)試37</p><p>  5.1.3 DS1302電路調(diào)試38</p><p>  5.1.4 按鍵電路調(diào)試39</p><p>  5.2 軟件調(diào)試39</p><p>  5.2.1 環(huán)境溫度采集子程序調(diào)試39</p><p>  5.2.2 鍵盤子程序調(diào)試

17、40</p><p><b>  結(jié) 論41</b></p><p><b>  參考文獻(xiàn)42</b></p><p><b>  致 謝43</b></p><p><b>  引 言</b></p><p>  時(shí)間是

18、人類生活必不可少的重要元素,如果沒(méi)有時(shí)間的概念,社會(huì)將不會(huì)有所發(fā)展和進(jìn)步。從古代的水漏、十二天干地支,到后來(lái)的機(jī)械鐘表以及當(dāng)今的石英鐘,都充分顯現(xiàn)出了時(shí)間的重要,同時(shí)也代表著科技的進(jìn)步。致力于計(jì)時(shí)器的研究和充分發(fā)揮時(shí)鐘的作用,將有著重要的意義。</p><p>  多功能電子時(shí)鐘研究的背景和意義</p><p>  20世紀(jì)末,電子技術(shù)獲得了飛速的發(fā)展。在其推動(dòng)下,現(xiàn)代電子產(chǎn)品幾乎滲透到了

19、社會(huì)的各個(gè)領(lǐng)域,有力的推動(dòng)和提高了社會(huì)生產(chǎn)力的發(fā)展與信息化程度,同時(shí)也使現(xiàn)代電子產(chǎn)品性能進(jìn)一步提升,產(chǎn)品更新?lián)Q代的節(jié)奏也越來(lái)越快。 時(shí)間對(duì)人們來(lái)說(shuō)總是那么寶貴,工作的忙碌性和繁雜容易使人忘記當(dāng)前的時(shí)間。然而遇到重大事情的時(shí)候,一旦忘記時(shí)間,就會(huì)給自己或他人造成很大麻煩。平時(shí)我們要求上班準(zhǔn)時(shí),約會(huì)或召開會(huì)議必然要提及時(shí)間;火車要準(zhǔn)點(diǎn)到達(dá),航班要準(zhǔn)點(diǎn)起飛;工業(yè)生產(chǎn)中,很多環(huán)節(jié)都需要用時(shí)間來(lái)確定工序替換時(shí)刻。所以說(shuō)能隨時(shí)準(zhǔn)確的知道時(shí)

20、間并利用時(shí)間,是我們生活和工作中必不可少的[1]。</p><p>  想知道時(shí)間,手表當(dāng)然是一個(gè)很好的選擇,但是,在忙碌當(dāng)中,我們還需要一個(gè)“助理” 及時(shí)的給我們提醒時(shí)間。所以,計(jì)時(shí)器最好能夠擁有一個(gè)定時(shí)系統(tǒng),隨時(shí)提醒容易忘記時(shí)間的人。 最早能夠定時(shí)、報(bào)時(shí)的時(shí)鐘屬于機(jī)械式鐘表,但這種時(shí)鐘受到機(jī)械結(jié)構(gòu)、動(dòng)力和體積的限制,在功能、性能以及造價(jià)上都沒(méi)辦法與電子時(shí)鐘相比。 電子鐘是采用電子電路實(shí)現(xiàn)對(duì)時(shí)、分、秒進(jìn)

21、行數(shù)字顯示的計(jì)時(shí)裝置,廣泛應(yīng)用于個(gè)人家庭,車站, 碼頭辦公室等公共場(chǎng)所,成為人們?nèi)粘I钪胁豢缮俚谋匦杵?。由于?shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字鐘的精度,遠(yuǎn)遠(yuǎn)超過(guò)老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的報(bào)時(shí)功能。諸如定時(shí)自動(dòng)報(bào)警、0按時(shí)自動(dòng)打鈴、定時(shí)廣播、自動(dòng)起閉路燈、定時(shí)開關(guān)烘箱、通斷動(dòng)力設(shè)備、甚至各種定時(shí)電氣的自動(dòng)啟用等,所有這些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘

22、及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。</p><p>  另外,溫度實(shí)時(shí)顯示系統(tǒng)應(yīng)用同樣越來(lái)越廣泛,比如空調(diào)遙控器上當(dāng)前室溫的顯示、熱水器溫度的顯示等等。醫(yī)藥衛(wèi)生、工農(nóng)業(yè)生產(chǎn)上也有很多場(chǎng)合需要測(cè)量環(huán)境溫度。</p><p>  如果能夠在電子時(shí)鐘上附加溫度采集功能,將使電子時(shí)鐘的應(yīng)用更加廣泛。</p><p><b>  電子時(shí)鐘的功能</b>&

23、lt;/p><p>  電子時(shí)鐘主要是利用電子技術(shù)將時(shí)鐘電子化、數(shù)字化,擁有時(shí)間精確、體積小、界面友好、可擴(kuò)展性能強(qiáng)等特點(diǎn),被廣泛應(yīng)用于生活和工作當(dāng)中。當(dāng)今市場(chǎng)上的電子時(shí)鐘品類繁多,外形小巧別致。也有體型較大的,諸如公共場(chǎng)所的大型電子報(bào)時(shí)器等。電子時(shí)鐘首先是數(shù)字化了的時(shí)間顯示或報(bào)時(shí)器,在此基礎(chǔ)上,人們可以根據(jù)不同場(chǎng)合的要求,在時(shí)鐘上加置其他功能,比如定時(shí)鬧鈴,萬(wàn)年歷,環(huán)境溫度、濕度檢測(cè),環(huán)境空氣質(zhì)量檢測(cè),USB擴(kuò)展口

24、功能等。</p><p>  本設(shè)計(jì)電子時(shí)鐘主要功能為:</p><p>  具有時(shí)間顯示和手動(dòng)校對(duì)功能,24小時(shí)制;</p><p>  具有年、月、日顯示和手動(dòng)校對(duì)功能;</p><p><b>  具有鬧鈴功能;</b></p><p><b>  具有貪睡功能;</b>

25、;</p><p>  具有環(huán)境溫度采集和顯示功能;</p><p>  掉電后無(wú)需重新設(shè)置時(shí)間和日期;</p><p>  采用交直流供電電源。交流供電為主,直流電源為后備輔助電源,并能自動(dòng)切換。</p><p>  電子時(shí)鐘設(shè)計(jì)方案分析</p><p>  電子鬧鐘既可以通過(guò)純硬件實(shí)現(xiàn),也可以通過(guò)軟硬件結(jié)合實(shí)現(xiàn),根

26、據(jù)電子時(shí)鐘里的核心部件——秒信號(hào)的產(chǎn)生原理,通常有以下三種形式:</p><p><b>  FPGA設(shè)計(jì)方案</b></p><p>  現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA),可編程邏輯器件的設(shè)計(jì)過(guò)程是利用EDA開發(fā)軟件和編程工具對(duì)器件進(jìn)行開發(fā)的過(guò)程。由于EDA技術(shù)擁有系統(tǒng)的模擬和仿真功能,可讀性、可重復(fù)性、可測(cè)性

27、非常好,所以利用EDA開發(fā)FPGA是目前比較流行的方式。當(dāng)然,有時(shí)根據(jù)需要,也會(huì)應(yīng)用MAX+plus開發(fā)集成環(huán)境進(jìn)行設(shè)計(jì)。</p><p>  正因?yàn)镕PGA在設(shè)計(jì)過(guò)程中方便、快捷,而且FPGA技術(shù)功能強(qiáng)大,能夠應(yīng)用其制作諸如基代碼發(fā)生器、數(shù)字頻率計(jì)、電子琴、電梯控制器、自動(dòng)售貨機(jī)控制系統(tǒng)、多功能波形發(fā)生器、步進(jìn)電機(jī)定位控制系統(tǒng)、電子時(shí)鐘等。</p><p>  應(yīng)用FPGA能夠?qū)r(shí)鐘設(shè)計(jì)

28、為為四種類型:全局時(shí)鐘、門控時(shí)鐘、多級(jí)邏輯時(shí)鐘和波動(dòng)式時(shí)鐘。多時(shí)鐘系統(tǒng)能夠包括上述四種時(shí)鐘類型的任意組合。</p><p>  NE555時(shí)基電路設(shè)計(jì)方案</p><p>  555定時(shí)器是一種數(shù)字與模擬混合型的集成電路,應(yīng)用廣泛。成本較低,外加電阻、電容等元件就可以構(gòu)成多諧振蕩器、單穩(wěn)電路、施密特觸發(fā)器等,常作為定時(shí)器廣泛應(yīng)用于儀器儀表、家用電器、電子測(cè)量及自動(dòng)控制等領(lǐng)域[5]。<

29、/p><p>  采用NE555時(shí)基電路或其他振蕩電路產(chǎn)生秒脈沖信號(hào),作為秒加法電路的時(shí)鐘信號(hào)或微處理器的外部中斷輸入信號(hào),可構(gòu)成電子鐘。由555構(gòu)成的秒脈沖發(fā)生器電路見圖2.1。輸出的脈沖信號(hào)V0的頻率F為:</p><p><b>  式(2.1)</b></p><p>  可通過(guò)調(diào)節(jié)式2.1中的3個(gè)參數(shù),使輸出V0的頻率為精確的1Hz。&l

30、t;/p><p>  圖2.1 基于555的秒脈沖發(fā)生器</p><p>  采用555定時(shí)器設(shè)計(jì)電子時(shí)鐘,成本低,容易實(shí)現(xiàn)。但是受芯片引腳數(shù)量和功能限制,不容易實(shí)現(xiàn)電子時(shí)鐘的多功能性。</p><p><b>  單片機(jī)設(shè)計(jì)方案</b></p><p>  單片機(jī)是微型機(jī)的一個(gè)主要分支,它在結(jié)構(gòu)上的最大特點(diǎn)使把CPU、存儲(chǔ)

31、器、定時(shí)器和多種輸入/輸出接口電路集成在一塊超大規(guī)模集成電路芯片上。就其組成和功能而言,一塊單片機(jī)芯片就是一臺(tái)計(jì)算機(jī)。</p><p>  單片機(jī)具有如下特點(diǎn):</p><p>  有優(yōu)異的性能價(jià)格比;</p><p>  集成度高、體積小、有很高的可靠性;</p><p><b>  控制功能強(qiáng);</b></p&

32、gt;<p>  低功耗、低電壓,便于生產(chǎn)便攜式產(chǎn)品;</p><p>  外部總線增加了I2C、SPI等串行總線方式,進(jìn)一步縮小了體積,簡(jiǎn)化了結(jié)構(gòu);</p><p>  單片機(jī)的系統(tǒng)擴(kuò)展、系統(tǒng)配置較典型、規(guī)范,容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng)。</p><p>  所以單片機(jī)的應(yīng)用非常廣泛,在智能儀表、機(jī)電一體化、實(shí)時(shí)控制、分布式多機(jī)系統(tǒng)以及人們的生活中均

33、有用武之地。單片機(jī)應(yīng)用的重要意義還在于,它從根本上改變了傳統(tǒng)的控制系統(tǒng)設(shè)計(jì)思路和設(shè)計(jì)方法。從前必須由模擬電路或數(shù)字電路實(shí)現(xiàn)的大部分功能,現(xiàn)在已能用單片機(jī)通過(guò)軟件方法來(lái)實(shí)現(xiàn)了。這種用軟件代替硬件的控制技術(shù),是對(duì)生產(chǎn)控制技術(shù)的一次革命。</p><p>  利用單片機(jī)的智能性,可方便地實(shí)現(xiàn)具有智能的電子鐘設(shè)計(jì)。單片機(jī)均具有時(shí)鐘振蕩系統(tǒng),利用系統(tǒng)時(shí)鐘借助微處理器的定時(shí)器/計(jì)數(shù)器可實(shí)現(xiàn)電子鐘功能。然而系統(tǒng)時(shí)鐘誤差較大,電

34、子鐘的積累誤差也可能較大,所以可以通過(guò)誤差修正軟件加以修正,或者在設(shè)計(jì)中加入高精度時(shí)鐘日歷芯片,以精確時(shí)間。另外很多功能不同的單片機(jī)是兼容的,這就更便于實(shí)現(xiàn)產(chǎn)品的多功能性。</p><p>  基于單片機(jī)的電子時(shí)鐘硬件設(shè)計(jì)</p><p>  在比較了第二章的三種實(shí)現(xiàn)方案之后,考慮單片機(jī)貨源充足、價(jià)格低廉,可軟硬件結(jié)合使用,能夠較方便的實(shí)現(xiàn)系統(tǒng)的多功能性,故采用單片機(jī)作為本設(shè)計(jì)的硬件基礎(chǔ)。

35、</p><p><b>  主要IC芯片選擇</b></p><p><b>  微處理器選擇</b></p><p>  目前在單片機(jī)系統(tǒng)中,應(yīng)用比較廣泛的微處理器芯片主要為8XC5X系列單片機(jī)。該系列單片機(jī)均采用標(biāo)準(zhǔn)MCS-51內(nèi)核,硬件資源相互兼容,品類齊全,功能完善,性能穩(wěn)定,體積小,價(jià)格低廉,貨源充足,調(diào)試和編

36、程方便,所以應(yīng)用極為廣泛。</p><p>  例如比較常用的AT89C2051單片機(jī),帶有2KB Flash可編程、可擦除只讀存儲(chǔ)器(E2PROM)的低壓、高性能8位CMOS微型計(jì)算機(jī)。擁有15條可編程I/O引腳,2個(gè)16位定時(shí)器/計(jì)數(shù)器,6個(gè)中斷源,可編程串行UART通道,并能直接驅(qū)動(dòng)LED輸出。</p><p>  AT89C51單片機(jī)是一款低功耗,低電壓,高性能CMOS 8位單片機(jī)

37、,片內(nèi)含4KB(可經(jīng)受1000次擦寫周期)的FLASH可編程可反復(fù)擦寫的只讀程序存儲(chǔ)器(EPROM),器件采用CMOS工藝和ATMEI公司的高密度、非易失性存儲(chǔ)器(NURAM)技術(shù)制造,其輸出引腳和指令系統(tǒng)都與MCS-51兼容。片內(nèi)的FLASH存儲(chǔ)器允許在系統(tǒng)內(nèi)可改編程序或用常規(guī)的非易失性存儲(chǔ)器編程器來(lái)編程。因此,AT89C51是一種功能強(qiáng),靈活性高且價(jià)格合理的單片機(jī),可方便的應(yīng)用在各個(gè)控制領(lǐng)域[6]。</p><p

38、>  AT89C51具有以下主要性能:</p><p>  4KB可改編程序Flash存儲(chǔ)器;</p><p>  全靜態(tài)工作:0——24Hz;</p><p>  128×8字節(jié)內(nèi)部RAM;</p><p>  32個(gè)外部雙向輸入/輸出(I/O)口;</p><p>  6個(gè)中斷優(yōu)先級(jí); 2個(gè)16位可

39、編程定時(shí)計(jì)數(shù)器;</p><p><b>  可編程串行通道;</b></p><p><b>  片內(nèi)時(shí)鐘振蕩器。</b></p><p>  此外,AT89C51是用靜態(tài)邏輯來(lái)設(shè)計(jì)的,其工作頻率可下降到0Hz,并提供兩種可用軟件來(lái)選擇的省電方式——空閑方式(Idle Mode)和掉電方式(Power Down Mode

40、)。在空閑方式中,CPU停止工作,而RAM、定時(shí)器/計(jì)數(shù)器、串行口和中斷系統(tǒng)都繼續(xù)工作。在掉電方式中,片內(nèi)振蕩器停止工作,由于時(shí)鐘被“凍結(jié)”,使一切功能都暫停,只保存片內(nèi)RAM中的內(nèi)容,直到下一次硬件復(fù)位為止[8]。</p><p>  圖3.1 AT89C51芯片PDIP封裝引腳圖</p><p>  AT89C51為適應(yīng)不同的產(chǎn)品需求,采用PDIP、TQFP、PLCC三種封裝形式,本系

41、統(tǒng)采用雙列直插PDIP封裝形式,如圖3.1。時(shí)鐘日歷芯片選擇</p><p><b>  環(huán)境溫度傳感器選擇</b></p><p>  在日常生活中和工農(nóng)業(yè)生產(chǎn)中常要用到溫度檢測(cè)及控制,傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻,一般用來(lái)測(cè)量中高溫,輸出的是電壓,將其轉(zhuǎn)換成對(duì)應(yīng)的二進(jìn)制溫度碼值,需要較多的硬件支持,硬件電路復(fù)雜,軟件調(diào)試較為復(fù)雜,制作成本高。</p>

42、<p>  另外,采集環(huán)境的溫度也可采用IC化的溫度傳感器。常用的此類溫度傳感器有AD590和DS18B20。</p><p>  AD590測(cè)量到不同溫度之后,將把應(yīng)溫度轉(zhuǎn)化為線性電流輸出,為1μA/K,正比于熱力學(xué)溫度。該傳感器寬量程,為-55~+150℃;精度高,激光校準(zhǔn)精度到±0.5℃;電源范圍寬:+4~+30V。AD590優(yōu)點(diǎn)很多,但是由于它只能將采集來(lái)的溫度轉(zhuǎn)化為電流輸出,所以

43、在實(shí)際應(yīng)用中,需要先將AD590輸出的電流轉(zhuǎn)化為電壓,再利用A/D轉(zhuǎn)換元件進(jìn)行模/數(shù)轉(zhuǎn)換,將模擬量轉(zhuǎn)化為數(shù)字量,最后送入單片機(jī)中[12]。</p><p>  與AD590不同的是,DS18B20數(shù)字溫度傳感器能直接將被測(cè)溫度轉(zhuǎn)化成串行數(shù)字信號(hào),以供單片機(jī)處理,既節(jié)省了硬件,又有效避免了模擬方式的干擾問(wèn)題。它還具有微型化、低功耗、高性能、等優(yōu)點(diǎn)。</p><p>  通過(guò)編程,DS18B2

44、0可以實(shí)現(xiàn)9~12位溫度讀數(shù),信息經(jīng)過(guò)單線接口送入DS18B20或從DS18B20送出,因此從單片機(jī)到DS18B20僅需要連接一條線。讀、寫和完成溫度變換所需的電源可由數(shù)據(jù)線本身提供,而無(wú)需外部電源。測(cè)量范圍為-55~+125℃,增量值為0.5℃。電源電壓范圍為+3.0~+5.5V。通過(guò)編程,用戶還以自行設(shè)定告警上下限溫度,告警尋找命令可以識(shí)別和尋址那些溫度超出預(yù)設(shè)告警界限的器件。</p><p>  電子時(shí)鐘

45、硬件電路設(shè)計(jì)</p><p>  電子鬧鐘至少要包括秒信號(hào)發(fā)生器、時(shí)間顯示電路、按鍵電路、供電電源、鬧鈴指示電路等幾部分。另外,本設(shè)計(jì)要求該電子鐘能夠采集環(huán)境溫度,所以還需要溫度采集芯片。硬件電路框圖參照?qǐng)D3.7。</p><p>  該系統(tǒng)使用AT89C51單片機(jī)作為核心,通過(guò)讀取時(shí)鐘日歷芯片DS1302和溫度傳感器DS18B20的數(shù)據(jù),完成此電子時(shí)鐘的主要功能——時(shí)鐘/日歷和環(huán)境溫度采

46、集。使用比較通用的8段共陰數(shù)碼管,做7位顯示,分別顯示時(shí)/年,分/月,秒/日,以及環(huán)境溫度值。</p><p>  圖3.7 多功能電子時(shí)鐘硬件系統(tǒng)框圖</p><p>  鍵盤是為了完成時(shí)鐘/日歷的校對(duì)和日歷/溫度的顯示功能。由于此電子時(shí)鐘要求具有鬧鈴功能,所以設(shè)計(jì)有鬧鈴電路,進(jìn)行聲音響鈴。</p><p>  整個(gè)電路使用了兩種電源,+5V電源將為整個(gè)電路供電。

47、而+3V電源僅作為DS1302的備用電源。當(dāng)+5V電源被切斷后,DS1302啟用+3V電源,可以保持DS1302繼續(xù)工作。當(dāng)+5V電源恢復(fù)供電,LED依舊顯示當(dāng)前時(shí)間,而不會(huì)因?yàn)閿嚯娛瓜到y(tǒng)復(fù)位到初始化時(shí)間,避免了重新校時(shí)的麻煩。</p><p>  具體電路圖請(qǐng)參見附錄C。</p><p><b>  時(shí)鐘電路設(shè)計(jì)</b></p><p>  

48、系統(tǒng)時(shí)鐘應(yīng)用了實(shí)時(shí)時(shí)鐘日歷芯片DS1302,其連接如圖3.8。該硬件電路設(shè)計(jì)簡(jiǎn)單,抗干擾能力強(qiáng)。</p><p>  如圖,AT89C51單片機(jī)P1.7直接接DS1302的RST端,上電后,AT89C51的P1.7腳自動(dòng)輸出高電平。P1.5作為串行時(shí)鐘接口,P1.6作為時(shí)鐘數(shù)據(jù)的I/O。DS1302采用雙電源供電,平時(shí)由+5V電源供電,當(dāng)+5V掉電之后,由圖中BT1(+3V備用電池)供電。</p>

49、<p>  特別需要注意X1和X2兩端連接的晶振Y1,該晶振頻率為32.768KHz。</p><p>  圖3.8 系統(tǒng)時(shí)鐘電路</p><p>  環(huán)境溫度采集電路設(shè)計(jì)</p><p>  本設(shè)計(jì)中使用DS18B20溫度傳感器進(jìn)行環(huán)境溫度采集和轉(zhuǎn)化。如圖3.9所示,AT89C51單片機(jī)的P3.3腳接DS18B20的I/O腳,作為數(shù)據(jù)的讀入和寫出口。電阻

50、R11作為DS18B20的I/O口的上拉電阻,在讀時(shí)隙結(jié)束時(shí),I/O引腳將通過(guò)此上拉電阻拉回至高電平[13]。</p><p>  圖3.9 系統(tǒng)環(huán)境溫度采集電路</p><p><b>  顯示電路</b></p><p>  就時(shí)鐘而言,通??刹捎肔CD顯示或LED顯示。對(duì)于一般的段式LCD,需要專門的驅(qū)動(dòng)電路,而且LCD顯示的可視性較差;

51、對(duì)于具有驅(qū)動(dòng)電路和微處理器接口的液晶顯示模塊(字符或點(diǎn)陣),一般采用并行接口,對(duì)微處理器的接口要求較高,占用資源多。另外,AT89C51本身沒(méi)有專門的液晶驅(qū)動(dòng)接口。LED結(jié)構(gòu)簡(jiǎn)單,體積小,功耗低,響應(yīng)速度快,易于匹配,壽命長(zhǎng),可靠性高,而且顯示亮度高,價(jià)格便宜,市場(chǎng)上也有專門的時(shí)鐘顯示組合LED。故本設(shè)計(jì)中應(yīng)用7位8段共陰LED實(shí)現(xiàn)顯示部分,顯示面板分布如圖3.6。</p><p>  LED顯示分動(dòng)態(tài)顯示和靜態(tài)

52、顯示:動(dòng)態(tài)顯示方式的硬件電路簡(jiǎn)單。但設(shè)計(jì)上如果處理不當(dāng),易造成亮度低,閃爍問(wèn)題。因此合理的設(shè)計(jì)既應(yīng)保證驅(qū)動(dòng)電路易實(shí)現(xiàn),又要保證圖像穩(wěn)定,無(wú)閃爍。動(dòng)態(tài)顯示采用多路復(fù)用技術(shù)的動(dòng)態(tài)掃描顯示方式,復(fù)用的程度不是無(wú)限增加的, 因?yàn)槔脛?dòng)態(tài)掃描顯示使我們看到一幅穩(wěn)定畫面的實(shí)質(zhì)是利用了人眼的暫留效應(yīng)和發(fā)光二極管發(fā)光時(shí)間的長(zhǎng)短,發(fā)光的亮度等因素。</p><p>  靜態(tài)顯示,是由微型計(jì)算機(jī)一次輸出顯示模型后,就能保持該顯示結(jié)果

53、,直到下次發(fā)送新的顯示模型為止。靜態(tài)顯示驅(qū)動(dòng)程序簡(jiǎn)單,且CPU占用率低,但每個(gè)LED數(shù)碼管需要一個(gè)鎖存器來(lái)鎖存每一個(gè)顯示位的筆段代碼,硬件開銷大,僅適合顯示位數(shù)較少的場(chǎng)合。為了在顯示部分節(jié)省單片機(jī)I/O口,故采用靜態(tài)顯示方式。電路圖參見圖3.10。</p><p>  74LS164是8位移位寄存器,應(yīng)用該芯片驅(qū)動(dòng)LED做顯示部分,其優(yōu)點(diǎn)在于連線簡(jiǎn)單,節(jié)省單片機(jī)I/O口,軟件編程容易。關(guān)于74LS164的具體編程

54、方法,請(qǐng)參見第四章4.2.5顯示子程序設(shè)計(jì)部分[14][15]。</p><p>  圖3.10 顯示面板LED分布圖 </p><p><b>  按鍵電路設(shè)計(jì)</b></p><p>  根據(jù)功能需要,本時(shí)鐘需要設(shè)置以下功能鍵:校對(duì)選擇鍵,加1操作鍵,減1操作鍵,顯示日期鍵,顯示溫度鍵,鬧鈴開關(guān)鍵。</p><p>

55、;  按照鍵盤與CPU的連接方式可分為獨(dú)立式鍵盤和矩陣式鍵盤。獨(dú)立式鍵盤是各個(gè)按鍵相互獨(dú)立,每個(gè)按鍵占用一個(gè)I/O口線,每根I/O口線上的按鍵不會(huì)影響其他I/O口上按鍵工作狀態(tài)。獨(dú)立式鍵盤電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根I/O口,在按鍵數(shù)量較多時(shí),I/O口線浪費(fèi)較大,且電路結(jié)構(gòu)復(fù)雜。矩陣式鍵盤適合按鍵較多時(shí)使用。由于本設(shè)計(jì)的電子鐘最多需要7個(gè)按鍵,若采用矩陣式鍵盤時(shí)會(huì)有按鍵浪費(fèi),故采用的是獨(dú)立式鍵盤。鍵盤電路如圖3.1

56、1。對(duì)于內(nèi)置了上拉電阻的I/O引腳來(lái)說(shuō),外接上拉電阻沒(méi)有意義[15][16]。如圖3.11。</p><p>  圖3.11 鍵盤電路</p><p>  其中K1、K2、K7為帶自鎖按鍵,每次按下后,其對(duì)應(yīng)的P2.7、P2.6、P2.1管腳接地,從高電平被拉至低電平。只有再次按下,按鍵彈出,與之連接的單片機(jī)管腳才會(huì)重新被拉回高電平。K3、K4、K5、K6鍵為自動(dòng)復(fù)位按鍵。每次按下后,會(huì)自

57、動(dòng)彈出。單片機(jī)管腳只有在按鍵按下時(shí)為低電平,按鍵彈出后重新恢復(fù)高電平。按鍵功能參見表3.8。</p><p>  表3.8 按鍵功能表</p><p><b>  按鍵操作說(shuō)明如下:</b></p><p>  K1鍵:該鍵為帶自鎖按鍵,在正常顯示時(shí)間狀態(tài)下,每次將按鍵按下, LED數(shù)碼管將顯示日期;再次按下,按鍵彈出,重新顯示時(shí)間。</

58、p><p>  K2鍵:該鍵為帶自鎖按鍵,在正常顯示時(shí)間狀態(tài)下,每次將按鍵按下,LED數(shù)碼管將顯示環(huán)境溫度;再次按下,按鍵彈出,重新顯示時(shí)間。</p><p>  K3鍵:該鍵為自動(dòng)復(fù)位鍵,在正常顯示時(shí)間狀態(tài)下,第一次按下后,開始校對(duì)小時(shí),以后每次按下都會(huì)分別進(jìn)入對(duì)分、秒、鬧鈴時(shí)、鬧鈴分、年、月、日的校對(duì)狀態(tài)。</p><p>  K4鍵:該鍵為自動(dòng)復(fù)位鍵,在校對(duì)狀態(tài)下

59、,每次按動(dòng)該鍵,都會(huì)使相應(yīng)校對(duì)位進(jìn)行加1操作。例如:校對(duì)小時(shí)狀態(tài),每按一下,小時(shí)位加1,當(dāng)加至小時(shí)最高值23時(shí),再按K4鍵,小時(shí)位回0。調(diào)分、秒、年、月、日與皆之相同,只是各位最高值不同。</p><p>  K5鍵:該鍵為自動(dòng)復(fù)位鍵,與K4鍵類似,不同之處是該鍵每次按下將使相應(yīng)校對(duì)位進(jìn)行減1操作。</p><p>  K6鍵:該鍵為自動(dòng)復(fù)位鍵,在校對(duì)狀態(tài)下,按下該鍵,從校對(duì)狀態(tài)返回時(shí)間顯

60、示狀態(tài);在響鈴狀態(tài)下,按下該鍵,鬧鈴進(jìn)入貪睡狀態(tài)。</p><p>  K7鍵:該鍵為帶自鎖按鍵,按下后鬧鈴開啟,彈出后鬧鈴關(guān)閉。</p><p><b>  鬧鈴電路設(shè)計(jì)</b></p><p>  鬧鈴音樂(lè)可以直接采用蜂鳴器鬧鈴,如當(dāng)前時(shí)刻與鬧鈴時(shí)間相同,單片機(jī)向蜂鳴器送出高電平,蜂鳴器發(fā)聲。采用蜂鳴器鬧鈴結(jié)構(gòu)簡(jiǎn)單,控制方便,但是發(fā)出的鬧鈴

61、聲音單一。也可以在編程的時(shí)候編寫一段音樂(lè)程序,待鬧鈴時(shí)間到時(shí),調(diào)用該音樂(lè)程序給揚(yáng)聲器,便響起音樂(lè)。不過(guò)該方法只能做一些簡(jiǎn)單音樂(lè),并且音樂(lè)程序會(huì)占用很多單片機(jī)存儲(chǔ)資源。</p><p>  購(gòu)置一塊音樂(lè)集成電路,加置在單片機(jī)和蜂鳴器之間,當(dāng)單片機(jī)連接鬧鈴電路的管腳送出高電平時(shí),音樂(lè)集成電路會(huì)給蜂鳴器特定脈沖,使蜂鳴器發(fā)聲。此類集成電路體積較小,使用方便,不足的是音樂(lè)簡(jiǎn)單、單一。</p><p&g

62、t;  鬧鈴的音樂(lè)不是本設(shè)計(jì)中的重點(diǎn),故采用最簡(jiǎn)單的方法,占用單片機(jī)一根I/O口P2.0, 中間用PNP型三極管S9012連接P2.0和蜂鳴器。當(dāng)P2.0引腳為低電平時(shí),S9012的發(fā)射極和集電極導(dǎo)通,使蜂鳴器發(fā)聲。當(dāng)響鈴標(biāo)志位為“1”時(shí),P2.0送一定頻率脈沖,使蜂鳴器U11發(fā)出聲音[16]。如圖3.12。</p><p>  圖3.12 鬧鈴電路</p><p><b>  

63、復(fù)位電路設(shè)計(jì)</b></p><p>  復(fù)位是單片機(jī)的初始化操作,以便使CPU和系統(tǒng)中其他部件都處于一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作。除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)單片機(jī)系統(tǒng)在運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),也可按復(fù)位鍵重新啟動(dòng)。</p><p>  復(fù)位后,PC內(nèi)容初始化為0000H,使單片機(jī)從0000H單元開始執(zhí)行程序。單片機(jī)復(fù)位后,除了PC之外,還對(duì)片

64、內(nèi)的特殊功能寄存器有影響,它們的復(fù)位狀態(tài)如表3.9所示。單片機(jī)復(fù)位后不影響內(nèi)部RAM的狀態(tài)[17]。89C51單片機(jī)復(fù)位信號(hào)的輸入端是RST引腳,高電平有效。其有效時(shí)間持續(xù)24個(gè)時(shí)鐘周期(2個(gè)機(jī)器周期)以上。</p><p>  RST端的外部復(fù)位電路有兩種操作方式:上電自動(dòng)復(fù)位和按鍵手動(dòng)復(fù)位。</p><p>  上電自動(dòng)復(fù)位是利用電容儲(chǔ)電來(lái)實(shí)現(xiàn)的,如圖3.13(a)所示。上電瞬間,RC

65、電路充電,RST端出現(xiàn)正脈沖,隨著充電電流的減少,RST的電位逐漸下降。按鍵手動(dòng)復(fù)位有電平方式和脈沖方式兩種。按鍵電平復(fù)位是相當(dāng)于RST端通過(guò)電阻接高電平,如圖3.13(b)所示;按鍵脈沖復(fù)位,利用RC微分電路產(chǎn)生正脈沖,如圖3.13(c)所示[12]。</p><p>  出于應(yīng)用方便,本設(shè)計(jì)采用按鍵電平復(fù)位電路。實(shí)際電路請(qǐng)參見附錄C,復(fù)位按鍵為K8。</p><p>  表3.9 單片

66、機(jī)寄存器的復(fù)位狀態(tài)表</p><p>  圖3.13 上電復(fù)位和按鍵復(fù)位電路</p><p><b>  電子時(shí)鐘軟件設(shè)計(jì)</b></p><p>  C51單片機(jī)可以應(yīng)用匯編語(yǔ)言和C語(yǔ)言進(jìn)行編程。,匯編語(yǔ)言與機(jī)器指令一一對(duì)應(yīng)所以用匯編語(yǔ)言編寫的程序在單片機(jī)里運(yùn)行起來(lái)效率較高。C語(yǔ)言程序可讀性高,更便于理解。</p><p&

67、gt;  本設(shè)計(jì)使用C語(yǔ)言編程。</p><p><b>  主程序設(shè)計(jì)</b></p><p>  第一次上電,系統(tǒng)先進(jìn)行初始化, LED顯示初始時(shí)間“14:28:00”,并開始走時(shí)。初始日期為2008年5月12日,此刻若按K1鍵,LED顯示“080512”。</p><p>  單片機(jī)依次開始調(diào)用鍵盤掃描子程序、DS1302子程序、DS18

68、B20子程序、鬧鈴子程序,經(jīng)過(guò)延時(shí),返回程序開頭循環(huán)運(yùn)行。</p><p>  主程序流程圖如圖4.1。</p><p>  圖4.1 多功能電子鐘主程序流程圖</p><p><b>  子程序設(shè)計(jì)</b></p><p>  實(shí)時(shí)時(shí)鐘日歷子程序設(shè)計(jì)</p><p>  該程序主要實(shí)現(xiàn)對(duì)DS13

69、02寫保護(hù)、充電,對(duì)年、月、日、時(shí)、分、秒等寄存器的讀寫操作。在讀寫操作子程序中都執(zhí)行了關(guān)中斷指令,因?yàn)樵诖型ㄐ艜r(shí)對(duì)時(shí)序要求比較高,而且在此是用I/O口軟件模擬串行時(shí)鐘脈沖,所以在通信過(guò)程中最好保證傳輸?shù)倪B續(xù)性,不要允許中斷。其流程圖如圖4.2。</p><p>  圖4.2 實(shí)時(shí)時(shí)鐘日歷子程序流程圖</p><p>  DS1302每次上電時(shí)自動(dòng)處于暫停狀態(tài),必須把秒寄存器的位7置位0

70、,時(shí)鐘才開始計(jì)時(shí)。如果DS1302一直沒(méi)有掉電,則不存在此問(wèn)題。</p><p>  在進(jìn)行寫操作時(shí),需要先解除寫保護(hù)寄存器的“禁止”狀態(tài)。當(dāng)用多字節(jié)模式進(jìn)行操作時(shí),必須寫夠8字節(jié)[18]。</p><p>  環(huán)境溫度采集子程序設(shè)計(jì)</p><p>  DS18B20是1—wire單線器件,它在一根數(shù)據(jù)線上實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,這就需要一定的協(xié)議來(lái)對(duì)讀寫數(shù)據(jù)提出嚴(yán)格

71、的時(shí)序要求,而AT89C51單片機(jī)并不支持單線傳輸。因此,必須采用軟件的方法來(lái)模擬單線的協(xié)議時(shí)序。</p><p>  主機(jī)操作單線器件DS18B20必須遵循下面的順序。</p><p><b>  初始化</b></p><p>  單線總線上的所有操作均從初始化開始。初始化過(guò)程如下:主機(jī)通過(guò)拉低單線480μs以上,產(chǎn)生復(fù)位脈沖,然后釋放該線

72、,進(jìn)入RX接收模式。主機(jī)釋放總線時(shí),會(huì)產(chǎn)生一個(gè)上升沿。單線器件DS18B20檢測(cè)到該上升沿后,延時(shí)15~60μs,通過(guò)拉低總線60~240μs來(lái)產(chǎn)生應(yīng)答脈沖。主機(jī)接收到從機(jī)的應(yīng)答脈沖后,說(shuō)明有單線器件在線。</p><p><b>  ROM操作命令</b></p><p>  一旦總線主機(jī)檢測(cè)到應(yīng)答脈沖,便可以發(fā)起ROM操作命令。共有5位ROM操作命令。如表4.1。

73、</p><p>  表4.1 DS18B20的ROM操作命令</p><p><b>  內(nèi)存操作命令</b></p><p>  在成功執(zhí)行了ROM操作命令之后,才可以使用內(nèi)存操作命令。主機(jī)可以提供6種內(nèi)存操作命令,如表4.2。</p><p>  表4.2 DS18B20內(nèi)存操作命令</p><

74、p><b>  數(shù)據(jù)處理</b></p><p>  DS18B20要求有嚴(yán)格的時(shí)序來(lái)保證數(shù)據(jù)的完整。在單線DQ上,存在復(fù)位脈沖、應(yīng)答脈沖、寫“0”、寫“1”、讀“0”和讀“1”幾種信號(hào)類型。其中,除了應(yīng)答脈沖之外,均由主機(jī)產(chǎn)生。而數(shù)據(jù)位的讀和寫則是通過(guò)使用讀、寫時(shí)隙實(shí)現(xiàn)的。</p><p>  首先了解寫時(shí)隙。當(dāng)主機(jī)將數(shù)據(jù)線從高電平拉至低電平時(shí),產(chǎn)生寫時(shí)隙。有

75、2種類型的寫時(shí)隙:寫“1”和寫“0”。所有寫時(shí)隙必須在60μs以上(即由高拉低后持續(xù)60μs以上),各個(gè)寫時(shí)隙之間必須保證最短1μs的恢復(fù)時(shí)間。DS18B20在DQ線變低后的15~60μs的窗口對(duì)DQ進(jìn)行采樣,如果為高電平,就為寫“1”;如果為低電平,就為寫“0”。對(duì)于主機(jī)產(chǎn)生寫“1”時(shí)隙的情況,數(shù)據(jù)線必須先被拉低,然后釋放,在寫時(shí)隙開始后的15μs,允許DQ線拉至高電平。對(duì)于主機(jī)寫“0”時(shí)隙的情況,DQ線必須被拉至低電平且至少保持低電

76、平60μs。</p><p>  再來(lái)了解讀時(shí)隙。當(dāng)主機(jī)從DS18B20讀數(shù)據(jù)時(shí),把數(shù)據(jù)線從高電平拉至低電平,產(chǎn)生讀時(shí)隙。數(shù)據(jù)線DQ必須保持低電平至少1μs,來(lái)自DS18B20的輸出數(shù)據(jù)在讀時(shí)隙下降沿之后15μs內(nèi)有效。因此,在此15μs內(nèi),主機(jī)必須停止將DQ引腳置低。在讀時(shí)隙結(jié)束時(shí),DQ引腳將通過(guò)外部上拉電阻拉回至高電平。所有的讀時(shí)隙最短必須持續(xù)60μs,各個(gè)讀時(shí)隙之間必須保證最短1μs的恢復(fù)時(shí)間。</p

77、><p>  圖4.3 環(huán)境溫度采集子程序流程圖</p><p>  所有的讀寫時(shí)隙至少需要60μs,且每?jī)蓚€(gè)獨(dú)立的時(shí)隙之間至少需要1μs的恢復(fù)時(shí)間。在寫時(shí)序中,主機(jī)將在拉低總線15μs內(nèi)釋放總線,并向DS18B20寫“1”。若主機(jī)拉低總線后能保持60μs的低電平,則向單總線器件寫“0”。DS18B20僅在主機(jī)發(fā)出讀時(shí)隙時(shí)才向主機(jī)傳輸數(shù)據(jù),所以,當(dāng)主機(jī)向DS18B20發(fā)出讀數(shù)據(jù)命令后,必須馬上

78、產(chǎn)生讀時(shí)隙,以便DS18B20能傳輸數(shù)據(jù)[13]。</p><p>  實(shí)現(xiàn)環(huán)境溫度采集轉(zhuǎn)換并讀取數(shù)據(jù)的程序流程圖參見圖4.3。</p><p><b>  顯示子程序設(shè)計(jì)</b></p><p>  用74LS164驅(qū)動(dòng)LED數(shù)碼管靜態(tài)顯示電路,編程也很容易。只要將需要顯示的數(shù)字編輯成對(duì)應(yīng)的BCD碼,逐位送入74LS164的A、B串行輸入端,

79、數(shù)碼管將正常顯示。關(guān)鍵之處是要實(shí)現(xiàn)根據(jù)鍵值顯示不同的數(shù)字。</p><p><b>  鍵盤掃描子程序</b></p><p>  單片機(jī)對(duì)鍵盤掃描的方法有隨機(jī)掃描方式、定時(shí)掃描方式和中斷掃描方式。</p><p>  在隨機(jī)掃描方式中,CPU完成某特定任務(wù)后,即執(zhí)行鍵盤掃描程序,以確定鍵盤有無(wú)按鍵輸入,然后根據(jù)按鍵功能轉(zhuǎn)去執(zhí)行相應(yīng)的操作。在執(zhí)

80、行鍵盤按鍵規(guī)定的功能中不理睬鍵盤輸入。</p><p>  定時(shí)掃描方式與隨機(jī)掃描方式基本相同,只是利用CPU內(nèi)的定時(shí)中斷,每隔一定時(shí)間掃描有無(wú)按鍵被按下,鍵盤反應(yīng)速度較快,在處理按鍵功能過(guò)程中,可以通過(guò)鍵盤命令進(jìn)行干預(yù),如取消、暫停等操作。</p><p>  由于本設(shè)計(jì)中AT89C51單片機(jī)在系統(tǒng)中的主要任務(wù)是接受DS1302和DS18B20的數(shù)據(jù)并送出顯示,完成時(shí)鐘/日歷校對(duì)和日期/

81、溫度顯示控制。89C51單片機(jī)完全有能力完成以上工作,所以采用隨機(jī)掃描鍵盤方式,系統(tǒng)也能夠正常運(yùn)行。程序流程如圖4.5。</p><p>  單片機(jī)掃描完鍵盤,得到鍵值,并根據(jù)鍵值轉(zhuǎn)入執(zhí)行對(duì)應(yīng)任務(wù),以實(shí)現(xiàn)按鍵功能。如果沒(méi)有按鍵按下,則程序掃描到Key=FFH,將鍵值Key清零,返回主程序。</p><p><b>  鬧鈴子程序設(shè)計(jì)</b></p>&l

82、t;p>  鬧鈴子程序任務(wù)是不斷用時(shí)鐘分(min)與時(shí)(hour)同設(shè)定的鬧鈴分(clk_min)與鬧鈴時(shí)(clk_hour)比較,只要滿足min等于clk_min、hour等于clk_hour,響鈴啟動(dòng)5分鐘,并根據(jù)外部按鍵執(zhí)行相應(yīng)貪睡任務(wù)。該程序流程圖參見圖4.6。。</p><p>  圖4.4 顯示子程序流程圖</p><p>  圖4.5鍵盤掃描子程序</p>

83、<p>  圖4.6 鬧鈴子程序流程圖</p><p><b>  系統(tǒng)調(diào)試</b></p><p>  調(diào)試工作分硬件調(diào)試和軟件調(diào)試兩部分,調(diào)試方法介紹如下:</p><p>  首先,硬件調(diào)試主要是先搭建硬件平臺(tái),然后利用萬(wàn)用表等工具對(duì)電路檢查,最后應(yīng)用程序進(jìn)行功能調(diào)試。硬件調(diào)試比較費(fèi)時(shí),需要細(xì)心和耐心,也需要熟練掌握電路原理。

84、</p><p>  然后,可以直接應(yīng)用一些編輯或仿真軟件進(jìn)行軟件調(diào)試,比如單片機(jī)C51編輯軟件Keil。該軟件提供了一個(gè)集成開發(fā)環(huán)境uVision,它包括C編輯器、宏編輯器、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器。通過(guò)編譯、運(yùn)行,可以檢查程序錯(cuò)誤。但應(yīng)用此方法,仍需要十分了解所使用元器件的工作方式和管腳連接方式。在軟件調(diào)試過(guò)程中要仔細(xì)耐心,即便是多寫或少些一兩個(gè)字符,都無(wú)法編譯成功。而有時(shí)往往在Keil中編譯

85、、運(yùn)行無(wú)錯(cuò),但燒錄到單片機(jī)中運(yùn)行起來(lái)就會(huì)出錯(cuò),很可能是編程時(shí)管腳或時(shí)序編輯得不對(duì)。</p><p>  還有一種方式,即應(yīng)用仿真軟件搭建電路的軟件平臺(tái),再導(dǎo)入程序進(jìn)行仿真調(diào)試。如果電路出錯(cuò),可以在計(jì)算機(jī)上方便的修改電路,程序出錯(cuò)可以重新編輯程序,這種方法節(jié)時(shí)、省力,經(jīng)濟(jì)、方便。筆者應(yīng)用的仿真軟件為Proteus。</p><p>  總之,調(diào)試過(guò)程是一個(gè)軟硬件相結(jié)合調(diào)試的過(guò)程,硬件電路是基

86、礎(chǔ),軟件是檢測(cè)硬件電路和實(shí)現(xiàn)其功能的關(guān)鍵[13]。</p><p>  在調(diào)試過(guò)程中,首先必須明確調(diào)試順序。例如:本設(shè)計(jì)是在單片機(jī)系統(tǒng)基礎(chǔ)上建立起來(lái)的,所以必須先確定單片機(jī)基礎(chǔ)電路能否正常工作。為了正確顯示時(shí)間,接下來(lái)還要確定顯示電路能否正常工作。硬件調(diào)試的過(guò)程,也是軟件調(diào)試的過(guò)程。</p><p>  然后,要準(zhǔn)備好調(diào)試的工具。硬件調(diào)試需要萬(wàn)用表、示波器等,軟件調(diào)試一般需要諸如Keil等

87、仿真編輯器。筆者根據(jù)自己實(shí)際制作該多功能電子時(shí)鐘的經(jīng)驗(yàn),將調(diào)試過(guò)程介紹如下:</p><p><b>  硬件調(diào)試</b></p><p><b>  單片機(jī)基礎(chǔ)電路調(diào)試</b></p><p>  單片機(jī)基礎(chǔ)電路包括電源、單片機(jī)、外部時(shí)鐘震蕩電路、復(fù)位電路和外部接口電路。調(diào)試過(guò)程需要注意以下幾點(diǎn):</p>

88、<p>  1. 檢查電源是否完好。</p><p>  2. 單片機(jī)電源要連接正確,并且保證AT89C51的31號(hào)引腳接高電平。AT89C51的31號(hào)引腳是外部程序存儲(chǔ)器選擇信號(hào)端,當(dāng)該引腳為高電平時(shí),單片機(jī)會(huì)一直從片內(nèi)程序存儲(chǔ)器內(nèi)取指令。</p><p>  3. 如果使用P0口做I/O口,要接上拉電阻。</p><p>  4. 使用萬(wàn)用表排查電路中

89、是否存在斷路或者短路情況。筆者在制作外部接口電路時(shí)使用的是排針,焊接時(shí)容易出現(xiàn)管腳之間短路,所以在上電以前必須先排查電路。</p><p>  5. 編輯一個(gè)使一組發(fā)光二極管循環(huán)點(diǎn)亮的程序并燒錄到單片機(jī)內(nèi),上電運(yùn)行,檢查單片機(jī)是否正常工作,復(fù)位電路是否正確。</p><p>  筆者編輯了使一組P1口點(diǎn)亮8個(gè)發(fā)光二極管循環(huán)點(diǎn)亮的程序,程序代碼如下:</p><p>

90、  #include <reg51.h></p><p>  void delay(void) //延時(shí)子程序</p><p><b>  {</b></p><p>  Unsigned char i, j,k; //延時(shí)時(shí)間根據(jù)變量i,j,k不同而

91、改變</p><p>  for(i=50;i>0;i--)</p><p>  for(j=50;j>0;j--)</p><p>  for(k=250;k>0;i--);</p><p><b>  }</b></p><p>  void main()</p>

92、<p>  { unsigned int n; </p><p>  unsigned char code ledp[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};</p><p><b>  while(1)</b></p><p>  { P1=0xFFH;

93、 //初始化P1口</p><p>  for(n=0;n<8;n++)</p><p>  {P1=ledp[n];</p><p><b>  delay();</b></p><p><b>  }}}</b></p><p><b>  

94、顯示電路調(diào)試</b></p><p>  本設(shè)計(jì)的顯示電路使用了共陰LED和74LS164。在連接顯示電路之前要明確共陰型8段LED的10個(gè)管腳與各段發(fā)光二極管的對(duì)應(yīng)關(guān)系,熟悉74LS164管腳位置,然后才能開始進(jìn)行連接[19]。在連接過(guò)程中,需要注意以下幾點(diǎn):</p><p>  1. LED數(shù)碼管各管腳與74LS164各管腳的對(duì)應(yīng)關(guān)系要十分清楚,所有LED數(shù)碼管與74LS1

95、64的連接方式要統(tǒng)一。</p><p>  2. 因?yàn)槭且莆伙@示,所以需要注意前一位74LS164的QH腳要與下一位74LS164的A、B腳連接。</p><p>  3. 明確單片機(jī)管腳功能。本設(shè)計(jì)定義了P1.0連接74LS164的A、B腳,P1.1連接74LS164的CLK腳。</p><p>  4. 74LS164的CLR腳接高電平。</p>

96、<p>  5. 編寫一段顯示程序,燒錄進(jìn)單片機(jī),檢查好電源正負(fù)端和P1.0、P1.1連接是否正確。檢查無(wú)誤后上電,檢查顯示電路是否正確。</p><p>  以下是筆者編寫的一段顯示程序:上電后,7位數(shù)碼管分別顯示0~6。</p><p>  #include "reg51.h"</p><p>  #define uint unsi

97、gned int</p><p>  #define uchar unsigned char</p><p>  void dis(); </p><p>  void sendbyte();</p><p>  sbit DAT=P1^0;</p><p>  sbit CLK=P1^1;</p>&l

98、t;p>  uchar disp_buffer[7];</p><p>  unsigned char tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f };</p><p>  void delay_50ms(unsigned int t) //延時(shí)子程序</p><p><b>  {&

99、lt;/b></p><p>  unsigned int j;</p><p>  for(;t>0;t--)</p><p>  for(j=6245;j>0;j--) </p><p><b>  {;} }</b></p><p>  void dis()

100、 //顯示子程序,0~6</p><p>  { unsigned char gsb,led,led1,jj;</p><p>  disp_buffer[0]=tab[0]; </p><p>  disp_buffer[1]=tab[1]; </p><p>  disp_buffer[2]=

101、tab[2]; </p><p>  disp_buffer[3]=tab[3];</p><p>  disp_buffer[4]=tab[4]; </p><p>  disp_buffer[5]=tab[5];</p><p>  disp_buffer[6]=tab[6];</p><p>  for(gs

102、b=0;gsb<7;gsb++)</p><p>  { led=disp_buffer[gsb];</p><p>  for(jj=0;jj<8;jj++)</p><p>  { led1=led&0x1;</p><p>  if (led1==0x1)</p><p><b&g

103、t;  DAT=1;</b></p><p><b>  else</b></p><p><b>  DAT=0;</b></p><p>  CLK=0;CLK=1;</p><p>  led=led>>1;</p><p><b> 

104、 }}}</b></p><p>  void main() //主程序</p><p>  { while(1)</p><p>  { dis();</p><p>  delay_50ms(10); </p><p><b> 

105、 }}</b></p><p>  DS1302電路調(diào)試</p><p>  該電路包含DS1302芯片、主電源、備用電源、晶振等部分。在與單片機(jī)連接的過(guò)程中需要注意以下幾點(diǎn):</p><p>  清楚DS1302與單片機(jī)連接的管腳。本設(shè)計(jì)定義為:DS1302的SCLK連接P1.5,I/O連接P1.6,RST連接P1.7。</p><

106、p>  注意電源正負(fù)極連接。</p><p>  DS1302接32.768KHz的晶振。該晶振體型比較小,在焊接時(shí)要小心,注意不要將晶振引腳弄斷。同時(shí)也要盡量使晶振離DS1302的X1、X2引腳近距離焊接。</p><p>  編寫DS1302的時(shí)鐘/日歷程序,只要求能夠正確顯示時(shí)間。燒錄進(jìn)單片機(jī),檢查電路電源正負(fù)極連接是否正確,檢查P1.0和P1.1引腳接線是否正確。檢查無(wú)誤后可

107、以上電檢查。</p><p>  筆者編寫了一段時(shí)鐘/日歷顯示程序,設(shè)置初始時(shí)間為14:28:00,初始日期為2008年5月12日。上電后LED數(shù)碼管顯示“142800”,之后開始走時(shí)。觀察32分鐘之后,數(shù)碼管顯示“150000”,證明DS1302電路正確。源程序見附錄A</p><p><b>  按鍵電路調(diào)試</b></p><p>  按

108、鍵電路比較簡(jiǎn)單,故調(diào)試起來(lái)也很容易。如果確保按鍵焊接正確,只需在DS1302的調(diào)試程序上加上一段日歷顯示子程序,并在主程序中寫入:</p><p>  If(P_7==0)</p><p><b>  {</b></p><p>  dis_calendar;</p><p><b>  }</b>

109、</p><p>  日歷顯示子程序原理與時(shí)鐘顯示子程序原理相同,源程序見附錄A該程序的功能是:當(dāng)按下K7時(shí),第1~6位LED數(shù)碼管馬上由時(shí)間顯示日期。當(dāng)K7彈出后,數(shù)碼管1~6位有顯示日期轉(zhuǎn)為顯示實(shí)時(shí)時(shí)間[20]。</p><p><b>  軟件調(diào)試</b></p><p>  在硬件調(diào)試完畢的基礎(chǔ)上,需要進(jìn)一步完善程序,也就是進(jìn)入軟件調(diào)試

110、階段。在本設(shè)計(jì)中,軟件調(diào)試主要分三大部分:實(shí)時(shí)時(shí)鐘日歷子程序調(diào)試、環(huán)境溫度采集子程序調(diào)試、按鍵子程序調(diào)試。將這三部分調(diào)試成功,那么整個(gè)設(shè)計(jì)的軟件部分也就基本完成了。</p><p>  在硬件調(diào)試部分,已經(jīng)將實(shí)時(shí)時(shí)鐘日歷子程序調(diào)試完畢了,只需在主程序中調(diào)用按鍵子程序即可,源程序見附錄A,這里不再贅述。</p><p>  環(huán)境溫度采集子程序調(diào)試</p><p>  

111、DS18B20溫度傳感器使用起來(lái)非常方便,不但接線少,而且編程容易。該溫度傳感器在讀寫數(shù)據(jù)時(shí)需要嚴(yán)格的時(shí)序,為了方便編寫對(duì)應(yīng)的延時(shí)程序,此時(shí)單片機(jī)一般都選用11.0592MHz的晶振 [13]。</p><p>  為了能正常顯示溫度,需要將讀取到的TL和TH組合成一個(gè)字節(jié),再轉(zhuǎn)換成十進(jìn)制數(shù)。本設(shè)計(jì)使用DS18B20時(shí)采用了溫度傳感器出廠默認(rèn)設(shè)置——12位分辨率,所以定義溫度值temp等于TH,左移8位,再與TL

112、進(jìn)行“或”運(yùn)算,即可得到溫度值。</p><p>  由于條件限制,筆者無(wú)法做出溫度采集部分,所以應(yīng)用了Proteus軟件進(jìn)行仿真。仿真過(guò)程見附錄D。</p><p>  溫度顯示子程序與時(shí)間顯示子程序原理相同,源程序見附錄A</p><p><b>  鍵盤子程序調(diào)試</b></p><p>  依據(jù)設(shè)計(jì)要求,鍵盤子程

113、序需要完成對(duì)時(shí)間/日歷的校對(duì)、日期/溫度的顯示和鬧鈴的開關(guān)。為了便于顯示子程序和鬧鈴子程序的調(diào)用,除了K1、K2鍵以外,其余按鍵都定義功能標(biāo)志位。例如:</p><p><b>  If(K7==0)</b></p><p><b>  {</b></p><p>  alarm_flag= true;</p>

114、<p><b>  }</b></p><p>  在調(diào)用鬧鈴子程序時(shí),鬧鈴標(biāo)志位為“1”,則開啟鬧鈴,否則關(guān)閉鬧鈴。</p><p><b>  窗體底端</b></p><p><b>  結(jié) 論</b></p><p>  過(guò)去人們應(yīng)用時(shí)鐘僅僅是為了明確當(dāng)

115、前時(shí)間。隨著生產(chǎn)力的發(fā)展,社會(huì)的進(jìn)步,生產(chǎn)生活對(duì)時(shí)鐘的需求越來(lái)越大,對(duì)時(shí)鐘的體型、功能的要求也各有不同。所以多功能電子時(shí)鐘在今后的應(yīng)用也會(huì)越來(lái)越廣泛。</p><p>  基于單片機(jī)實(shí)現(xiàn)電子時(shí)鐘,僅僅是眾多方法之一。并且市場(chǎng)上的實(shí)時(shí)時(shí)鐘日歷芯片品類繁多,IC化的傳感器各種各樣,顯示方式也愈趨于人性化。所以多功能電子時(shí)鐘有多種實(shí)現(xiàn)方案,能夠?qū)崿F(xiàn)的功能也很多,筆者已經(jīng)通過(guò)仿真和調(diào)試,實(shí)現(xiàn)了時(shí)間日歷顯示和校對(duì)、鬧鈴等功

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(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)論