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

下載本文檔

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

文檔簡介

1、<p><b>  單片機(jī)課程綜合設(shè)計(jì)</b></p><p><b>  設(shè)計(jì)題目:</b></p><p>  基于單片機(jī)的秒表設(shè)計(jì)</p><p><b>  學(xué) 號: </b></p><p><b>  姓 名: </b></

2、p><p>  班 級 : 電氣 </p><p>  提交日期 : </p><p><b>  信息與電氣工程學(xué)院</b></p><p><b>  目錄</b></p><p>&

3、lt;b>  1 概述5</b></p><p>  1.1 基本要求:5</p><p>  2 系統(tǒng)總體方案及硬件設(shè)計(jì)6</p><p>  2.1系統(tǒng)總體方案6</p><p>  2.2硬件電路設(shè)計(jì)7</p><p> ?。?)單片機(jī)簡介7</p><p>

4、;<b> ?。?)電源電路8</b></p><p> ?。?)晶體振蕩電路8</p><p><b>  (4)復(fù)位電路8</b></p><p><b> ?。?)顯示電路9</b></p><p> ?。?)鍵盤電路10</p><p>

5、;<b>  3 軟件設(shè)計(jì)11</b></p><p>  3.1軟件設(shè)計(jì)概述11</p><p>  3.2程序流程圖12</p><p>  Proteus軟件仿真14</p><p>  4.1軟件功能簡介15</p><p>  4.2 Proteus運(yùn)行流程16</p&

6、gt;<p>  5課程設(shè)計(jì)體會18</p><p><b>  課程小結(jié)19</b></p><p>  附1 源程序代碼21</p><p><b>  摘要</b></p><p>  本設(shè)計(jì)是一個利用單片機(jī)控制的多功能秒表系統(tǒng),它是基于51系列的單片機(jī)進(jìn)行的系統(tǒng)設(shè)計(jì)。它

7、采用STC12C52A60S2單片機(jī)為中心器件,利用其定時器/計(jì)數(shù)器定時和記數(shù)的原理,結(jié)合顯示電路、電源電路、LED數(shù)碼管以及鍵盤電路來設(shè)計(jì)計(jì)時器。將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠?qū)崿F(xiàn)四位LED顯示,最大顯示時間為9分59.9秒,每毫秒自動加1,一個開始暫停按鍵、一個復(fù)位按鍵。其突出的優(yōu)點(diǎn):體積小、場外作業(yè)、功耗最低、宜用電池作為電源、硬件結(jié)構(gòu)緊湊、簡單和軟件設(shè)計(jì)靈活.</p><p>  當(dāng)今時代,是一個

8、新技術(shù)層出不窮的時代。在電子領(lǐng)域,尤其是自動化智能控制領(lǐng)域,傳統(tǒng)的分立元件或數(shù)字邏輯電路構(gòu)成的控制系統(tǒng)正以前所未見的速度被單片機(jī)智能控制系統(tǒng)所取代。單片機(jī)具有體積小、功能強(qiáng)、成本低、應(yīng)用面廣等優(yōu)點(diǎn),可以說,智能控制與自動控制的核心就是單片機(jī)。單片機(jī)的出現(xiàn)是現(xiàn)代科技發(fā)展的一個重要的里程碑。由于單片機(jī)的集成度高、功能強(qiáng),通用性好,特別是它具有體積下、重量輕、能耗低、價格便宜等優(yōu)點(diǎn),使單片機(jī)迅速得到推廣應(yīng)用,目前已成為測量控制應(yīng)用系統(tǒng)中的優(yōu)選

9、機(jī)種和新電子產(chǎn)品的關(guān)鍵部件。</p><p>  關(guān)鍵字:單片機(jī),多功能秒表 </p><p><b>  一、概述</b></p><p>  1.1 基本要求:</p><p>  設(shè)計(jì)一個秒表,用4位的LED數(shù)碼管顯示時間,從00:00秒到59:59秒,然后利用2個按鍵來控制:按鍵1開始/暫停,按鍵2 歸零。

10、</p><p><b>  發(fā)揮部分:</b></p><p>  1、利用8位LED數(shù)碼管,顯示年月日時分秒,要求單片機(jī)掉電重啟時,不影響時間計(jì)時??蛇x用RTC芯片配合鈕扣電池,簡化設(shè)計(jì)。</p><p>  2、將時間轉(zhuǎn)換為ASCII碼,以9600 bps輸出,與/由PC機(jī)進(jìn)行同步。</p><p>  二、系統(tǒng)總

11、體方案及硬件設(shè)計(jì)</p><p><b>  2.1系統(tǒng)總體方案</b></p><p>  本系統(tǒng)采用STC12C52A60S2單片機(jī)為中心器件,利用其定時器/計(jì)數(shù)器定時和記數(shù)的原理,結(jié)合硬件電路如電源電路,晶振電路,復(fù)位電路,顯示電路,以及一些按鍵電路等來設(shè)計(jì)計(jì)時器,將軟、硬件有機(jī)地結(jié)合起來。其中軟件系統(tǒng)采用匯編語言編寫程序,包括顯示程序,計(jì)數(shù)程序,中斷,硬件系統(tǒng)

12、利用PROTEUS強(qiáng)大的功能來實(shí)現(xiàn),簡單切易于觀察,在仿真中就可以觀察到實(shí)際的工作狀態(tài)。</p><p><b>  系統(tǒng)電路原理圖</b></p><p><b>  2.2硬件電路設(shè)計(jì)</b></p><p>  本系統(tǒng)中,硬件電路主要有電源電路,晶振電路,復(fù)位電路,顯示電路,以及一些按鍵電路等,本設(shè)計(jì)數(shù)碼管采用共陽極

13、四位數(shù)碼管,總體電路圖下</p><p><b> ?。?)單片機(jī)簡介</b></p><p>  本系統(tǒng)設(shè)計(jì)采用STC12C52A60S2單片機(jī)。</p><p>  STC12C52A60S2是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,高性能CMOS8位微處理器。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS

14、-51指令集和輸出管腳相兼容(由于在微機(jī)原理中學(xué)過C-51的具體知識,這里不再詳細(xì)說明)。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的STC12C52A60S2是一種高效的微控制器。</p><p><b> ?。?)電源電路</b></p><p>  電源電路是系統(tǒng)最基本的部分,任何電路都離不開電源部分,由于三端集成穩(wěn)壓器件所組成的穩(wěn)壓電源線路

15、簡單,性能穩(wěn)定,工作可靠,調(diào)整方便,已逐漸取代分立元件,在生產(chǎn)中被廣泛采用,由于是小系統(tǒng),我們采用7809電源提供+5V穩(wěn)壓電壓。</p><p><b> ?。?)晶體振蕩電路</b></p><p>  MCS--51單片機(jī)內(nèi)部的振蕩電路是一個高增益反相放大器,引線 XTAL1和XTAL2分別為反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入和來自反向振蕩器的輸出,該

16、反向放大器可以配置為片內(nèi)振蕩器。</p><p>  這里,我們選用51單片機(jī)12MHZ的內(nèi)部振蕩方式,電容器C1,C2起穩(wěn)定振蕩頻率,快速起振的作用,C1和C2可在20-100PF之間取,這里取30P,接線時要使晶體振蕩器X1盡可能接近單片機(jī)。</p><p><b> ?。?)復(fù)位電路</b></p><p>  采用上電+按鍵復(fù)位電路,上

17、電后,由于電容充電,使RST持續(xù)一段高電平時間。當(dāng)單片機(jī)已在運(yùn)行之中時,按下復(fù)位鍵也能使用使RST持續(xù)一段時間的高電平,從而實(shí)現(xiàn)上電加開關(guān)復(fù)位的操作。這不僅能使單片機(jī)復(fù)位,而且還能使</p><p>  單片機(jī)的外圍芯片也同時復(fù)位。當(dāng)程序出現(xiàn)錯誤時,可以隨時使電路復(fù)位。</p><p> ?。?)顯示電路 </p><p>  顯示電路既可以選用液晶顯示

18、器,也可以選用數(shù)碼管顯示。我們采用的是數(shù)碼管顯示電路。用4個共陽極LED顯示,LED是七段式顯示器,內(nèi)部有7個條形發(fā)光二極管和1個小圓點(diǎn)發(fā)光二極管組成,根據(jù)各管的亮暗組合成字符。</p><p>  在用數(shù)碼管顯示時,我們有靜態(tài)和動態(tài)兩種選擇,靜態(tài)顯示程序簡單,顯示穩(wěn)定,但是占用端口比較多;動態(tài)顯示所使用的端口比較少,可以節(jié)省單片機(jī)的I/O口。</p><p>  在設(shè)計(jì)中,我們采用LED

19、動態(tài)顯示,用P0口驅(qū)動顯示。由于數(shù)碼管使用的是共陽極,我們使用增強(qiáng)型51單片機(jī)具有的強(qiáng)推萬挽模式,能夠滿足較大輸出電流驅(qū)動數(shù)碼管的要求。</p><p><b>  電路圖如下所示:</b></p><p><b> ?。?)鍵盤電路</b></p><p>  在按鍵電路中,我們可以在I/O口上直接接按鍵,或者通過I/O

20、口設(shè)計(jì)一個鍵盤,然后通過鍵盤掃描程序判斷是否有鍵按下等。鍵盤掃描電路節(jié)省I/O口,但編程有些復(fù)雜,在這里,由于我們所用的按鍵較少,且系統(tǒng)是一個小系統(tǒng),有足夠的I/O口可以使用,為了使程序簡化,我們采用按鍵電路,用部分P1口做開關(guān),P1.0啟動,P1.1清零,電路圖如下所示</p><p><b>  三、 軟件設(shè)計(jì)</b></p><p><b>  3.1

21、軟件設(shè)計(jì)概述</b></p><p>  在軟件設(shè)計(jì)中,一般采用模塊化的程序設(shè)計(jì)方法,它具有明顯的優(yōu)點(diǎn)。把一個多功能的復(fù)雜的程序劃分為若干個簡單的、功能單一的程序模塊,有利于程序的設(shè)計(jì)和調(diào)試,有利于程序的優(yōu)化和分工,提高了程序的閱讀性和可靠性,使程序的結(jié)構(gòu)層次一目了然。</p><p>  應(yīng)用系統(tǒng)的程序由包含多個模塊的主程序和各種子程序組成。各程序模塊都要完成一個明確的任務(wù),

22、實(shí)現(xiàn)某個具體的功能,如:加計(jì)數(shù)、暫停、清零,顯示等,在具體需要時調(diào)用相應(yīng)的模塊即可。</p><p>  功能描述:用4位LED數(shù)碼顯示"秒表",顯示時間為00~9分59.9秒,每秒自動加1;一個"開始"鍵,一個"復(fù)位"鍵,一個"清零"鍵。</p><p><b>  3.2程序流程圖</b&g

23、t;</p><p><b>  定時中斷</b></p><p>  四、 Proteus軟件仿真</p><p><b>  4.1軟件功能簡介</b></p><p>  Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿

24、真、分析(SPICE)各種模擬器件和集成電路。</p><p><b>  該軟件的特點(diǎn)是:</b></p><p>  (1)全部滿足我們提出的單片機(jī)軟件仿真系統(tǒng)的標(biāo)準(zhǔn),并在同類產(chǎn)品中具有明顯的優(yōu)勢。</p><p> ?。?)具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS-232動態(tài)仿真、I2 C調(diào)試器、SPI調(diào)試

25、器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。</p><p> ?。?)目前支持的單片機(jī)類型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。</p><p> ?。?)支持大量的存儲器和外圍芯片。</p><p>  總之,該

26、軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大 ,可仿真ARM、51、AVR、PIC。</p><p>  Proteus啟動畫面:</p><p>  4.2 Proteus運(yùn)行流程</p><p>  Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面,如圖所示。</p><p>  包括:標(biāo)題欄、主菜單、

27、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口。</p><p>  運(yùn)行Proteus程序后,進(jìn)入軟件的主界面。通過左側(cè)工具欄中的P(從庫中選擇元件命令)命令,在Pick Devices 左側(cè)窗口中選擇所需元件的關(guān)鍵字,然后放置元件并調(diào)整方向和位置以及參數(shù)設(shè)置,最后進(jìn)行連線。</p><p><b>

28、  運(yùn)行圖如下:</b></p><p><b>  初始狀態(tài)</b></p><p><b>  中間狀態(tài)</b></p><p><b>  最終狀態(tài)</b></p><p>  經(jīng)過protues仿真,實(shí)現(xiàn)了題目的要求,并且增加了擴(kuò)展部分單片機(jī)與電腦通信授時的

29、任務(wù)。并且經(jīng)過測試硬件運(yùn)行穩(wěn)定,秒表計(jì)時時間精確。完成了設(shè)計(jì)題目的全部內(nèi)容。</p><p><b>  五、課程設(shè)計(jì)體會</b></p><p>  課程設(shè)計(jì)是培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實(shí)際問題,鍛煉實(shí)踐能力的重要環(huán)節(jié),是對學(xué)生實(shí)際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機(jī)已經(jīng)成為當(dāng)今計(jì)算機(jī)應(yīng)用中空前活躍的領(lǐng)域,在生活中可

30、以說得是無處不在。因此作為二十一世紀(jì)的大學(xué)來說掌握單片機(jī)的開發(fā)技術(shù)是十分重要的。</p><p>  回顧起此次單片機(jī)課程設(shè)計(jì),仍感慨頗多,的確,從選題到定稿,從理論到實(shí)踐,在接近四星期的日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西,同時不僅可以鞏固了以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次課程設(shè)計(jì)使我們懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)

31、的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固,比如說不懂一些元器件的使用方法,對單片機(jī)匯編語言掌握得不好……通過這次課程設(shè)計(jì)之后,一定把以前所學(xué)過的知識重新溫故。</p><p

32、>  在做課程設(shè)計(jì)的日子里得到了老師的悉心指導(dǎo)和同學(xué)的幫助,在此向他們致以誠摯的謝意。感謝提供相關(guān)技術(shù)幫助的老師和同學(xué),你們的支持和鼓勵使我們對這次的設(shè)計(jì)完成有了信心和動力,在此深表謝意。</p><p><b>  課程小結(jié)</b></p><p>  通過這兩周程設(shè)計(jì),我對一些專業(yè)知識和電子設(shè)計(jì)有了更深的</p><p>  了解,同

33、時也嘗試著去應(yīng)用自己的所掌握的知識。本次電子課程設(shè)計(jì)主要是對已學(xué)習(xí)的模擬電子技術(shù)、數(shù)字電子技術(shù)和單片機(jī)的綜合應(yīng)用,同時加上電路等知識,設(shè)計(jì)完成了利用軟件模擬的秒表。經(jīng)過幾天的奮戰(zhàn),我感受很深. </p><p>  我們一小組四個人一塊兒討論設(shè)計(jì)了此次試驗(yàn),在設(shè)計(jì)過程中深感自己在培養(yǎng)動手能力這方面還需很大的努力。同時,通過這次我們積極的通過網(wǎng)絡(luò),書籍等資源,在同學(xué)的幫助下,把這個課程設(shè)計(jì)作為一次鍛煉,為

34、以后生活學(xué)習(xí)中培養(yǎng)善于動手,樂于動手的習(xí)慣。 單片機(jī)課程設(shè)計(jì)不僅給我們提供了一個良好的應(yīng)用自己所掌握的知識的平臺,又是檢驗(yàn)自己所學(xué)知識的一次考核。 我們運(yùn)用各自在各方面的優(yōu)勢中和起來,形成了一個團(tuán)隊(duì).通過團(tuán)隊(duì)力量,才使設(shè)計(jì)得以完成.可以說,我們?nèi)齻€人是一個不可或缺的整體,少了任何一個人都是無法完成任務(wù)的。在設(shè)計(jì)的過程中我們也不可避免的遇到了很多的問題。尤其是在調(diào)試過程中,會因?yàn)槟承┰虺霾粊斫Y(jié)果,或三個人之間出現(xiàn)了意

35、見分歧,但在最后都達(dá)成一致。通過這次的課程設(shè)計(jì),我們也發(fā)現(xiàn)了不少自己不會的知識,通過查詢各方面資料,我們也進(jìn)步了很多,有學(xué)會了很多上課時沒掌握的東西, 最后在調(diào)試結(jié)果出來后,我們更是無比的興奮,無比的自豪??傊?通過這次電子課程設(shè)計(jì),我不僅對自己的知識有了更好的掌握和應(yīng)用,更了解到團(tuán)隊(duì)精神的力量.在以后的學(xué)習(xí)和生活中受用終身。</p><p><b>  參考文獻(xiàn)</b></

36、p><p>  [1] 余發(fā)山主編.單片機(jī)原理及應(yīng)用技術(shù).徐州:中國礦業(yè)大學(xué)出版社.2003.76-94,152-157</p><p>  [2] 楊凌霄編著.微型計(jì)算機(jī)原理及應(yīng)用.徐州:中國礦業(yè)大學(xué)出版社,2004.36-52</p><p><b>  附1 源程序代碼</b></p><p>  #includ

37、e<STC12C5A.h></p><p>  #include<intrins.h></p><p>  #define duan P0//段選</p><p>  #define wei1 P1//計(jì)時器位選,只接前四口</p><p>  #define wei2 P2//年月日位選</p><

38、;p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit start=P3^2;//開始按鈕</p><p>  sbit reset=P3^3;//暫停復(fù)位按鈕</p><p>  sbit DSIO=P3^4;//ds130

39、2 DSIO接口</p><p>  sbit RET=P3^5;//ds1302 RET接口</p><p>  sbit SCLK=P3^6;//ds1302 SCLK接口</p><p>  sbit date=P3^7;//日期時間轉(zhuǎn)換按鈕</p><p>  void DigDisplay();</p><p&g

40、t;  void delays(unsigned ms);</p><p>  void Ds1302Write(uchar addr, uchar dat);</p><p>  uchar Ds1302Read(uchar addr);</p><p>  void Ds1302Init();</p><p>  void Ds1302R

41、eadTime();</p><p>  void UsartConfiguration();</p><p>  unsigned char code duanxuan[21] = {</p><p>  0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,</p><p>  0x80,0x90,0x40,0x

42、79,0x24,0x30,0x19,0x12,</p><p>  0x02,0x78,0x00,0x10,0xbf};//段選{0,1,3,4,5,6,7,8,9,0.,1.,2.,3.,4.,5.,6.,7.,8.,9.,-}</p><p>  //---DS1302寫入和讀取時分秒的地址命令---//</p><p>  unsigned char code

43、 weixuan[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};</p><p>  //---秒分時日月周年 最低位讀寫位;-------//</p><p>  uchar code READ_RTC_ADDR[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; </p><p

44、>  uchar code WRITE_RTC_ADDR[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};</p><p>  //---DS1302時鐘初始化2013年1月1日星期二12點(diǎn)00分00秒。---//</p><p>  //---存儲順序是秒分時日月周年,存儲格式是用BCD碼---//</p><p&

45、gt;  uchar TIME[7] = {0, 0x30, 0x16, 0x21, 0x12, 0x01, 0x15};</p><p>  unsigned char second[4]={0};</p><p>  unsigned char clock[8]={0};</p><p>  unsigned char i=0;</p><p

46、>  void main()</p><p><b>  {</b></p><p>  unsigned char c;</p><p>  char flag=1;</p><p>  bit temp=1;</p><p>  //unsigned char receiveData[

47、15]={0};</p><p>  Ds1302Init();</p><p>  UsartConfiguration();</p><p>  TMOD=0x21;</p><p><b>  TL0=0xF0;</b></p><p><b>  TH0=0xD8;</b&

48、gt;</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  if(tem

49、p==1)</p><p><b>  {</b></p><p>  Ds1302ReadTime();</p><p>  clock[0] = TIME[2]/16; //時</p><p>  clock[1] = TIME[2]&0x0f; </p><p>  clo

50、ck[2] = 20;</p><p>  clock[3] = TIME[1]/16; //分</p><p>  clock[4] = TIME[1]&0x0f;</p><p>  clock[5] = 20;</p><p>  clock[6] = TIME[0]/16; //秒</p><p> 

51、 clock[7] = TIME[0]&0x0f;</p><p><b>  }</b></p><p>  else if(temp==0)</p><p><b>  {</b></p><p>  Ds1302ReadTime();</p><p>  clo

52、ck[0] = 2; //年</p><p>  clock[1] = 0; </p><p>  clock[2] = TIME[6]/16;</p><p>  clock[3] = (TIME[6]&0x0f)+10;</p><p>  clock[4] = TIME[4]/16;</p><p>

53、  clock[5] = (TIME[4]&0x0f)+10;</p><p>  clock[6] = TIME[3]/16;</p><p>  clock[7] = (TIME[3]&0x0f)+10;</p><p><b>  }</b></p><p>  DigDisplay();

54、</p><p>  if(date==0)</p><p><b>  {</b></p><p>  delays(1);</p><p>  if(date==0) {temp=~temp; while(!date) DigDisplay();}</p><p><b>  }&l

55、t;/b></p><p>  DigDisplay();</p><p>  if(start==0)</p><p><b>  {</b></p><p>  delays(1);</p><p>  if(start==0) {TR0=1; flag=1; while(!start)

56、 DigDisplay();}</p><p><b>  }</b></p><p>  DigDisplay();</p><p>  if(flag==0)</p><p><b>  {</b></p><p>  if(reset==0)</p>&l

57、t;p><b>  {</b></p><p>  delays(1);</p><p>  if(reset==0)</p><p><b>  {</b></p><p><b>  i=0;</b></p><p>  second[0]=0

58、;</p><p>  second[1]=0;</p><p>  second[2]=0;</p><p>  second[3]=0;</p><p><b>  TL0=0xF0;</b></p><p><b>  TH0=0xD8;</b></p>

59、<p>  while(!reset) DigDisplay();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if(flag==1)</p>&l

60、t;p><b>  {</b></p><p>  if(reset==0)</p><p><b>  {</b></p><p>  delays(1);</p><p>  if(reset==0) {TR0=0; flag=0; while(!reset) DigDisplay();}

61、</p><p><b>  }</b></p><p><b>  }</b></p><p>  DigDisplay();</p><p>  if(RI == 1)//查看是否接收到數(shù)據(jù)</p><p><b>  {</b></p>

62、;<p>  for(c=0;c<15;c++)</p><p><b>  {</b></p><p>  //receiveData[i] = SBUF;//讀取數(shù)據(jù)</p><p><b>  //RI = 0;</b></p><p><b>  }//清除標(biāo)

63、志位</b></p><p>  //second[1]=receiveData[5];</p><p>  /*TIME[1]=(receiveData[11]-0x30)*0x10+(receiveData[12]-0x30);</p><p>  TIME[2]=(receiveData[9]-0x30)*0x10+(receiveData[10]

64、-0x30);</p><p>  TIME[3]=(receiveData[6]-0x30)*0x10+(receiveData[7]-0x30);</p><p>  TIME[4]=(receiveData[4]-0x30)*0x10+(receiveData[5]-0x30);</p><p>  TIME[6]=(receiveData[2]-0x30)*

65、0x10+(receiveData[3]-0x30); */</p><p>  //Ds1302Init();</p><p><b>  }</b></p><p>  //DigDisplay();</p><p><b>  }</b></p><p><b&g

66、t;  }</b></p><p>  void DigDisplay()</p><p><b>  {</b></p><p>  unsigned char k;</p><p>  unsigned int j;</p><p>  for(k=0;k<4;k++)<

67、;/p><p><b>  {</b></p><p>  P1M0=0xff;</p><p>  wei1 = weixuan[k]; //發(fā)送位選</p><p>  duan = duanxuan[second[k]]; //發(fā)送段碼</p><p>  j = 2000; //掃

68、描間隔時間設(shè)定</p><p>  while(j--);</p><p>  duan = 0xff;//消隱</p><p>  P1M0=0x00;</p><p><b>  }</b></p><p>  for(k=0;k<8;k++)</p><p>&

69、lt;b>  {</b></p><p>  P2M0=0xff;</p><p>  wei2 = weixuan[k]; //發(fā)送位選</p><p>  duan = duanxuan[clock[k]]; //發(fā)送段碼</p><p>  j = 2000; //掃描間隔時間設(shè)定</p&g

70、t;<p>  while(j--);</p><p>  duan = 0xff;//消隱</p><p>  P2M0=0x00;</p><p><b>  } </b></p><p><b>  }</b></p><p>  void delays

71、(unsigned ms)</p><p>  {int j,k;</p><p>  for(j=0;j<ms;j++)</p><p><b>  {</b></p><p>  for(k=0;k<100;k++);</p><p><b>  }</b>

72、</p><p><b>  }</b></p><p>  void T0_INT()interrupt 1</p><p><b>  {</b></p><p><b>  TL0=0xF0;</b></p><p><b>  TH0=

73、0xD8;</b></p><p><b>  i++;</b></p><p>  if(i==500)</p><p><b>  {</b></p><p><b>  i=0;</b></p><p>  second[0]=seco

74、nd[0]+1;</p><p><b>  }</b></p><p>  if(second[0]==10)</p><p><b>  {</b></p><p>  second[1]=second[1]+1;</p><p>  second[0]=0;</p

75、><p><b>  }</b></p><p>  if(second[1]==6)</p><p><b>  {</b></p><p>  second[2]=second[2]+1;</p><p>  second[1]=0;</p><p>

76、<b>  }</b></p><p>  if(second[2]==10)</p><p><b>  {</b></p><p>  second[3]=second[3]+1;</p><p>  second[2]=0;</p><p><b>  }&l

77、t;/b></p><p><b>  }</b></p><p>  void Ds1302Write(uchar addr, uchar dat)</p><p><b>  {</b></p><p><b>  uchar n;</b></p>&l

78、t;p><b>  RET = 0;</b></p><p><b>  _nop_();</b></p><p>  SCLK = 0;//先將SCLK置低電平。</p><p><b>  _nop_();</b></p><p>  RET = 1; //然后將RE

79、T(CE)置高電平。</p><p><b>  _nop_();</b></p><p>  for (n=0; n<8; n++)//開始傳送八位地址命令</p><p><b>  {</b></p><p>  DSIO = addr & 0x01;//數(shù)據(jù)從低位開始傳送<

80、;/p><p>  addr >>= 1;</p><p>  SCLK = 1;//數(shù)據(jù)在上升沿時,DS1302讀取數(shù)據(jù)</p><p><b>  _nop_();</b></p><p><b>  SCLK = 0;</b></p><p><b>

81、  _nop_();</b></p><p><b>  }</b></p><p>  for (n=0; n<8; n++)//寫入8位數(shù)據(jù)</p><p><b>  {</b></p><p>  DSIO = dat & 0x01;</p><

82、p>  dat >>= 1;</p><p>  SCLK = 1;//數(shù)據(jù)在上升沿時,DS1302讀取數(shù)據(jù)</p><p><b>  _nop_();</b></p><p><b>  SCLK = 0;</b></p><p><b>  _nop_();<

83、;/b></p><p><b>  }</b></p><p>  RET = 0;//傳送數(shù)據(jù)結(jié)束</p><p><b>  _nop_();</b></p><p><b>  }</b></p><p>  /*************

84、******************************************************************</p><p>  * 函 數(shù) 名 : Ds1302Read</p><p>  * 函數(shù)功能 : 讀取一個地址的數(shù)據(jù)</p><p>  * 輸 入 : addr</p>

85、<p>  * 輸 出 : dat</p><p>  *******************************************************************************/</p><p>  uchar Ds1302Read(uchar addr)</p><p><b>  {

86、</b></p><p>  uchar n,dat,dat1;</p><p><b>  RET = 0;</b></p><p><b>  _nop_();</b></p><p>  SCLK = 0;//先將SCLK置低電平。</p><p><

87、b>  _nop_();</b></p><p>  RET = 1;//然后將RET(CE)置高電平。</p><p><b>  _nop_();</b></p><p>  for(n=0; n<8; n++)//開始傳送八位地址命令</p><p><b>  {</b&g

88、t;</p><p>  DSIO = addr & 0x01;//數(shù)據(jù)從低位開始傳送</p><p>  addr >>= 1;</p><p>  SCLK = 1;//數(shù)據(jù)在上升沿時,DS1302讀取數(shù)據(jù)</p><p><b>  _nop_();</b></p><p&g

89、t;  SCLK = 0;//DS1302下降沿時,放置數(shù)據(jù)</p><p><b>  _nop_();</b></p><p><b>  }</b></p><p><b>  _nop_();</b></p><p>  for(n=0; n<8; n++)//讀

90、取8位數(shù)據(jù)</p><p><b>  {</b></p><p>  dat1 = DSIO;//從最低位開始接收</p><p>  dat = (dat>>1) | (dat1<<7);</p><p><b>  SCLK = 1;</b></p>&l

91、t;p><b>  _nop_();</b></p><p>  SCLK = 0;//DS1302下降沿時,放置數(shù)據(jù)</p><p><b>  _nop_();</b></p><p><b>  }</b></p><p><b>  RET = 0;&l

92、t;/b></p><p>  _nop_();//以下為DS1302復(fù)位的穩(wěn)定時間,必須的。</p><p><b>  SCLK = 1;</b></p><p><b>  _nop_();</b></p><p><b>  DSIO = 0;</b></

93、p><p><b>  _nop_();</b></p><p><b>  DSIO = 1;</b></p><p><b>  _nop_();</b></p><p>  return dat;</p><p><b>  }</b

94、></p><p>  /*******************************************************************************</p><p>  * 函 數(shù) 名 : Ds1302Init</p><p>  * 函數(shù)功能 : 初始化DS1302.</p><

95、p>  * 輸 入 : 無</p><p>  * 輸 出 : 無</p><p>  *******************************************************************************/</p><p>  void Ds1302Init()</p&

96、gt;<p><b>  {</b></p><p><b>  uchar n;</b></p><p>  Ds1302Write(0x8E,0X00); //禁止寫保護(hù),就是關(guān)閉寫保護(hù)功能</p><p>  for (n=0; n<7; n++)//寫入7個字節(jié)的時鐘信號:分秒時日月周年&l

97、t;/p><p><b>  {</b></p><p>  Ds1302Write(WRITE_RTC_ADDR[n],TIME[n]);</p><p><b>  }</b></p><p>  Ds1302Write(0x8E,0x80); //打開寫保護(hù)功能</p><

98、;p><b>  }</b></p><p>  /*******************************************************************************</p><p>  * 函 數(shù) 名 : Ds1302ReadTime</p><p>  * 函數(shù)功能

99、: 讀取時鐘信息</p><p>  * 輸 入 : 無</p><p>  * 輸 出 : 無</p><p>  *******************************************************************************/</p><p>  

100、void Ds1302ReadTime()</p><p><b>  {</b></p><p><b>  uchar n;</b></p><p>  for (n=0; n<7; n++)//讀取7個字節(jié)的時鐘信號:分秒時日--月周年</p><p><b>  {</

101、b></p><p>  TIME[n] = Ds1302Read(READ_RTC_ADDR[n]);</p><p><b>  }</b></p><p><b>  }</b></p><p>  void UsartConfiguration()</p><p

102、><b>  {</b></p><p>  SCON=0X50;//設(shè)置為工作方式1</p><p>  PCON=0X80;//波特率加倍</p><p>  TH1=0XFA; //計(jì)數(shù)器初始值設(shè)置,注意波特率是9600的</p><p><b>  TL1=0XF3;<

103、/b></p><p>  TR1=1; //打開計(jì)數(shù)器</p><p><b>  }</b></p><p>  附2 系統(tǒng)原理圖</p><p>  小組成員:楊曉博 尹序鑫 羅恩勇 陳曉峰 </p><p>  小組各成員:討論并確定秒表要實(shí)現(xiàn)哪些功能 &

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論