版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 測控系統(tǒng)原理與設(shè)計(jì) 課程設(shè)計(jì)</p><p> 課題: 時(shí)鐘計(jì)時(shí)器的設(shè)計(jì) </p><p> 班級(jí) 測控1101 學(xué)號(hào) </p><p> 學(xué)生姓名 </p><p> 專業(yè) 測控技術(shù)與儀器
2、 </p><p> 系別 電子信息工程系 </p><p> 指導(dǎo)教師 </p><p><b> 2013年5月</b></p><p><b> 1設(shè)計(jì)目的</b></p><p>
3、 《測控系統(tǒng)原理與設(shè)計(jì)》課程設(shè)計(jì)是一項(xiàng)重要的實(shí)踐性教育環(huán)節(jié),是學(xué)生在校期間必須接受的一項(xiàng)工程訓(xùn)練。在課程設(shè)計(jì)過程中,在教師指導(dǎo)下,運(yùn)用工程的方法,通過一個(gè)簡單課題的設(shè)計(jì)練習(xí),可使學(xué)生初步體驗(yàn)微機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)過程、設(shè)計(jì)要求、完成的工作內(nèi)容和具體的設(shè)計(jì)方法,了解必須提交的各項(xiàng)工程文件,也達(dá)到鞏固、充實(shí)和綜合運(yùn)用所學(xué)知識(shí)解決實(shí)際問題的目的。</p><p> 通過課程設(shè)計(jì),應(yīng)能加強(qiáng)學(xué)生如下能力的培養(yǎng):</p&
4、gt;<p> 獨(dú)立工作能力和創(chuàng)造力;</p><p> 綜合運(yùn)用專業(yè)及基礎(chǔ)知識(shí),解決實(shí)際工程技術(shù)問題的能力;</p><p> 查閱圖書資料、產(chǎn)品手冊和各種工具書的能力;</p><p><b> 工程繪圖的能力;</b></p><p> 編寫技術(shù)報(bào)告和編制技術(shù)資料的能力。</p>
5、<p><b> 2設(shè)計(jì)要求</b></p><p> (1) 獨(dú)立完成設(shè)計(jì)任務(wù)</p><p> (2) 繪制系統(tǒng)硬件總框圖</p><p> (3) 繪制系統(tǒng)原理電路圖</p><p> (4) 繪制系統(tǒng)工程設(shè)計(jì)圖(機(jī)箱、控制面板、線路板圖、元件布局圖、裝配連線圖等)</p>&
6、lt;p> (5) 編制軟件框圖</p><p> (6) 完成詳細(xì)完整的程序清單和注釋</p><p> (7) 制定編寫調(diào)試方案</p><p> (8) 編寫用戶操作使用說明書</p><p> (9) 寫出設(shè)計(jì)工作小結(jié)</p><p><b> 3系統(tǒng)方案設(shè)計(jì)</b>&l
7、t;/p><p><b> 3.1概述</b></p><p> 本實(shí)驗(yàn)所選用的單片機(jī)為AT89C51,時(shí)鐘計(jì)時(shí)器用單片機(jī)和6位LED數(shù)碼管顯示時(shí)、分、秒,以24小時(shí)計(jì)時(shí)方式進(jìn)行,能整點(diǎn)提醒,使用按鍵開關(guān)可實(shí)現(xiàn)時(shí)、分調(diào)整,秒表/時(shí)鐘功能轉(zhuǎn)換,省電及定時(shí)設(shè)定提醒功能。</p><p> 3.2 系統(tǒng)方案框圖</p><p&g
8、t;<b> 圖1:系統(tǒng)方案框圖</b></p><p><b> 4硬件介紹</b></p><p> 4.1 STC89C51</p><p> AT89C52引腳結(jié)構(gòu)</p><p> 圖 2 AT89C52引腳結(jié)構(gòu)</p><p><b> 功
9、能特性描述:</b></p><p> 與MCS-51單片機(jī)產(chǎn)品兼容、8K字節(jié)在系統(tǒng)可編程Flash存儲(chǔ)器、1000次擦寫周期、全靜態(tài)操作:0Hz~33Hz、三級(jí)加密程序存儲(chǔ)器、2個(gè)可編程I/O口線、三個(gè)16位定時(shí)器/計(jì)數(shù)器、八個(gè)中斷源、全雙工UART串行通道、低功耗空閑和掉電模式、掉電后中斷可喚醒、看門狗定時(shí)器等AT89C51引腳功能描述 </p><p><b>
10、; VCC : 電源</b></p><p><b> GND: 地</b></p><p> P0 口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對(duì)P0端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲(chǔ)器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0具有內(nèi)部上拉電阻。在flash編程時(shí),
11、P0口也用來接收指令字節(jié);而在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。</p><p> P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。
12、</p><p> P2 口:P2 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在flash編程和校驗(yàn)時(shí),P2口亦接收低高位地址和其它控制信號(hào)。</p><p> P3 口:P3 口是一個(gè)具有內(nèi)
13、部上拉電阻的8 位雙向I/O 口,p2 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對(duì)P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。P3口亦作為AT89S52特殊功能(第二功能)使用,如下所示。</p><p> AT89S52 引腳號(hào) 第二功能</p>
14、<p> P3.0 RXD (串行輸入)</p><p> P3.1 TXD (串行輸出)</p><p> P3.2 INT0 (外部中斷0)</p><p> P3.3 INT1 (外部中斷1)</p><p> P3.4 T0 (定時(shí)器0外部輸入)</p><p> P3.5 T1 (定時(shí)
15、器1外部輸入)</p><p> P3.6 WR (外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p> P3.7 RD (外部數(shù)據(jù)存儲(chǔ)器寫選通)</p><p> RST: 復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2 個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位。</p><p> ALE/PROG:地址鎖存控制信號(hào)(ALE)是訪問外部程序存儲(chǔ)器時(shí),鎖存低8 位地
16、址的輸出脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),ALE脈沖將會(huì)跳過一個(gè)ALE脈沖。</p><p> PSEN:外部程序存儲(chǔ)器選通信號(hào)(PSEN)是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)AT89C51從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),PSEN在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),PSEN將不被激活。</p&g
17、t;<p> EA/VPP:訪問外部程序存儲(chǔ)器控制信號(hào)。為使能從0000H 到FFFFH的外部程序存儲(chǔ)器</p><p> 讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。在flash編程期間,EA也接收12伏VPP電壓。</p><p> XTAL1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。</p><p> XTAL
18、2:振蕩器反相放大器的輸出端。</p><p> AT89C52 有5個(gè)中斷源,中斷是指計(jì)算機(jī)在執(zhí)行某一程序的過程中, 由于計(jì)算機(jī)系統(tǒng)內(nèi)、 外的某種原因, 而必須中止原程序的執(zhí)行,轉(zhuǎn)去執(zhí)行相應(yīng)的處理程序,待處理結(jié)束之后, 再回來繼續(xù)執(zhí)行被中止的原程序的過程。 </p><p> 采用了中斷技術(shù)后的計(jì)算機(jī), 可以解決CPU與外設(shè)之間速度匹配的問題, 使計(jì)算機(jī)可以及時(shí)處理系統(tǒng)中許多隨機(jī)的
19、參數(shù)和信息, 同時(shí), 它也提高了計(jì)算機(jī)處理故障與應(yīng)變的能力。兩個(gè)外部中斷(INT0 和INT1),兩個(gè)定時(shí)中斷(定時(shí)器0、1)和一個(gè)串行中斷。每個(gè)中斷源都可以通過置位或清除特殊寄存器IE 中的相關(guān)中斷允許控制位分別使得中斷源有效或無效。IE還包括一個(gè)中斷允許總控制位EA,它能一次禁止所有中斷。</p><p> 中斷源是在一個(gè)計(jì)算機(jī)系統(tǒng)對(duì)中斷請(qǐng)求的來源,中斷可以人為設(shè)定,它可以在應(yīng)對(duì)突發(fā)隨機(jī)事件設(shè)置。通常的I
20、/ O設(shè)備,實(shí)時(shí)控制系統(tǒng)的故障隨機(jī)參數(shù)和信息源等。</p><p> 較高優(yōu)先級(jí)的中斷,那么到更高的優(yōu)先級(jí)響應(yīng)。當(dāng)運(yùn)行時(shí),中斷服務(wù)程序,另一個(gè)中斷高優(yōu)先級(jí)中斷請(qǐng)求產(chǎn)生,當(dāng)電流CPU中斷服務(wù)將暫停高級(jí)別中斷處理應(yīng)用,可完成先進(jìn)的中斷處理程序中斷程序關(guān)閉,然后再返回到CPU原始點(diǎn)繼續(xù)這一過程被稱為嵌套。 </p><p><b> 中斷響應(yīng)的過程:</b></p
21、><p> 在每個(gè)指令結(jié)束時(shí),系統(tǒng)會(huì)自動(dòng)檢測中斷請(qǐng)求信號(hào),如果有一個(gè)中斷請(qǐng)求,并在打開的CPU,那么響應(yīng)的中斷的中斷狀態(tài)。 </p><p> ?。?)保護(hù)之前,在一般保護(hù),禁止中斷,以防止現(xiàn)場銷毀現(xiàn)場的一幕。保護(hù)現(xiàn)場的指令一般用于堆疊在原程序中使用到堆棧中的寄存器。 </p><p> (3)中斷服務(wù)的相應(yīng)的中斷源是服務(wù)。 </p><p>
22、; (4)恢復(fù)現(xiàn)場,將保護(hù)的數(shù)據(jù)在堆棧上彈出的復(fù)蘇之前,禁止中斷現(xiàn)場,以防 止破壞現(xiàn)場。時(shí)間后,現(xiàn)場恢復(fù)開放中斷。 </p><p> ?。?)返回時(shí),此CPU的斷點(diǎn)地址時(shí)堆棧推彈回到程序計(jì)數(shù)器,使CPU繼續(xù)執(zhí)行被中斷的程序。</p><p> 4.2 74HC573</p><p> SL74HC573 跟LS/AL573 的管腳一樣。器件的輸
23、入是和標(biāo)準(zhǔn)CMOS 輸出兼容的;加上拉電阻,他們能和LS/ALSTTL 輸出兼容。當(dāng)鎖存使能端為高時(shí),這些器件的鎖存對(duì)于數(shù)據(jù)是透明的(也就是說輸出同步)。當(dāng)鎖存使能變低時(shí),符合建立時(shí)間和保持時(shí)間的數(shù)據(jù)會(huì)被鎖存。輸出能直接接到CMOS,NMOS 和TTL 接口上操作電壓范圍:2.0V~6.0V低輸入電流:1.0uACMOS 器件的高噪聲抵抗特性</p><p><b> 圖4 管腳功能圖
24、:</b></p><p> 表1 74HC573功能表</p><p> 圖5 74HC573邏輯圖</p><p> 4.3 LED 數(shù)碼管</p><p> 由于系統(tǒng)要顯示的內(nèi)容較簡單,顯示量不多,所以選用數(shù)碼管既方便又經(jīng)濟(jì)。LED 有共陰極和共陽極兩種。如圖所示。</p><p> 二極
25、管的陰極連接在一起,通常此公共陰極接地,而共陽極則將發(fā)光二極管的陽極連接在一起,接入+5V 的電壓。一位顯示器由8 個(gè)發(fā)光二極管組成,其中7 個(gè)發(fā)光二極管構(gòu)成字型“8”的各個(gè)筆劃(段)a~g,另一個(gè)小數(shù)點(diǎn)為dp 發(fā)光二極管。當(dāng)在某段發(fā)光二極管施加一定的正向電壓時(shí),該段筆劃即亮;不加電壓則暗。為了保護(hù)各段LED 不被損壞,需外加限流電阻。</p><p> LED 顯示數(shù)碼管通常由硬件7 段譯碼集成電路,完成從數(shù)
26、字到顯示碼的譯碼驅(qū)動(dòng)。本系統(tǒng)采用軟件譯碼,以減小體積,降低成本和功耗,軟件譯碼的另一優(yōu)勢還在于比硬件譯碼有更大的靈活性。所謂軟件譯碼,即由單片機(jī)軟件完成從數(shù)字到顯示碼的轉(zhuǎn)換。從LED 數(shù)碼管結(jié)構(gòu)原理可知,為了顯示字符,要為LED 顯示數(shù)碼管提供顯示段碼,組成一個(gè)“8”字形字符的7 段,再加上1 個(gè)小數(shù)點(diǎn)位,共計(jì)8 段,因此提供給LED 數(shù)碼管的顯示段碼為1 個(gè)字節(jié)。各段碼位與顯示段的對(duì)應(yīng)關(guān)系如表。</p><p>
27、;<b> 表2</b></p><p> 需說明的是當(dāng)用數(shù)據(jù)口連接LED 數(shù)碼管a~dp 引腳時(shí),不同的連接方法,各段碼位與顯示段有不同的對(duì)應(yīng)關(guān)系。通常數(shù)據(jù)口的D0 位與a 段連接,D1 位與b 段連接,……D7 位與dp 段連接,如表1 所示,表2 為用于LED 數(shù)碼管顯示的十六進(jìn)制數(shù)和空白字符與P 的顯示段碼。</p><p> 注:(1)本表所列各字符的
28、顯示段碼均為小數(shù)點(diǎn)不亮的情況。</p><p> ?。?)“空白”字符即沒有任何顯示。</p><p> 顯示方式有靜態(tài)顯示和動(dòng)態(tài)顯示兩種。</p><p> 靜態(tài)顯示:所謂靜態(tài)顯示,就是當(dāng)顯示器顯示某一字符時(shí),相應(yīng)的發(fā)光二極管恒定的導(dǎo)通或截止。該方式每一位都需要一個(gè)8 位輸出口控制。靜態(tài)顯示時(shí)較小的電流能獲得較高的亮度,且字符不閃爍。但當(dāng)所顯示的位數(shù)較多時(shí),靜
29、態(tài)顯示所需的I/O 口太多,造成了資源的浪費(fèi)。</p><p> 動(dòng)態(tài)顯示:所謂動(dòng)態(tài)顯示就是一位一位的輪流點(diǎn)亮各個(gè)位,對(duì)于顯示器的每一位來說,每隔一段時(shí)間點(diǎn)亮一次。利用人的視覺暫留功能可以看到整個(gè)顯示,但必須保證掃描速度足夠快,字符才不閃爍。顯示器的亮度既與導(dǎo)通電流有關(guān),也于點(diǎn)亮?xí)r間與間隔時(shí)間的比例有關(guān)。調(diào)整參數(shù)可以實(shí)現(xiàn)較高穩(wěn)定度的顯示。動(dòng)態(tài)顯示節(jié)省了I/O 口,降低了能耗。</p><p&
30、gt;<b> 5硬件電路介紹</b></p><p><b> 5.1 晶振電路</b></p><p> 每個(gè)單片機(jī)系統(tǒng)里都有晶振,全程是叫晶體震蕩器,在單片機(jī)系統(tǒng)里晶振的作用非常大,他結(jié)合單片機(jī)內(nèi)部的電路,產(chǎn)生單片機(jī)所必須的時(shí)鐘頻率,單片機(jī)的一切指令的執(zhí)行都是建立在這個(gè)基礎(chǔ)上的,晶振的提供的時(shí)鐘頻率越高,那單片機(jī)的運(yùn)行速度也就越快。晶
31、振用一種能把電能和機(jī)械能相互轉(zhuǎn)化的晶體在共振的狀態(tài)下工作,以提供穩(wěn)定,精確的單頻振蕩。在通常工作條件下,普通的晶振頻率絕對(duì)精度可達(dá)百萬分之五十。高級(jí)的精度更高。有些晶振還可以由外加電壓在一定范圍內(nèi)調(diào)整頻率,稱為壓控振蕩器(VCO)。晶振的作用是為系統(tǒng)提供基本的時(shí)鐘信號(hào)。通常一個(gè)系統(tǒng)共用一個(gè)晶振,便于各部分保持同步。有些通訊系統(tǒng)的基頻和射頻使用不同的晶振,而通過電子調(diào)整頻率的方法保持同步。</p><p><
32、b> 5.2復(fù)位電路</b></p><p> 復(fù)位電路的基本功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤銷復(fù)位信號(hào)。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開關(guān)或電源插頭分-合過程中引起的抖動(dòng)而影響復(fù)位。</p><p><b> 圖6 復(fù)位電路</b></p><p><b&g
33、t; 顯示電路</b></p><p> 圖7 數(shù)碼管顯示電路</p><p><b> 5.4 按鍵電路</b></p><p> 本設(shè)計(jì)采用四個(gè)獨(dú)立按鍵;按鍵處理設(shè)置為:如果沒有按鍵,則時(shí)鐘正常走下去。第一個(gè)按鍵為切換按鍵,用于顯示不同界面的切換。默認(rèn)顯示為時(shí)分秒,如果按鍵一次,切換為顯示年月日;如果按鍵兩次,切換為顯示
34、鬧鈴時(shí)間;再按一次則跳回顯示時(shí)分秒;第二個(gè)按鍵為調(diào)整時(shí)間,當(dāng)?shù)谝淮伟聪碌臅r(shí)候,進(jìn)入調(diào)整狀態(tài),把定時(shí)器關(guān)掉,時(shí)鐘就停止走動(dòng);這時(shí)當(dāng)按下第三個(gè)按鍵可以對(duì)秒進(jìn)行加1 的操作,當(dāng)按下第四個(gè)按鍵可以對(duì)分進(jìn)行加1 的操作,當(dāng)按下K2 鍵的時(shí)可以對(duì)時(shí)進(jìn)行加1 操作,當(dāng)再次按下第二個(gè)按鍵 鍵時(shí),打開定時(shí)器,再次啟動(dòng)時(shí)鐘。為了使按鍵更穩(wěn)定,在程序中加入了去抖程序與松手檢測程序。</p><p><b> 圖8 按鍵電路
35、</b></p><p><b> 6總電路流程圖</b></p><p><b> 7軟件設(shè)計(jì)</b></p><p><b> 7.1主程序</b></p><p> 主程序循環(huán)調(diào)用顯示子程序和查鍵子程序,當(dāng)按鍵被按下時(shí),轉(zhuǎn)入相應(yīng)功能程序。其主程序執(zhí)行流
36、程如圖9所示。</p><p> 圖9 主程序流程圖</p><p><b> 7.2顯示主程序</b></p><p> 本程序采用動(dòng)態(tài)顯示,并運(yùn)用鎖存器將結(jié)果送出;</p><p> 圖10 顯示流程圖</p><p> 7.3鬧鐘時(shí)間設(shè)定功能程序</p><
37、p> 在時(shí)鐘狀態(tài)下,觸發(fā)外中斷1時(shí),進(jìn)入鬧鐘時(shí)間設(shè)定模式,且不影響T0計(jì)時(shí)器的功能狀態(tài),在鍵盤上輸入對(duì)應(yīng)的數(shù)字進(jìn)行時(shí)間設(shè)定。當(dāng)分別按下調(diào)節(jié)時(shí)鐘、分鐘和秒鐘的個(gè)位時(shí),時(shí)間自動(dòng)確定。鬧鐘時(shí)間設(shè)定流程圖如圖6-3所示:</p><p> 圖11 鬧鐘時(shí)間設(shè)定流程圖</p><p><b> 8誤差分析與修正</b></p><p>&l
38、t;b> ·測量數(shù)據(jù)</b></p><p><b> 數(shù)據(jù)分析</b></p><p> 基本滿足設(shè)計(jì)要求,誤差在10~15秒/時(shí)之間,完全可以滿足日常的使用。</p><p><b> 9軟件仿真</b></p><p><b> 10 PCB&l
39、t;/b></p><p> 11課程設(shè)計(jì)體會(huì)與總結(jié)</p><p> 通過本次課程設(shè)計(jì),加深了對(duì)傳感器課程的認(rèn)識(shí),提高了動(dòng)手與團(tuán)隊(duì)合作能力。在單片機(jī)課程設(shè)計(jì)中,經(jīng)過選題、設(shè)計(jì)電路、購買元件、焊接電路、程序編寫調(diào)試等步驟,最終得到完整的作品。這次課程設(shè)計(jì)是本門課程課堂教學(xué)的延伸和發(fā)展,是理論知識(shí)與工程實(shí)踐之間的銜接。通過本課程設(shè)計(jì),我獲益匪淺,增強(qiáng)了我對(duì)單片機(jī)專業(yè)知識(shí)的學(xué)習(xí),加深
40、了認(rèn)識(shí),進(jìn)一步鞏固了我的動(dòng)手能力,培養(yǎng)獨(dú)立自主、綜合分析的思維與創(chuàng)新能力,最終使初步具有設(shè)計(jì)小型計(jì)算機(jī)控制系統(tǒng)的硬件及軟件的能力。同時(shí),通過資料搜集、方案分析、系統(tǒng)設(shè)計(jì)與報(bào)告撰寫的一系列過程,得到一次科學(xué)研究工作的初步訓(xùn)練。從而,在專業(yè)知識(shí)與研究方法方面為日后的畢業(yè)設(shè)計(jì)乃至畢業(yè)后的工作奠定良好的基礎(chǔ)。本次課程設(shè)計(jì) 使我得到了鍛煉,讓我明白學(xué)習(xí)不知能是紙上談兵,要能在生活生產(chǎn)中用到的具體使用。</p><p>&l
41、t;b> 附:</b></p><p><b> 參考代碼</b></p><p> #include<reg52.h></p><p> unsigned char data shijian[2][3]={13,06,25,23,59,50};</p><p> unsigned
42、 char data naoling[3]={23,59,51};</p><p> unsigned char code duanma[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};</p><p> unsigned char code weima[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xb
43、f,0x7f}; </p><p> sbit key1=P3^4;</p><p> sbit key2=P3^5;</p><p> sbit key3=P3^6;</p><p> sbit key4=P3^7;</p><p> sbit fmq=P2^3;</p><p>
44、 bit flag,flagfmq;</p><p> sbit duan=P2^6;//定義鎖存使能端口 段鎖存</p><p> sbit wei=P2^7;// 位鎖存</p><p> void delay(unsigned char t)</p><p><b> {</b&
45、gt;</p><p> unsigned char i,j;</p><p> for(i=t;i>0;i--)</p><p> for(j=110;j>0;j--);</p><p><b> }</b></p><p> void display(unsigned
46、char n)</p><p><b> {</b></p><p> unsigned char i,j=0;</p><p> unsigned char temp[2][6];</p><p> for(i=0,j=0;i<3;i++,j+=2)</p><p><b&g
47、t; {</b></p><p> temp[n][j]=shijian[n][i]/10;</p><p> temp[n][j+1]=shijian[n][i]%10;</p><p><b> }</b></p><p> for(i=0;i<6;i++)</p><
48、p><b> {</b></p><p><b> P0=0;</b></p><p><b> duan=1;</b></p><p><b> duan=0;</b></p><p> P0=weima[i];</p>&
49、lt;p><b> wei=1;</b></p><p><b> wei=0;</b></p><p> if((i%2==1)&&(i!=5))</p><p> P0=duanma[temp[n][i]]|0x80;</p><p><b> else
50、</b></p><p> P0=duanma[temp[n][i]];</p><p><b> duan=1;</b></p><p><b> duan=0;</b></p><p> delay(10);</p><p><b> }&
51、lt;/b></p><p><b> }</b></p><p> void init_time0()</p><p><b> {</b></p><p> TMOD=0X01;</p><p> TH0=(65536-50000)/256;</p&
52、gt;<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
53、></p><p> void main()</p><p><b> {</b></p><p> unsigned char n=1,i,j=0;</p><p> unsigned char a;</p><p><b> key1=1;</b><
54、/p><p> key2=1;// control</p><p><b> key3=1;</b></p><p><b> key4=1;</b></p><p> init_time0();</p><p><b> while(1)</b>
55、</p><p><b> {</b></p><p><b> if(!key1)</b></p><p><b> {</b></p><p> delay(15);</p><p><b> if(!key1)</b>
56、;</p><p><b> {</b></p><p> while(!key1);</p><p><b> n++;</b></p><p><b> j=0;</b></p><p><b> if(n==2)</b&g
57、t;</p><p><b> n=0;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(flag)</b></p><p><b> {<
58、;/b></p><p><b> flag=0;</b></p><p> shijian[1][2]++;</p><p> if(shijian[1][2]==60)</p><p><b> {</b></p><p> shijian[1][2]=0
59、;</p><p> shijian[1][1]++;</p><p> if(shijian[1][1]==60)</p><p><b> {</b></p><p> shijian[1][1]=0;</p><p> shijian[1][0]++;</p><
60、;p> if(shijian[1][0]==24)</p><p><b> {</b></p><p> shijian[1][0]=0;}</p><p><b> }</b></p><p><b> }</b></p><p
61、><b> }</b></p><p><b> if(!key2)</b></p><p><b> {</b></p><p> delay(150);</p><p><b> if(!key2)</b></p><
62、;p><b> {</b></p><p> while(!key2);</p><p><b> j++;</b></p><p><b> TR0=0;</b></p><p><b> if(j==4)</b></p>
63、<p><b> {</b></p><p><b> j=0;</b></p><p><b> TR0=1;</b></p><p><b> }</b></p><p><b> }</b></p>
64、;<p><b> }</b></p><p><b> if(j==1)</b></p><p><b> {</b></p><p><b> if(!key3)</b></p><p><b> {</b>
65、;</p><p> delay(15);</p><p><b> if(!key3)</b></p><p><b> {</b></p><p> while(!key3);</p><p> shijian[n][2]++;</p><p
66、> if(n==1&&shijian[n][2]>=60)</p><p> shijian[n][2]=0;</p><p><b> else</b></p><p> if(n==0&&shijian[n][2]>=31)</p><p> shijian
67、[n][2]=0;</p><p><b> }</b></p><p><b> }</b></p><p><b> if(!key4)</b></p><p><b> {</b></p><p> delay(15
68、);</p><p><b> if(!key4)</b></p><p><b> {</b></p><p> while(!key4);</p><p> shijian[n][2]--;</p><p> if(n==1&&shijian[n
69、][2]==0)</p><p> shijian[n][2]=60;</p><p><b> else</b></p><p> if(n==0&&shijian[n][2]==0)</p><p> shijian[n][2]=31;</p><p><b>
70、; }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(j==2)</b></p><p><b> {</b></p><p><b&
71、gt; if(!key3)</b></p><p><b> {</b></p><p> delay(15);</p><p><b> if(!key3)</b></p><p><b> {</b></p><p> whi
72、le(!key3);</p><p> shijian[n][1]++;</p><p> if(n==1&&shijian[n][1]>=60)</p><p> shijian[n][1]=0;</p><p><b> else</b></p><p> if
73、(n==0&&shijian[n][1]>=12)</p><p> shijian[n][1]=0;</p><p><b> }</b></p><p><b> }</b></p><p><b> if(!key4)</b></p&g
74、t;<p><b> {</b></p><p> delay(15);</p><p><b> if(!key4)</b></p><p><b> {</b></p><p> while(!key4);</p><p>
75、 shijian[n][1]--;</p><p> if(n==1&&shijian[n][1]==0)</p><p> shijian[n][1]=59;</p><p><b> else</b></p><p> if(n==0&&shijian[n][1]==0)<
76、;/p><p> shijian[n][1]=12;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> if(j==3)</b><
77、/p><p><b> {</b></p><p><b> if(!key3)</b></p><p><b> {</b></p><p> delay(15);</p><p><b> if(!key3)</b><
78、;/p><p><b> {</b></p><p> while(!key3);</p><p> shijian[n][0]++;</p><p> if(n==1&&shijian[n][0]>=24)</p><p> shijian[n][0]=0;</
79、p><p><b> else</b></p><p> if(n==0&&shijian[n][0]==100)</p><p> shijian[n][0]=0;</p><p><b> }</b></p><p><b> }</
80、b></p><p><b> if(!key4)</b></p><p><b> {</b></p><p> delay(15);</p><p><b> if(!key4)</b></p><p><b> {<
81、/b></p><p> while(!key4);</p><p> shijian[n][0]--;</p><p> if(n==1&&shijian[n][0]<=0)</p><p> shijian[n][0]=23;</p><p><b> else<
82、;/b></p><p> if(n==0&&shijian[n][0]==0)</p><p> shijian[n][0]=99;</p><p><b> }</b></p><p><b> }</b></p><p><b>
83、 }</b></p><p> if((TR0==1)&&(shijian[1][0]==naoling[0]&&shijian[1][1]==naoling[1]&&(shijian[1][2]>naoling[2]&&shijian[1][2]<naoling[2]+30))||(shijian[1][1]==0&am
84、p;&shijian[1][2]<20))</p><p><b> {</b></p><p> for(i=0;i<50;i++)</p><p><b> {</b></p><p><b> fmq=!fmq;</b></p>
85、<p> delay(50);</p><p><b> }</b></p><p><b> }</b></p><p> display(n);</p><p><b> }</b></p><p><b> }<
86、;/b></p><p> void init_time0_ser() interrupt 1</p><p><b> {</b></p><p> static unsigned char i;</p><p><b> i++;</b></p><p>&
87、lt;b> if(i==20)</b></p><p><b> {</b></p><p><b> i=0;</b></p><p><b> flag=1;</b></p><p><b> }</b></p>
88、<p> TH0=(65536-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p><b> }</b></p><p><b> 參考文獻(xiàn)</b></p><p> [1]李廣弟等.單片機(jī)基礎(chǔ)[M].北京航空航天出版社,2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 時(shí)鐘計(jì)時(shí)器課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)-計(jì)時(shí)器
- 單片機(jī)時(shí)鐘計(jì)時(shí)器課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)--搶答計(jì)時(shí)器
- 籃球計(jì)時(shí)器課程設(shè)計(jì)
- 微機(jī)原理及應(yīng)用課程設(shè)計(jì)---可調(diào)計(jì)時(shí)器設(shè)計(jì)
- 課程設(shè)計(jì)--倒計(jì)時(shí)計(jì)時(shí)器的設(shè)計(jì)
- 匯編課程設(shè)計(jì)報(bào)告--- 計(jì)時(shí)器
- 課程設(shè)計(jì)---vhdl秒表計(jì)時(shí)器
- 匯編課程設(shè)計(jì)報(bào)告--計(jì)時(shí)器
- 24秒計(jì)時(shí)器課程設(shè)計(jì)
- 多功能計(jì)時(shí)器課程設(shè)計(jì)
- 倒計(jì)時(shí)器課程設(shè)計(jì)
- 微機(jī)課程設(shè)計(jì)--搶答計(jì)時(shí)器
- 籃球比賽計(jì)時(shí)器(課程設(shè)計(jì))
- 課程設(shè)計(jì)--籃球比賽計(jì)時(shí)器
- 課程設(shè)計(jì)報(bào)告---倒計(jì)時(shí)器
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 智能倒計(jì)時(shí)器課程設(shè)計(jì)
- 課程設(shè)計(jì)---籃球30秒計(jì)時(shí)器
評(píng)論
0/150
提交評(píng)論