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

下載本文檔

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

文檔簡介

1、<p><b>  目 錄</b></p><p>  1引言………………………………………………………………………………………… 1</p><p>  1.1設(shè)計(jì)內(nèi)容和要…………………………………………………………………………… 1</p><p>  1.2 工作原理……………………………………………………………………………

2、…… 2</p><p>  2 總體設(shè)計(jì)…………………………………………………………………………………… 2</p><p>  2.1 方案設(shè)計(jì)………………………………………………………………………………… 2</p><p>  2.2 系統(tǒng)框圖………………………………………………………………………………… 2</p><p>  2.

3、3 核心芯片簡介…………………………………………………………………………3</p><p>  2.3.1 DS1302簡介…………………………………………………………………………… 3</p><p>  2.3.2 AT89C51簡介……………………………………………………………………………3</p><p>  3 智能電子鐘軟硬件電路的設(shè)計(jì)………………………

4、………………………………………4</p><p>  3.1 硬件設(shè)計(jì)……………………………………………………………………………………4</p><p>  3.1.1 復(fù)位電路設(shè)計(jì)……………………………………………………………………………4</p><p>  3.1.2 DS1302與單片機(jī)的接口設(shè)計(jì)………………………………………………………… 5</p&

5、gt;<p>  3.1.3 LED顯示設(shè)計(jì)……………………………………………………………………………5</p><p>  3.1.4 電源設(shè)計(jì)…………………………………………………………………………………6</p><p>  3.1.5 按鍵開關(guān)去抖設(shè)計(jì)………………………………………………………………………6</p><p>  3.1.6 時(shí)鐘

6、電路的設(shè)計(jì)…………………………………………………………………………7</p><p>  3.1.7 電路總原理圖設(shè)計(jì)………………………………………………………………………8</p><p>  3.2 軟件設(shè)計(jì)……………………………………………………………………………………8</p><p>  3.2.1 流程圖…………………………………………………………………

7、…………………8</p><p>  4 protues仿真與調(diào)試……………………………………………………………………………11</p><p>  4.1 電路的仿真…………………………………………………………………………………11</p><p>  4.2軟件調(diào)試……………………………………………………………………………………11</p><

8、;p>  結(jié)論…………………………………………………………………………………………… 12</p><p>  參考文獻(xiàn)……………………………………………………………………………………… 14</p><p>  附 錄………………………………………………………………………………………… 15</p><p>  源程序…………………………………………………

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

10、子時(shí)鐘。本文對當(dāng)前電子鐘開發(fā)手段進(jìn)行了比較和分析,最終確定了采用單片機(jī)技術(shù)實(shí)現(xiàn)多功能電子時(shí)鐘。本設(shè)計(jì)應(yīng)用AT89C51芯片作為核心,6位LED數(shù)碼管顯示,使用DS1302實(shí)時(shí)時(shí)鐘日歷芯片完成時(shí)鐘/日歷的基本功能。這種實(shí)現(xiàn)方法的優(yōu)點(diǎn)是電路簡單,性能可靠,實(shí)時(shí)性好,時(shí)間精確,操作簡單,編程容易。</p><p>  該電子時(shí)鐘可以應(yīng)用于一般的生活和工作中,也可通過改裝,提高性能,增加新功能,從而給人們的生活和工作帶來

11、更多的方便。</p><p>  1.1設(shè)計(jì)內(nèi)容和要求</p><p>  以AT89C51單片機(jī)為核心,制作一個(gè)LCD顯示的智能電子鐘:</p><p>  (1) 計(jì)時(shí):秒、分、時(shí)、天、周、月、年。</p><p>  (2) 閏年自動(dòng)判別。</p><p>  (3) 五路定時(shí)輸出,可任意關(guān)斷(最大可到16路)。

12、</p><p>  (4) 時(shí)間、月、日交替顯示。</p><p>  (5) 自定任意時(shí)刻自動(dòng)開/關(guān)屏。</p><p>  (6) 計(jì)時(shí)精度:誤差≤1秒/月(具有微調(diào)設(shè)置)</p><p>  (7) 鍵盤采用動(dòng)態(tài)掃描方式查詢。所有的查詢、設(shè)置功能均由功能鍵K1、K2完成。</p><p><b>  

13、1.2 工作原理</b></p><p>  本設(shè)計(jì)采用市場上流行的時(shí)鐘芯片DS1302進(jìn)行制作。DS1302是DALLAS公司推出的涓流充電時(shí)鐘芯片,內(nèi)含一個(gè)實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)靜態(tài)RAM,可以通過串行接口與計(jì)算機(jī)進(jìn)行通信,使得管腳數(shù)量減少。實(shí)時(shí)時(shí)鐘/日歷電路能夠計(jì)算2100年之前的秒、分、時(shí)、日、星期、月、年的,具有閏年調(diào)整的能力。</p><p>  DS1302時(shí)鐘

14、芯片的主要功能特性:</p><p>  (1) 能計(jì)算2100年之前的年、月、日、星期、時(shí)、分、秒的信息;每月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整;時(shí)鐘可設(shè)置為24或12小時(shí)格式。</p><p>  (2) 31B的8位暫存數(shù)據(jù)存儲RAM。</p><p>  (3) 串行I/O口方式使得引腳數(shù)量最少。</p><p>  (4) DS1302與

15、單片機(jī)之間能簡單地采用同步串行的方式進(jìn)行通信,僅需3根線。</p><p>  (5) 寬范圍工作電壓2.0-5.5V。</p><p>  (6) 工作電流為2.0A時(shí),小于300nA。</p><p>  (7) 功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí)功率小于1mW</p><p>  控制程序在Keil軟件中編寫,編譯,整個(gè)控制電路在Prote

16、us仿真軟件中連接調(diào)示。</p><p><b>  2 總體設(shè)計(jì)方案</b></p><p><b>  2.1 方案設(shè)計(jì)</b></p><p>  實(shí)時(shí)時(shí)鐘芯片具備年、月、日、時(shí)、分、秒計(jì)時(shí)功能和多點(diǎn)計(jì)時(shí)功能,計(jì)時(shí)數(shù)據(jù)的更新每秒自動(dòng)進(jìn)行一次,不需程序干預(yù)。計(jì)算機(jī)可通過中斷或查詢方式讀取計(jì)時(shí)數(shù)據(jù)進(jìn)行顯示,因此計(jì)時(shí)功能的

17、實(shí)現(xiàn)無需占用CPU的時(shí)間,程序簡單。此外,實(shí)時(shí)時(shí)鐘芯片多數(shù)帶有鋰電池做后備電源,具備永不停止的計(jì)時(shí)功能;具有可編程方波輸出功能,可用做實(shí)時(shí)測控系統(tǒng)的采樣信號等;有的實(shí)時(shí)時(shí)鐘芯片內(nèi)部還帶有非易失性RAM,可用來存放需長期保存但有時(shí)也需變更的數(shù)據(jù),由于功能完善,精度高,軟件程序設(shè)計(jì)相對簡單,且計(jì)時(shí)不占用CPU時(shí)間,因此,在工業(yè)實(shí)時(shí)測控系統(tǒng)中多采用這一類專用芯片來實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘功能。</p><p>  利用單片機(jī)內(nèi)部的

18、定時(shí)/計(jì)數(shù)器進(jìn)行中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí)及秒表計(jì)時(shí)。該方案節(jié)省硬件成本,且能使設(shè)計(jì)者對單片機(jī)的指令系統(tǒng)能有更深入的了解,從而掌握單片機(jī)應(yīng)用技術(shù)MCS-51匯編語言程序設(shè)計(jì)方法,因此,本系統(tǒng)設(shè)計(jì)采用此種軟件控制方法來實(shí)現(xiàn)計(jì)時(shí)。而由于Atmel公司的AT89C51是一種自帶4KB Flash存儲器的低電壓、高性能的CMOS 8位微處理器。該器件采用Atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸

19、出引腳相兼容。AT89C51將多功能8位CPU和閃存集成在單個(gè)芯片中,是一種高效的微控制器,使用也更方便,壽命更長,可以反復(fù)擦除1000次。形成了功能強(qiáng)大、使用靈活和具有較高性能價(jià)格比的微控制器。它的功能強(qiáng)大,而且也比較容易購買,故本設(shè)計(jì)中所選的單片機(jī)為AT89C51單片機(jī)。</p><p><b>  2.2 系統(tǒng)框圖</b></p><p>  按照系統(tǒng)設(shè)計(jì)功能的

20、要求,初步確定系統(tǒng)由主控模塊、時(shí)控模塊、及顯示模塊和鍵盤接口模塊共4個(gè)模塊組成。主控芯片使用51系列AT89C51單片機(jī),時(shí)鐘芯片使用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘DS1302。采用DS1302作為計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以在很小電流的后備電源(2.5~5.5V電源,再2.5V時(shí)耗電小于300nA),而且DS1302可以編程選擇多種充電電流來為后備電源進(jìn)行慢速充電,可以保證

21、后備電源基本不耗電。顯示模塊采用普通的液晶顯示屏(LCD)設(shè)計(jì)框圖如圖1.1所示。</p><p>  圖2.2 設(shè)計(jì)方案框圖</p><p>  2.3 核心芯片簡介</p><p>  2.3.1 DS1302簡介</p><p>  DS1302是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對年、月、日、

22、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償功能,工作電壓寬達(dá)2.5~5.5V。時(shí)鐘可工作在24小時(shí)格式或12小時(shí)(AM/PM)格式。 DS1302與單片機(jī)的接口使用同步串行通信,僅用3條線與之相連接??刹捎靡淮蝹魉鸵粋€(gè)字節(jié)或突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,

23、同時(shí)提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。</p><p>  2.3.2 AT89C51簡介</p><p>  AT89C51是一種帶4K字節(jié)FLASH存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的

24、單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。</p><p>  3 智能電子鐘軟硬件電路的設(shè)計(jì)

25、</p><p><b>  3.1 硬件設(shè)計(jì)</b></p><p>  該設(shè)計(jì)的硬件電路由主控部分(單片機(jī)AT89C51)、計(jì)時(shí)部分(實(shí)時(shí)時(shí)鐘芯片DS1302)、顯示部分(八段數(shù)碼管)、電源部分(三端穩(wěn)壓器7805)、時(shí)鐘電路5個(gè)部分組成。各部分之間相互協(xié)作,構(gòu)成一個(gè)統(tǒng)一的有機(jī)整體,實(shí)現(xiàn)數(shù)字時(shí)鐘的功能。各部分的硬件電路設(shè)計(jì)如下。設(shè)計(jì)總電路圖見附錄一。</p&

26、gt;<p>  3.1.1 復(fù)位電路設(shè)計(jì)</p><p>  單片機(jī)AT89C51作為主控芯片,控制整個(gè)電路的運(yùn)行。單片機(jī)外圍需要一個(gè)復(fù)位電路,復(fù)位電路的功能是:系統(tǒng)上電時(shí)提供復(fù)位信號,直至系統(tǒng)電源穩(wěn)定后,撤消復(fù)位信號。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號,以防電源開關(guān)或電源插頭分-合過程中引起的抖動(dòng)而影響復(fù)位。該設(shè)計(jì)采用含有二極管的復(fù)位電路,復(fù)位電路可以有效的解決電源毛刺和電源緩

27、慢下降(電池電壓不足)等引起的問題,在電源電壓瞬間下降時(shí)可以使電容迅速放電,一定寬度的電源毛刺也可令系統(tǒng)可靠復(fù)位。復(fù)位電路的設(shè)計(jì)圖如圖2所示:</p><p>  圖3.1.1 單片機(jī)復(fù)位電路圖</p><p>  AT89C51具有在系統(tǒng)可編程功能,可以很方便的改寫單片機(jī)存儲器內(nèi)的程序不需要把芯片中從工作環(huán)境中剝離,把AT89C51下載口接入電路,可使電路實(shí)現(xiàn)該功能。AT89C51需要接

28、入一個(gè)普通12MHz晶振,為其提供穩(wěn)定的時(shí)鐘脈沖。該設(shè)計(jì)中有6個(gè)八段數(shù)碼顯示管LED,所以,在單片機(jī)AT89C51外圍需要接入6個(gè)三極管來驅(qū)動(dòng)數(shù)碼顯示管。此外,單片機(jī)外圍需要接入3個(gè)開關(guān),用來調(diào)整時(shí)鐘。單片機(jī)外圍電路的設(shè)計(jì)圖如圖2.2示:</p><p>  3.1.2 DS1302與單片機(jī)的接口設(shè)計(jì)</p><p>  時(shí)鐘芯片DS1302與單片機(jī)AT89C51的接口是由3條線來完成的,

29、單片機(jī)AT89C51的P1.0與時(shí)鐘芯片的數(shù)據(jù)傳輸端相連,P1.1用來作為DS1302輸入時(shí)鐘SCLK控制端,P1.2控制DS1302的復(fù)位輸入端。DS1302接標(biāo)準(zhǔn)32.768KHz石英晶振。DS1302與單片機(jī)的接口電路如圖2.3所示。</p><p>  圖3.1.2 DS1302與AT89C51連接圖</p><p>  3.1.3 LED顯示設(shè)計(jì)</p><p

30、>  八段數(shù)碼顯示管有兩種,一種是共陽數(shù)碼管,其內(nèi)部是由八個(gè)陽極相連接的發(fā)光二極管組成;另一種是共陰數(shù)碼管,其內(nèi)部是由八個(gè)陰極相連接的發(fā)光二極管組成。二者原理不同但功能相同。本設(shè)計(jì)的時(shí)間顯示選用6個(gè)共陰八段數(shù)碼管LED,其外形和內(nèi)部結(jié)構(gòu)如圖3.1.3所示:</p><p>  圖3.1.3 八段共陰數(shù)碼管LED</p><p>  3.1.4 電源設(shè)計(jì)</p><

31、p>  時(shí)鐘芯片DS1302有很寬的工作電壓范圍,其工作電壓為2.5~5.5V。單片機(jī)AT89C51的工作電壓范圍相對較窄,為4.0~5.5V,所以本設(shè)計(jì)中,給電路接入三端穩(wěn)壓器7805,利用它的穩(wěn)壓功能給電路提供穩(wěn)定的+5V電壓,使電路的工作保持很高的可靠性。在電路中接入一個(gè)發(fā)光二極管作為指示燈,可以很方便地指示電源與電路是否接通。該設(shè)計(jì)的電源部分如圖2.5所示。</p><p>  圖3.1.4 電源電

32、路圖</p><p>  3.1.5 按鍵開關(guān)去抖設(shè)計(jì)</p><p>  按鍵開關(guān)在電路中的連接如圖所示。按鍵未按下時(shí),A點(diǎn)電位為高電平5V;按鍵按下時(shí),A點(diǎn)電位為低電平。A點(diǎn)電位就用于向CPU傳遞按鍵的開關(guān)狀態(tài)。但是由于按鍵的結(jié)構(gòu)為機(jī)械彈性開關(guān),在按鍵按下和斷開時(shí),觸點(diǎn)在閉合和斷開瞬間還會接觸不穩(wěn)定,引起A點(diǎn)電平不穩(wěn)定,如圖2.6所示,鍵盤的抖動(dòng)時(shí)間一般為5~10ms,抖動(dòng)現(xiàn)象會引起C

33、PU對一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤。因此必須設(shè)法消除抖動(dòng)的不良后果。</p><p>  圖2.6 鍵操作和鍵抖動(dòng)</p><p>  消除抖動(dòng)的不良后果的方法有硬、軟件兩種。</p><p>  為了節(jié)省硬件,通常在單片機(jī)系統(tǒng)中,一般不采用硬件方法消除鍵的抖動(dòng),而是用軟件消除抖動(dòng)的方法。根據(jù)抖動(dòng)特性,在第一次檢測到按鍵按下后,執(zhí)行一段延時(shí)5~10ms讓

34、前延抖動(dòng)消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給5~10ms的延時(shí),待后延抖動(dòng)消失后才轉(zhuǎn)入該鍵處理程序。</p><p>  3.1.6 時(shí)鐘電路的設(shè)計(jì)</p><p>  使用串行接口時(shí)鐘芯片DS1302設(shè)計(jì)時(shí)鐘電路。該設(shè)計(jì)方案以單片機(jī)AT89S51為主控芯片,以串行時(shí)鐘芯片DS1302為核心計(jì)時(shí)芯片,組成數(shù)字時(shí)鐘電路。該電路不但能

35、準(zhǔn)確地計(jì)時(shí)、附加其它功能,而且,其三線接口可以節(jié)省接口資源,在斷電后不丟失時(shí)間和數(shù)據(jù)信息。該設(shè)計(jì)方案的接口電路如圖2.7所示。</p><p>  圖3.1.6 DS1302接口電路</p><p>  3.1.7 電路總原理圖設(shè)計(jì)</p><p>  圖3.1.7 總原理圖</p><p><b>  3.2 軟件設(shè)計(jì)</b

36、></p><p>  電子時(shí)鐘的程序主要包括3個(gè)方面的內(nèi)容:一是DS1302從單片機(jī)中讀取數(shù)據(jù)進(jìn)行計(jì)數(shù),二是利用按鍵進(jìn)行時(shí)間的調(diào)整,三是單片機(jī)中讀取DS1302中的數(shù)據(jù)驅(qū)動(dòng)LED數(shù)碼管顯示時(shí)間。AT89C51單片機(jī)主要I/O口的分配:P10、P11、P12分別接時(shí)鐘芯片的SCLK、I/O、RST引腳,P13、P14接兩個(gè)獨(dú)立按鍵。</p><p>  3.2.1 流程圖

37、 </p><p>  本次設(shè)計(jì)的系統(tǒng)軟件設(shè)計(jì)主要包括主程序設(shè)計(jì)和各個(gè)計(jì)時(shí)子模塊、和按鍵控制子模塊程序以及報(bào)警模塊。主程序主要完成器件的初始化,并判斷有無按鍵按下,并根據(jù)判斷的結(jié)果調(diào)用相應(yīng)的子模塊程序;計(jì)時(shí)子模塊程序和日歷日期數(shù)據(jù)子模塊程序完成相應(yīng)的數(shù)據(jù)采集、處理和保存,按鍵處理子模塊程序完成日期和鬧鐘的設(shè)置,其各流程圖如下:</p><p>  圖3.2.1 主流

38、程圖</p><p>  圖3.2.1 時(shí)間調(diào)整程序流程圖</p><p>  4 protues仿真與調(diào)試</p><p><b>  4.1 電路的仿真</b></p><p>  利用keil軟件編寫源程序。在protues中畫好其電路圖如下圖3.1所示。</p><p>  圖4.1 電路

39、板的仿真圖</p><p><b>  4.2 軟件調(diào)試</b></p><p>  在硬件調(diào)試完畢的基礎(chǔ)上,需要進(jìn)一步完善程序,也就是進(jìn)入軟件調(diào)試階段。在本設(shè)計(jì)中,軟件調(diào)試主要分兩大部分:實(shí)時(shí)時(shí)鐘日歷子程序調(diào)試、按鍵子程序調(diào)試。將這兩部分調(diào)試成功,那么整個(gè)設(shè)計(jì)的軟件部分也就基本完成了。</p><p>  目前設(shè)計(jì)過程中容易造成元件和儀器儀表

40、的損壞,而借助Keil和Proteus進(jìn)行單片機(jī)系統(tǒng)的開發(fā),可以節(jié)省設(shè)計(jì)成本,提高設(shè)計(jì)速度。</p><p>  Keil軟件包是一個(gè)功能強(qiáng)大的開發(fā)平臺,它包括項(xiàng)目管理器、CX51編譯器、AX51宏匯編器、BL51/LX51連接定位器、RTX51實(shí)時(shí)操作系統(tǒng)、Simulator軟件模擬器及Monitor51硬件目標(biāo)調(diào)試器。它是一種集成化程度高的文件管理編譯環(huán)境,主要功能為編譯C語言源程序,匯編程序或混合語言源程序

41、,連接和定位目標(biāo)文件和庫,創(chuàng)建HEX文件,調(diào)試目標(biāo)程序等。Keil是目前最好的51單片機(jī)開發(fā)工具之一。Keil支持軟件模擬仿真(Simulator)和用戶目標(biāo)調(diào)試(Monitor51)兩種工作模式。前者不需要任何單片機(jī)硬件即可完成用戶程序仿真、調(diào)試,后者利用硬件目標(biāo)板中的監(jiān)控程序可以直接調(diào)試目標(biāo)硬件系統(tǒng)。</p><p>  Proteus是一個(gè)完整的嵌入式系統(tǒng)軟件、硬件設(shè)計(jì)仿真平臺,它包括原理圖輸入系統(tǒng)ISIS

42、、帶擴(kuò)展的Prospice混合模型仿真器、動(dòng)態(tài)元件庫、高級圖形分析模塊和處理器虛擬系統(tǒng)仿真模型VSM。ISIS是Proteus系統(tǒng)的中心,具有超強(qiáng)的控制原理設(shè)計(jì)環(huán)境。ProteusVSM最重要的特點(diǎn)是能把微處理器軟件作用在處理器上,并和該處理器的任何模擬和數(shù)字元件協(xié)同仿真,仿真執(zhí)行目標(biāo)碼就像在真正的單片機(jī)系統(tǒng)上運(yùn)行一樣,VSM CPU模型能完整仿真I/O接口、中斷、定時(shí)器、通用外部設(shè)備口及其他與CPU有關(guān)的外部設(shè)備,甚至能仿真多個(gè)處理器

43、。</p><p><b>  5 結(jié)論</b></p><p>  本次課程設(shè)計(jì)是繼前兩次課程設(shè)計(jì)以來的又一次課程設(shè)計(jì),因此在這次的設(shè)計(jì)中我感覺比之前也得心應(yīng)手了不少,單片機(jī)的課程設(shè)計(jì)需要結(jié)合各方面的知識與總結(jié)。</p><p>  這次的課程設(shè)計(jì)在小組內(nèi)進(jìn)行,我們分工明確,從繪制原理圖開始就是我們從平時(shí)的學(xué)習(xí)生活中得出來的經(jīng)驗(yàn)總結(jié),到最后的

44、程序編寫,程序仿真知道最后仿真成功的那一刻我深深體會到成功多么的來之不易。</p><p>  在這次的調(diào)試過程中,我們多次遇到了難以解決的問題,但我們并沒有氣餒,重新分析,檢查遺漏,很多時(shí)候都是因?yàn)槲覀兇中脑斐傻?,問題得以解決,我們的心情也會大為愉快,后來我們每個(gè)步驟都小心謹(jǐn)慎,設(shè)計(jì)進(jìn)度也就大大加快。我也明白了課程設(shè)計(jì)就是對我們學(xué)習(xí)成果的一個(gè)總結(jié),這次給我最大的收獲就是讓我知道了對待任何事物必須要有嚴(yán)謹(jǐn)?shù)膽B(tài)度,

45、我們只有學(xué)會基礎(chǔ)知識才能進(jìn)一步掌握更深的學(xué)問。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 辜承林,陳喬夫. 電機(jī)學(xué).華中科技大學(xué)出版社.2010</p><p>  [2] 徐瑋. C51單片機(jī)高效入門. 機(jī)械工業(yè)出版社.2007</p><p>  [3] 黃明強(qiáng).DS1302在單片機(jī)

46、系統(tǒng)中的應(yīng)用[J].保定師范??茖W(xué)校學(xué)報(bào),2004,17(2)</p><p>  [4]孫雪梅,范久臣.實(shí)時(shí)時(shí)鐘芯片在單片機(jī)系統(tǒng)中的應(yīng)用[J].沈陽教育學(xué)院學(xué)報(bào),2005,7(2)</p><p><b>  附 錄</b></p><p><b>  源程序</b></p><p><b

47、>  用C語言編寫:</b></p><p>  #include<reg52.h></p><p>  #include"LCD.h"</p><p>  uchar keydown()</p><p><b>  {</b></p><p> 

48、 uchar i = 0;</p><p>  uchar key = P2 & 0x0f;</p><p>  if((P2&0x0f) != 0x0f)</p><p><b>  {</b></p><p>  delayMs(10);</p><p>  if((P2&am

49、p;0x0f) != 0x0f)</p><p><b>  {</b></p><p>  key = P2 & 0x0f;</p><p>  while((P2&0x0f) != 0x0f);</p><p>  switch(key)</p><p><b>  

50、{</b></p><p>  //Key1~4 接P2.4~7</p><p>  case 0x0e: return 1;</p><p>  case 0x0d: return 2;</p><p>  case 0x0b: return 3;</p><p>  case 0x07: return

51、4;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</

52、b></p><p>  /***********************************************</p><p><b>  顯示時(shí)鐘</b></p><p>  ***********************************************/</p><p>  void

53、 showClock()</p><p><b>  {</b></p><p>  uchar i = 0;</p><p>  LCDclear();</p><p>  for(; i<6; i++)</p><p><b>  {</b></p>

54、<p>  displayField(i);</p><p><b>  }</b></p><p>  displaySpan('-', ':');</p><p>  TMOD=0x01;</p><p>  TH0=(65536-50000)/256;</p>

55、<p>  TL0=(65536-50000)%256;</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b>  TR0=1;</b></p><p><b>  }</b&g

56、t;</p><p>  /***********************************************</p><p><b>  中斷加時(shí)間</b></p><p>  ************************************************/</p><p>  void

57、time0() interrupt 1</p><p><b>  {</b></p><p>  TH0=(65536-50000)/256;</p><p>  TL1=(65536-50000)%256;</p><p>  countTimer ++;</p><p>  if(count

58、Timer == 20)</p><p><b>  {</b></p><p>  countTimer = 0;</p><p>  autoAdd1Sec();</p><p><b>  }</b></p><p><b>  }</b><

59、;/p><p>  void showLogo(uchar logo[])</p><p><b>  {</b></p><p>  LCDclear();</p><p>  displayStr(logo,0,0);</p><p><b>  }</b></p>

60、;<p>  void refreshPage()</p><p><b>  {</b></p><p>  if(g_year != g_LCDyear)</p><p><b>  {</b></p><p>  g_LCDyear = g_year;</p>&l

61、t;p>  displayField(e_year);</p><p><b>  }</b></p><p>  if(g_mon != g_LCDmon)</p><p><b>  {</b></p><p>  g_LCDmon = g_mon;</p><p>

62、;  displayField(e_mon);</p><p><b>  }</b></p><p>  if(g_day != g_LCDday)</p><p><b>  {</b></p><p>  g_LCDday = g_day;</p><p>  disp

63、layField(e_day);</p><p><b>  }</b></p><p>  if(g_hou != g_LCDhou)</p><p><b>  {</b></p><p>  g_LCDhou = g_hou;</p><p>  displayFiel

64、d(e_hou);</p><p><b>  }</b></p><p>  if(g_min != g_LCDmin)</p><p><b>  {</b></p><p>  g_LCDmin = g_min;</p><p>  displayField(e_min

65、);</p><p><b>  }</b></p><p>  if(g_sec != g_LCDsec)</p><p><b>  {</b></p><p>  g_LCDsec = g_sec;</p><p>  displayField(e_sec);</

66、p><p><b>  }</b></p><p><b>  }</b></p><p>  void changeClock()</p><p><b>  {</b></p><p>  uchar count = 0;</p><

67、p>  uchar key;</p><p><b>  TR0 = 0;</b></p><p>  initCousorXY();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p> 

68、 refreshPage();</p><p><b>  key = 0;</b></p><p>  writeCmd(0x0E);//顯示,開光標(biāo)并閃爍</p><p>  moveCousor(g_cousorx[count],g_cousory[count]);</p><p>  key = keydown(

69、);</p><p>  if(key == 2)</p><p><b>  {</b></p><p><b>  count ++;</b></p><p><b>  }</b></p><p>  if(key == 3)</p>

70、<p><b>  {</b></p><p>  addClkField(count);</p><p><b>  }</b></p><p>  if(key == 4)</p><p><b>  {</b></p><p>  su

71、bClkField(count);</p><p><b>  }</b></p><p>  writeCmd(0x0c);//關(guān)光標(biāo)</p><p>  if(count >= 6)</p><p><b>  break;</b></p><p><b&g

72、t;  }</b></p><p><b>  TR0 = 1;</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  uchar mode

73、= 0;//0:顯示Logo,1:顯示時(shí)間</p><p>  uchar i = 0;</p><p>  uchar movelen;</p><p>  uchar logo[] = " welcome!";</p><p>  uchar move[] = "Tt could be better,b

74、ut I'm busy."; //貌似最長只能40字節(jié)</p><p>  //uchar move[] = "(*^_^*)";</p><p>  movelen = sizeof(move)-1;</p><p>  setDateTime(2013,9,12,18,23,14);</p><p>

75、  LCDinit();</p><p>  LCDclear();</p><p>  showLogo(logo);</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  switch(keydown())<

76、;/p><p><b>  {</b></p><p>  case 1: mode = ! mode;</p><p>  if(mode == 1)</p><p><b>  {</b></p><p>  showClock();</p><p>

77、<b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  showLogo(logo);</p><p><b>  }</b></p><p><b&

78、gt;  break;</b></p><p>  case 2:if(mode == 1)</p><p><b>  {</b></p><p>  changeClock();</p><p><b>  }</b></p><p><b> 

79、 break;</b></p><p>  default: break;</p><p><b>  }</b></p><p>  if(mode == 1)</p><p>  refreshPage();</p><p><b>  else</b><

80、;/p><p><b>  {</b></p><p>  displayStr(move,1,15-i);</p><p>  displayStr(" ",1,15+movelen-i);</p><p><b>  }</b></p><p><b

溫馨提示

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

評論

0/150

提交評論