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

下載本文檔

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

文檔簡介

1、<p><b>  單片機原理及應(yīng)用</b></p><p><b>  課程設(shè)計</b></p><p>  題 目 單片機多功能電子鐘設(shè)計 </p><p>  學(xué)院名稱 電氣工程學(xué)院 <

2、/p><p>  指導(dǎo)教師 </p><p>  班 級 電力三班 </p><p>  學(xué) 號 </p><p>  學(xué)生姓名

3、 </p><p>  2014年 月 日</p><p>  《單片機課程設(shè)計》任務(wù)書</p><p>  摘要:本文為基于單片機的數(shù)字電子時鐘的設(shè)計。單片機是集CPU、RAM、ROM、定時器/計數(shù)器和多種接口于一體的微控制器。它體積小、成本低、功能強,廣泛應(yīng)用于智能產(chǎn)品和工業(yè)自動化上。而51系列的單片機是各單片機中最為典

4、型和最有代表性的一種。,本次設(shè)計提出了系統(tǒng)總體設(shè)計方案,并設(shè)計了各部分硬件模塊和軟件流程,在用C語言設(shè)計了具體軟件程序后,將各個模塊完全編譯通過過后,結(jié)果證明了該設(shè)計系統(tǒng)的可行性。通過運用所學(xué)的知識及查閱參考大量資料,按照課程設(shè)計的基本要求完成了設(shè)計。隨著科學(xué)技術(shù)的不斷發(fā)展,人們對時間計量的精度要求越來越高。數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替指針顯示進而顯示時間,減小了計時誤差.這種表具有時、分、秒、顯

5、示時間的功能, 還可以進行時、分的校對。片選的靈活性好。傳統(tǒng)的數(shù)字電子時鐘采用了較多的分立元器件,不僅占用了很大的空間而且利用率也比很低,隨著系統(tǒng)設(shè)計復(fù)雜度的不斷提高,用傳統(tǒng)時鐘系統(tǒng)設(shè)計方法很難滿足設(shè)計需求。</p><p>  該設(shè)計利用單片機的運算和控制功能,并采用系統(tǒng)化LED顯示模塊實時顯示數(shù)字的設(shè)計方案,適當(dāng)?shù)亟鉀Q了實際生產(chǎn)和日常生活中對計時高精確度的要求,因此該設(shè)計在現(xiàn)代社會中具有廣泛的應(yīng)用性

6、。</p><p>  關(guān)鍵字:51單片機 ;電子時鐘 ; 數(shù)碼管顯示 ; C程序</p><p><b>  目錄</b></p><p><b>  引言8</b></p><p><b>  1 概述9</b></p><p><

7、b>  1.1設(shè)計目的9</b></p><p><b>  1.2設(shè)計要求9</b></p><p>  2 設(shè)計流程圖10</p><p>  3 電子原件介紹11</p><p>  3.1 AT89C51介紹11</p><p>  3.1.1AT89C

8、51標準功能11</p><p>  3.1.2AT89C51主要特性12</p><p>  4 電路設(shè)計13</p><p>  4.1數(shù)字時鐘構(gòu)成13</p><p>  4.2數(shù)字鐘的工作原理13</p><p>  4.3各部分電路分析14</p><p>  4.3.

9、1顯示模塊14</p><p>  4.3.2運算模塊14</p><p>  4.3.3校時模塊14</p><p>  4.3.4電路仿真圖14</p><p>  5 軟件設(shè)計17</p><p>  5.1 C語言在單片機中的應(yīng)用17</p><p>  5.2 程序設(shè)計

10、18</p><p><b>  結(jié)束語19</b></p><p><b>  參考文獻12</b></p><p>  附錄一 C語言程序21</p><p>  附錄二 原理圖27</p><p><b>  引言</b></p

11、><p>  1957年,Ventura發(fā)明了世界上第一個電子表,從而奠定了電子時鐘的基礎(chǔ),電子時鐘開始迅速發(fā)展起來?,F(xiàn)代的電子時鐘是基于單片機的一種計時工具,采用延時程序產(chǎn)生一定的時間中斷,用于一秒的定義,通過計數(shù)方式進行滿六十秒分鐘進一,滿六十分小時進一,滿二十四小時小時清零。從而達到計時的功能,是人民日常生活補課缺少的工具。現(xiàn)在高精度的計時工具大多數(shù)都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英

12、技術(shù),因此走時精度高,穩(wěn)定性好,使用方便,不需要經(jīng)常調(diào)試,數(shù)字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時、分、秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。</p><p><b>  1 概論</b></p><p><b>  1.1設(shè)計目的 </b>

13、;</p><p>  單片機以其功能強,體積小,功耗低,易開發(fā)等很多優(yōu)勢被廣泛應(yīng)用。本次數(shù)字時鐘的設(shè)計就是需要通過選擇合適的單片機來進行主控,再結(jié)合電路的知識,同時在軟件的設(shè)計過程中用到液晶顯示驅(qū)動、模數(shù)轉(zhuǎn)換程序及漢字庫的的設(shè)計,做到對我們所學(xué)數(shù)電、模電、單片機等知識的綜合應(yīng)用,最終實現(xiàn)所設(shè)計數(shù)字電子秤的各項功能,達到“鞏固知識,培養(yǎng)技能,學(xué)而用之”的實踐目的。通過這次課程設(shè)計,不但要提高我們在工作中的學(xué)習(xí)能力

14、、探究能力、應(yīng)用能力和動手能力,還要歷練我們不畏艱難、不懂便學(xué)、有漏必補的認真嚴謹?shù)墓ぷ鲬B(tài)度,強化我們的社會適應(yīng)力和社會競爭力,為走向社會提前試水,完善自我。</p><p><b>  1.2 設(shè)計要求</b></p><p>  設(shè)計應(yīng)包括以下基本功能:</p><p>  (1)應(yīng)用AT89C51單片機設(shè)計實現(xiàn)數(shù)字時鐘電路。</p&

15、gt;<p>  (2)顯示的數(shù)據(jù)為12:00:00,然后電路會自動開始計時。</p><p> ?。?)電路中有時、分、秒各自單獨的調(diào)整按鈕,時間調(diào)整按鈕每按一次,相應(yīng)的顯示時間加1。</p><p> ?。?)實現(xiàn)時分秒和的調(diào)時功能。</p><p>  (5) 采用C語言編寫程序并調(diào)試。</p><p><b>

16、  2 設(shè)計流程圖</b></p><p><b>  NN</b></p><p><b>  N</b></p><p><b>  N</b></p><p><b>  N</b></p><p><b&

17、gt;  N</b></p><p><b>  Y</b></p><p><b>  N</b></p><p><b>  NYY</b></p><p><b>  圖2 設(shè)計流程圖</b></p><p>

18、;<b>  3 電子元件介紹</b></p><p>  3.1 AT89C51介紹</p><p>  高AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低電壓,高性能、CMOS、8位單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制

19、造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。AT89C51的管腳圖如圖3.1所示:</p><p>  圖3.1 AT89C51管腳圖</p><p>  3.1.1 AT89C51標準功能</p><p>  4k 字節(jié)FLASH閃速存儲器,128字節(jié)內(nèi)部RAM,32個I/O口線,2個16位定時/計數(shù)器,一個5向量兩級中斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)

20、振蕩器及時鐘電路。同時,AT89C51降至0Hz的靜態(tài)邏輯操作,并支持兩種可選的節(jié)電工作模式。空閑方式體制CPU的工作,但允許RAM,定時/計數(shù)器,串行通信口及中斷系統(tǒng)繼續(xù)工作。掉電方式保存RAM中的內(nèi)容,但振蕩器體制工作并禁止其他所有不見工作直到下一個硬件復(fù)位。</p><p>  3.1.2 AT89C51主要特性</p><p>  1、與MCS-51 兼容</p>

21、<p>  2、4K字節(jié)可編程閃爍存儲器</p><p>  3、壽命:1000寫/擦循環(huán)</p><p>  4、數(shù)據(jù)保留時間:10年</p><p>  5、全靜態(tài)工作:0Hz-24Hz</p><p>  6、三級程序存儲器鎖定</p><p>  7、128*8位內(nèi)部RAM</p>&l

22、t;p>  8、32可編程I/O線</p><p>  9、兩個16位定時器/計數(shù)器</p><p><b>  10、5個中斷源</b></p><p>  11、可編程串行通道</p><p>  12、片內(nèi)振蕩器和時鐘電路 </p><p><b>  4 電路設(shè)計&

23、lt;/b></p><p><b>  4.1數(shù)字鐘的構(gòu)成</b></p><p>  數(shù)字鐘實際上是一個對標準頻率(1HZ)進行計數(shù)的計數(shù)電路.由于計數(shù)的起始時間不可能與標準時間一致,故需要在電路上加一個校時電路,同時標準的1HZ時間信號必須做到準確穩(wěn)定.通常使用石英晶體振蕩器電路構(gòu)成數(shù)字鐘.</p><p><b> ?、?/p>

24、晶體振蕩器電路</b></p><p>  晶體振蕩器電路給數(shù)字鐘提供一個頻率穩(wěn)定準確的32768Hz的方波信號,可保證數(shù)字鐘的走時準確及穩(wěn)定.不管是指針式的電子鐘還是數(shù)字顯示的電子鐘都使用了晶體振蕩器電路.</p><p><b>  ⑵分頻器電路</b></p><p>  分頻器電路將32768Hz的高頻方波信號經(jīng)32768(

25、)次分頻后得到1Hz的方波信號供秒計數(shù)器進行計數(shù).分頻器實際上也就是計數(shù)器.</p><p><b> ?、菚r間計數(shù)器電路</b></p><p>  時間計數(shù)電路由秒個位和秒十位計數(shù)器,分個位和分十位計數(shù)器及時個位和時十位計數(shù)器電路構(gòu)成,其中秒個位和秒十位計數(shù)器,分個位和分十位計數(shù)器為60進制計數(shù)器,而根據(jù)設(shè)計要求,時個位和時十位計數(shù)器為24進制計數(shù)器.</p

26、><p><b>  ⑷譯碼驅(qū)動電路</b></p><p>  譯碼驅(qū)動電路將計數(shù)器輸出的8421BCD碼轉(zhuǎn)換為數(shù)碼管需要的邏輯狀態(tài),并且為保證數(shù)碼管正常工作提供足夠的工作電流.</p><p><b> ?、蓴?shù)碼管</b></p><p>  數(shù)碼管通常有發(fā)光二極管(LED)數(shù)碼管和液晶(LCD)數(shù)

27、碼管,本設(shè)計提供的為LED數(shù)碼管.</p><p>  4.2數(shù)字鐘的工作原理</p><p>  設(shè)計原理主要利用AT89C51單片機,由單片機的p2口控制數(shù)碼管的位顯示,p1口控制數(shù)碼管的段顯示,p3.0——p3.2與按鍵相接用于時間校正。</p><p>  整個系統(tǒng)工作時,秒信號產(chǎn)生器是整個系統(tǒng)的時基信號,他直接決定計時系統(tǒng)的精度,將標準信號送入計數(shù)器的時鐘

28、脈沖。分計數(shù)器也采用60進制計數(shù)器,每累計60分鐘,發(fā)出一個“分脈沖”信號,該信號將被送到時計數(shù)器。時計數(shù)器采用24進制計數(shù)器,可以實現(xiàn)對一天24小時的累計。顯示電路將“時”“分”“秒”計數(shù)器的輸出,通過六個八段led顯示器現(xiàn)出來。校時電路是直接加一個脈沖信號到時計數(shù)器或者分計數(shù)器或者秒計數(shù)器來對“時”“分”“秒”顯示數(shù)字進行校對調(diào)整。</p><p>  4.3各部分電路分析</p><p&

29、gt;  此實時時鐘的設(shè)計與實現(xiàn),主要采用了6只LED數(shù)碼管,89C51內(nèi)部二進制16位定時器/計數(shù)器,可編程中斷控制器89C51等芯片,包括顯示模塊,運算模塊和校時模塊三大功能模塊。</p><p><b>  4.3.1顯示模塊</b></p><p>  用89C51控制,用數(shù)碼管的顯示功能來設(shè)計。顯示部分硬件用六只LED為顯示管,這些LED發(fā)光二極管的陰極是互

30、相連接在一起的,所以稱為共陰極數(shù)碼管。通過在這8只發(fā)光二極管的陽極加+5 V或0 V的電壓使不同的二極管發(fā)光,形成不同的數(shù)字。該模塊主要是將運算模塊和校時模塊運算出來并存放在內(nèi)存單元里的十六進制表示的時位、分位和秒位數(shù)值轉(zhuǎn)化為十進制,并通過8只數(shù)碼管顯示出來。CPU直接往LED輸出八段代碼,省去了硬件譯碼器。P1口作為8段數(shù)據(jù)輸出口,經(jīng)74LS04驅(qū)動后到達各LED。只要做到每送一次段選碼時也送一次位掃描碼,并且每送一次位掃描碼后,位碼

31、中的0右移一位作為下一次的位掃描碼,即可實現(xiàn)由左向右使6只LED依次出現(xiàn)數(shù)字顯示。</p><p><b>  4.3.2運算模塊</b></p><p>  該模塊的主要功能是對時、分、秒的運算,并把運算出的最終結(jié)果存到事先已經(jīng)開辟的內(nèi)存單元里,以便顯示模塊即時地顯示出來。該模塊可以細分為秒定時模塊和運算模塊。秒定時模塊負責(zé)提供中斷信號,由于CPU運算模塊中的指令消

32、耗一定的時間,所以中斷信號最好通過硬件來實現(xiàn)。本實驗中用89C51定時器/計數(shù)器,但因為89C51供的信號的周期是毫秒級的,因此必須通過軟件的方法在運算模塊中設(shè)置一個統(tǒng)計中斷次數(shù)的變量,并且這一變量必須事先在內(nèi)存里開辟存儲單元。中斷信號是89C51工作方式為方式1,產(chǎn)生一個50ms的脈沖信號。運算模塊負責(zé)時、分、秒的計算,該模塊主要通過89C51的IR1號中斷來實現(xiàn),但由于每50ms一次中斷請求,所以在中斷服務(wù)程序必須利用已申請內(nèi)存單元

33、35H來統(tǒng)計中斷請求的次數(shù),只有當(dāng)35H的值為20時,才能讓秒單元內(nèi)的數(shù)值加1。在中斷服務(wù)程序里,必須對秒、分和時的單元內(nèi)的數(shù)值進行判斷,當(dāng)秒加到60時,分必須加1 、秒清零;當(dāng)分加到60時,時加1、分清零。當(dāng)時加到24時,直接清零。然后轉(zhuǎn)到調(diào)用處。</p><p><b>  4.3.3校時模塊</b></p><p>  該模塊主要功能是修改時、分、秒內(nèi)存單元的數(shù)

34、值。每按一次鍵,對應(yīng)的顯示值便加1。分、 秒加到59后變?yōu)?0;小時加到23后再按鍵即變?yōu)?0.再調(diào)校時均不向上一單位進位(例如分加到59后變?yōu)?0;但小時不發(fā)生改變)。注意:在主程序中對時間進行調(diào)校前應(yīng)關(guān)閉中斷,以防在調(diào)校過程中定時中斷服務(wù)程序也對時間進行修改而造成混淆。</p><p>  4.3.4電路仿真圖</p><p>  在6塊LED數(shù)碼管上能實現(xiàn)數(shù)字時鐘的時、分、秒顯示,并

35、能對時、分、秒進行加1校對、減1校對和清零。本實驗中陪。P3.0鍵、P3.1鍵、P3.2鍵是分別對時、分、秒的加1校對。并且開機時時鐘時從120000開始計時的,到235959時在回到000000.</p><p>  圖4.3.4電路仿真圖</p><p><b>  5 軟件設(shè)計</b></p><p>  在單片機應(yīng)用系統(tǒng)的開發(fā)中,軟件的

36、設(shè)計是最復(fù)雜和困難的,大部分情況下工作量都較大,特別是對那些控制系統(tǒng)比較復(fù)雜的情況。如果是機電一體化的設(shè)計人員,往往需要同時考慮單片機的軟硬件資源分配。本系統(tǒng)的軟件設(shè)計主要分為系統(tǒng)初始化、按鍵、顯示處理及信號頻率輸入處理。</p><p>  程序設(shè)計是一件復(fù)雜的工作,為了把復(fù)雜的工作條理化,就要有相應(yīng)的步驟和方法。其步驟可概括為以下三點:</p><p> ?。?)分析系統(tǒng)控制要求,確定

37、算法:對復(fù)雜的問題進行具體的分析,找出合理的計算方法及適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu),從而確定編寫程序的步驟。這是能否編制出高質(zhì)量程序的關(guān)鍵。</p><p> ?。?) 根據(jù)算法畫流程圖:畫程序框圖可以把算法和解題步驟逐步具體化,以減少出錯的可能性。</p><p> ?。?)編寫程序:根據(jù)程序框圖所表示的算法和步驟,選用適當(dāng)?shù)闹噶钆帕衅饋?,?gòu)成一個有機的整體,即程序。</p><p

38、>  程序數(shù)據(jù)的一種理想方法是結(jié)構(gòu)化程序設(shè)計方法。結(jié)構(gòu)化程序設(shè)計是對利用到的控制結(jié)構(gòu)類程序做適當(dāng)?shù)南拗?,特別是限制轉(zhuǎn)向語句(或指令)的使用,從而控制了程序的復(fù)雜性,力求程序的上、下文順序與執(zhí)行流程保持一致性,使程序易讀易理解,減少邏輯錯誤和易于修改、調(diào)試。根據(jù)系統(tǒng)的控制任務(wù),本系統(tǒng)的軟件設(shè)計主要由主程序、初始化程序、顯示子程序、數(shù)據(jù)采集子程序和延時程序等組成。</p><p>  5.1 C語言在單片機中

39、的應(yīng)用</p><p>  C語言是一種通用的計算機程序設(shè)計語言,在國際上非常流行。它既可以用來編寫計算機的系統(tǒng)程序,也可以用來編寫一般的應(yīng)用程序。以前計算機的系統(tǒng)軟件主要用匯編語言編寫,單片機應(yīng)用系統(tǒng)更是如此。C語言是當(dāng)前最流行的程序設(shè)計語言,它像其它高級語言一樣,面向用戶,面向解題的過程,編程者不必熟悉具體的計算機內(nèi)部結(jié)構(gòu)和指令;C語言又像匯編語言一樣,可以對機器硬件進行操作。如進行端口I,0操作、位操作、地

40、址操作,并可內(nèi)嵌匯編指令,將匯編指令當(dāng)作它的語句一樣。我們知道,匯編語言將涉及計算機硬件,所以C語言又像低級語言一樣,可以對計算機硬件進行控制,因此人們把它稱為介于高級語言與低級語言之間的一種中級語言。正是因為C語言具有這樣的特性,所以很適合編寫要對硬件進行操作的軟件程序。本文采用C語言進行編寫.因為此系統(tǒng)軟件比較,其存儲量較大,因此必須應(yīng)用C語言編程。</p><p><b>  5.2程序設(shè)計<

41、;/b></p><p><b>  結(jié)束語</b></p><p>  第三學(xué)期的單片機課程設(shè)計到目前為止可以說是告一段落了,我也順利的完成了自己的課題簡易電子時鐘的設(shè)計,由于自己一心準備考研在這次課程設(shè)計上除了那些必要的時間其余也么有花太多的時間,本想著是做實物的,但在程序上出了點問題就沒花時間去做了,所以這次設(shè)計還不算很完美。</p><

42、;p>  剛開始被拿到這個課題的,感覺挺迷茫的,當(dāng)時就只知道軟件編程要用到定時器,自己也就在這方面懂一點,其余的關(guān)于硬件電路,液晶顯示電路的驅(qū)動的什么都不知道,后來回來之后就看了一下51單片機課程設(shè)計那本書,自己還學(xué)過這門專業(yè)可,加上在網(wǎng)上找了一些資料對硬件電路的設(shè)計有了一定的了解。在大腦里面有了一個大致的思路了,于是就把仿真軟件裝好開始了我的課設(shè)。</p><p>  本次課設(shè)讓我對單片機有了更深入的認識

43、,現(xiàn)代社會中幾乎處處都有單片機的影子,電子產(chǎn)品離不開它。課設(shè)提高了我的單片機實際運用能力,也發(fā)現(xiàn)了自己以前學(xué)習(xí)的不扎實,對問題不求甚解?,F(xiàn)在才知道“書到用時方少”啊!學(xué)習(xí)還是得扎實。本次課設(shè)能順利完成,甚是感謝指導(dǎo)老師的幫助。</p><p><b>  參考文獻</b></p><p>  [1]張洪潤,易濤.單片機應(yīng)用技術(shù)教程[M].清華大學(xué)出版社.2006<

44、;/p><p>  [2]康華光.電子技術(shù)基礎(chǔ)[M].高等教育出版社.2000</p><p>  [3]閻石.模擬電子技術(shù)基礎(chǔ)[M].華中科技大學(xué)出版社.2005</p><p>  [4]劉樂善.微型計算機接口技術(shù)及應(yīng)用[M].華中科技大學(xué)出版社.2005</p><p>  [5]張毅剛.MCS-51單片機應(yīng)用設(shè)計[M].哈爾濱工業(yè)大學(xué)出版

45、社.2005</p><p>  附錄一 C語言程序</p><p>  #include<reg51.h></p><p>  #define uchar unsigned char</p><p>  #define uint unsigned int</p><p>  sbit rs=P3^3;&

46、lt;/p><p>  sbit rw=P3^4;</p><p>  sbit lcden=P3^5;</p><p>  unsigned int a,b,c;</p><p>  uchar count,k;</p><p>  uchar shi,fen,miao;</p><p>  uc

47、har code table[]="12:00:00";</p><p>  void delay(uint z) </p><p><b>  {</b></p><p><b>  uint x,y;</b></p><p>  for(x=0;x<z;x++)&

48、lt;/p><p>  for(y=0;y<110;y++);</p><p><b>  }</b></p><p>  void w_com(uchar com)</p><p><b>  {</b></p><p><b>  rs=0;</b>

49、;</p><p><b>  lcden=0;</b></p><p><b>  P1=com;</b></p><p><b>  delay(5);</b></p><p>  lcden=1;//給高脈沖</p><p><b>  

50、delay(5);</b></p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  /*********************************</p><p><b>  寫指令</b></p

51、><p>  *********************************/</p><p>  void w_data(uchar date)</p><p><b>  {</b></p><p><b>  rs=1;</b></p><p><b>  l

52、cden=0;</b></p><p><b>  P1=date;</b></p><p><b>  delay(5);</b></p><p><b>  lcden=1;</b></p><p><b>  delay(5);</b>&

53、lt;/p><p><b>  lcden=0;</b></p><p><b>  }</b></p><p>  /*********************************</p><p><b>  寫數(shù)據(jù)</b></p><p>  ***

54、******************************/</p><p>  /*********************************</p><p><b>  初始化函數(shù)</b></p><p>  *********************************/</p><p>  void

55、w_sfm(uchar add,uchar date)//時分秒</p><p><b>  {</b></p><p>  uchar shi,ge;</p><p>  shi=date/10;</p><p>  ge=date%10; </p><p>  w_com

56、(0x80+add);</p><p>  w_data(0x30+shi);</p><p>  w_data(0x30+ge); </p><p><b>  }</b></p><p>  void init()</p><p><b>  {</b></

57、p><p>  uchar num;</p><p>  lcden=0;//初始化使能為0</p><p><b>  fen=00;</b></p><p><b>  miao=00;</b></p><p><b>  shi=00;</b><

58、/p><p>  w_com(0x30);//寫入顯示模式指令碼</p><p>  w_com(0x0c);//寫入顯示開/關(guān)及光標指令碼</p><p>  w_com(0x06);//當(dāng)寫一個字符后,地址指針加一,光標加一,不動光標不閃爍</p><p>  w_com(0x01); //清零作</p><p>  

59、w_com(0x00);//代表第一位</p><p>  for(num=0;num<8;num++)</p><p><b>  {</b></p><p>  w_data(table[num]);</p><p><b>  delay(5);</b></p><

60、p><b>  }</b></p><p>  w_sfm(0,shi);</p><p>  w_sfm(3,fen);</p><p>  w_sfm(6,miao);</p><p>  TMOD=0x01;</p><p>  TH0=(65536-50000)/256;//50毫

61、秒產(chǎn)生一次中斷</p><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><

62、b>  }</b></p><p>  void key()</p><p><b>  {</b></p><p>  P2=0x0f;//,a=P2; //先對P2置數(shù) 行掃描</p><p>  if(P2!=0x0f) //判斷是否有鍵按下</p><p><b&g

63、t;  {</b></p><p>  delay(100); //延時,軟件去干擾</p><p>  if(P2!=0x0f) //確認按鍵按下</p><p><b>  {</b></p><p><b>  a=P2;</b></p><p><b

64、>  P2=0x0f0;</b></p><p>  if(P2!=0x0f0)</p><p><b>  {</b></p><p><b>  b=P2;</b></p><p><b>  c=a&b;</b></p><p

65、><b>  }</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b>  else</b></p><p><b>  c=P2;</b></p><

66、;p><b>  }</b></p><p>  void keyscan()</p><p><b>  {</b></p><p><b>  key();</b></p><p>  if(c==0x88)//閃爍位置//選擇要調(diào)整的項目,左移</p>

67、<p><b>  { </b></p><p><b>  k++;</b></p><p>  if(k==1)//k鍵按一下依次向左移</p><p><b>  {</b></p><p><b>  TR0=0;</b>

68、</p><p>  delay(100);</p><p>  w_com(0x80+0x07);</p><p>  w_com(0x0f);//左移光標開始閃爍</p><p><b>  }</b></p><p><b>  if(k==2)</b></p&g

69、t;<p><b>  {</b></p><p>  delay(100);</p><p>  w_com(0x80+0x04);</p><p>  w_com(0x0f);//左移光標開始閃爍</p><p><b>  }</b></p><p>&l

70、t;b>  if(k==3)</b></p><p><b>  {</b></p><p>  delay(100);</p><p>  w_com(0x80+0x01);</p><p>  w_com(0x0f);//光標恢復(fù)原樣,不閃爍</p><p><b&

71、gt;  }</b></p><p><b>  if(k==4)</b></p><p><b>  {</b></p><p><b>  k=0;</b></p><p>  delay(100);</p><p>  w_com(0x

72、0c);</p><p><b>  TR0=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  if(c==0x84)</p><p><b>  {</b></

73、p><p>  if(k==1)//秒升調(diào)節(jié)</p><p><b>  {</b></p><p><b>  miao++;</b></p><p>  if(miao==60)</p><p><b>  miao=0;</b></p>

74、<p>  w_sfm(6,miao);</p><p>  w_com(0x80+0x07);</p><p><b>  }</b></p><p>  if(k==2)//分升調(diào)節(jié)</p><p><b>  {</b></p><p><b>  

75、fen++;</b></p><p>  if(fen==60)</p><p><b>  fen=0;</b></p><p>  w_sfm(3,fen);</p><p>  w_com(0x80+0x04);</p><p><b>  }</b><

76、;/p><p>  if(k==3)//時升調(diào)節(jié)</p><p><b>  {</b></p><p><b>  shi++;</b></p><p>  if(shi==24)</p><p><b>  shi=0;</b></p>&

77、lt;p>  w_sfm(0,shi);</p><p>  w_com(0x80+0x01);</p><p><b>  }</b></p><p><b>  }</b></p><p>  if(c==0x82)</p><p><b>  {&l

78、t;/b></p><p>  if(k==1)//秒降調(diào)節(jié)</p><p><b>  {</b></p><p><b>  miao--;</b></p><p>  if(miao==-1)</p><p><b>  miao=59;</b&g

79、t;</p><p>  w_sfm(6,miao);</p><p>  w_com(0x80+0x07);</p><p><b>  }</b></p><p>  if(k==2)//分降調(diào)節(jié)</p><p><b>  {</b></p><p&

80、gt;<b>  fen--;</b></p><p>  if(fen==-1)</p><p><b>  fen=59;</b></p><p>  w_sfm(3,fen);</p><p>  w_com(0x80+0x04);</p><p><b> 

81、 }</b></p><p>  if(k==3)//時降調(diào)節(jié)</p><p><b>  {</b></p><p><b>  shi--;</b></p><p>  if(shi==-1)</p><p><b>  shi=23;</b&

82、gt;</p><p>  w_sfm(0,shi);</p><p>  w_com(0x80+0x01);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  } </b></p>

83、<p>  void main()</p><p><b>  {</b></p><p><b>  rw=0;</b></p><p><b>  init();</b></p><p><b>  while(1)</b></p&g

84、t;<p><b>  {</b></p><p>  keyscan();</p><p>  if(count==20)//20*50毫秒=1000毫秒=1秒</p><p><b>  {</b></p><p><b>  count=0;</b><

85、/p><p><b>  miao++;</b></p><p>  if(miao==60)</p><p><b>  {</b></p><p><b>  miao=0;</b></p><p><b>  fen++;</b>

86、</p><p>  if(fen==60)</p><p><b>  {</b></p><p><b>  fen=0;</b></p><p><b>  shi++;</b></p><p>  if(shi==24)</p>&

87、lt;p><b>  {</b></p><p><b>  shi=0;</b></p><p><b>  }</b></p><p>  w_sfm(0,shi);</p><p><b>  }</b></p><p>

88、;  w_sfm(3,fen);</p><p><b>  }</b></p><p>  w_sfm(6,miao);</p><p><b>  }</b></p><p><b>  }</b></p><p><b>  }</

89、b></p><p>  void timer0() interrupt 1</p><p><b>  {</b></p><p>  TH0=(65536-50000)/256;//50毫秒產(chǎn)生一次中斷</p><p>  TL0=(65536-50000)%256;</p><p>&

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論