旋轉(zhuǎn)時鐘的設(shè)計_第1頁
旋轉(zhuǎn)時鐘的設(shè)計_第2頁
旋轉(zhuǎn)時鐘的設(shè)計_第3頁
旋轉(zhuǎn)時鐘的設(shè)計_第4頁
旋轉(zhuǎn)時鐘的設(shè)計_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、旋轉(zhuǎn)時鐘的設(shè)計摘要POV LED(POV即persistence of vision視覺暫留),它指的是,借助人的視覺暫留效果,通過少量LED燈的機(jī)械掃描方式來顯示各種字符或者圖像。其原理很簡單,就是靠電動機(jī)帶動一排LED燈繞電機(jī)軸高速旋轉(zhuǎn),與此同時單片機(jī)控制各個LED燈在旋轉(zhuǎn)平面相應(yīng)的位置上點亮,構(gòu)成一幅點陣畫,雖然它們不是同時點亮的,但由于人的視覺暫留效果,會誤以為每個點都是同時點亮的。這就是我這篇論文研究的對象。研究的目的第一是為了鞏固大學(xué)四年所學(xué)的關(guān)于模數(shù)電及單片機(jī)的知識,并加深對它們的印象;另外LED旋轉(zhuǎn)顯示器并沒有被人們廣泛認(rèn)知,作為電子愛好者就應(yīng)該把新鮮有趣的電子作品發(fā)揚光大。論

2、文中我詳細(xì)地敘述了掃描顯示的原理,介紹了各種掃描顯示的電子作品。通過對這些類似作品的比較,再加入我自己的想法和創(chuàng)意,確立了我所要制作的旋轉(zhuǎn)時鐘的方案。接著具體說明了制作旋轉(zhuǎn)時鐘所需要的硬件設(shè)備的功能與特性,主要包括單片機(jī)STC89C52、時鐘芯片DS1302以及紅外遙控芯片TC9012。之后進(jìn)行軟件設(shè)計,畫出各程序的流程圖,并對重要程序代碼作了解釋。最后通過軟硬件調(diào)試得出結(jié)論,證明了我所設(shè)計的旋轉(zhuǎn)時鐘方案是可行的。希望通過我的寫作能讓更多人了解并喜歡POV LED。關(guān)鍵詞:視覺暫留;旋轉(zhuǎn)時鐘;掃描顯示AbstractPOV LED (POV is short for persistence o

3、f vision), it refers to that with the help of the effect of human POV, a few of LEDs can display the characters or images by the method of mechanical scanning. Its principle is very simple:a row of LEDs rotate around a motors axis at high speed, while the MCU controls each one of the LEDs to lighten

4、 in the corresponding position of the rotating plane, forming a lattice picture, although not all the LEDs are lightening at the same time, because of the effect of POV, we will mistake all the LEDs for lightening at the same time. This is my object of this thesis. The first purpose of my research i

5、s to consolidate the knowledge we have learnt in college; secondly the rotating LED display has not been understood by many people, as a lover of electronic works should carry the fresh and interesting electronic works forward. In my thesis I had expounded the principle of the scanning display, and

6、introduced numbers of the similar electronic works. After comparing these productions, and adding my own thoughts and ideas, I had established the program of the rotating clock which I wanted to make. Then I specified the function and characteristics of the hardware which were needed for making the

7、rotating clock, including the STC89C52, the clock chip DS1302 as well as the infrared remote control chip TC9012. Then I designed the software, drew the scheme, and explained the important code. Finally, after debugging the software and the hardware, I had made the conclusion that my alternative of

8、rotating clock was feasible. I hope that more people will know and like POV LED after reading my thesis.Keywords:persistence of vision;rotating clock;scanning display目錄前言1第1章 旋轉(zhuǎn)時鐘的原理及制作方案21.1 旋轉(zhuǎn)時鐘原理分析21.2 方案的確定3第2章 硬件設(shè)計52.1 指針板的硬件設(shè)計52.1.1 單片機(jī)端口分配52.1.2 指針板電源驅(qū)動方式62.1.3 時鐘芯片DS130262.1.4 紅外對管82.2 紅外遙控設(shè)

9、備的硬件設(shè)計82.3 電源基板的硬件設(shè)計112.4 電機(jī)的選擇122.5 電刷的制作122.6 元器件焊接時應(yīng)注意的問題13第3章 軟件設(shè)計143.1 LED掃描顯示程序設(shè)計143.2 單片機(jī)讀寫DS1302程序設(shè)計163.3 單片機(jī)對紅外遙控代碼的譯碼程序設(shè)計18第4章 系統(tǒng)調(diào)試214.1 硬件調(diào)試214.2 軟件調(diào)試21結(jié)論22致謝23參考文獻(xiàn)24附錄1 旋轉(zhuǎn)時鐘電路原理圖25附錄2 旋轉(zhuǎn)時鐘PCB圖26附錄3 旋轉(zhuǎn)時鐘程序代碼27前言時下很流行一種用LED燈旋轉(zhuǎn)掃描來顯示各式各樣畫面的電子作品,即“POV LED”,它的核心部件還是單片機(jī)。用POV的原理來做顯示屏,優(yōu)勢主要表現(xiàn)在:能以少

10、量LED燈實現(xiàn)傳統(tǒng)方式下海量LED燈才能實現(xiàn)的顯示屏。例如POV的16個LED可以輕松地顯示16個漢字,而傳統(tǒng)LED屏需要4096個LED。另外字樣或圖案的顯示效果非常炫酷,可以脫離框架漂浮在半空中或者附在飛轉(zhuǎn)的車輪上。目前國內(nèi)外此類電子作品層出不窮,五花八門,各有其獨特的創(chuàng)新與魅力。從空間角度來看可分為二維掃描顯示和三維掃描顯示:前者是一列LED燈以一端為圓心作360度旋轉(zhuǎn)或者擺動成像;后者是一排或一面LED燈垂直旋轉(zhuǎn)平面作空間旋轉(zhuǎn)來顯示字樣或圖案。旋轉(zhuǎn)時鐘是典型的二維掃描顯示。另外在自行車車輪上設(shè)計安裝這種電子作品更是一種時尚炫酷的潮流,不僅不需要電機(jī),更可以實現(xiàn)不用電源來顯示美麗鮮艷的圖

11、案或者動畫。試想一下,要是夜晚騎著這樣的自行車,將會是一道多么美麗的風(fēng)景,完全能為都市夜景錦上添花。另外還有搖搖棒,它不是360掃描而是擺動掃描,但原理都是一樣的,通過人的手或者靠彈性機(jī)械結(jié)構(gòu)來搖擺一排LED燈,就可以顯示文字或者簡單的圖案,這種比較適合在演唱會上使用。國外的電子作品愛好者似乎更熱衷于三維掃描顯示,其實顯示原理跟二維的一樣,不過工程量比較大,體積也大了,機(jī)械結(jié)構(gòu)更厚實。多數(shù)還是只用一排LED,通過電機(jī)的帶動,使LED顯示板垂直于旋轉(zhuǎn)平面飛速旋轉(zhuǎn),形成一個虛擬的圓柱形空間,在圓柱的側(cè)面就能顯示各種圖案、文字或者是時間。有些愛好者將一排LED燈做成弧形,旋轉(zhuǎn)起來就成了球形,自然制作

12、地球儀最合適了。另外還有使用多排不同顏色的LED燈制作的顯示器,顯示的畫面不僅細(xì)密而且五彩繽紛,當(dāng)然工程量比較大,適于廠家去批量生產(chǎn)。我的畢業(yè)設(shè)計就是制作出一個類似這樣的電子作品旋轉(zhuǎn)時鐘,當(dāng)它工作時,電機(jī)帶動一排高亮LED繞電機(jī)軸旋轉(zhuǎn),LED燈在單片機(jī)控制下進(jìn)行一定規(guī)則的顯示,從而形成時鐘的時針、分針和時間刻度,并按每分每小時走動,模擬出一個炫彩的時鐘。接下來我就詳細(xì)敘述它的原理及制作過程。第1章 旋轉(zhuǎn)時鐘的原理及制作方案1.1 旋轉(zhuǎn)時鐘原理分析肯定有人會疑惑,就用圖1.1(a)中這么一列發(fā)光二極管就能顯示出一幅如圖1.1(b)這么漂亮的時鐘畫面嗎?其實原理很簡單,就是利用了人眼的視覺暫留的錯

13、覺。人的視覺有一種惰性,當(dāng)看一幅畫的時候,這幅畫的信息就保存在眼睛里了,即使這幅畫突然消失,但保存在眼睛里的信息還將保留一會兒(大約十分之一秒),大腦的感覺就好像這幅畫還存在似的,只要在1秒鐘內(nèi)這幅畫能間斷重復(fù)地顯示十次以上,即使它在閃爍,但人會覺得這幅畫是在一直穩(wěn)定地顯示著,這就是視覺暫留。(a)靜止?fàn)顟B(tài)下的旋轉(zhuǎn)時鐘 (b)工作中的旋轉(zhuǎn)時鐘圖 1.1 旋轉(zhuǎn)時鐘實物圖回到旋轉(zhuǎn)時鐘上,它也是利用了視覺暫留的原理。如圖1.2(a)所示,最內(nèi)側(cè)的一個發(fā)光二極管和最外側(cè)的一個發(fā)光二極管在點亮并繞電機(jī)軸高速旋轉(zhuǎn)后就形成了如圖1.2(b)所示的內(nèi)框和外框。緊挨著外框的那個LED燈用來顯示時間刻度,如圖1.

14、2(b)所示。假設(shè)12點那個刻度為0,那么每個小時時針之間的角度為36012=30,于是當(dāng)整一列發(fā)光二極管每旋轉(zhuǎn)30,該LED燈就點亮一個瞬間以呈現(xiàn)出時間刻度。如果在小于0.1秒內(nèi)這列LED燈能旋轉(zhuǎn)完一圈,人眼就會誤認(rèn)為先后產(chǎn)生的12個刻度是同一時間顯示出來的。顯示秒針、分針和時針的方法跟顯示時間刻度的原理一樣。我們假設(shè)用10支發(fā)光二極管來顯示秒針,10支里面靠內(nèi)部的9支用來顯示分針,再靠內(nèi)的7支作為時針的顯示燈,如圖1.2(a)所示。舉個例子,若要顯示3點零5秒,在時間刻度的顯示基礎(chǔ)上,控制整列發(fā)光二極管在0時點亮9支LED燈以顯示分針在12點位置上;緊接著整列發(fā)光二極管又轉(zhuǎn)過30即到了1點

15、的位置,此時點亮10支LED燈,用以顯示秒針在5秒的位置上;當(dāng)發(fā)光二極管再轉(zhuǎn)過60時,再點亮5支來顯示時針指在3點的位置上,如圖1.2(c)所示。因為發(fā)光二極管在不斷高速旋轉(zhuǎn),在1秒內(nèi)已經(jīng)重復(fù)點亮12點位置上的9支、1點位置上的10支和3點位置上的7支LED燈10次以上,所以人眼就會產(chǎn)生圖1.2(c)所示的畫面。時鐘畫面是由一列發(fā)光二極管繞圓心按順時針方向逐列高速掃描過去,每到一列單片機(jī)控制相應(yīng)的LED燈點亮或者熄滅,要在0.1秒內(nèi)掃描完一圈,然后再重復(fù)執(zhí)行這樣的掃描,人的眼睛看上去就形成了一幅時鐘的畫面。轉(zhuǎn)速越高,LED燈越多,分辨率就越高,看上去就越逼真。(a)靜止時 (b)小時刻度的呈現(xiàn)

16、 (c)指針的呈現(xiàn)圖 1.2 旋轉(zhuǎn)時鐘原理圖圖1.2中的時鐘指針是不走的,比較方便實現(xiàn),而現(xiàn)實中時鐘的指針是會走的,是每秒都在變的,這就要求顯示指針用的數(shù)據(jù)需要隨著時間的推移而不斷更新。單片機(jī)本身具有計時功能,設(shè)定好的時間一到(比如1秒),就刷新接有LED燈I/O接口的數(shù)據(jù),這樣每秒鐘的畫面都在變化,指針就仿佛在“走”了。各個時刻并不一定用點來顯示,還可以用數(shù)字來顯示,接下來分析下發(fā)光二極管是如何顯示數(shù)字時間的。如果一列LED燈在0.1秒內(nèi)轉(zhuǎn)一圈,那么我們最終看到的效果是這一列LED在一圈內(nèi)各個位置的圖像的疊加。圖1.3是用77的點陣來顯示數(shù)字3,在77的格子里亮用1表示,熄滅則為0,所以數(shù)字

17、“3”從上至下、從左至右編碼為、。如果我們用單片機(jī)控制這一列發(fā)光二極管在相鄰的7個等分時刻內(nèi)顯示7個不同的編碼值,旋轉(zhuǎn)一周后(小于0.1s)又重復(fù)輸出這些代碼,就會穩(wěn)定地顯示一個數(shù)字“3”。同理還可以顯示英文字符或者漢字,LED燈足夠多,分辨率足夠大。圖 1.3 數(shù)字3點陣圖1.2 方案的確定網(wǎng)上旋轉(zhuǎn)時鐘的資料比較多,款式也各有不同,但大致由底座、電機(jī)、指針板三大塊組成。底座主要用來固定電機(jī),是基礎(chǔ),必須要牢固;而電機(jī)是用來帶動指針板高速旋轉(zhuǎn),是出力的“苦工”;指針板是核心部分,上面有單片機(jī)、LED燈以及各種外圍元器件,各種時鐘畫面就是靠指針板顯示出來的。通過對資料的整理總結(jié)出以下幾種方案:最

18、簡單就是用七八支LED燈來顯示12個刻度點、分針和時針,顯示、計時都靠單片機(jī)完成,沒有掉電保護(hù)和調(diào)時功能,LED燈與單片機(jī)等各元件都由裝在指針板上的電池供電工作。這種方案雖然很簡單,制作起來也較方便,但是由于電池裝在指針板上,電池又相對較重,在高速旋轉(zhuǎn)時一定要裝對重才能保持指針板平衡,這樣對電機(jī)的功率要求就比較大,而且浪費電源。另外這種方案也沒有掉電保護(hù)和調(diào)時功能,即使用電腦通過軟件來調(diào)時間也很難調(diào)準(zhǔn),而且一旦掉電后就又得重新調(diào),基本上是無法顯示正確時間的,時鐘最重要的就是時間準(zhǔn)確,所以這種方案沒有實際意義,只能做擺設(shè),畢業(yè)設(shè)計當(dāng)然要做得有意義一點,因此我不采取這種方案。最復(fù)雜的方案是除了指針

19、版外還在底座上加了塊基板,板上有電源插孔,通過變壓器送電進(jìn)來,還有芯片,包括紅外解碼、按鍵檢測、聲控信號檢測;指針板主要包括單片機(jī)、時鐘芯片、數(shù)十支高亮LED燈、溫度傳感器和蜂鳴器等。可以通過遙控或者直接用語言對基板下達(dá)指令,選擇旋轉(zhuǎn)時鐘開起或者關(guān)閉、顯示的模式如時鐘模式、溫度模式或者漢字模式,最重要的是可以當(dāng)場調(diào)時了。指針板上還有一個蜂鳴器,在執(zhí)行按鍵等控制命令時鳴叫以及鬧鐘鳴叫功能和整點鳴叫報時功能。溫度傳感器負(fù)責(zé)采集溫度,并可以顯示出來。另外有了時鐘芯片后旋轉(zhuǎn)時鐘就不怕掉電了,時鐘芯片有后備電源,會同步時間,下次開起后不用調(diào)就能顯示正確的時間。更巧妙的是指針板的電是通過電機(jī)軸用電刷的方式

20、提供的,就不需要經(jīng)常換電池了,而其指針板也輕了很多,電機(jī)功率可以取小一點。我所設(shè)計的旋轉(zhuǎn)時鐘是介于最簡單和最復(fù)雜方案之間的。系統(tǒng)的總體結(jié)構(gòu)框圖如圖1.4所示,單片機(jī)負(fù)責(zé)數(shù)據(jù)的處理并控制LED的顯示;紅外接收模塊負(fù)責(zé)接收和處理紅外遙控器發(fā)出的紅外遙控信號,因為旋轉(zhuǎn)時鐘在旋轉(zhuǎn)顯示時,不方便用按鍵調(diào)時,所以引入紅外遙控技術(shù),使得作品更加實用;時鐘模塊負(fù)責(zé)記錄時間數(shù)據(jù),從而節(jié)省了單片機(jī)的資源, 提高其工作效率,并采用時鐘芯片,可在系統(tǒng)掉電后正常計時,不需重新設(shè)定時鐘時間, 這使得時鐘的使用更加便捷。以上模塊都集成在指針板上。電源模塊則裝在底座上,經(jīng)變壓器送電給電機(jī),再經(jīng)穩(wěn)壓管通過電刷給指針板上各模塊供

21、電。圖 1.4 旋轉(zhuǎn)時鐘總體結(jié)構(gòu)框圖第2章 硬件設(shè)計2.1 指針板的硬件設(shè)計指針板是旋轉(zhuǎn)時鐘的關(guān)鍵部分,負(fù)責(zé)顯示功能,指針板上有一排超高亮的LED燈。它們就是顯示部件了,亮點所在。為了制作方便,我把單片機(jī)、時鐘芯片、發(fā)光二極管、一體化紅外接收頭等器件焊接在一塊指針型的電路板上,這樣可以使旋轉(zhuǎn)的電路成為一個獨立的系統(tǒng),只需要外部送電進(jìn)來就可以正常運作。電路板中心鉆一個電機(jī)軸插孔,插孔為半圓并且半徑與電機(jī)軸相等,電機(jī)軸插入其中帶動指針板旋轉(zhuǎn)。該電路板越輕越好,LED燈可用貼片式。LED燈數(shù)目根據(jù)不同用處可選多選少,我設(shè)計的時鐘需要能顯示“12、3、6、9”這四個整點數(shù)字和秒針、分針、時針,這樣我用

22、7支LED燈顯示數(shù)字,21支用來顯示秒、分、時三針,另外再加一支內(nèi)框一支外框燈,總共30支LED燈,也足夠用來顯示漢字和英文。在這個項目中,一共采用了30支LED。也就是說每一列上可以分辨的顯示點有30個點。當(dāng)然,這只是視覺上的顯示效果。但為了節(jié)省單片機(jī)I/O管腳,并不是每支LED燈都由一個I/O管腳控制的。通過分析,我發(fā)現(xiàn)靠近內(nèi)圈的那十幾支LED,除了用做顯示時鐘指針外,并不適合用來顯示字符。而在顯示指針時,這部分LED的亮滅是同時發(fā)生的,這樣就可以用一個I/O口來控制這組LED,讓它們是同時亮或者同時滅。為了滿足驅(qū)動電流,我加了一支三極管來驅(qū)動。除了以上幾點外,需要考慮的還有顯示穩(wěn)定問題:

23、比如指針板旋轉(zhuǎn)掃描一圈完成了數(shù)字“12”的顯示,如果電機(jī)速度因為各種原因而不穩(wěn)定,轉(zhuǎn)下一圈所用的時間多于(或少于)上一圈的,那么數(shù)字“12”將會移到上一次顯示位置的左側(cè)(或右側(cè))。為了解決這個問題,在指針板上加裝一個紅外接收管,如圖2.1所示。當(dāng)接收到與之配對的紅外發(fā)光二極管(紅外發(fā)光二極管安裝在電機(jī)外殼上,并與接收管對齊)發(fā)出的紅外線后,就會反向?qū)?,接到單片機(jī)外部中斷,將會觸發(fā)外部中斷。指針板每旋轉(zhuǎn)一周,就會產(chǎn)生這樣一個中斷信號,這個信號被稱為“過零信號”。有了這個信號,單片機(jī)就可以在指針板旋轉(zhuǎn)過程中實時檢測計算指針板的角度位置,并根據(jù)指針板所處的不同位置,點亮相應(yīng)的LED,這樣每轉(zhuǎn)一圈就

24、能消除一圈的誤差,使得顯示內(nèi)容保持穩(wěn)定。接下來我介紹一下指針板的供電方式和所用到的各個芯片的資料。圖 2.1 用于同步的紅外對管2.1.1 單片機(jī)端口分配旋轉(zhuǎn)時鐘的核心部件單片機(jī)主要用于對紅外遙控代碼的譯碼,讀寫DS1302的時間數(shù)據(jù)以及控制LED顯示熄滅。對單片機(jī)的程序存儲量和控制能力要求并不高,選擇STC89C52單片機(jī)綽綽有余。本設(shè)計充分運用89C52的各個接口:首先是28支LED燈,由于有13支LED燈只用來顯示時針,所以它們是同時點亮或者熄滅的,可以接在同一個I/O接口上,取P2.7口。P0.0-P0.7和P2.0-P2.7這16個引腳分別于16支LED燈連接,可以用來顯示不同的字符

25、;其次X1、X2引腳接12MHz晶振;P3.2口接一體化紅外接收頭,作為高優(yōu)先級的外部中斷;P3.3口接紅外接收管,作為低優(yōu)先級外部中斷;P1.5-P1.7分別接DS1302的SLCK、I/O及CE引腳。2.1.2 指針板電源驅(qū)動方式根據(jù)我收集到的資料,整理出以下三種供電方式:一、電池供電。這是最簡單的方法,直接在指針板上安裝兩到三節(jié)7號電池就行了。采用這種方式不用擔(dān)心電壓波動,也沒有接觸不良的問題,能夠十分穩(wěn)定地給指針板供電。但是電池很不耐用,經(jīng)常要換,既不經(jīng)濟(jì)又不環(huán)保,最大問題是太重,一般電機(jī)帶不動,需要選擇較大功率電機(jī),成本較大。二、自感應(yīng)發(fā)電。這種方法是將一根導(dǎo)線中間部分繞在電機(jī)內(nèi)部的

26、轉(zhuǎn)子上,電機(jī)旋轉(zhuǎn)時該導(dǎo)線切割磁場,兩頭產(chǎn)生感應(yīng)電動勢,經(jīng)過整流后作為指針板上的電源。這種方式設(shè)計很巧妙,無機(jī)械磨損??上峁┑碾娏饔邢?,只能適合LED 較少的旋轉(zhuǎn)時鐘,當(dāng)LED 數(shù)量較多時,需要更大的電流,這種方式就不能滿足了。另外這種方式要對電機(jī)本身進(jìn)行改造,也有一定的難度。并不是所有的電機(jī)都適合這種改造,而且這種改造可能會給電機(jī)帶來損害。三、電刷傳導(dǎo)供電。就是在指針板上焊接一個滑環(huán),套在電機(jī)軸上,但要與電機(jī)軸絕緣,電刷扣在滑環(huán)上,并接直流電正極。負(fù)極接在電機(jī)軸上。這種方法既能提供較大的電流,又不會給指針板增重。缺點是有機(jī)械摩擦,會產(chǎn)生磨損,因此要求滑環(huán)和電刷材料要耐磨。另外,還得有足夠的彈

27、性,并且要耐銹,否則會導(dǎo)致接觸不良。當(dāng)然也會產(chǎn)生機(jī)械阻力,因此要求電機(jī)功率要較大一點,還會產(chǎn)生機(jī)械噪音。經(jīng)過再三權(quán)衡,我還是選擇了用電刷供電的方法,因為這種方法并不難實現(xiàn),電刷對電機(jī)產(chǎn)生的機(jī)械阻力應(yīng)該小于裝電池所要克服的慣性力。2.1.3 時鐘芯片DS1302大多數(shù)的單片機(jī)沒有實時時鐘部件,一旦系統(tǒng)掉電時鐘就不能運行,下次再運行,時間就不準(zhǔn)確了。即便使用備用電池,但要維持單片機(jī)系統(tǒng)的較大功耗也是堅持不了多久的。而我所做的旋轉(zhuǎn)時鐘用到的單片機(jī)主要是來準(zhǔn)確顯示時間的,因此實時時鐘部件必不可少,這里我用了MAXIM公司的DS1302時鐘芯片作為實時時鐘部件,保證時間的長久準(zhǔn)確性。DS1302 有著很

28、強(qiáng)的功能。包括時鐘/日歷寄存器和31 字節(jié)(8位)的數(shù)據(jù)暫存寄存器,數(shù)據(jù)通信僅通過一條串行輸入輸出口。實時時鐘/日歷提供包括秒、分、時、日期、月份和年份信息。閏年可自行調(diào)整,可選擇AM/PM的12 小時制或24小時制。只通過三根線進(jìn)行數(shù)據(jù)的控制和傳遞:CE(輸入信號,在讀、寫數(shù)據(jù)期間,必須為高。該引腳有兩個功能:第一,CE開始控制字訪問移位寄存器的控制邏輯;其次,CE提供結(jié)束單字節(jié)或多字節(jié)數(shù)據(jù)傳輸?shù)姆椒ā?;I/O(三線接口時的雙向數(shù)據(jù)線);SCLK(串行時鐘輸入)。通過備用電源可以讓芯片在小于1MW的功率下運作。對時鐘寄存器初始化可以設(shè)定當(dāng)前時間,控制芯片的運行,時間是用BCD碼保存的,RA

29、M可以用來存取用戶數(shù)據(jù),在用了備用電池后RAM內(nèi)的數(shù)據(jù)在系統(tǒng)掉電時能夠保持不丟失。芯片采用了簡單的I2C 三線通信方式,便于節(jié)省芯片資源和與之接口的MCU的引腳。芯片有著2.05.5V的寬供電電壓范圍,在5V供電時其接口與TTL電平兼容。并且有著很低的功耗,在2.0V供電時僅耗300nA 的電流。引腳X1 和X2 連接32.768kHz 晶體,與內(nèi)部振蕩器組成時鐘。晶體的精度直接影響著芯片時間的準(zhǔn)確與否。DS1302有兩個電源引腳VCC1和VCC2,分別連接備用電池和電源VCC。VCC2與主電源連接,VCC1接備用電池。當(dāng)VCC2低于VCC1時,芯片由VCC1供電;當(dāng)VCC2-VCC10.2V

30、時,備用電池為芯片供電。在VCC2供電時芯片能夠?qū)釉赩CC1的備用電池充電,并且是否充電和充電電流都可以由芯片內(nèi)地址為08H的時鐘寄存器進(jìn)行控制。DS1302與單片機(jī)的硬件接線圖如圖2.2所示。圖 2.2 DS1302硬件接線圖在進(jìn)行任何數(shù)據(jù)傳輸時,CE必須被制高電平(雖然CE被置為高電平,但內(nèi)部時鐘還是在晶振作用下不停地計時的),在每個SCLK上升沿時讀入數(shù)據(jù),下降沿時寫出數(shù)據(jù)。每個字節(jié)的傳輸都是由控制字節(jié)(如表2.1所示)指定的,控制字節(jié)的最高位Bit7必須是“1”,否則讀寫將會被禁止。bit6 為“0”則指定對時鐘/日歷寄存器進(jìn)行讀寫操作,為“1”則對RAM區(qū)的數(shù)據(jù)進(jìn)行讀寫操作,bit

31、1-bit5 指定相關(guān)寄存器進(jìn)行輸入輸出操作,最低位bit0 指定是輸入還是輸出,為“0”則為寫,相反則為讀,輸入輸出根據(jù)脈沖的上升沿和下降沿串行進(jìn)行。表 2.1 DS1302控制字節(jié)765432101RAM/用來表示相關(guān)寄存器的地址RD/控制字總是從最低位開始輸出。在控制字指令輸入后的下一個SCLK時鐘的上升沿時,數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從最低位(0位)開始。同樣,在緊跟8位的控制字指令后的下一個SCLK脈沖的下降沿,讀出DS1302的數(shù)據(jù),讀出的數(shù)據(jù)也是從最低位到最高位。數(shù)據(jù)讀寫時序如圖2.3所示。圖 2.3 DS1302數(shù)據(jù)讀寫時序通過8個脈沖便可讀取一個字節(jié),從而實現(xiàn)串行輸入與

32、輸出。最初通過8個時鐘周期載入控制字節(jié)到移位寄存器。如果控制指令選擇的是單字節(jié)模式,連續(xù)的8個時鐘脈沖可以進(jìn)行8位數(shù)據(jù)的讀寫操作。8個脈沖便可讀寫一個字節(jié)。載入控制字節(jié)后就可以對時鐘/日歷寄存器進(jìn)行相應(yīng)操作,時鐘/日歷寄存器如表2.2所示。表 2.2 時鐘/日歷寄存器讀寄存器寫寄存器BIT7BIT6BIT5BIT4BIT3BIT2-BIT0范圍81h80hCH16-59秒0-15秒00-5983h82h16-59分0-15分00-5985h84h12020-2315-19時0-15時1-12/0-23/PM87h86h00016-31日0-15日1-3189h88h00010月月1-128Bh

33、8Ah000001-7周1-78Dh8Ch015-99年0-15年00-998Fh8EhWP0秒寄存器(81h、80h)的位7定義為時鐘暫停標(biāo)志(CH)。當(dāng)該位置1時,時鐘振蕩器停止,DS1302處于低功耗狀態(tài);當(dāng)該位置為0時,時鐘開始運行。小時寄存器(85h、84h)的位7用于定義DS1302是運行于12小時模式還是24小時模式。當(dāng)為高時,選擇12小時模式。在12小時模式下,位5為1時,表示PM。在24小時模式時,位5是第二個10小時位(20-23時)??刂萍拇嫫鳎?Fh、8Eh)的位7是寫保護(hù)位(WP),其它7位均置為0。在任何的對時鐘和RAM的寫操作之前,WP位必須為0。當(dāng)WP位為1時,

34、寫保護(hù)位防止對任一寄存器的寫操作。2.1.4 紅外對管紅外對管是一種常用的光電器件。所謂對管就是由一支紅外線發(fā)射管和紅外線接收管組成。根據(jù)發(fā)射與接收的紅外線頻率不同,紅外對管有不同的型號。當(dāng)發(fā)射管與接收管的發(fā)射與接收窗靠近對齊時,即紅外線照射到接收管上,則接收管導(dǎo)通,其中導(dǎo)通特性與普通二極管相似,這樣就組成了一個光電觸發(fā)系統(tǒng)。一般來說,紅外對管的有效距離為數(shù)米,如果想擴(kuò)大感應(yīng)距離可加裝透鏡。當(dāng)然我用在旋轉(zhuǎn)時鐘上就不用考慮距離問題,兩管的距離完全可以在幾厘米之內(nèi)。2.2 紅外遙控設(shè)備的硬件設(shè)計紅外遙控器使用方便,功能多。目前已廣泛應(yīng)用在電視機(jī)、VCD、DVD、空調(diào)等各種家用電器中,且價格便宜,市

35、場上非常容易買到。它由紅外發(fā)射電路與紅外接收電路組成。發(fā)射電路部分有兩種設(shè)計方案:一、用專用的遙控芯片來自制一個;二、如果能將現(xiàn)成的家電遙控器上的按鍵解碼出來,用作單片機(jī)系統(tǒng)的輸入,則解決了常規(guī)矩陣鍵盤線路板過大、布線復(fù)雜、占用IO口過多的弊病。我所要設(shè)計的遙控器只是用來給旋轉(zhuǎn)時鐘調(diào)時,所以只需四個鍵,比較簡單,就用TC9012這塊比較經(jīng)典的遙控芯片自制一個遙控器。TC9012是一塊用于東芝系列紅外遙控系統(tǒng)中的專用發(fā)射集成電路,采用CMOS工藝制造。它可外接32個按鍵,提供8種用戶編碼,另外還具有3種雙重按鍵功能。TC9012的管腳設(shè)置和外圍應(yīng)用線路都進(jìn)行了高度優(yōu)化,以配合PCB的布圖和低成本

36、的要求。結(jié)構(gòu)框圖如圖2.4所示。圖 2.4 TC9012結(jié)構(gòu)框圖KI0KI4這4位輸入腳用于鍵盤掃描輸入(平時為低電平,內(nèi)置下拉電阻);KO0KO7是8位輸出腳,用于鍵盤掃描輸出;REM為帶載波的遙控信號輸出;LMP用于指示燈輸出;SEL用于用戶編碼選擇跳線(平時為高電平,內(nèi)置下拉電阻)。TC9012的一幀數(shù)據(jù)中含有32位碼,包含兩次8位用戶碼,一次8位數(shù)據(jù)碼和8位數(shù)據(jù)碼反碼及最后位的同步位。引導(dǎo)碼由4.5ms的載波和4.5ms的載波關(guān)斷波形所構(gòu)成,以作為用戶碼、數(shù)據(jù)碼以及他們的反碼的先導(dǎo)。同步位(SY)是標(biāo)志最后一位編碼是“0”或“1”的標(biāo)識位,它只有0.56ms的有載波信號構(gòu)成。發(fā)射碼的格

37、式如下圖所示:圖 2.5 TC9012 的發(fā)射碼的格式用戶碼一共有8種,是利用“SEL”腳與“KO0KO7”中的任一腳相連接來進(jìn)行選擇的,可參考圖2.6。其中S0,S1,S2由SEL與KO0KO7的連接來確定;S3固定為“1”;S4,S5,S6,S7固定為“0”。比如當(dāng)KO6和SEL連接時,客戶碼就為,轉(zhuǎn)換為16進(jìn)制即0EH。圖 2.6 TC9012的用戶碼設(shè)置接下來講解一下遙控器是如何輸出不同的“0”、“1”代碼的。當(dāng)按紅外遙控器上的按鍵后,就會有信號給遙控器上的TC9012芯片,TC9012遙控器設(shè)置4個按鍵輸入端KI0KI3和8個按鍵輸出端KO0KO7,由此設(shè)置了一個4*8的鍵盤,共32

38、鍵。鍵數(shù)據(jù)的編碼方式如下:0,0,0,KO2KO0,KI1,KI0。這樣芯片就能識別出按下的是哪個按鍵,然后編碼調(diào)制成相應(yīng)的二進(jìn)制碼,再通過紅外二極管發(fā)射出去。TC9012芯片是以脈沖位置調(diào)制方式(PPM)來調(diào)制編碼的,如圖2.7所示?!?”和“0”的區(qū)分取決于脈沖之間的時間,例如以38KHz的頻率發(fā)送0.56ms時間的脈沖集,再停發(fā)0.56ms,表示“0”;發(fā)送0.56ms,再停發(fā)1.68ms則表示“1”。再利用此載波信號去控制紅外信號的發(fā)送,這樣,這些代碼就可以通過紅外光被傳送出去,經(jīng)遠(yuǎn)處的紅外接收頭,經(jīng)單片機(jī)譯碼并執(zhí)行相應(yīng)程序,去控制指定對象。按鍵一直按著,將一幀碼發(fā)完后發(fā)固定的重復(fù)碼;

39、當(dāng)鍵松開時,等該幀碼發(fā)完后進(jìn)入低功耗模式。用戶碼和鍵數(shù)據(jù)碼的發(fā)送均是低位在前,高位在后的。圖 2.7 TC9012輸出波形下圖為參考的遙控發(fā)射電路圖,由于只用于調(diào)時,所以省去了其他各按鍵,只剩下K1K4四個按鍵。圖 2.8 紅外遙控發(fā)射原理圖制作該硬件部分要注意以下幾點1、將電源濾波電容盡可能靠近IC;電源濾波電容只需要使用104的瓷片電容即可;2、盡可能避免電源和地線走線過長或過細(xì);3、盡可能把晶振電路放置在離芯片較近的位置;4、建議在三極管的發(fā)射極使用2歐姆的限流電阻;5、建議晶振旁邊的兩個諧振電容使用150pf以上,這樣可以防止高頻諧波。6、圖中SEL腳和KO7相連,所以客戶碼選擇為:0

40、E0E。再看接收電路,接收部分直接采用了紅外一體化接收頭HS0038,如圖2.9所示。主要功能是接收紅外遙控器的代碼信號,經(jīng)放大、檢波、整形, 得到TTL 電平的代碼信號, 再送給單片機(jī)。它被焊接在指針板上,與指針板其他元器件構(gòu)成一個系統(tǒng),而輸出管腳與單片機(jī)P3.2外部中斷引腳相連。其中心頻率為38.0KHz, 獨立的PIN 二極管同前置放大器集成在同一封裝上,封裝由環(huán)氧樹脂做成,可以作為一個特殊的紅外濾光器, 能防止自然光的干擾。它的特性有: 光電檢測和前置放大器集成在同一封裝內(nèi);內(nèi)帶PCM頻率濾波器;提高了對電場干擾的防護(hù)性;輸出電平兼容TTL與CMOS;對于自然光有較強(qiáng)的抗干擾性;輸出表

41、現(xiàn)穩(wěn)定, 低功耗;持續(xù)數(shù)據(jù)傳輸率可達(dá)800bit/s。 (a)HS0038封裝圖 (b)內(nèi)部結(jié)構(gòu)框圖圖 2.9 一體化紅外接收頭由于HS0038輸出的信號與接收到的紅外編碼信號是相反的,當(dāng)接收到紅外高電平信號時,HS0038的輸出引腳將由高變?yōu)榈?。只要將該輸出引腳與單片機(jī)外部中斷口相連,就可在接收到紅外信號后向單片機(jī)發(fā)出中斷請求,之后再通過該中斷口向單片機(jī)寫入紅外信號。2.3 電源基板的硬件設(shè)計電源基板主要負(fù)責(zé)為電機(jī)提供穩(wěn)定的直流電,并通過電刷給指針板送電,是能源中心,如圖2.10所示。雖然結(jié)構(gòu)簡單,但也是必不可少的一個環(huán)節(jié),必須要保證電源穩(wěn)定可靠。直接由+12V的變壓器通過插孔給電路板送電,

42、經(jīng)電容及電位器后接直流電機(jī)。再經(jīng)7805降壓穩(wěn)壓成+5V接到電刷上輸出電壓。圖 2.10 電源基板硬件圖電位器RP用于調(diào)節(jié)電機(jī)的轉(zhuǎn)數(shù),有3個引腳A、B、P,其中A、B兩端(靠外側(cè)的兩根引腳)的阻值固定并且是最大的,等于電位器的標(biāo)稱值。中間引腳P與兩端引腳之間的電阻值隨著電位器旋鈕的調(diào)節(jié)而改變。所以焊接時將兩端的任意一腳與中間的P腳焊接在一起。另外要注意電位器功率的選取。根據(jù)電機(jī)工作電流的不同,電位器的功率一般取2W以上。為了給指針板供上穩(wěn)定的+5V電壓,采用了L7805穩(wěn)壓管。它有四種封裝結(jié)構(gòu),如圖2.11所示。L7805能輸出電壓5V、電流1.5A大小的直流電,有內(nèi)部電流限流,熱停機(jī)和安全區(qū)

43、等保護(hù),使其基本上堅不可摧。如果能提供足夠的散熱條件,就可以輸出超過1A的電流。雖然L7800系列穩(wěn)壓管主要設(shè)計成固定電壓的穩(wěn)壓器,但這些器件也可以通過外部元件的配合獲取可調(diào)的電壓和電流。圖 2.11 穩(wěn)壓管L7800系列封裝圖2.4 電機(jī)的選擇電機(jī)主要分交流電機(jī)、直流電機(jī)、伺服電機(jī)、步進(jìn)電機(jī)等幾種。直流電機(jī)的控制簡單,適合在小功率情況下應(yīng)用。旋轉(zhuǎn)時鐘對電機(jī)功率要求不高,所以選擇直流電機(jī)來帶動電路板旋轉(zhuǎn)。電機(jī)實樣如圖2.12所示。由視覺暫留原理知電機(jī)旋轉(zhuǎn)一圈的時間必須小于0.1秒,所以電機(jī)的轉(zhuǎn)速要大于600rpm(rpm是電機(jī)轉(zhuǎn)速單位,1rpm=1分鐘轉(zhuǎn)動一圈),可選用轉(zhuǎn)速約為1000rpm的

44、電機(jī),如果買不到1000rpm的電機(jī)也可以選擇更高轉(zhuǎn)速的電機(jī),可以通過降低電機(jī)工作電壓來使其減速,最簡單的辦法就是使用大功率電位器。如果直流電機(jī)找不到合適的,也可以考慮使用計算機(jī)的散熱風(fēng)扇,這個散熱風(fēng)扇最大優(yōu)點就是運行時噪聲低。圖 2.12 電機(jī)實物圖除了電機(jī)外還需要一個支架將電機(jī)固定起來。由于電機(jī)在帶動指針板轉(zhuǎn)動過程中速度比較快,指針板又有一定重量,而且配重也不一定做得很好,轉(zhuǎn)起來更是會是電機(jī)晃動,所以必須要穩(wěn)重的支架來牢牢固定住電機(jī)。2.5 電刷的制作首先找一截小金屬管,充當(dāng)滑環(huán)用,要求表面光滑耐磨,內(nèi)徑略大于電機(jī)軸的直徑,長度要比電機(jī)軸稍短一點。然后將此滑環(huán)固定在指針板背面。接著在電機(jī)軸

45、上包裹幾圈膠布(要露出軸的頂部),直到半徑與滑環(huán)內(nèi)徑差不多大小,然后用打火機(jī)均勻加熱烘烤膠布,令其收縮,牢牢包裹住電機(jī)軸。將裹有膠布的電機(jī)軸插入滑環(huán)內(nèi)(滑環(huán)一定要與電機(jī)外殼絕緣),并且緊密接觸。再找一根彈性很好又耐磨的金屬導(dǎo)體來做電刷,并在底座上鉆上兩根螺釘,導(dǎo)體中間部分壓在滑環(huán)上,兩端則扣在兩根螺釘下面,導(dǎo)體的彈力使得它與滑環(huán)緊密接觸。最后把指針板安裝在電機(jī)軸上,電機(jī)軸與指針板地線之間用焊錫焊死。在焊接時,注意調(diào)節(jié)指針板的重心,并確?;h(huán)(電源線)與電機(jī)軸(地線)之間不要搭焊短路。把電機(jī)外殼接到電源負(fù)端(注:電機(jī)外殼與電機(jī)軸是短路導(dǎo)電的),電刷接到電源正端。指針板就可以通電工作了。這時如果讓

46、電機(jī)轉(zhuǎn)動起來,電刷與滑環(huán)作相對摩擦運動,仍舊可以源源不斷地把電源共給指針板。完整的電刷如圖2.13所示。圖 2.13 電刷側(cè)面效果2.6 元器件焊接時應(yīng)注意的問題要使旋轉(zhuǎn)時鐘能按原理正常運作,除了硬件設(shè)計要合理外,各元器件的焊接環(huán)節(jié)也要足夠重視,須要注意以下一些問題:一、電烙鐵長期使用后,頭部會生成一層氧化物,造成吃錫困難,要先用工具除去氧化物,經(jīng)加熱后插入松香中即可繼續(xù)使用。新買回來的烙鐵,必須先上錫后才能使用。二、在制作過程中,宜選用低熔點的焊錫絲和沒有腐蝕性的助焊劑,如松香。千萬不能采用工業(yè)焊錫或酸性焊油。最好采用含有松香的焊錫絲,使用起來非常方便。三、電子元件在空氣中由于氧化的作用,引

47、腳上會附有一層氧化膜和一些污垢,焊前可用小刀刮掉氧化膜,并立刻涂上一層焊錫,然后再進(jìn)行焊接。四、焊接時應(yīng)使烙鐵溫度高于焊錫熔點,但不能過高,以烙鐵頭碰到松香剛冒煙為宜;焊接時間太短,焊點溫度過低,焊點粗糙,易造成虛焊。反之,焊接時間過長,焊點焊錫容易流淌,并且可能造成電子元件和集成電路的損壞。五、焊接點上焊錫不能太少,太少了焊接不牢,而太多易造成外觀一大堆而內(nèi)部未接通。焊錫應(yīng)剛好將焊接點上元件引腳全部浸沒,輪廓隱約可見即可。六、注意烙鐵和焊接點的位置。用烙鐵頭上的搪錫面去接觸焊接點,這樣傳熱焊接面積大,焊接速度快。七、焊接結(jié)束后,必須檢查有無虛焊、漏焊以及由于焊錫流淌而造成的元件短路。虛焊較難

48、發(fā)現(xiàn),可用鑷子夾住元件引腳輕輕拉動,如發(fā)現(xiàn)搖擺應(yīng)補焊。第3章 軟件設(shè)計旋轉(zhuǎn)時鐘軟件設(shè)計主要是針對單片機(jī)的程序設(shè)計,可分為LED掃描顯示程序設(shè)計、單片機(jī)讀寫DS1302時鐘芯片程序設(shè)計、單片機(jī)對紅外遙控代碼的譯碼程序設(shè)計三大塊。程序設(shè)計的過程大致可以分為以下幾個步驟:(1) 編制說明要解決問題的程序框圖。(2) 確定數(shù)據(jù)結(jié)構(gòu)、算法、工作單元、變量設(shè)定。(3) 根據(jù)所用計算機(jī)的指令系統(tǒng),按照程序框圖用匯編語言或C語言編制出源程序。(4) 將編制的程序在計算機(jī)上調(diào)試,直至實現(xiàn)預(yù)定的功能。3.1 LED掃描顯示程序設(shè)計旋轉(zhuǎn)時鐘能否準(zhǔn)確顯示出時鐘的畫面關(guān)鍵在于指針板每到一個位置單片機(jī)是否能正確點亮相應(yīng)的

49、LED燈,這是掃描顯示程序的核心內(nèi)容。為了方便程序的計算,我把連續(xù)的旋轉(zhuǎn)平面離散化,劃分成180份,每一份為一列,如圖3.1所示。圖 3.1 指針板旋轉(zhuǎn)平面劃分圖另外程序一定要與指針板旋轉(zhuǎn)周期聯(lián)系起來。根據(jù)視覺暫留的原理,一列發(fā)光二極管在同一位置出現(xiàn)的時間間隔應(yīng)該不大于0.1秒,即旋轉(zhuǎn)周期T100ms。為方便計算,取周期為90ms,則發(fā)光二極管每到一列位置上點亮并熄滅相應(yīng)LED燈的時間t=90ms180=0.5ms??捎密浖O(shè)置為點亮并延時0.4ms后熄滅,而剩下的0.1ms時間則留給單片機(jī)讀程序用。這樣程序處理完一列位置所用的時間差不多是0.5ms,之后又去處理下一列的LED燈的點亮情況。而

50、硬件上指針板經(jīng)過0.5ms,也正好轉(zhuǎn)到了下一列位置上。這樣軟件程序就能和硬件很好地配合。顯示程序?qū)懺谝粋€中斷內(nèi),通過裝在指針板和電機(jī)外殼上的紅外對管每對齊一次觸發(fā)外部中斷1并開啟中斷,執(zhí)行掃描顯示程序。所以在沒有其他更高級別中斷(遙控調(diào)時中斷)的開啟時,掃描顯示中斷程序是一直在執(zhí)行的。程序編寫的思路大致是這樣的:首先用三個寄存器(可取30H-32H),分別存放從時鐘芯片讀取來的秒、分、時三個數(shù)據(jù),這樣每執(zhí)行一次中斷就能刷新一下時間數(shù)據(jù),保證顯示的時間正確;接著判斷是否為刻度位置,我設(shè)計的旋轉(zhuǎn)時鐘要求在第1773列、4248列、8793列、132138列分別顯示12、3、6、9這四個時刻點,并在

51、第15、30、60、75、105、120、150、165列顯示整點刻度??偣惨?6列來顯示這些刻度,一旦判別到某一列符合上述任意一列的條件,就把相應(yīng)代碼輸入到P2.0P2.6這七個I/O口來顯示這些刻度;若一列都不符合就去判是否為秒針顯示位置,判斷依據(jù)是當(dāng)前位置計數(shù)器的值是否等于30H寄存器內(nèi)的值乘以3,比如30H內(nèi)的數(shù)據(jù)是15秒,那么當(dāng)計數(shù)器的值為45是,就把顯示秒針的LED燈點亮(具體計算如表3.1所示)。同理顯示分針與時針,只不過它們點亮的LED燈數(shù)目不同,秒針最長,用21支來顯示、分針19支、時針17支。并控制點亮0.4ms后熄滅返回重新再次執(zhí)行上述程序。表 3.1 鐘面刻度的列號位

52、置計算指針刻度位置(列號)秒針“秒”(059)3分針“分”(059)3時針“時”(011)15+“分”(059)4以下是掃描顯示程序的流程圖。圖 3.2 LED掃描顯示流程圖下面給出顯示程序及相關(guān)代碼解釋:EXT1 MOV R4, #00H ;顯示位置計數(shù)器,記錄旋轉(zhuǎn)過程中的位置MOV R0, #00H ;表內(nèi)數(shù)據(jù)位數(shù)DISPLAY: MOV A, R4CJNE A, #180, DIS_SCALE1 ;如果位置不等于180,說明沒有查完一圈RETI ;如果為180,表明顯示完一圈,返回主程序DIS_SCALE1: 判是否為12、3、6、9這四個數(shù)字的顯示位置,若是,點亮相應(yīng)LEDINC R0

53、 ;表內(nèi)位數(shù)加1MOV A, R0MOV DPTR, #TABLE1 ;表地址給DPTRMOV A, A+DPTR ;取表內(nèi)列數(shù)值MOV 40H, ACJNE R0, #29, COMPARE1 ;如果表內(nèi)位數(shù)不到29,跳去與位置計數(shù)值比較MOV R0, #00H ;=29,不是12、3、6、9四個點的刻度,清R0SJMP DIS_SCALE2 ;跳轉(zhuǎn)去判除12、3、6、9外的8個整點的位置COMPARE1: MOV A, R4 CJNE A, 40H, DIS_SCALE1 ;所取列數(shù)值不等于位置計數(shù)器值,跳回繼續(xù)取MOV A, R0 ;等于位置計數(shù)器值,準(zhǔn)備點亮相應(yīng)LEDMOV DPTR,

54、 #TABLE2MOV A, A+DPTR ;把相應(yīng)列數(shù)的亮燈信息取出來MOV P2, A ;P2口控制刻度點亮與否SJMP DIS_HR ;跳去判是否為時針顯示位置DIS_SCALE2: 判是否為1、2、4、5、7、8、10、11這八個刻度的顯示位置INC R0MOV A, R0MOV DPTR, #TABLE3MOV A, A+DPTRMOV 40H, ACJNE R0, #9, COMPARE2 ;不=9,跳轉(zhuǎn)判所取值是否等于顯示數(shù)據(jù)位置值SJMP DIS_HR ;=9表明不是八個刻度的顯示位置,跳轉(zhuǎn)COMPARE2: MOV A, R4 CJNE A, 40H, DIS_SCALE2

55、;不=顯示數(shù)據(jù)位置值,繼續(xù)取數(shù)比較MOV P2, #80H ;=顯示數(shù)據(jù)位置值,P2全部點亮,作為刻度顯示DIS_HR: MOV A, HUOR ;判是否為時針顯示位置MOV B, #15MUL ABMOV 41H, A ;相應(yīng)時間所對應(yīng)的時針位置列數(shù)計算公式為:MOV A, MINUTE ;“時”(011)15+“分”(059)4MOV B, #4DIV ABADD A, 41HCJNE A, R0, DIS_MIN ;不是時針顯示位置,跳去判是否為分針顯示位置MOV P0, #0F0HCLR P2.7 ;P0口高四位與P2.7口控制作為時針的LED燈DIS_MIN: MOV A, MINUTE ;判是否為分針顯示位置MOV B, #3 ;分針位置列數(shù)

溫馨提示

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

最新文檔

評論

0/150

提交評論