版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rè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標(biāo)準(zhǔn)功能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> 參考文獻(xiàn)12</b></p><p> 附錄一 C語言程序21</p><p> 附錄二 原理圖27</p><p><b> 引言</b></p
11、><p> 1957年,Ventura發(fā)明了世界上第一個電子表,從而奠定了電子時鐘的基礎(chǔ),電子時鐘開始迅速發(fā)展起來。現(xiàn)代的電子時鐘是基于單片機的一種計時工具,采用延時程序產(chǎn)生一定的時間中斷,用于一秒的定義,通過計數(shù)方式進行滿六十秒分鐘進一,滿六十分小時進一,滿二十四小時小時清零。從而達(dá)到計時的功能,是人民日常生活補課缺少的工具。現(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ù)字電子秤的各項功能,達(dá)到“鞏固知識,培養(yǎng)技能,學(xué)而用之”的實踐目的。通過這次課程設(shè)計,不但要提高我們在工作中的學(xué)習(xí)能力
14、、探究能力、應(yīng)用能力和動手能力,還要歷練我們不畏艱難、不懂便學(xué)、有漏必補的認(rèn)真嚴(yán)謹(jǐn)?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> ?。?)顯示的數(shù)據(jù)為12:00:00,然后電路會自動開始計時。</p><p> ?。?)電路中有時、分、秒各自單獨的調(diào)整按鈕,時間調(diào)整按鈕每按一次,相應(yīng)的顯示時間加1。</p><p> (4)實現(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è)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。AT89C51的管腳圖如圖3.1所示:</p><p> 圖3.1 AT89C51管腳圖</p><p> 3.1.1 AT89C51標(biāo)準(zhǔn)功能</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é)電工作模式??臻e方式體制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ù)字鐘實際上是一個對標(biāo)準(zhǔn)頻率(1HZ)進行計數(shù)的計數(shù)電路.由于計數(shù)的起始時間不可能與標(biāo)準(zhǔn)時間一致,故需要在電路上加一個校時電路,同時標(biāo)準(zhǔn)的1HZ時間信號必須做到準(zhǔn)確穩(wěn)定.通常使用石英晶體振蕩器電路構(gòu)成數(shù)字鐘.</p><p><b> ?、?/p>
24、晶體振蕩器電路</b></p><p> 晶體振蕩器電路給數(shù)字鐘提供一個頻率穩(wěn)定準(zhǔn)確的32768Hz的方波信號,可保證數(shù)字鐘的走時準(zhǔn)確及穩(wěn)定.不管是指針式的電子鐘還是數(shù)字顯示的電子鐘都使用了晶體振蕩器電路.</p><p><b> ?、品诸l器電路</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)的精度,將標(biāo)準(zhǔn)信號送入計數(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ū)動后到達(dá)各LED。只要做到每送一次段選碼時也送一次位掃描碼,并且每送一次位掃描碼后,位碼
31、中的0右移一位作為下一次的位掃描碼,即可實現(xiàn)由左向右使6只LED依次出現(xiàn)數(shù)字顯示。</p><p><b> 4.3.2運算模塊</b></p><p> 該模塊的主要功能是對時、分、秒的運算,并把運算出的最終結(jié)果存到事先已經(jīng)開辟的內(nèi)存單元里,以便顯示模塊即時地顯示出來。該模塊可以細(xì)分為秒定時模塊和運算模塊。秒定時模塊負(fù)責(zé)提供中斷信號,由于CPU運算模塊中的指令消
32、耗一定的時間,所以中斷信號最好通過硬件來實現(xiàn)。本實驗中用89C51定時器/計數(shù)器,但因為89C51供的信號的周期是毫秒級的,因此必須通過軟件的方法在運算模塊中設(shè)置一個統(tǒng)計中斷次數(shù)的變量,并且這一變量必須事先在內(nèi)存里開辟存儲單元。中斷信號是89C51工作方式為方式1,產(chǎn)生一個50ms的脈沖信號。運算模塊負(fù)責(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> (3)編寫程序:根據(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è)計,由于自己一心準(zhǔn)備考研在這次課程設(shè)計上除了那些必要的時間其余也么有花太多的時間,本想著是做實物的,但在程序上出了點問題就沒花時間去做了,所以這次設(shè)計還不算很完美。</p><
42、;p> 剛開始被拿到這個課題的,感覺挺迷茫的,當(dāng)時就只知道軟件編程要用到定時器,自己也就在這方面懂一點,其余的關(guān)于硬件電路,液晶顯示電路的驅(qū)動的什么都不知道,后來回來之后就看了一下51單片機課程設(shè)計那本書,自己還學(xué)過這門專業(yè)可,加上在網(wǎng)上找了一些資料對硬件電路的設(shè)計有了一定的了解。在大腦里面有了一個大致的思路了,于是就把仿真軟件裝好開始了我的課設(shè)。</p><p> 本次課設(shè)讓我對單片機有了更深入的認(rèn)識
43、,現(xiàn)代社會中幾乎處處都有單片機的影子,電子產(chǎn)品離不開它。課設(shè)提高了我的單片機實際運用能力,也發(fā)現(xiàn)了自己以前學(xué)習(xí)的不扎實,對問題不求甚解?,F(xiàn)在才知道“書到用時方少”啊!學(xué)習(xí)還是得扎實。本次課設(shè)能順利完成,甚是感謝指導(dǎo)老師的幫助。</p><p><b> 參考文獻(xiàn)</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)及光標(biāo)指令碼</p><p> w_com(0x06);//當(dāng)寫一個字符后,地址指針加一,光標(biāo)加一,不動光標(biāo)不閃爍</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) //確認(rèn)按鍵按下</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);//左移光標(biāo)開始閃爍</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);//左移光標(biāo)開始閃爍</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);//光標(biāo)恢復(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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設(shè)計--多功能數(shù)字電子鐘
- 單片機課程設(shè)計— 多功能數(shù)字電子鐘
- 電子時鐘數(shù)字電子鐘單片機課程設(shè)計
- 單片機課程設(shè)計-基于單片機的多功能電子鐘的設(shè)計
- 單片機課程設(shè)計報告---多功能電子鐘
- 單片機課程設(shè)計——數(shù)字電子鐘
- 單片機課程設(shè)計--數(shù)字電子鐘
- 單片機課程設(shè)計--數(shù)字電子鐘
- 單片機數(shù)字電子鐘課程設(shè)計
- 單片機課程設(shè)計--基于單片機的數(shù)字電子鐘
- 單片機課程設(shè)計--數(shù)字電子鐘
- 單片機微型機課程設(shè)計---多功能電子鐘
- 單片機課程設(shè)計--數(shù)字電子鐘設(shè)計
- 基于單片機的多功能電子鐘課程設(shè)計
- 多功能數(shù)字時鐘 單片機課程設(shè)計
- 《單片機技術(shù)》電子鐘課程設(shè)計---數(shù)字電子鐘
- 單片機課程設(shè)計--數(shù)字鐘電子鐘
- 電子鐘單片機課程設(shè)計
- 單片機課程設(shè)計--電子鐘
- 單片機課程設(shè)計(電子鐘)
評論
0/150
提交評論