優(yōu)秀畢業(yè)論文(設(shè)計):基于AT89S51單片機的電子時鐘設(shè)計_第1頁
優(yōu)秀畢業(yè)論文(設(shè)計):基于AT89S51單片機的電子時鐘設(shè)計_第2頁
優(yōu)秀畢業(yè)論文(設(shè)計):基于AT89S51單片機的電子時鐘設(shè)計_第3頁
優(yōu)秀畢業(yè)論文(設(shè)計):基于AT89S51單片機的電子時鐘設(shè)計_第4頁
優(yōu)秀畢業(yè)論文(設(shè)計):基于AT89S51單片機的電子時鐘設(shè)計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、基于at89s51單片機的電子時鐘設(shè)計摘要隨著電子技術(shù)的迅猛發(fā)展,單片機以極高的性能價格比受到人們的重視和 關(guān)注。單片機體積小、重量輕、抗干擾能力強、環(huán)境要求不高、價格低廉、可 靠性高、靈活性好、開發(fā)較為容易,被廣泛地應(yīng)用在電力電了、工業(yè)門動化控 制、自動檢測、智能儀器儀表、家用電器等各個方面,其中,鐘表的數(shù)字化給 人們生產(chǎn)生活帶來了極大的方便,而且大大地擴展了鐘表原先的報時功能。諸 如定時口動報警、按時口動打鈴、時間程序口動控制、定時廣播、定時啟閉路 燈、定時開關(guān)烘箱、通斷動力設(shè)備,其至各種定時電氣的自動啟用等,所冇這 些,都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字鐘的原理及擴大其應(yīng)用,有 著

2、非?,F(xiàn)實的意義。本課題運用所學(xué)的單片機原理及應(yīng)用、數(shù)字電子技術(shù)等知 識以at89s51單片機為核心,配備led顯示模塊、報吋模塊等功能模塊設(shè)計 一款簡易的數(shù)碼時鐘。它由4.5v直流電源供電,采用24小時制方式,通過數(shù) 碼管能夠準確顯示時間,調(diào)整時間,從而到達學(xué)習(xí)、設(shè)計、開發(fā)軟、硬件的能 力,這對提高單片機應(yīng)用及相關(guān)電了電路知識綜合應(yīng)用能力有重耍意義。關(guān)鍵詞:數(shù)碼時鐘,at89s51,控制部分,led1前言12方案論證與比較12數(shù)字時鐘方案12.2數(shù)碼管顯示方案23系統(tǒng)設(shè)計23.1總體設(shè)計23.1.1系統(tǒng)說明23.1.2系統(tǒng)框圖23.2模塊設(shè)計33.2.1電源部分33.2.2復(fù)位電路3323程序

3、下載接口43.2.4位選部分43.2.5數(shù)碼管的連接電路53.2.6控制部分63.3電路原理圖及pcb圖83.4元件清單94軟件設(shè)計94.1程序流程圖94.2源程序115功能介紹與調(diào)試要點20總結(jié)21致謝22參考文獻231前言時鐘,口從它發(fā)明的那天起,就成為人類的朋友,但隨著時間的推移,科學(xué) 技術(shù)的不斷發(fā)展,人們對時間計量的精度要求越來越高,應(yīng)用越來越廣。怎樣讓 時鐘更好的為人民服務(wù),怎樣讓我們的老朋友煥發(fā)青春呢?這就要求人們不斷設(shè) 計出新型時鐘?,F(xiàn)今,高精度的計時工具大多數(shù)都使用了石英品體振蕩器,rtit 電子鐘,石英表,右英鐘都采用了石英技術(shù),因此走時精度高,穩(wěn)定性好,使用 方便,不需耍經(jīng)

4、常調(diào)校,數(shù)字式電了鐘用集成電路計時時,譯碼代替機械式傳動, 用led顯示器代替顯示器代替指針顯示進而顯示吋間,減小了計吋誤差,這種 表具有時,分,秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基 礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義:一是指為保障系統(tǒng)正常工 作的基準振蕩定時信號,主要由晶振和外圍電路組成,晶振頻率的大小決定了單 片機系統(tǒng)工作的快慢;二是指系統(tǒng)的標(biāo)準定時時鐘,即定時時間,它通常有兩種 實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但 誤并很大,主要用在對時間精度要求不高的場合

5、;二是用專門的時鐘芯片實現(xiàn), 在對時間精度耍求很高的情況卜,通常采用這種方法,典型的時鐘芯片有: ds1302, ds12887, xi203等都可以滿足高精度的要求。本文主要介紹用單片機內(nèi)部的定時/計數(shù)器來實現(xiàn)電子時鐘的方法,本設(shè)計 由單片機at89s51芯片和led數(shù)碼管為核心,輔以必要的電路,構(gòu)成了一個單 片機電了時鐘。2方案論證與比較2.1數(shù)字時鐘方案數(shù)字時鐘4是本設(shè)計的最主要的部分。根據(jù)需要,可利用兩種方案實現(xiàn)。方案一:本方案采用dallas公司的專用時鐘芯片ds12887ao該芯片內(nèi)部采 用右英晶體振蕩器,其芯片精度不大于10ms/年,且具冇完備的時鐘鬧鐘功能, 因此,可直接對其以

6、用于顯示或設(shè)置,使得軟件編程相對簡單。為保證時鐘在電 網(wǎng)電壓不足或突然掉電等突發(fā)情況下仍能正常工作,芯片內(nèi)部包含鋰電池。當(dāng)電 網(wǎng)電壓不足或突然掉電時,系統(tǒng)自動轉(zhuǎn)換到內(nèi)部鋰電池供電系統(tǒng)。而且即使系統(tǒng) 不上電,程序不執(zhí)行時,鋰電池也能保證芯片的正常運行,以備隨時捉供正確的 時間。方案二:木方案完全用軟件實現(xiàn)數(shù)字時鐘。原理1為:在單片機內(nèi)部存儲 器設(shè)三個字節(jié)分別存放時鐘的時、分、秒信息。利用定時器與軟件結(jié)合實現(xiàn)1 秒定時中斷,每產(chǎn)生一次中斷,存儲器內(nèi)相應(yīng)的秒值加1;若秒值達到60,則將 其清零,并將相應(yīng)的分字節(jié)值加1;若分值達到60,則清零分字節(jié),并將吋字節(jié) 值加1;若時值達到24,則將十字節(jié)清零。

7、該方案具有碩件電路簡單的特點。但 由于每次執(zhí)行程序時,定時器都要重新賦初值,所以該時鐘精度不高。而且,由 于是軟件實現(xiàn),當(dāng)單片機不上電,程序不執(zhí)行時,時鐘將不工作?;谟布娐返目紤],木設(shè)計采用方案二完成數(shù)字時鐘的功能。2.2數(shù)碼管顯示方案方案一:靜態(tài)顯示。所謂靜態(tài)顯示,就是當(dāng)顯示器顯示某一字符時,相應(yīng)的 發(fā)光二極管恒定的導(dǎo)通或截止。該方式毎一位都需要一個8位輸出口控制。靜 態(tài)顯示時較小的電流能獲得較高的亮度,月字符不閃爍。但當(dāng)所顯示的位數(shù)較多 時,靜態(tài)顯示所需的i/o 口太多,造成了資源的浪費。方案二:動態(tài)顯示。所謂動態(tài)顯示8就是一位一位的輪流點亮各個位,對 于顯示器的毎一位來說,每隔一段時

8、間點亮一次。利用人的視覺暫留功能可以看 到整個顯示,但必須保證掃描速度足夠快,字符才不閃爍。顯示器的亮度既與導(dǎo) 通電流有關(guān),也于點亮?xí)r間與間隔時間的比例有關(guān)。調(diào)整參數(shù)可以實現(xiàn)較高穩(wěn)定 度的顯示。動態(tài)顯示節(jié)省了 i/o 口,降低了能耗。從節(jié)省i/o 口和降低能耗出發(fā),本設(shè)計采用方案二。3系統(tǒng)設(shè)計3總體設(shè)計3.1.1系統(tǒng)說明利用單片機(at89s51)制作簡易電子時鐘,由六個led數(shù)碼管分別顯示 小時i位、小時個位、分鐘十位、分鐘個位、秒鐘i位、秒鐘個位。6個pnp 管(9012)分別控制六個數(shù)碼管的亮滅,一個按鍵用于時間調(diào)整。3.1.2系統(tǒng)框圖本設(shè)計系統(tǒng)框圖如圖1示。圖1系統(tǒng)框圖3.2模塊設(shè)計

9、3.2.1電源部分如圖2所示,從外部引入4.5v的直流電流,為單片機、復(fù)位電路提供電源。j2圖2電源電路322復(fù)位電路如圖3所示,復(fù)位電路主要由型號為1n4148的二極管,型號為10uf/16v 的電解電容,型號為104的瓷片電容,10k的電阻以及按鍵s1構(gòu)成,s1接芯片 的相應(yīng)引腳rst,當(dāng)開關(guān)按下吋引腳rst為高電平1,斷開吋引腳為低電平0。vcc圖3復(fù)位電路3.2.3程序下載接口如圖4所示,由at89s isp構(gòu)成的兩排十針下載口,板圖上冇一個小方框, 為1號引角;卜載線的凸口為止方向,凸口的右側(cè)邊的第一個插孔為1號引角。cc_p16rstp15 (13 5 7 9at89s isp 圖

10、 4 at89s isp3.2.4位選部分如圖5所示,三極管的集電極接數(shù)碼管的公共端6,當(dāng)p2 口對應(yīng)的引腳輸 出高電平時三極管導(dǎo)通,對應(yīng)的數(shù)碼管顯示數(shù)據(jù)。這樣,在同一時刻,6位led 中只有選通的那1位顯示出字符,而其他5位則是熄滅的。同樣,在下一時刻, 只讓下一位的位選線處于選通狀態(tài),而其他個位的位選線處于關(guān)閉狀態(tài),在段碼 線上輸出將要顯示字符的段碼,則同一時刻,只有選通位顯示出相應(yīng)的字符,而 其他各位則是熄滅的。如此循環(huán)下去,就可以使各位顯示岀將要顯示的字符。雖 然這些字符是在不同時刻岀現(xiàn)的,而在同一時刻,只有一位顯示,莫他各位熄滅,但由于led的余輝和人眼的視覺暫留作用,只要每位顯示間

11、隔足夠短,則可以 造成多位同時亮的假象,達到同時顯示的效杲。q3q5q4q2r24.7k20r3 4.7kplr4 4.7k >09r5 4.7k23r6 4.7k24r74.社 25圖5位選電路3.2.5數(shù)碼管的連接電路圖6為數(shù)碼管的引腳圖3,每位的段碼線(a,b,c,d,e,f,g,dp)分別與1個8 位的鎖存器輸岀相連,由at89s51控制組合09十個數(shù)據(jù),如令其顯示1則 b,c引腳(即2, 3引腳)送高電平,此時數(shù)碼管顯示1。曲于各位的段碼線并聯(lián), 8位i/o 口輸出段碼對各個顯示位來說都是相同的。seg61a2ba3cjj4dfg lbc11e6fe d c7gdp8dpgnd

12、65圖6數(shù)碼管的引腳326控制部分at89s51是美國atmel公司生產(chǎn)的低功耗,高性能cmos 8位單片機7, 片內(nèi)含4k bytes的可系統(tǒng)編程的flash只讀程序存儲器,器件采用atmel公司 的高密度,非易失性存儲技術(shù)生產(chǎn),兼容標(biāo)準8051指令系統(tǒng)及引腳。at89s51 提供以下標(biāo)準功能:4k字節(jié)flash閃速存儲器,128字節(jié)內(nèi)部ram, 321/0 口線, 看門狗(wdt),兩個數(shù)據(jù)指針,兩個16位定吋/計數(shù)器,一個5向量兩級屮 斷結(jié)構(gòu),一個全雙工串行通信口,片內(nèi)振蕩器及時鐘電路。如圖7所示,at89s51 有40引腳,雙列直插(dip)封裝,所用引腳功能如下:(1)vcc運行時加

13、+4.5v(2)gnd接地(3)xtal1 振蕩器反相放大器及內(nèi)部時鐘發(fā)生器的輸入端(4)xtal2振蕩器反相放大器的輸出端(5)rst復(fù)位輸入,高電平有效,在品振工作時,在rst引腳上作用 2個機器周期以上的高電平,將使單片機復(fù)位。wdt溢出將使該引腳輸出高電 平,設(shè)置sft auxr的disrto位(地址8eh)可打開或關(guān)閉該功能。disrto 位缺省為reset輸出高電平打開狀態(tài)。(6)ea/vpp片外程序存儲器訪問允許信號。欲使cpu僅訪問外部程 序存儲器(地址為0000h-ffffh) , ea端必須保持低電平(接地),如果ea 端為高電平(接vcc端),cpu則執(zhí)行內(nèi)部程序存儲器中

14、的指令。(7)p1 口,p2 口pl, p2是一組帶內(nèi)部上拉電阻的8位雙向i/o 口。運 行時通過p1 口控制驅(qū)動電路的工作,將數(shù)據(jù)送到數(shù)碼管,顯示相應(yīng)的段碼,為 了達到減少功耗或滿足端口對最大電流的限制,應(yīng)加上一限流電阻。 p2.0p2.5 口控制數(shù)碼管的位選,使六個數(shù)碼管輪流顯示數(shù)據(jù),等于1時位選 三極管導(dǎo)通,等于0時位選三極管截止。(8)無自鎖開關(guān) (s2-p3.7)開關(guān)接相應(yīng)引腳p3.7,當(dāng)開關(guān)按下時,相應(yīng)引腳為低電平0,斷開時引腳為高電平lopio ipll 2plf"3p13 4p14sp15 6p17 8u1at89s51ppppppppxooola203040506

15、vppppppp三 s2rst 9p30 iop3irr12p34 14p3616p37t73031323334353637pppppppp20xtal1 xtal2vss2726252423222120ppppppppvcc40 t 39_p00 38p01 37" p02pq3 35p04 34p05 33p06 32pq7301 29 vcc 礦p2727 p2625 p2525 p24 習(xí)p2323 p2222 p2121咖圖7控制電路at89s51功能特性:1、兼容mcs-51指令系統(tǒng)。2、32個可編程i/o 口。3、2個16位可編程定時/計數(shù)器。4、全雙工uart串行屮斷

16、口線。5、6個中斷源。6、中斷喚醒省電模式。7、看門狗(wdt)電路。8、4k 可反復(fù)擦寫(1000 次)isp flash romo9、4.0-5.5v工作電壓范圍。10、全靜態(tài)工作模式:時鐘頻率0-33mhzo11、128x8bit 內(nèi)部 ramo12、低功耗空閑和掉電模式。13、3級程序加密鎖。14、掉電標(biāo)識和快速編程特性。3.3電路原理圖及pcb圖noj*1mihi1hah.bm2a /-/)da /-?q丄/3;f1j丄i仁卜丄mij<<a5>15f l c丄tnjf。f < biffli1 4i1 r 4丄1 ' 4 l丄1 ( 4 l7*1 r.i

17、fa?iss$ ghdgnd* gnd* g»d gnd1 gndj6jjjjai$9«1lesei三 x0y1no 1 pll 2h2p13 pup15 <莎7p17 sr?f9p30 10p31p32 12p33p34 !p35p36 16is192?圖8原理圖nowcmipoom2p01p13p02phpo)pl:poipisp05p17p0<leffi!p07p30耳p31alepvm3p27p34p2<p35m5p36p2ip37p23xjal1m2xiaup21vwp20wc «j 39 poo 3s"po1 p02 5fp

18、03 p04 mp0s 5fppg po7)0 礦 t"pi727 p2(24 p2525 p24” p22 n p2i21 p20圖9 pcb圖3.4元件清單電子時鐘元件清單如表2所示:表2元件清單元件名稱規(guī)格型號單位數(shù)量瓷片電容104只1瓷片電容30p只2電解電容47uf/16v只1電解電容10uf/16v只2電阻10k只1電阻4. 7k只6芯片at89s51片1芯片座dip40只1無源晶振12m只17段數(shù)碼管0. 5寸/共陰只6三極管9012個6二極管1n4148只1按鍵無口鎖只2單排插針條1雙排插針條1電池盒個1電路板9. 55*5. 664cm214軟件設(shè)計4.1程序流程圖

19、主程序流程圖如圖10所示。圖10主程序流程圖中斷處理流程圖如圖11所示。圖11中斷處理流程圖時鐘調(diào)整流程圖如圖12所示。時鐘調(diào)軽序分鐘閃爍,調(diào)時狀態(tài)時值清零返回顯示圖12時鐘調(diào)整流程圖4.2源程序p1 口對應(yīng)段碼及數(shù)值如表3所示:表3 pl 口對應(yīng)段碼及數(shù)值顯示數(shù) 字p1.7p1.6p1.5pl.4pl.3pl.2pl.lp1.016進 制代碼dpofedcba0001111113fh10000011006h2010110115bh3010011114fh40110011066h5011011016dh6011111017dh70000011107h8011111117fh9011011116

20、fh電子鐘源程序總體設(shè)計如下:中斷入口程序:org 0000h;程序執(zhí)行開始地址ljmp start;跳到標(biāo)號start執(zhí)行org 0003h汐卜中斷0中斷程序入口reti;外中斷0中斷返冋org 000bh;定時器to屮斷程序入口ljmp intto;跳至intto執(zhí)行org 0013h汐卜屮斷1屮斷程序入口reti;外中斷1中斷返回orgooibh;定時器t1中斷程序入口ljmp intt1;跳至intt1執(zhí)行org 0023h;串行屮斷程序入口地址reti;串行中斷程序返冋主程序:start: movr0,#70h;清70h-7ah共11個內(nèi)存單元movr7,#0bhclrp3.7;cl

21、eardisp: movr0,#00h;incro;djnzr7,cleardisp ;mov20h,#00h;清20日(標(biāo)志用)start 1: lcall display;調(diào)用顯示子程序jnbp3.7,setmm 1;p3.7 口為0吋轉(zhuǎn)吋間調(diào)整程序sjmpstart1;p3.7 口為 1 時跳回 start 1setmm1: ljmp setmm;轉(zhuǎn)到時間調(diào)整程序setmm1秒計時程序:to中斷服務(wù)程序intto: pushacc;累加器入棧保護pushpsw;狀態(tài)字入棧保護clreto;關(guān)to中斷允許clrtro;關(guān)閉定時器tomova,#0b7h;中斷響應(yīng)時間同步修正adda,tl0

22、;低8位初值修正movtl0,a;重裝初值(低8位修正值)mova,#3ch;高8位初值修正addca,th0movth0,a;重裝初值(高8位修正值)setbtro;開啟定時器todjnzr4, outto;20次中斷未到中斷退出addss: movr4,#14h;20次中斷到(1秒)重賦初值movr0,#71h;指向秒計時單元(71h-72h)mov r4,#14hmov7ah,#0ah;放入“熄滅符”數(shù)據(jù)movtmod,#11h;設(shè)只)、t1為16位定時器movtl0,#0b0h;50ms定時初值(to計時用)movth0,#3ch;50ms定時初值movtl1,#oboh;50ms定時

23、初值(t1閃爍定時用)movth1,#3ch;50ms定時初值setbea;總屮斷開放setbeto;允許to中斷setbtro;開啟to定時器;1秒定時用初值(50msx20)acalladd1;調(diào)用加1程序(加1秒操作)movar3;秒數(shù)據(jù)放入a (r3為2位十進制數(shù)組合)clrc;清進位標(biāo)志cjnea,#60h,addmm ;addmm: jcoutto;小于60秒?yún)贾袛嗤顺鯽callclro;大于或等于60秒時對秒計時單元清0mov r0,#77h;指向分計時單元(76h-77h)acalladd1;分計時單元加1分鐘mova,r3;分數(shù)據(jù)放入aclrc;清進位標(biāo)志cjne .a,#6

24、0h,addhh;addhh: jc outto;小于60分時小斷退出acallclro;大于或等于60分吋分計吋單元清0movr0,#79h;指向小時計時單(78h-79h)acalladd1;小時計時單元加1小時mova,r3;時數(shù)據(jù)放入aclrc;清進位標(biāo)志cjnea,#24h,hour;hour: jcoutto;小于24小時中斷退出acallclro;大于或等于24小時小時計時單元清0outto: mov72h,76h;中斷退出時將分、時計時單元數(shù)據(jù)移mov73hj7h;入對應(yīng)顯示單元mov74h,78hmov75h,79hpoppsw;恢復(fù)狀態(tài)字(出棧)popacc;恢復(fù)累加器se

25、tbeto;開放t0中斷reti;中斷返回閃動調(diào)時程序:t1中斷服務(wù)程序,用作時間調(diào)整時調(diào)整單元閃爍指示intt1: pushacc;屮斷現(xiàn)場保護pushpswmovtl1, #0b0h;裝定時器t1定時初值movth1, #3chdjnz r2jntt1out;0.3秒未到退出中斷(50ms中斷6次)movr2,#06h;重裝0.3秒定時用初值cpl02h;0.3秒定時到對閃爍標(biāo)志取反jb02h,flash 1;02h位為1吋顯示單元”熄滅”mov72h,76h;02h位為0時正常顯示mov73h,77hmov74h,78hmov75h,79hintt1out: poppsw;恢復(fù)現(xiàn)場pop

26、accreti沖斷退出flash 1: jb01h,flash2;01h位為1吋,轉(zhuǎn)小吋熄滅控制mov72h,7ah;01h位為0時,”熄滅符“數(shù)據(jù)放入分mov73h,7ah;顯示單元(72h73h),將不顯示分數(shù)據(jù)mov74h,78hmov75h,79hajmpintt1out;轉(zhuǎn)中斷退出flash2: mov72h,76h;01h位為1時,”熄滅符”數(shù)據(jù)放入小時mov73hj7h ;顯示單元(74h-75h),小時數(shù)據(jù)將不顯示mov74h,7ahmov75h,7ahajmpintt1out;轉(zhuǎn)中斷退出加1子程序:add1: mova,r0;取當(dāng)前計時單元數(shù)據(jù)到adecro;指向前一地址sw

27、apa;a«p數(shù)據(jù)高四位與低四位交換orla,r0;前一地址中數(shù)據(jù)放入a屮低四位movr0,adecromovr0,aret時鐘調(diào)整程序:當(dāng)調(diào)時按鍵按下時進入此程序setmm: clretoclrtrolcall dl1sjbp3.7,closedismovr2,#06hsetbet1setbtriset2:jnb 1p3.7,setsetboohset4:jbp3.7,set3;關(guān)定時器to中斷;關(guān)閉定時器to;調(diào)用1秒延時程序;鍵按下時間小于1秒,關(guān)閉顯示(省電);進入調(diào)時狀態(tài),賦閃爍定時初值;允許t1屮斷;開啟定時器t1;p3.7 口為0 (鍵未釋放),等待;鍵釋放,分調(diào)整閃爍

28、標(biāo)志置1;等待鍵按下add a,#01hda amov r3,aanl a,#0fhmov r0,amov ar3inc roswap aanl a,#0fhmov r0,aret清零程序:對計時單元復(fù)零用clro: clr a;a加1操作;十進制調(diào)整;移入r3寄存器;高四位變0;放回而一地址單元;取回r3中暫存數(shù)據(jù);指向當(dāng)前地址單元;a中數(shù)據(jù)高四位與低四位交換;高艸位變0;數(shù)據(jù)放入當(dāng)削地址單元中;子程序返回;清累加器;清當(dāng)前地址單元;扌旨向前一地址;前一地址單元清0;子程序返回lcalldl05sjnbp3.7,sethhmovr0,#77hlcalladd1mova,r3clrccjnea

29、,#60h,hhhhhh: jcset4lcallclroclrcajmpset4closedis: setb eto;有鍵按下,延時0.5秒;按卜時間大于0.5秒轉(zhuǎn)調(diào)小時狀態(tài);按下時間小于0.5秒加1分鐘操作;調(diào)用加1子程序;取調(diào)整單元數(shù)據(jù);清進位標(biāo)志;調(diào)整單元數(shù)據(jù)與60比較;調(diào)整單元數(shù)據(jù)小于60轉(zhuǎn)set4循環(huán);調(diào)整單元數(shù)據(jù)大于或等于60吋清0;清進位標(biāo)窪;跳轉(zhuǎn)到set4循環(huán);省電(led不顯示)狀態(tài)。開t0中斷close: jbp3.7,close;無按鍵按f,等待。lcall display;有鍵按下,調(diào)顯示子程序延吋削抖jbp3.7,close;是干擾返冋close等待waith: j

30、nbp3.7,waith;等待鍵釋放ljmpstart1;返回主程序(led數(shù)據(jù)顯示亮)sethh: clrooh;分閃爍標(biāo)志清除(進入調(diào)小時狀態(tài))sethh1: jnbp3.7,set5;等待鍵釋放setb01h;小時調(diào)整標(biāo)志置1set6: jbp3.7,set7;等待按鍵按下lcalldl05s;有鍵按下延時0.5秒jnbp3.7,setout;按下時間大于0.5秒退出時間調(diào)整movr0,#79h;按下時間小于0.5秒加1小時操作lcalladd1;調(diào)加1子程序movar3clrccjnea,#24h,houu;計時單元數(shù)據(jù)與24比較houu: jcset6;小于24轉(zhuǎn)set6循環(huán)setb

31、 tr0;開啟t0定時器(開時鐘)lcallajmpclroset6;大于或等于24時清0操作;跳轉(zhuǎn)到set6循環(huán)setout: jnbp3.7,setout1;調(diào)吋退出程序。等待鍵釋放lcall display;延時削抖jnbp3.7,setout;是抖動,返回setout再等待clr01h;清調(diào)小時標(biāo)志clrooh;清調(diào)分標(biāo)志clr02h;清閃爍標(biāo)志clrtri;關(guān)閉定時器t1clret1;關(guān)定時器t1屮斷setbtro;開啟定時器tosetbeto;開定吋器to屮斷(計吋開始)umpstart1;跳回主程序set1:lcalldisplay;鍵釋放等待時調(diào)用顯示程序(調(diào)分)ajmpset

32、2;防止鍵按下時無時鐘顯示set3:lcalldisplay;等待調(diào)分按鍵時時鐘顯示用ajmpset4set5:lcalldisplay;鍵釋放等待時調(diào)用顯示程序(調(diào)小時)ajmpsethh1;防止鍵按下時無時鐘顯示set7:lcalldisplay;等待調(diào)小時按鍵時時鐘顯示用ajmpset6setout1: lcall display;退出時鐘調(diào)整時鍵釋放等待ajmpsetout;防止鍵按下吋無吋鐘顯示顯示程序:顯示數(shù)據(jù)在70h-75h單元內(nèi),用六位led共陽數(shù)碼管顯示,p0 口輸出段碼數(shù) 據(jù),p3 口作掃描控制,每個led數(shù)碼管亮ims吋間再逐位循環(huán)。display: movr1 ,#70

33、h;指向顯示數(shù)據(jù)首址movr5,#0feh;掃描控制字初值play: mova,r5;掃描字放入amovp2,a;從卩2 口輸出mova,r1;取顯示數(shù)據(jù)到amovdptr,#tab;取段碼表地址movca,a+dptr;查顯示數(shù)據(jù)對應(yīng)段碼movpl,a;段碼放入p0 口lcalldl1ms;顯示imsincr1;指向下一地址mova,r5;掃描控制字放入ajnbacc.5,endout;acc.5=()時一次顯示結(jié)束rla;a中數(shù)據(jù)循環(huán)左移movr5,a;放回r5內(nèi)ajmpplay;跳回play循環(huán)endout: setbp2.5;一次顯示結(jié)束,p2 口復(fù)位movp1,#offh;p0 口復(fù)

34、位ret;了程序返回tab: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh;1ms延時程序,led顯zjk程序用dl1ms: mov r6,#14hdl1:movr7,#19hdl2:djnz r7,dl2djnzr6,dl1ret ;20ms延時程序,釆用調(diào)用顯示子程序以改善led的顯示閃爍現(xiàn)彖ds20ms:acalldisplayacalldisplayacalldisplayret;延時程序,用作按鍵時間的長短判斷dl1s:lcalldl05slcalldlo5sretdl05s:movr3,#20h;8 毫秒*32=0.196 秒dl05s1:l

35、calldisplaydjnzr3,dlo5s1end;程序結(jié)束5功能介紹與調(diào)試要點木設(shè)計能夠很準確的走時,并能夠通過硬件對時鐘進行時間調(diào)整。(1) 功能介紹: 顯示xx: xx: xx時間。 時間可調(diào):調(diào)整鍵(s2)按下時間小于1秒(t<ls),關(guān)閉顯示(省電)。 調(diào)整鍵(s2)按下(t>0.5s)分鐘位閃亮,此時按下s2鍵(t<0.5s)該個位數(shù)值 加1,當(dāng)加到9時,再按下s2鍵則該個位顯示0,分鐘十位加1。繼續(xù)按下調(diào)整鍵(s2) (t>0.5s)吋鐘位閃亮,此吋按下s2鍵(t<0.5s)該個位數(shù)值加1, 當(dāng)加到9時再按下加s2鍵則該個位顯示0,時鐘十位加1。繼續(xù)按下調(diào)整鍵(s2) (t>().5s),返回到正常顯示狀態(tài)。 下載線和屯源線插接說明:1下載線插接說明:兩排十針下載口,板圖 上都有一個小方框,為1號引角;下載線的凸口為正方向,凸口的右側(cè)邊的第一 個插孔為1號引角,這一點一定要切記,不然的話程序下載不進去。2.電源線插 接說明:電池盒的紅線為正,黑線為負。板子所留出來的電源插口用vcc (表 示電源正)和gnd (表示電源負)標(biāo)明。(2) 調(diào)試要點:首先確保齊器件的完好性,其次檢測齊芯片的電源線和地 線是否接觸良好,然后焊接器件,接好電源用力用表檢測各電源端、地端的狀態(tài) 是否止常。檢查

溫馨提示

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

評論

0/150

提交評論