單片機(jī)電子時(shí)鐘課程設(shè)計(jì)報(bào)告_第1頁
已閱讀1頁,還剩32頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p>  單片機(jī)原理及應(yīng)用課程設(shè)計(jì)</p><p>  專 業(yè): 自動(dòng)化 </p><p>  設(shè)計(jì)題目: 電子時(shí)鐘 </p><p>  班級(jí): </p><p>  學(xué)生姓名: </p

2、><p>  學(xué)號(hào) : 10 </p><p>  指導(dǎo)教師: </p><p>  分院院長: </p><p>  教研室主任: </p><p><b>  電氣工

3、程學(xué)院</b></p><p>  一、課程設(shè)計(jì)任務(wù)書 </p><p><b>  1.課程設(shè)計(jì)項(xiàng)目</b></p><p>  電子時(shí)鐘(LED顯示)</p><p><b>  2.設(shè)計(jì)內(nèi)容</b></p><p>  1)以MCS-

4、51系列單片機(jī)為核心器件組成電子時(shí)鐘控制系統(tǒng);</p><p>  2)利用提供單元模塊構(gòu)成硬件系統(tǒng)。</p><p>  系統(tǒng)程序編制與調(diào)試;</p><p>  電路系統(tǒng)的綜合調(diào)試;</p><p><b>  撰寫課程設(shè)計(jì)論文;</b></p><p>  完成課程設(shè)計(jì)論文答辯。</p

5、><p><b>  3.設(shè)計(jì)要求</b></p><p>  1)以STC10F04E單片機(jī)為控制核心,用單片機(jī)內(nèi)部定時(shí)器為時(shí)鐘源,設(shè)計(jì)電子時(shí)鐘,使用4位數(shù)碼管顯示時(shí)、分,后兩位數(shù)碼管(分)的閃爍顯示秒。</p><p>  2)顯示格式為:“XXXX</p><p>  3)用4個(gè)功能鍵操作來進(jìn)行對(duì)時(shí)。可自行定義各鍵的功

6、能,也 可按下述方式定義K1~K4鍵的功能如下。</p><p>  K1—功能鍵,每按下一次對(duì)應(yīng)的LED閃爍。</p><p>  K2—移位鍵,每按下一次向后移一位。</p><p>  K3—加1鍵。 K4—減1鍵。</p><p><b>  4.參考資料</b></p><p&g

7、t;  [1]李廣弟,朱月秀,王秀山編著.單片機(jī)基礎(chǔ). 北京:北京航空航天大學(xué)出版社,2001</p><p>  [2] 何立民編著.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1999</p><p>  [3] 蔡美琴等編著.MCS-51 單片機(jī)系統(tǒng)及應(yīng)用.北京:高等教育出版社.1992</p><p>  5.設(shè)計(jì)進(jìn)度

8、(2011年6月13日至2011年6月24日) </p><p><b>  6.設(shè)計(jì)地點(diǎn)</b></p><p>  新實(shí)驗(yàn)樓323微機(jī)實(shí)驗(yàn)室</p><p><b>  二、評(píng)語及成績</b></p><p><b>  成績:</b></p><p&g

9、t;<b>  指導(dǎo)教師:</b></p><p><b>  單片機(jī)原理及</b></p><p><b>  應(yīng)用課程設(shè)計(jì)</b></p><p>  班 級(jí): 自1042 </p><p>  姓 名: </p><p> 

10、 學(xué) 號(hào): 10號(hào) </p><p>  指導(dǎo)教師: </p><p>  撰寫日期: 2013/6/13 </p><p><b>  目錄</b></p><p><b>  第一章 緒論1</b></p><p><b>  課題背

11、景1</b></p><p><b>  課題意義2</b></p><p>  第二章 課程設(shè)計(jì)內(nèi)容與要求分析3</p><p>  2.1課程設(shè)計(jì)內(nèi)容3</p><p>  2.1.1課程設(shè)計(jì)項(xiàng)目3</p><p>  2.1.2課程設(shè)計(jì)目的3</p>&

12、lt;p>  2.1.3設(shè)計(jì)內(nèi)容3</p><p>  2.2課程設(shè)計(jì)要求分析3</p><p>  2.2.1設(shè)計(jì)要求3</p><p>  2.3系統(tǒng)單元電路組成5</p><p>  第三章 控制系統(tǒng)程序設(shè)計(jì)6</p><p><b>  3.1個(gè)人創(chuàng)意6</b></

13、p><p><b>  3.2調(diào)試步驟7</b></p><p>  3.2.1電路調(diào)試7</p><p>  3.2.2硬件調(diào)試7</p><p>  3.2.3性能測(cè)試7</p><p>  單片機(jī)原理及應(yīng)用課程設(shè)計(jì)總結(jié)11</p><p><b>  

14、參考資料12</b></p><p><b>  附錄13</b></p><p><b>  第一章 緒論</b></p><p><b>  隨</b></p><p>  著時(shí)代的發(fā)展,生活節(jié)奏的加快,人們的時(shí)間觀念愈來愈強(qiáng);隨自動(dòng)化、智能化技術(shù)的發(fā)展,

15、機(jī)電產(chǎn)品的智能度愈來愈高,用到時(shí)間提示、定時(shí)控制的地方也會(huì)愈來愈多,因此,設(shè)計(jì)開發(fā)數(shù)字時(shí)鐘具有良好的應(yīng)用前景。</p><p>  由于單片機(jī)價(jià)格的低成本、高性能,在自動(dòng)控制產(chǎn)品中得到了廣泛的應(yīng)用。本設(shè)計(jì)利用Atmel公司的STC12C5A08S2單片機(jī)對(duì)電子時(shí)鐘進(jìn)行開發(fā),設(shè)計(jì)了實(shí)現(xiàn)所需功能的硬件電路,應(yīng)用匯編語言進(jìn)行軟件編程,并用實(shí)驗(yàn)板進(jìn)行演示、驗(yàn)證。</p><p>  在介紹本單片機(jī)

16、的發(fā)展情況基礎(chǔ)上,說明了本設(shè)計(jì)實(shí)現(xiàn)的功能,以及實(shí)驗(yàn)板硬件情況,并對(duì)各功能電路進(jìn)行了分析。主要工作放在軟件編程上,用實(shí)驗(yàn)板實(shí)現(xiàn)時(shí)間、日期、定時(shí)及它們的設(shè)定功能,詳細(xì)對(duì)軟件編程流程以及調(diào)試進(jìn)行了說明,并對(duì)計(jì)時(shí)誤差進(jìn)行了分析及校正,提出了定時(shí)音與顯示相沖突問題及解決方案。實(shí)驗(yàn)證明效果良好,可以投入使用。</p><p><b>  課題背景</b></p><p>  單片

17、機(jī)自1976年由Intel公司推出MCS-48開始,迄今已有二十多年了。由于單片機(jī)集成度高、功能強(qiáng)、可靠性高、體積小、功耗低、使用方便、價(jià)格低廉等一系列優(yōu)點(diǎn),目前已經(jīng)滲入到人們工作和生活的方方面面,單片機(jī)的應(yīng)用領(lǐng)域已從面向工業(yè)控制、通訊、交通、智能儀表等迅速發(fā)展到家用消費(fèi)產(chǎn)品、辦公自動(dòng)化、汽車電子、PC機(jī)外圍以及網(wǎng)絡(luò)通訊等廣大領(lǐng)域。</p><p>  單片機(jī)有兩種基本結(jié)構(gòu):一種是在通用微型計(jì)算機(jī)中廣泛采用的,程

18、序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器共用一個(gè)存儲(chǔ)器空間的結(jié)構(gòu),稱為“馮·諾依曼”(Von Neumann)結(jié)構(gòu)。另一種是將程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器截然分開,分別尋址的結(jié)構(gòu),稱為“哈佛”(Harvard)結(jié)構(gòu),目前的單片機(jī)采用此種結(jié)構(gòu)為多。</p><p>  本文討論的單片機(jī)多功能時(shí)鐘系統(tǒng)的核心是目前應(yīng)用極為廣泛的51系列單片機(jī),配置了外圍設(shè)備,構(gòu)成了一個(gè)可編程的計(jì)時(shí)定時(shí)系統(tǒng),具有體積小,可靠性高,功能多等特點(diǎn)。不僅能滿

19、足所需要求而且還有很多功能可供擴(kuò)展,有著廣泛的應(yīng)用領(lǐng)域。</p><p><b>  課題意義</b></p><p>  在日常生活和工作中,我們常常用到定時(shí)控制,如擴(kuò)印過程中的曝光定時(shí)等。早期常用的一些時(shí)間控制單元都使用模擬電路設(shè)計(jì)制作的,其定時(shí)準(zhǔn)確性和重復(fù)精度都不是很理想,現(xiàn)在基本上都是基于數(shù)字技術(shù)的新一代產(chǎn)品,隨著單片機(jī)性價(jià)比的不斷提高,新一代產(chǎn)品的應(yīng)用也越來

20、越廣泛。大則可以構(gòu)成復(fù)雜的工業(yè)過程控制系統(tǒng),完成復(fù)雜的控制功能;小則可以用于家電控制,甚至可以用于兒童電子玩具。它功能強(qiáng)大、體積小、質(zhì)量輕、靈活好用,配以適當(dāng)?shù)慕涌谛酒梢詷?gòu)成各種各樣、功能各異的微電子產(chǎn)品。</p><p>  隨著電子技術(shù)的飛速發(fā)展,家用電器和辦公電子設(shè)備逐漸增多,不同的設(shè)備都有自己的控制器,使用起來很不方便。這些具有人們所需要的智能化特性的產(chǎn)品減輕了人的勞動(dòng),擴(kuò)大了數(shù)字化的范圍,為家庭數(shù)字

21、化提供了可能。</p><p>  根據(jù)這種實(shí)際情況,設(shè)計(jì)了一個(gè)單片機(jī)多功能時(shí)鐘系統(tǒng),它有基本的時(shí)間功能,還有定時(shí)功能,既可作為鬧鈴,也可擴(kuò)展為定時(shí)對(duì)家電等電氣產(chǎn)品的自動(dòng)控制,可以避免多種控制器的混淆,利用一個(gè)控制器對(duì)多路電器進(jìn)行控制;可增加溫度傳感器,進(jìn)行實(shí)時(shí)溫度顯示,進(jìn)一步擴(kuò)展為利用不同的溫度某些電氣產(chǎn)品進(jìn)行自動(dòng)控制;也可增加濕度傳感器,進(jìn)行實(shí)時(shí)濕度顯示,以便對(duì)濕度進(jìn)行控制,方便人們的生活。</p>

22、;<p>  第二章 課程設(shè)計(jì)內(nèi)容與要求分析</p><p>  2.1課程設(shè)計(jì)內(nèi)容 </p><p>  2.1.1課程設(shè)計(jì)項(xiàng)目</p><p>  電子時(shí)鐘(LED顯示)</p><p>  2.1.2課程設(shè)計(jì)目的 </p><p>  鞏固和加深對(duì)單片機(jī)原理知識(shí)的理解和運(yùn)用;

23、 </p><p>  進(jìn)一步提高學(xué)生綜合運(yùn)用所學(xué)知識(shí)的能力; </p><p>  培養(yǎng)學(xué)生綜合分析問題、發(fā)現(xiàn)問題和解決問題的能力。</p><p><b>  2.1.3設(shè)計(jì)內(nèi)容</b></p><p>  以MCS-51系列單片機(jī)為核心器件組成電子時(shí)鐘控制系統(tǒng);</p><p>  利用提供

24、單元模塊構(gòu)成硬件系統(tǒng)。</p><p>  系統(tǒng)程序編制與調(diào)試;</p><p>  電路系統(tǒng)的綜合調(diào)試;</p><p><b>  撰寫課程設(shè)計(jì)論文;</b></p><p>  6) 完成課程設(shè)計(jì)論文答辯。</p><p>  2.2課程設(shè)計(jì)要求分析</p><p>

25、;<b>  2.2.1設(shè)計(jì)要求</b></p><p>  1)以STC10F04E單片機(jī)為控制核心,用單片機(jī)內(nèi)部定時(shí)器為時(shí)鐘源,設(shè)計(jì) 電子時(shí)鐘,使用4位數(shù)碼管顯示時(shí)、分,后兩位數(shù)碼管(分)的閃爍顯示秒。</p><p>  2)顯示格式為:“XXXX</p><p>  3)用4個(gè)功能鍵操作來進(jìn)行對(duì)時(shí)??勺孕卸x各鍵的功能,也可按下述方式定

26、義K1~K4鍵的功能如下。</p><p>  K1—功能鍵,每按下一次對(duì)應(yīng)的LED閃爍。</p><p>  K2—移位鍵,每按下一次向后移一位。</p><p>  K3—加1鍵。 K4—減1鍵。</p><p>  2.3系統(tǒng)單元電路組成</p><p>  第三章 控制系統(tǒng)程序設(shè)計(jì)</p>

27、<p><b>  3.1個(gè)人創(chuàng)意</b></p><p>  本實(shí)驗(yàn)的基本要求由我們組的蔡楗同學(xué)設(shè)計(jì)完成。而我在原有的基礎(chǔ)上設(shè)計(jì)了一個(gè)整點(diǎn)報(bào)時(shí)功能。報(bào)時(shí)的時(shí)候由蜂鳴器的鳴叫和LED彩燈的開幕閉幕兩個(gè)現(xiàn)象來實(shí)現(xiàn)。</p><p>  表3.1 整點(diǎn)報(bào)時(shí)設(shè)計(jì)函數(shù)</p><p><b>  3.2調(diào)試步驟</b>

28、</p><p>  3.2.1電路調(diào)試 </p><p>  把相應(yīng)編譯好的目標(biāo)程序代碼加載到單片機(jī)芯片STC12C5A08S2,可接上5V電壓源即開始進(jìn)行硬件電路的調(diào)試工作。如果顯示結(jié)果不符合設(shè)計(jì)要求,即檢查電路各連接點(diǎn)是否正確連接,再次進(jìn)行硬件電路的調(diào)試工作,或是檢查代碼程序是否符合硬件電路的設(shè)計(jì),若有錯(cuò)即進(jìn)行相應(yīng)的修改,編譯后,再進(jìn)行硬件電路的調(diào)試工作。如此反復(fù)操作,直到調(diào)試出正

29、確結(jié)果。</p><p><b>  3.2.2硬件調(diào)試</b></p><p> ?。?) 在計(jì)算機(jī)上運(yùn)行程序調(diào)試軟件Keil,進(jìn)行程序調(diào)試。</p><p> ?。?)利用老師給的板子以及自己的開發(fā)板進(jìn)行調(diào)試。</p><p> ?。?)加載程序代碼到單片機(jī)芯片STC12C5A08S2中,進(jìn)行模擬仿真。若出現(xiàn)錯(cuò)誤,查

30、看錯(cuò)誤后進(jìn)行相應(yīng)修改再進(jìn)行調(diào)試與模擬仿真,直到調(diào)試出正確結(jié)果。 </p><p><b>  3.2.3性能測(cè)試</b></p><p>  系統(tǒng)上電后進(jìn)行功能的測(cè)試,通過測(cè)試觀察到,系統(tǒng)上電后數(shù)碼管上顯示時(shí)間:00.00。通過測(cè)試,本作品設(shè)計(jì)實(shí)現(xiàn)了數(shù)字電子鐘的基本功能,且系統(tǒng)工作穩(wěn)定。經(jīng)過全組組員一起調(diào)試及驗(yàn)證,計(jì)時(shí)誤差為1.0秒。</p><p

31、>  然后進(jìn)行本人的設(shè)計(jì)測(cè)試。本次設(shè)計(jì)成功實(shí)現(xiàn):當(dāng)時(shí)間到達(dá)整點(diǎn)時(shí),首先讓蜂鳴器想起來,然后讓LED彩燈以閉幕和開幕的形式亮起來,5秒之后,蜂鳴器停止鳴叫,彩燈也全部熄滅。</p><p><b>  注:程序詳情見附錄</b></p><p>  表3.2 電子時(shí)鐘課設(shè)函數(shù)列表</p><p>  單片機(jī)原理及應(yīng)用課程設(shè)計(jì)總結(jié)</p

32、><p>  本次課程設(shè)計(jì)的題目是LED數(shù)字顯示電子時(shí)鐘。經(jīng)過本組同學(xué)的共同努力,終于調(diào)試成功,并經(jīng)過測(cè)試數(shù)據(jù)顯示, 系統(tǒng)的可靠性已經(jīng)基本能夠達(dá)到實(shí)際電子鐘的設(shè)計(jì)要求,同時(shí)本單片機(jī)數(shù)字電子鐘系統(tǒng)具有擴(kuò)展性。</p><p>  失敗是成功之母,實(shí)驗(yàn)中我們當(dāng)然也遇到了不少問題。</p><p>  首先是分工問題。剛開始我們小組由組長進(jìn)行編程,我負(fù)責(zé)整理資料和排版,小云進(jìn)

33、行收集資料。老師覺得這樣的分工很不平衡,因?yàn)槌私M長之外,其他兩名同學(xué)根本沒有參與設(shè)計(jì),這樣根本得不到鍛煉,而且背離了我們這次以設(shè)計(jì)為主的課程設(shè)計(jì)主題。所以我們后來采取了每個(gè)人在原有基礎(chǔ)之上,再額外設(shè)計(jì)一些功能的辦法,讓每位組員能積極投身到設(shè)計(jì)的行動(dòng)中,真正做到設(shè)計(jì)的要求。</p><p>  在此,先謝謝老師的用心良苦。</p><p>  再就是個(gè)人設(shè)計(jì)的部分的問題。我的設(shè)計(jì)是整點(diǎn)報(bào)時(shí)

34、功能。這個(gè)對(duì)我來說是力所能及的。我花了一天的時(shí)間去理解基礎(chǔ)程序,積極向組長請(qǐng)教,終于弄懂了這長長程序背后的奧妙。最后我又花了一個(gè)早上的時(shí)間去添加整點(diǎn)報(bào)時(shí)功能。在硬件調(diào)試的過程中都會(huì)出現(xiàn)不少的小問題,經(jīng)過反復(fù)修改程序,終于成功做出自己想要的結(jié)果。</p><p>  我們組通過此次單片機(jī)課程設(shè)計(jì)不僅僅將我們一學(xué)期在單片機(jī)課程上的所學(xué)很好的應(yīng)用到了實(shí)際設(shè)計(jì)中,更是將理論知識(shí)應(yīng)用到了實(shí)踐中,這才是真正的學(xué)習(xí),不僅僅是讀

35、萬卷書,更要行萬里路,講知識(shí)與實(shí)踐有機(jī)的結(jié)合。也十分感謝老師為我們提供了這次單片機(jī)課程設(shè)計(jì)的機(jī)會(huì),我們也通過此次課程設(shè)計(jì),更清晰更實(shí)際的接觸到了單片機(jī)。</p><p><b>  總結(jié)人:</b></p><p>  2013/06/13</p><p><b>  參考資料</b></p><p&g

36、t;  [1]李廣弟,朱月秀,王秀山編著.單片機(jī)基礎(chǔ). 北京:北京航空航天大學(xué)出版社,2001</p><p>  [2] 何立民編著.MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)系統(tǒng)配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1999</p><p>  [3] 蔡美琴等編著.MCS-51 單片機(jī)系統(tǒng)及應(yīng)用.北京:高等教育出版社.1992</p><p><b>

37、;  附錄</b></p><p>  #include<reg51.h> //#include"stc10f08xe.h"</p><p>  #include<intrins.h></p><p>  #define uchar unsigned char</p><p>  

38、#define uint unsigned int</p><p>  sbit key_function=P2^3;</p><p>  sbit key_move=P2^2;</p><p>  sbit key_add=P2^1;</p><p>  sbit key_sub=P2^0;</p><p>  sb

39、it LED=P1^0;</p><p>  sbit speaker=P3^0;</p><p>  bit time_int_flag=0; //整點(diǎn)報(bào)時(shí)標(biāo)志</p><p>  bit setfinish=0; //設(shè)置完成標(biāo)志</p><p>  bit secflag=0; //秒閃爍標(biāo)志</p>

40、;<p>  uchar keyfun_flag,move_flag,add_flag,sub_flag,set1_timer,set2_timer,set3_timer,set4_timer;</p><p>  uchar code LED_Val[] = {0xC0,0xF9,0xA4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x98};//0-9</p>&

41、lt;p>  uchar num[6];</p><p>  uchar data led_point[6]={0xfb,0xf7,0xef,0xdf,0xbf,0x7f};</p><p>  uint time,set_timer;</p><p>  uchar sec,min,hour;</p><p>  void Led(

42、);</p><p>  void send_data(uchar send_dat);</p><p>  void Disp(uint disp_value);</p><p>  void Bcd(uint bcd_value);</p><p>  void Delay_ms(uint delay);</p><p

43、>  ///整點(diǎn)報(bào)時(shí)函數(shù)//</p><p>  void Led()</p><p><b>  {</b></p><p>  if(time_int_flag==1)</p><p>  { P3=0XFE;</p><p>  Delay_ms(100);</p>

44、<p><b>  P1=0X7E;</b></p><p>  Delay_ms(1000);</p><p><b>  P1=0XBD;</b></p><p>  Delay_ms(1000);</p><p><b>  P1=0XDB;</b></p

45、><p>  Delay_ms(1000);</p><p><b>  P1=0XE7;</b></p><p>  Delay_ms(1000);</p><p><b>  }</b></p><p><b>  else</b></p>

46、<p>  {P3=0XFF;</p><p>  P1=0xff;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  //顯示函數(shù)//</b></p><p>  void D

47、isp(uint disp_value)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  Bcd(disp_value);</p><p>  for(i=0;i<4;i++)</p><p><b

48、>  {</b></p><p>  P2=led_point[i];</p><p>  if((secflag==1)&&((i==2)|(i==3))) //第幾個(gè)管閃爍</p><p><b>  {</b></p><p>  P0=0xff; </p>

49、<p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  P0=LED_Val[num[i]];</p><p><b>  } </b></p>

50、<p>  Delay_ms(5);</p><p><b>  P2=0XFF;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  void Disp_ss(uint disp_value)//設(shè)置顯示函

51、數(shù)</p><p><b>  {</b></p><p><b>  uchar i;</b></p><p>  Bcd(disp_value);</p><p>  for(i=0;i<4;i++)</p><p><b>  { </b>&

52、lt;/p><p>  if((i==3)&&(move_flag==1))</p><p><b>  {</b></p><p>  P2=led_point[i];</p><p>  P0=LED_Val[num[i]];</p><p>  Delay_ms(1000);&l

53、t;/p><p><b>  P2=0xff;</b></p><p>  Delay_ms(1000);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b>&l

54、t;/p><p>  P2=led_point[i];</p><p>  P0=LED_Val[num[i]];</p><p>  Delay_ms(5);</p><p><b>  }</b></p><p>  if((i==2)&&(move_flag==2))</p

55、><p><b>  {</b></p><p>  P2=led_point[i];</p><p>  P0=LED_Val[num[i]];</p><p>  Delay_ms(1000);</p><p><b>  P0=0xff;</b></p>&l

56、t;p>  Delay_ms(1000);</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  P2=led_point[i];</p><p>  P0

57、=LED_Val[num[i]];</p><p>  Delay_ms(5);</p><p><b>  }</b></p><p>  if((i==1)&&(move_flag==3))</p><p><b>  {</b></p><p>  P2

58、=led_point[i];</p><p>  P0=LED_Val[num[i]];</p><p>  Delay_ms(1000);</p><p><b>  P0=0xff;</b></p><p>  Delay_ms(1000);</p><p><b>  }</

59、b></p><p><b>  else</b></p><p><b>  {</b></p><p>  P2=led_point[i];</p><p>  P0=LED_Val[num[i]];</p><p>  Delay_ms(5);</p>

60、<p><b>  }</b></p><p>  if((i==0)&&(move_flag==4))</p><p><b>  {</b></p><p>  P2=led_point[i];</p><p>  P0=LED_Val[num[i]];</p

61、><p>  Delay_ms(1000);</p><p><b>  P0=0xff;</b></p><p>  Delay_ms(1000);</p><p><b>  }</b></p><p><b>  else</b></p>

62、<p><b>  {</b></p><p>  P2=led_point[i];</p><p>  P0=LED_Val[num[i]];</p><p>  Delay_ms(5);</p><p><b>  }</b></p><p><b>

63、;  }</b></p><p><b>  }</b></p><p>  void Delay_ms(uint delay)////延時(shí)函數(shù)</p><p><b>  {</b></p><p><b>  uchar j;</b></p>&l

64、t;p>  while(delay--)</p><p><b>  {</b></p><p>  for(j=125;j>0;j--)</p><p><b>  {;}</b></p><p><b>  }</b></p><p>&

65、lt;b>  }</b></p><p>  void Bcd(uint bcd_value)///數(shù)據(jù)分離函數(shù)</p><p><b>  { </b></p><p>  num[0]=bcd_value/1000; //高位</p><p>  num[1]=(bcd_value%100

66、0)/100;</p><p>  num[2]=((bcd_value%1000)%100)/10;</p><p>  num[3]=((bcd_value%1000)%100)%10; //低位</p><p><b>  }</b></p><p>  void key_scan()//鍵盤掃描函數(shù)</

67、p><p><b>  {</b></p><p>  if(key_function==0) //功能鍵按下</p><p><b>  {</b></p><p>  Delay_ms(10);</p><p>  if(key_function==0)</p>

68、;<p><b>  {</b></p><p>  while(key_function==0);</p><p>  keyfun_flag++;</p><p><b>  }</b></p><p><b>  } </b></p><

69、p>  //////////////</p><p>  if(key_move==0) //移位鍵按下</p><p><b>  {</b></p><p>  Delay_ms(10);</p><p>  if(key_move==0)</p><p><b>  

70、{ </b></p><p>  while(key_move==0);</p><p>  move_flag++;</p><p>  if(move_flag==5)</p><p><b>  {</b></p><p>  move_flag=1;</p>

71、;<p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  //////////////</p><p>  if(key_add==0) //加一鍵</p><p

72、><b>  {</b></p><p>  Delay_ms(10);</p><p>  if(key_add==0)</p><p><b>  {</b></p><p>  while(key_add==0);</p><p>  add_flag=1;<

73、;/p><p><b>  }</b></p><p><b>  }</b></p><p>  if(key_sub==0) //減一鍵</p><p><b>  {</b></p><p>  Delay_ms(10);</p>

74、<p>  if(key_sub==0)</p><p><b>  {</b></p><p>  while(key_sub==0);</p><p>  sub_flag=1;</p><p><b>  }</b></p><p><b>  }&

75、lt;/b></p><p><b>  }</b></p><p>  void key_deal()///按鍵處理</p><p><b>  {</b></p><p>  if(keyfun_flag==1) //功能按下一次</p><p><b&g

76、t;  {</b></p><p>  TR0=0; //關(guān)閉定時(shí)器</p><p>  if((move_flag==1)&&(add_flag==1)) //設(shè)置第一位</p><p><b>  {</b></p><p>  add_flag=0; </p>&l

77、t;p>  set1_timer++;</p><p>  if(set1_timer==10)</p><p><b>  {</b></p><p>  set1_timer=0;</p><p><b>  }</b></p><p><b>  }&

78、lt;/b></p><p>  if((move_flag==1)&&(sub_flag==1))</p><p><b>  {</b></p><p>  sub_flag=0; </p><p>  set1_timer--;</p><p>  if(set1_ti

79、mer==255) </p><p><b>  {</b></p><p>  set1_timer=9;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if((move_flag==2)&a

80、mp;&(add_flag==1)) //設(shè)置第二位</p><p><b>  {</b></p><p>  add_flag=0; </p><p>  set2_timer++;</p><p>  if(set2_timer==6)</p><p><b>  {&l

81、t;/b></p><p>  set2_timer=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if((move_flag==2)&&(sub_flag==1))</p><p><

82、b>  { </b></p><p>  sub_flag=0; </p><p>  set2_timer--;</p><p>  if(set2_timer==255)</p><p><b>  {</b></p><p>  set2_timer=5; <

83、;/p><p><b>  }</b></p><p><b>  }</b></p><p>  if((move_flag==3)&&(add_flag==1)) //設(shè)置第三位</p><p><b>  {</b></p><p>

84、  add_flag=0; </p><p>  set3_timer++;</p><p>  if(set4_timer<2)</p><p><b>  {</b></p><p>  if(set3_timer==10)</p><p><b>  {</b>&

85、lt;/p><p>  set3_timer=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if((set4_timer==2)&&(set3_timer==4))//時(shí)鐘十位為2</p><p>

86、<b>  {</b></p><p>  set3_timer=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if((move_flag==3)&&(sub_flag==1))</p>

87、<p><b>  { </b></p><p>  sub_flag=0; </p><p>  set3_timer--;</p><p>  if(set3_timer==255)</p><p><b>  {</b></p><p>  if(set4_

88、timer<2)</p><p><b>  {</b></p><p>  set3_timer=9;</p><p><b>  }</b></p><p>  if(set4_timer==2)</p><p><b>  {</b><

89、/p><p>  set3_timer=3;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if((move_flag==4)&&(add_fla

90、g==1)) //設(shè)置第四位</p><p>  {add_flag=0; </p><p>  set4_timer++;</p><p>  if(set3_timer>3)</p><p><b>  {</b></p><p>  if(set4_timer==2)</

91、p><p><b>  {</b></p><p>  set4_timer=0;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else </b></p>

92、<p>  if(set4_timer==3)</p><p>  {set4_timer=0;</p><p><b>  }</b></p><p><b>  }</b></p><p>  if((move_flag==4)&&(sub_flag==1))

93、</p><p><b>  { </b></p><p>  sub_flag=0; </p><p>  set4_timer--;</p><p>  if(set4_timer==255)</p><p><b>  {</b></p><p>

94、;  if(set3_timer>3)</p><p><b>  {</b></p><p>  set4_timer=1;</p><p><b>  }</b></p><p><b>  else </b></p><p><b&g

95、t;  {</b></p><p>  set4_timer=2;</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b

96、></p><p>  if(keyfun_flag==2) //功能鍵按下第二次</p><p><b>  {</b></p><p><b>  TR0=1;</b></p><p>  setfinish=1; //設(shè)置完成</p><p>  move

97、_flag=0;</p><p><b>  } </b></p><p>  set_timer=set4_timer*1000+set3_timer*100+set2_timer*10+set1_timer;//必須放在外面 </p><p><b>  }</b></p><p>  v

98、oid system_init()///系統(tǒng)初始化</p><p><b>  {</b></p><p>  TMOD=0X01;</p><p>  TH0=(65536-50000)/256; //50ms</p><p>  TL0=(65536-50000)%256; //50ms</p>

99、<p><b>  TR0=1;</b></p><p><b>  ET0=1;</b></p><p><b>  EA=1;</b></p><p><b>  }</b></p><p>  void timer0() interrup

100、t 1//計(jì)時(shí)函數(shù)</p><p><b>  {</b></p><p>  uchar count;</p><p>  TH0=(65536-50000)/256;//50ms</p><p>  TL0=(65536-50000)%256; //50ms</p><p><b>

101、;  count++;</b></p><p>  if(setfinish==1)</p><p><b>  {</b></p><p>  min=min+set2_timer*10+set1_timer;</p><p>  if(min>=60)</p><p><

102、;b>  {</b></p><p>  min=min-60;</p><p><b>  hour++;</b></p><p><b>  }</b></p><p>  hour=hour+set4_timer*10+set3_timer;</p><p

103、>  if(hour>=24)</p><p><b>  {</b></p><p>  hour=hour-24;</p><p><b>  }</b></p><p>  setfinish=0; //讀取完成,清除數(shù)據(jù)</p><p><b&g

104、t;  }</b></p><p>  if(count<=5)</p><p><b>  {</b></p><p>  secflag=1;//秒鐘閃爍標(biāo)志位</p><p><b>  }</b></p><p><b>  else

105、</b></p><p><b>  {</b></p><p>  secflag=0;</p><p>  if(count==20)</p><p><b>  {</b></p><p><b>  sec++;</b></p&

106、gt;<p><b>  count=0;</b></p><p>  if(sec==5)</p><p><b>  {</b></p><p><b>  min++;</b></p><p><b>  sec=0;</b></

107、p><p>  if(min==3)</p><p><b>  {</b></p><p><b>  hour++;</b></p><p><b>  min=0;</b></p><p>  if(hour==24) //24小時(shí)制</p&

108、gt;<p><b>  {</b></p><p><b>  hour=0;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p

109、><p><b>  }</b></p><p><b>  }</b></p><p>  if((sec>=2)&&(min>=2))</p><p><b>  {</b></p><p>  time_int_flag=1

110、;</p><p><b>  }</b></p><p><b>  else</b></p><p><b>  {</b></p><p>  time_int_flag=0;</p><p><b>  }</b></

111、p><p>  time=hour*100+min;</p><p><b>  }</b></p><p>  void main()//主函數(shù)</p><p><b>  {</b></p><p>  SCON=0x00;</p><p><b

112、>  P2=0XFF;</b></p><p>  system_init();</p><p><b>  while(1)</b></p><p><b>  {</b></p><p>  key_scan();</p><p>  key_deal(

113、);</p><p>  Disp(time);</p><p><b>  Led();</b></p><p>  if(keyfun_flag==1)</p><p>  {break;</p><p><b>  }</b></p><p&g

114、t;<b>  }</b></p><p><b>  while(1)</b></p><p>  { key_scan();</p><p>  key_deal();</p><p>  Disp_ss(set_timer);</p><p>  if(keyf

115、un_flag==2)</p><p><b>  {</b></p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  

116、while(1)</b></p><p><b>  {</b></p><p>  Disp(time);</p><p><b>  Led();</b></p><p><b>  }</b></p><p><b>  }&

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論