2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩25頁(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><b>  課程設(shè)計(jì)</b></p><p>  題目:電子時(shí)鐘系統(tǒng)設(shè)計(jì)</p><p>  姓 名: </p><p>  院 系: 電子信息工程學(xué)院 </p><p>  時(shí)間: 2014 年12 月 25 日至 2015 年 1 月 5

2、日</p><p>  課 程 設(shè) 計(jì) 任 務(wù) 書</p><p>  題目 電子時(shí)鐘系統(tǒng)設(shè)計(jì) </p><p>  主要內(nèi)容、基本要求、主要參考資料等:</p><p><b>  一、主要內(nèi)容:</b></p><p> ?、?熟悉單

3、片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)方法和規(guī)范,達(dá)到綜合的目的。</p><p> ?、?學(xué)習(xí)文件檢索和查找數(shù)據(jù)手冊(cè)的能力。</p><p>  ③ 學(xué)習(xí)protel軟件的使用。</p><p>  ④ 學(xué)會(huì)整理和總結(jié)設(shè)計(jì)文檔報(bào)告。</p><p><b>  二、基本要求:</b></p><p> ?、?以MC

4、S-51系列單片機(jī)為核心,組成一個(gè)電子時(shí)鐘系統(tǒng)。</p><p> ?、?系統(tǒng)顯示由6位數(shù)碼管顯示組成,分別顯示時(shí)間值的十、分、秒。</p><p> ?、?能夠隨時(shí)對(duì)當(dāng)前時(shí)間進(jìn)行調(diào)整。 </p><p> ?、?能夠隨時(shí)輸入定時(shí)(鬧鐘)時(shí)間。</p><p> ?、?定時(shí)(鬧鐘)時(shí)間到,發(fā)出鬧鐘提醒信號(hào)。</p><p&

5、gt;  ⑥ 鬧鐘提醒信號(hào)的聲音為斷續(xù)形式,最長(zhǎng)不超過(guò)1分鐘。</p><p><b>  三、主要參考資料:</b></p><p> ?、?張毅坤等 單片微型計(jì)算機(jī)原理及應(yīng)用 西安 西安電子科技大學(xué)出版社</p><p> ?、?李建忠編著 單片機(jī)原理及應(yīng)用 西安 西安電子科技大學(xué)出版社</p><p&g

6、t;  完 成 期 限: </p><p>  指導(dǎo)教師簽名: </p><p>  課程負(fù)責(zé)人簽名: </p><p>  年 月 日</p><p><b>  目 錄</b></p><

7、;p>  1.總體設(shè)計(jì)方案1</p><p><b>  1.1設(shè)計(jì)原理1</b></p><p><b>  1.2設(shè)計(jì)思路1</b></p><p>  2.詳細(xì)設(shè)計(jì)方案2</p><p>  2.1硬件電路設(shè)計(jì)2</p><p>  2.2主程序設(shè)計(jì)2

8、</p><p>  2.3功能模塊的設(shè)計(jì)與實(shí)現(xiàn)2</p><p>  3.結(jié)果測(cè)試及分析8</p><p><b>  3.1結(jié)果測(cè)試8</b></p><p><b>  3.2結(jié)果分析8</b></p><p><b>  參考文獻(xiàn)9</b&g

9、t;</p><p><b>  附 錄 A10</b></p><p><b>  附 錄 B18</b></p><p><b>  附 錄 C19</b></p><p><b>  1.總體設(shè)計(jì)方案</b></p><

10、;p><b>  1.1設(shè)計(jì)原理</b></p><p>  根據(jù)課程設(shè)計(jì)任務(wù)書的內(nèi)容,要求實(shí)現(xiàn)在MCS51單片機(jī)上對(duì)數(shù)字電子鐘的基本功能設(shè)計(jì),對(duì)當(dāng)前時(shí)間正確顯示,并可根據(jù)需要對(duì)時(shí)間進(jìn)行更改,以完成時(shí)間的校對(duì)和鬧鐘的設(shè)置。</p><p>  時(shí)鐘時(shí)間以時(shí)、分、秒在6位數(shù)碼管上顯示,小時(shí)以24小時(shí)計(jì)時(shí)模式,分秒均為60進(jìn)位。用6MHz晶振產(chǎn)生振蕩脈沖,定時(shí)器進(jìn)行

11、秒計(jì)時(shí)。調(diào)整設(shè)置時(shí)間的過(guò)程運(yùn)用可編程鍵盤上的按鍵進(jìn)行控制,共設(shè)有5個(gè)按鍵,首先按鍵A進(jìn)入校時(shí)模式或E進(jìn)入鬧鐘模式,再分別按鍵B對(duì)小時(shí)或C分鐘進(jìn)行更改,每按鍵一次數(shù)碼管計(jì)數(shù)顯示加一,更改結(jié)束后按鍵D退出設(shè)置,時(shí)鐘正常顯示。鬧鐘時(shí)間到時(shí),蜂鳴器鳴響10秒后時(shí)鐘正常顯示。</p><p><b>  1.2設(shè)計(jì)思路</b></p><p>  采用C語(yǔ)言程序設(shè)計(jì)結(jié)合硬件電路

12、設(shè)計(jì)方法,利用Lab6000實(shí)驗(yàn)箱來(lái)實(shí)現(xiàn)數(shù)字電子鐘的設(shè)計(jì)。</p><p><b>  (1)提出方案</b></p><p>  根據(jù)設(shè)計(jì)要求,可將本次設(shè)計(jì)分為3個(gè)模塊進(jìn)行:</p><p>  時(shí)鐘顯示模塊:主要用于時(shí)間的正確顯示。</p><p>  校時(shí)模塊:此模塊用于時(shí)鐘的校對(duì),以完成用戶更改時(shí)間的需求。<

13、;/p><p>  鬧鐘模塊:用于實(shí)現(xiàn)鬧鐘的時(shí)間設(shè)置和定點(diǎn)鬧鈴的功能。</p><p><b>  (2)方案論證</b></p><p>  時(shí)鐘顯示模塊中,利用可編程定時(shí)器中斷進(jìn)行秒計(jì)時(shí),將時(shí)間顯示在6位數(shù)碼管上。校時(shí)模塊主要利用鍵盤上5個(gè)鍵的控制完成各項(xiàng)功能,并在數(shù)碼管上動(dòng)態(tài)顯示改變結(jié)果,完成設(shè)置后進(jìn)入時(shí)鐘顯示模塊。鬧鐘模塊的設(shè)置過(guò)程與校時(shí)模

14、塊相似,但設(shè)置完成進(jìn)入時(shí)間顯示模塊后則等待鬧鈴時(shí)間,到規(guī)定時(shí)間后,通過(guò)數(shù)碼管閃爍及蜂鳴器的鳴響來(lái)實(shí)現(xiàn)定點(diǎn)鬧鈴提醒功能。</p><p>  總設(shè)計(jì)原理框圖如下圖1-1所示:</p><p>  圖1-1 總設(shè)計(jì)原理框圖</p><p><b>  2.詳細(xì)設(shè)計(jì)方案</b></p><p><b>  2.1硬

15、件電路設(shè)計(jì)</b></p><p>  硬件電路由MCS51單片機(jī),可編程鍵盤,六位數(shù)碼管以及蜂鳴器四部分組成,如圖2-1所示。</p><p>  圖2-1 硬件電路連線圖</p><p>  MCS51單片機(jī)由CPU、振蕩器和時(shí)序電路、4KB程序存儲(chǔ)器、128字節(jié)數(shù)據(jù)存儲(chǔ)器、兩位16位定時(shí)器/計(jì)數(shù)器、64KB總線擴(kuò)展控制、可編程并行I/O、可編程全

16、雙工串行口組成。</p><p>  可編程鍵盤與數(shù)碼管經(jīng)過(guò)MC1314反向驅(qū)動(dòng)連接,做LED的位選通信號(hào),需將KEY/LED_CS接到響應(yīng)的地址譯碼器CS0上,位碼輸出的地址為8002H,段碼輸出地址為8004H,鍵盤行碼都會(huì)地址為8001H。</p><p>  音頻放大電路則通過(guò)P1_0口產(chǎn)生的脈沖產(chǎn)生不同頻率的聲音。</p><p><b>  2

17、.2主程序設(shè)計(jì)</b></p><p>  主程序主要用于系統(tǒng)初始化:設(shè)置定時(shí)器初值、工作方式等參數(shù),開啟中斷進(jìn)入時(shí)鐘顯示狀態(tài),等待定時(shí)器中斷。具體流程圖如圖2-2所示。</p><p>  2.3功能模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  根據(jù)上述電子鐘的設(shè)計(jì)原理與方案,軟件設(shè)計(jì)可分為以下幾個(gè)功能模塊實(shí)現(xiàn):</p><p> ?。?/p>

18、1)定時(shí)器模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  定時(shí)器模塊即定時(shí)器中斷服務(wù)子程序,完成刷新計(jì)時(shí)緩沖區(qū)的功能。系統(tǒng)使用6MHz的晶振。由于定時(shí)器工作在方式0時(shí)最大定時(shí)時(shí)間為不足1s,程序采用定時(shí)器與軟件循環(huán)相結(jié)合的定時(shí)方法。設(shè)定時(shí)器0工作在方式0,每隔100ms溢出中斷一次,則循環(huán)中斷10次延時(shí)時(shí)間是1s,以達(dá)到秒增加的效果。 </p><p>  程序運(yùn)行開始后,定時(shí)器中斷程序與其他子程序

19、并發(fā)執(zhí)行,在完成其他功能的過(guò)程中,時(shí)鐘也正常運(yùn)行,更大降低時(shí)鐘誤差。具體流程圖如圖2-3所示:</p><p>  圖2-2 主程序流程圖</p><p>  圖2-3 定時(shí)器“秒”計(jì)時(shí)模塊</p><p> ?。?)時(shí)鐘顯示模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  此模塊主要用于時(shí)鐘的顯示,六位數(shù)碼管以“時(shí)時(shí).分分.秒秒”顯示當(dāng)前時(shí)間,按鍵A輸

20、出“------”進(jìn)入校時(shí)模式,按鍵 E輸出已設(shè)定鬧鐘并進(jìn)入鬧鐘模式。 具體流程圖如圖2-4所示。</p><p>  圖2-4 時(shí)鐘顯示模塊</p><p>  (3)設(shè)置小時(shí)模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  設(shè)置小時(shí)模塊中,主要完成按鍵校時(shí)功能,每按一次B鍵,小時(shí)+1,并以“H-時(shí)時(shí)”在數(shù)碼管上顯示過(guò)程。可按鍵C進(jìn)入設(shè)置分鐘模塊,D鍵完成設(shè)置,時(shí)鐘正常顯示,

21、在設(shè)置小時(shí)模塊中,除B、C、D鍵,其他鍵均為無(wú)效操作。</p><p>  校時(shí)模塊和鬧鐘模塊都可以進(jìn)入設(shè)置小時(shí)模塊中,因此進(jìn)入模塊會(huì)自動(dòng)判別,如果鬧鐘設(shè)置標(biāo)志位alarm=0,時(shí)鐘小時(shí)變化,若alarm=1,則鬧鐘設(shè)置小時(shí)變化,最終調(diào)整到需要的數(shù)字為止。若alarm=1,完成設(shè)置后,將鬧鐘開啟標(biāo)志位alarm_on=1,表示鬧鐘為開啟狀態(tài),時(shí)鐘正常顯示,反之直接進(jìn)入時(shí)鐘顯示模塊。</p><

22、p>  運(yùn)用鍵盤的過(guò)程中,采用固定列逐行掃描的方式,判斷鍵位低電平時(shí),則按鍵按下,高電平時(shí)則為抬起。在校時(shí)過(guò)程中,需對(duì)按鍵是否抬起進(jìn)行判斷,用來(lái)避免因系統(tǒng)掃描過(guò)于頻繁,而導(dǎo)致的小時(shí)更改不受控制,僅當(dāng)按鍵抬起后小時(shí)加1。具體流程圖如圖2-5所示。</p><p> ?。?)設(shè)置分鐘模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  設(shè)置分鐘模塊中,主要完成按鍵校分功能,每按一次C鍵,分鐘+1,并以“

23、F-分分”在數(shù)碼管上顯示過(guò)程??砂存IB進(jìn)入設(shè)置分鐘模塊,D鍵完成設(shè)置,時(shí)鐘正常顯示,在設(shè)置分鐘模塊中,除B、C、D鍵,其他鍵均為無(wú)效操作。</p><p>  設(shè)置分鐘模塊的設(shè)計(jì)原理與設(shè)置小時(shí)模塊一致,故不在此詳細(xì)說(shuō)明。</p><p> ?。?)校時(shí)模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  校時(shí)模塊主要為選擇性模塊,用于用戶選擇進(jìn)入設(shè)置小時(shí)、設(shè)置分鐘和設(shè)置完成功能,由

24、時(shí)鐘顯示模塊中按鍵A進(jìn)入,顯示“------”表示可以進(jìn)行設(shè)置,按鍵B選擇進(jìn)入設(shè)置小時(shí)模塊,按鍵C選擇進(jìn)入設(shè)置分鐘模塊,按鍵D選擇完成設(shè)置,返回時(shí)鐘顯示模塊,時(shí)鐘正常顯示。具體流程圖如圖2-6所示。</p><p>  圖2-5 設(shè)置小時(shí)模塊</p><p>  (6)鬧鐘模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  鬧鐘模塊也為選擇性模塊,設(shè)計(jì)原理與校時(shí)模塊基本相似,用于

25、用戶選擇進(jìn)入設(shè)置小時(shí)、設(shè)置分鐘和設(shè)置完成功能,由時(shí)鐘顯示模塊中按鍵E進(jìn)入,顯示當(dāng)前鬧鐘時(shí)間表示可以進(jìn)行設(shè)置,按鍵B選擇進(jìn)入設(shè)置小時(shí)模塊,按鍵C選擇進(jìn)入設(shè)置分鐘模塊,按鍵D選擇完成設(shè)置,開啟鬧鐘,返回時(shí)鐘顯示模塊,時(shí)鐘正常顯示。具體流程圖如圖2-7所示。</p><p>  (7)時(shí)鐘模塊的設(shè)計(jì)與實(shí)現(xiàn)</p><p>  時(shí)鐘模塊為時(shí)鐘運(yùn)行的基本函數(shù),用于對(duì)時(shí)、分、秒確立正確的進(jìn)位聯(lián)系和循環(huán)

26、數(shù)值,當(dāng)鬧鐘時(shí)間到時(shí),數(shù)碼管閃爍字樣“AAAAAA”且蜂鳴器鳴響10秒鐘,隨后時(shí)鐘正常顯示,鬧鐘開啟標(biāo)志位設(shè)置為0,表示鬧鐘關(guān)閉,不為鬧鐘時(shí)間時(shí)鐘均正常顯示。具體流程圖如圖2-8所示。</p><p><b>  圖2-6 校時(shí)模塊</b></p><p><b>  圖2-7 鬧鐘模塊</b></p><p><b

27、>  圖2-8 鬧鐘模塊</b></p><p><b>  3.結(jié)果測(cè)試及分析</b></p><p>  3.1結(jié)果測(cè)試 </p><p>  程序開始時(shí)間默認(rèn)為00:00:00數(shù)碼管正常顯示,除A、E鍵均無(wú)效,按鍵A,數(shù)碼管顯示“------”進(jìn)

28、入校時(shí)模塊,按鍵B:數(shù)碼管顯示“H-01”,按鍵C:數(shù)碼管顯示“F-01”,此時(shí)除B、C、D鍵均無(wú)效,按鍵D:數(shù)碼管顯示“01:01:04”,時(shí)鐘正常顯示。</p><p>  此時(shí)按鍵E,數(shù)碼管顯示“00:00:00”進(jìn)入鬧鐘模塊,按鍵B:數(shù)碼管顯示“H-01”,按鍵C兩次:數(shù)碼管顯示“F-02”,此時(shí)除B、C、D鍵均無(wú)效,按鍵D:數(shù)碼管顯示“01:01:10”,時(shí)鐘正常顯示。此時(shí)按鍵E,數(shù)碼管靜態(tài)顯示“01:

29、02:00”,按鍵D:完成設(shè)置,正常顯示。等到數(shù)碼管顯示“01:02:00”時(shí),蜂鳴器鳴響,數(shù)碼管顯示“AAAAAA”,持續(xù)十秒鐘后數(shù)碼管顯示“01:02:11” ,時(shí)鐘正常顯示,時(shí)間第二次到鬧鐘時(shí)間期間無(wú)操作則鬧鐘無(wú)效,重新設(shè)置完成后即可啟動(dòng)。</p><p>  調(diào)節(jié)時(shí)間時(shí),按鍵不抬起數(shù)值不發(fā)生變化,數(shù)碼管無(wú)顯示,抬起后調(diào)節(jié)數(shù)值加一。</p><p><b>  3.2結(jié)果分

30、析</b></p><p>  對(duì)于上述的運(yùn)行結(jié)果和操作過(guò)程,達(dá)到了課程設(shè)計(jì)任務(wù)書中的要求,可通過(guò)不同按鍵完成校時(shí)功能,并解決了系統(tǒng)掃描太快而導(dǎo)致按一次鍵變多個(gè)數(shù)的問題。顯示過(guò)程也與其他功能不產(chǎn)生沖突,在設(shè)置過(guò)程中時(shí)鐘正常工作,避免了設(shè)置鬧鐘而導(dǎo)致時(shí)間不準(zhǔn)的問題。在按鍵過(guò)程中,特定狀態(tài)只有可用鍵產(chǎn)生效果,避免了其他鍵對(duì)結(jié)果的干擾。數(shù)碼管顯示清晰,不會(huì)出現(xiàn)閃爍或暗淡的狀況。此外還添加了鬧鐘功能,可根據(jù)用

31、戶需求設(shè)置,在需要時(shí)開啟,解決了鬧鐘每天都必須響的弊端。當(dāng)按鍵E時(shí)顯示當(dāng)前設(shè)置鬧鐘時(shí)間,防止用戶忘記設(shè)置鬧鐘為幾點(diǎn)而重新設(shè)置。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1]謝自美.電子線路設(shè)計(jì)實(shí)驗(yàn)測(cè)試[M].武漢:華中理工大學(xué)出版社,1992</p><p>  [2]何立民.單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空

32、航天大學(xué)出版社,1993</p><p>  [3]樓然笛.單片機(jī)開發(fā)[M].北京:人民郵電出版社,1994[4]付家才.單片機(jī)控制工程實(shí)踐技術(shù)[M].北京:化學(xué)工業(yè)出版社,2004[5]李光才.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[M].北京:北京航空航天大學(xué)出版社,2004</p><p>  [6]朱定華.單片機(jī)原理及接口技術(shù)實(shí)驗(yàn)[M].北京:北方交通大學(xué)出版社,2002</p>

33、<p>  [7]劉湘濤,江世明.單片機(jī)原理與應(yīng)用[M].北京:電子工業(yè)出版社,2006</p><p>  [8] 張毅坤,單片微型計(jì)算機(jī)原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,1998</p><p>  [9] 李建忠,單片機(jī)原理及應(yīng)用[M].西安:西安電子科技大學(xué)出版社,2002</p><p><b>  附 錄 A<

34、/b></p><p>  #include<reg51.h></p><p>  unsigned char xdata *p=0x8004; //8位段碼地址</p><p>  unsigned char xdata *q=0x8002; //8位位碼地址</p><p>  unsigned char h

35、our,min,sec,i=0;</p><p>  unsigned char a_hour=0,a_min=0,a_sec=0,alarm=0,alarm_on=0;</p><p>  unsigned char LED[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p>  unsig

36、ned char LED_point[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};</p><p>  unsigned char xdata *l=0x8002; //鍵盤列</p><p>  unsigned char xdata *h=0x8001; //鍵盤行</p><p>

37、  sbit P1_0=P1^0;</p><p>  //*****************************函數(shù)聲明******************************</p><p>  void Delay(unsigned char z); //延遲程序</p><p>  void timer();

38、 //秒計(jì)時(shí)器</p><p>  void led_time_display();</p><p>  void led_hour_display(); //設(shè)置小時(shí)顯示</p><p>  void led_min_display(); //設(shè)置分鐘顯示</p>

39、<p>  void led_alarm_display(); //設(shè)置鬧鐘顯示</p><p>  void setting();</p><p>  void clock();</p><p>  void alarm_clock();</p><p>  //*********************

40、********秒定時(shí)器******************************</p><p>  void timer()interrupt 1 using 1</p><p><b>  {</b></p><p>  TH0=-(50000/256);</p><p>  TL0=-(50000%256);&

41、lt;/p><p><b>  i++;</b></p><p><b>  if(i==10)</b></p><p><b>  {</b></p><p><b>  sec++;</b></p><p><b>  i

42、=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //****************************數(shù)碼管顯示*****************************</p><p>  void led_ti

43、me_display() //正常時(shí)間顯示</p><p><b>  {</b></p><p>  if((*h&0x0f)!=0x0f) //有鍵按下</p><p><b>  {</b></p&

44、gt;<p><b>  *l=0xfb;</b></p><p>  if((*h&0x0f)==0x07) //是否為'A'鍵:進(jìn)入時(shí)鐘設(shè)置模式</p><p><b>  {</b></p><p>  setting();</p>

45、<p><b>  }</b></p><p><b>  *l=0xf7;</b></p><p>  if((*h&0x0f)==0x0e) //是否為'E'鍵:進(jìn)入鬧鐘設(shè)置模式</p><p><b>  {</b></p&

46、gt;<p><b>  alarm=1;</b></p><p>  alarm_clock();</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  *q=0x20;</b><

47、/p><p>  *p=LED[hour/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x10;</b></p><p>  *p=LED_point[hour%10];</p><p><b>  Delay(6

48、);</b></p><p><b>  *q=0x08;</b></p><p>  *p=LED[min/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x04;</b></p><p&g

49、t;  *p=LED_point[min%10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x02;</b></p><p>  *p=LED[sec/10];</p><p><b>  Delay(6);</b></

50、p><p><b>  *q=0x01;</b></p><p>  *p=LED[sec%10];</p><p><b>  Delay(6);</b></p><p><b>  }</b></p><p>  //******************

51、**************************************************</p><p>  void led_alarm_display()</p><p><b>  {</b></p><p><b>  *q=0x20;</b></p><p>  *p=LED[

52、a_hour/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x10;</b></p><p>  *p=LED_point[a_hour%10];</p><p><b>  Delay(6);</b></p>

53、<p><b>  *q=0x08;</b></p><p>  *p=LED[a_min/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x04;</b></p><p>  *p=LED_point[a_m

54、in%10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x02;</b></p><p><b>  *p=0x3f;</b></p><p><b>  Delay(6);</b></p>

55、<p><b>  *q=0x01;</b></p><p><b>  *p=0x3f;</b></p><p><b>  Delay(6);</b></p><p><b>  }</b></p><p>  //************

56、********************************************************</p><p>  void led_hour_display() //設(shè)置小時(shí)</p><p><b>  {</b></p><p><b>  while(

57、1)</b></p><p><b>  {</b></p><p><b>  *l=0xfb;</b></p><p>  if((*h&0x0f)==0x0b) //是否為'B'鍵:小時(shí)+1;</p><p><b&

58、gt;  {</b></p><p><b>  *q=0x00;</b></p><p>  while((*h&0x0f)!=0x0f)</p><p><b>  {}</b></p><p>  if(alarm==0)</p><p><b

59、>  {</b></p><p><b>  hour++;</b></p><p>  if(hour==24)</p><p><b>  hour=0;</b></p><p><b>  }</b></p><p><b&

60、gt;  else</b></p><p><b>  {</b></p><p><b>  a_hour++;</b></p><p>  if(a_hour==24)</p><p><b>  a_hour=0;</b></p><p&g

61、t;<b>  }</b></p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0d) //是否為'C'鍵:進(jìn)入分鐘設(shè)置模式</p><p><b>  {</b></p><p>

62、  while((*h&0x0f)!=0x0d)</p><p><b>  {}</b></p><p>  led_min_display();</p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0e) //是

63、否為'D'鍵:完成設(shè)置</p><p><b>  {</b></p><p>  if(alarm==1)</p><p><b>  {</b></p><p><b>  alarm=0;</b></p><p>  alarm_o

64、n=1;</p><p><b>  }</b></p><p><b>  while(1)</b></p><p>  {clock();}</p><p><b>  }</b></p><p><b>  *q=0x08;</b&

65、gt;</p><p><b>  *p=0x76;</b></p><p><b>  Delay(6);</b></p><p><b>  *q=0x04;</b></p><p><b>  *p=0x40;</b></p><

66、p><b>  Delay(6);</b></p><p>  if(alarm==0)</p><p><b>  {</b></p><p><b>  *q=0x02;</b></p><p>  *p=LED[hour/10];</p><p&

67、gt;<b>  Delay(6);</b></p><p><b>  *q=0x01;</b></p><p>  *p=LED[hour%10];</p><p><b>  Delay(6);</b></p><p><b>  }</b><

68、/p><p><b>  else</b></p><p><b>  {</b></p><p><b>  *q=0x02;</b></p><p>  *p=LED[a_hour/10];</p><p><b>  Delay(6);<

69、;/b></p><p><b>  *q=0x01;</b></p><p>  *p=LED[a_hour%10];</p><p><b>  Delay(6);</b></p><p><b>  }</b></p><p><b&g

70、t;  }</b></p><p><b>  }</b></p><p>  //********************************************************************</p><p>  void led_min_display() //設(shè)置分鐘&l

71、t;/p><p><b>  {</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  *l=0xfb;</b></p><p>  if((*h&0x

72、0f)==0x0d) //是否為'C'鍵:分鐘+1</p><p><b>  {</b></p><p><b>  *q=0x00;</b></p><p>  while((*h&0x0f)!=0x0f)</p><p>&

73、lt;b>  {}</b></p><p>  if(alarm==0)</p><p><b>  {</b></p><p><b>  min++;</b></p><p>  if(min==60)</p><p><b>  min=0;

74、</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  a_min++;</b></p><p>  if(a_

75、min==60)</p><p><b>  a_min=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0b) //是否為'B&#

76、39;鍵:進(jìn)入小時(shí)設(shè)置模式</p><p><b>  {</b></p><p>  while((*h&0x0f)!=0x0b)</p><p><b>  {}</b></p><p>  led_hour_display();</p><p><b>

77、;  }</b></p><p>  else if((*h&0x0f)==0x0e) //是否為'D'鍵:完成設(shè)置</p><p><b>  {</b></p><p>  if(alarm==1)</p><p><b>  {</b&g

78、t;</p><p><b>  alarm=0;</b></p><p>  alarm_on=1;</p><p><b>  }</b></p><p><b>  while(1)</b></p><p>  {clock();}</p&g

79、t;<p><b>  }</b></p><p><b>  *q=0x08;</b></p><p><b>  *p=0x71;</b></p><p><b>  Delay(6);</b></p><p><b>  *q

80、=0x04;</b></p><p><b>  *p=0x40;</b></p><p><b>  Delay(6);</b></p><p>  if(alarm==0)</p><p><b>  {</b></p><p><

81、b>  *q=0x02;</b></p><p>  *p=LED[min/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x01;</b></p><p>  *p=LED[min%10];</p><p&

82、gt;<b>  Delay(6);</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p><b>  *q=0x02;</b></

83、p><p>  *p=LED[a_min/10];</p><p><b>  Delay(6);</b></p><p><b>  *q=0x01;</b></p><p>  *p=LED[a_min%10];</p><p><b>  Delay(6);<

84、;/b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //*****************************延時(shí)程序**************************

85、*****</p><p>  void Delay(unsigned char z)</p><p><b>  {</b></p><p>  unsigned char i,j;</p><p>  for(i=z;i>0;i--)</p><p>  for(j=150;j>0

86、;j--);</p><p><b>  }</b></p><p>  //*****************************鍵盤程序*******************************</p><p>  void setting()</p><p><b>  {</b>&l

87、t;/p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  *q=0x3f;</b></p><p>  *p=0x40; //輸出'------'

88、表示進(jìn)入設(shè)置模式</p><p><b>  *l=0xfb;</b></p><p>  if((*h&0x0f)==0x0b) //是否為'B'鍵:進(jìn)入小時(shí)設(shè)置模式</p><p><b>  {</b></p><p>  led_hou

89、r_display();</p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0d) //是否為'C'鍵:進(jìn)入分鐘設(shè)置模式</p><p><b>  {</b></p><p>  led_min_d

90、isplay();</p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0e) //是否為'D'鍵:完成設(shè)置</p><p><b>  {</b></p><p><b>  while(1)<

91、;/b></p><p>  {clock();}</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //**************************

92、****時(shí)鐘程序******************************</p><p>  void clock()</p><p><b>  {</b></p><p>  for(;hour<24;hour++)</p><p><b>  {</b></p><

93、;p>  for(;min<60;min++)</p><p><b>  {</b></p><p>  if((a_hour==hour)&&(a_min==min)&&alarm_on==1) //鬧鐘時(shí)間到</p><p><b>  {</b></p>

94、<p><b>  do{</b></p><p>  P1_0=~P1_0;</p><p><b>  Delay(3);</b></p><p><b>  *q=0x3f;</b></p><p><b>  *p=0x77;</b>&l

95、t;/p><p>  }while (sec<11);</p><p>  alarm_on=0;</p><p><b>  do{</b></p><p><b>  *q=0x00;</b></p><p>  led_time_display();</p>

96、;<p>  }while (sec<60);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  do{</b></p><p><b>  *q=0x00;</b><

97、;/p><p>  led_time_display();</p><p>  }while (sec<60);</p><p><b>  sec=0;</b></p><p><b>  }min=0;</b></p><p><b>  }hour=0;&l

98、t;/b></p><p><b>  }</b></p><p>  //******************************鬧鐘程序******************************</p><p>  void alarm_clock()</p><p><b>  {</b

99、></p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  led_alarm_display();</p><p><b>  *l=0xfb;</b></p><p>  if((*h&

100、amp;0x0f)==0x0b) //是否為'B'鍵:進(jìn)入小時(shí)設(shè)置模式</p><p><b>  {</b></p><p><b>  alarm=1;</b></p><p>  led_hour_display();</p><p><b&

101、gt;  }</b></p><p>  else if((*h&0x0f)==0x0d) //是否為'C'鍵:進(jìn)入分鐘設(shè)置模式</p><p><b>  {</b></p><p><b>  alarm=1;</b></p><p> 

102、 led_min_display();</p><p><b>  }</b></p><p>  else if((*h&0x0f)==0x0e) //是否為'D'鍵:完成設(shè)置</p><p><b>  {</b></p><p><b>  a

103、larm=0;</b></p><p>  alarm_on=1;</p><p><b>  while(1)</b></p><p>  {clock();}</p><p><b>  }</b></p><p><b>  }</b>

104、</p><p><b>  }</b></p><p>  //*******************************主函數(shù)*******************************</p><p>  void main()</p><p><b>  {</b></p>

105、<p>  TMOD=0x01;</p><p>  TH0=-(50000/256);</p><p>  TL0=-(50000%256);</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p><p>&

106、lt;b>  TR0=1;</b></p><p><b>  while(1)</b></p><p><b>  {</b></p><p><b>  clock();</b></p><p><b>  }</b></p&g

107、t;<p><b>  }</b></p><p><b>  附 錄 B</b></p><p><b>  附 錄C</b></p><p>  Bill of Material for BACKUP~3.Bom</p><p>  Used Part T

108、ype Designator Footprint</p><p>  ==== ============== ========== ==========</p><p>  1 0 S13</p><p>  1 1 S12</p><p>  2 1K

109、 R1 R4</p><p>  1 2 S14</p><p>  1 3 S16</p><p>  1 4 S2</p><p>  1 5 S4</p><p>  1

110、 6 S6</p><p>  1 6MHz Y1</p><p>  1 7 S1</p><p>  1 8 S3</p><p>  1 9 S5</p><p>

111、;  4 10K R3 R5 R6</p><p><b>  R7</b></p><p>  1 20uF C3</p><p>  1 22uF C4</p><p>  1 30uF C2</p>

112、<p>  1 74LS32 U2 DIP-14</p><p>  1 74LS138 U6 DIP-16</p><p>  1 74LS245 U4 DIP-20</p><p>  2 74LS374 U1 U7

113、 DIP-20</p><p>  1 100 R2</p><p>  1 103pF C1</p><p>  1 8031AH U3 DIP-40</p><p>  1 A S7</p><

114、;p>  1 B S8</p><p>  1 C S18</p><p>  1 D S19</p><p>  6 DPY_7-SEG_DP DS1 DS2</p><p><b>  DS3 DS4</b>

115、;</p><p><b>  DS5 DS6</b></p><p>  1 E S17</p><p>  1 EXEC S21</p><p>  1 F S15</p><p>  1 HERE

116、 S20</p><p>  1 LAST S22</p><p>  1 MODE S9</p><p>  1 MON S11</p><p>  1 MOVE S10</p><p>  

117、1 NEXT S23</p><p>  1 NOT U5</p><p>  1 NPN Q1</p><p>  1 SPEAKER LS1</p><p><b>  課程設(shè)計(jì)成績(jī)?cè)u(píng)定表</b></p>

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論