




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. . . . 題目:基于51單片機的LED旋轉顯示器LED旋轉顯示器LED旋轉顯示器的設計摘要LED旋轉顯示器時基于視覺暫留原理,開發(fā)的一種旋轉式LED顯示屏。其在具有一定轉速地載體上安裝16個LED發(fā)光器件,各LED發(fā)光管等間距排位一條直線,隨著旋轉速度的加快,在計算機軟件精確的時序控制下,不斷掃描出預設的文字,圖案等。使用一個光耦(U型槽的紅外對管)作為定位傳感器,當旋轉一周時,擋光板遮擋光源,光敏三極管的集電極輸出高電平,當離開擋光板時,集電極再次輸出低電平,從而給單片機一個下降沿的跳變型號,產(chǎn)生一個中斷,從而更新顯示。供電部分,因為整個裝置是在不停的高速旋轉當中,所以我們做了一個簡單
2、的電刷裝置,把220V的交流電通過變壓器變成12V的交流電,再由橋式整流電路,和濾波電路,變?yōu)槠交闹绷麟?,最后通過7805芯片輸出我們需要的5V直流電源,通過電刷把電源和指針板上的單片機連接為其供電。而旋體因為需要12V的電壓源,所以采用分別供電的方式。關鍵字: LED, 視覺暫留,直流電機,橋式整流,旋轉。目 錄摘要II1 LED旋轉顯示器在實際中的意義12 顯示原理23 系統(tǒng)硬件電路的設計33.1 系統(tǒng)硬件框圖33.2 系統(tǒng)硬件原理圖33.3 光耦傳感器模塊的設計43.4 遙控模塊的設計43.5 顯示模塊的設計73.6 電源模塊的設計73.7 指針板的制作94程序的設計104.1 程序設
3、計的分析104.2 各模塊程序的流程圖與功能說明114.2.1.MAIN函數(shù)部分114.2.2.外部中斷0服務程序部分(void INT00(void)interrupt 0)114.2.3定時器T0中斷服務程序(void kjp_test(void)interrupt 1)124.2.4定時器T1中斷服務程序(void Time_luoji()interrupt 3)124.3完整的C程序135 作品的改進215.1遙控器部分215.2時鐘芯片的部分21- 1 - / 251 LED旋轉顯示器在實際中的意義LED的特點非常明顯,壽命長、光效高、無輻射與低功耗。LED的光譜幾乎全部集中于可見光
4、頻段,其發(fā)光效率可達8090%。將LED與普通白熾燈、螺旋節(jié)能燈與T5三基色熒光燈進行對比,結果顯示:普通白熾燈的光效為12lmW,壽命小于2000小時,螺旋節(jié)能燈的光效為60lmW,壽命小于8000小時,T5熒光燈則為96lmW,壽命大約為10000小時,而直徑為5毫米的白光LED為2028lmW,壽命可大于100000小時。有人還預測,未來的LED壽命上限將無窮大。由于LED的種種優(yōu)勢,使得其在現(xiàn)在的各個領域里運用越來越廣泛,我們設計的旋轉LED顯示屏幕,具有結構新穎,節(jié)約材料的特點,一列16個LED燈旋轉顯示之后,可以代替顯示近似于16x180像素的顯示寬度和容,我想以后不斷完善和改進之
5、后應該可以在燈箱廣告和兒童玩具方面有一定的發(fā)展空間。2 顯示原理旋轉時鐘是利用視覺暫留效應設計出來的,物體在快速運動時, 當人眼所看到的影像消失后,人眼仍能繼續(xù)保留其影像0.1-0.4秒左右的圖像,這種現(xiàn)象被稱為視覺暫留現(xiàn)象。是人眼具有的一種性質。人眼觀看物體時,成像于視網(wǎng)膜上,并由視神經(jīng)輸入人腦,感覺到物體的像。但當物體移去時,視神經(jīng)對物體的印象不會立即消失,而要延續(xù)0.1 -0.4秒的時間,人眼的這種性質被稱為“眼睛的視覺暫留”。假設我們設定我們的眼睛的暫留時間是0.4秒,如果我們的16個LED旋轉一周的時間快過0.4秒,那么我們看到的圖像就是這一列LED在各個位置顯示的圖像的疊加,如右圖
6、,如果我們用定時器把LED旋轉一周的各個位置分割出180分,讓它在相應的位置顯示相應的圖像,那么我們就可以得到一個累加的圖像效果了。12V電源5V電源3 系統(tǒng)硬件電路的設計3.1 系統(tǒng)硬件框圖系統(tǒng)硬件框圖右圖所示。直流電機單片機STC89C52LED顯示光耦傳感器3.2 系統(tǒng)硬件原理圖系統(tǒng)硬件原理如下圖所示。3.3 光耦傳感器模塊的設計對射式U型槽光耦具有,響應速度快,驅動簡單,安裝容易,容易于單片機通信等特點。如圖所示,當上電之后,光耦的光敏三極管的集電極時輸出低電平,當有物體擋住了光敏三極管感應的紅外光線時,光敏三極管的集電極和發(fā)射極處于高阻態(tài),所以集電極輸出高電平,當光敏三極管再次感應到
7、紅外光源的時候,集電極再次輸出低電平,從而給單片機一個中斷信號。3.4 遙控模塊的設計3.4.1.遙控接收硬件部分遙控模塊部分,我們選擇了一個市面上最常見的一種紅外遙控接收頭,把它的信號引腳直接接在單片機的外部中斷1的借口上(P3.3),然后,遙控器,我們用了一個以前用的CD播放器的一個遙控器。接收頭如圖3.4.2.遙控編碼特點我們采用的遙控器是脈寬調制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進制的“1”,其波形如圖2所示。上述“0”和“1”組成的32位二進制碼經(jīng)
8、38kHz的載頻進行二次調制以提高發(fā)射效率,達到降低電源功耗的目的。然后再通過紅外發(fā)射二極管產(chǎn)生紅外線向空間發(fā)射,如圖3所示,連發(fā)波形如圖4所示。UPD6121G產(chǎn)生的遙控編碼是連續(xù)的32位二進制碼組,其中前16位為用戶識別碼,能區(qū)別不同的電器設備,防止不同機種遙控碼互相干擾。該芯片的用戶識別碼固定為十六進制01H;后16位為8位操作碼(功能碼)與其反碼。UPD6121G最多額128種不同組合的編碼。當遙控器在按鍵按下后,周期性地發(fā)出同一種32位二進制碼,周期約為108ms。一組碼本身的持續(xù)時間隨它包含的二進制“0”和“1”的個數(shù)不同而不同,大約在4563ms之間,圖4為發(fā)射波形圖。當一個鍵按
9、下超過36ms,振蕩器使芯片激活,將發(fā)射一組108ms的編碼脈沖,這108ms發(fā)射代碼由一個起始碼(9ms),一個結果碼(4.5ms),低8位地址碼(9ms18ms),高8位地址碼(9ms18ms),8位數(shù)據(jù)碼(9ms18ms)和這8位數(shù)據(jù)的反碼(9ms18ms)組成。如果鍵按下超過108ms仍未松開,接下來發(fā)射的代碼(連發(fā)代碼)將僅由起始碼(9ms)和結束碼(2.5ms)組成。代碼格式(以接收代碼為準,接收代碼與發(fā)射代碼反向)位定義單發(fā)代碼格式連發(fā)代碼格式3.4.3.遙控解碼解碼的關鍵是如何識別“0”和“1”,從位的定義我們可以發(fā)現(xiàn)“0”、“1”均以0.56ms的低電平開始,不同的是高電平的
10、寬度不同,“0”為0.56ms,“1”為1.68ms,所以必須根據(jù)高電平的寬度區(qū)別“0”和“1”。如果從0.56ms低電平過后,開始延時,0.56ms以后,若讀到的電平為低,說明該位為“0”,反之則為“1”,為了可靠起見,延時必須比0.56ms長些,但又不能超過1.12ms,否則如果該位為“0”,讀到的已是下一位的高電平,因此取(1.12ms+0.56ms)/2=0.84ms最為可靠,一般取0.84ms左右均可。根據(jù)碼的格式,應該等待9ms的起始碼和4.5ms的結果碼完成后才能讀碼。P0.0P0.2P0.3P0.4P0.5P0.6P0.7P1.0P1.1P1.2P1.3P1.4P1.5P1.6
11、P1.73.5 顯示模塊的設計LED顯示器具有功耗低,接口控制方便等優(yōu)點,而且模塊的接口信號和操作指令具有廣泛的兼容性,并能直接與單片機接口,可方便地實現(xiàn)各種不同的操作,在各類測量與控制儀表中被廣泛的應用。當在LED上顯示漢字時,應先取得漢字的點陣構成數(shù)據(jù),然后將其寫入顯示存儲器中進行顯示。旋轉LED顯示器是一種通過同步控制發(fā)光二極位置和點亮狀態(tài)來實現(xiàn)圖文顯示的新型顯示器,其結構新穎,成本低廉,可視角度達360°。本設計采用16個并排發(fā)光二極管,利用人眼的“視覺暫留效應”顯示文字與圖案。顯示模塊如圖1.8所示。圖 1.8 顯示模塊框圖3.6 電源模塊的設計電網(wǎng)提供的交流電源經(jīng)過整流、
12、濾波,可得到直流電壓,但此電壓仍然存在波紋。同時,由于交流電網(wǎng)電壓的波動,負載的變化和溫度的影響等,使輸出電壓紋波會更大,即輸出電流電壓不穩(wěn)定。為了得到穩(wěn)定的輸出電壓,在濾波電路與負載之間常常加入穩(wěn)壓電路,以使負載得穩(wěn)定的輸出電壓。通過上面的分析可知,直流穩(wěn)壓電源主要由變壓器、整流電路、濾波電路和穩(wěn)壓電路四大部分組成。直流穩(wěn)壓電路組成框圖如圖1.10所示。圖1.10 直流穩(wěn)壓電源的組成框圖橋式整流濾波電路如圖1.11所示。+5V3217805圖1.11 橋式整流濾波電路220V交流電壓經(jīng)過變壓器輸出為12V交流電壓,再經(jīng)過橋式整流成為單向脈沖電壓,再經(jīng)過濾波電路成為比較平穩(wěn)的直流電壓,最后通過
13、7805穩(wěn)壓成輸出穩(wěn)定的5V直流電。7805引腳圖如圖1.12所示。圖1.12 7805引腳圖對于7805三端穩(wěn)壓IC,它和其它78XX一樣,都屬于+V電壓穩(wěn)壓輸出鏈路。其1腳為輸入端,2腳接地,3腳穩(wěn)壓輸出。7805是正電壓三端固定穩(wěn)壓器集成電路,屬于線性穩(wěn)壓器件。7806應用非常廣泛,在各種穩(wěn)壓電源、充電器、家電等產(chǎn)品中均有運用。主要參數(shù):最高輸入電壓:36V最大輸出電流:1.5A。輸出電壓偏差:典型=5V;最低=4.75V;最高=5.25V。工作溫度圍:070 。AAAAAAAA A圖A圖3.7 指針板的制作3.7.1.指針板,由于為了使指針板的體積減小,減少飛線的發(fā)生,所以指針板,我們
14、選擇用PORTEL 99SE設計,然后用手工制作PCB板的方式制作。首先我們在PORTEL 99SE軟件上設計出原理圖的PCB文件,然后,把它的頂層信號層和底層信號層分別打印到光華的不干膠紙上面,如圖A. B圖3.7.2 將打印好的不干膠紙兩面的各個過孔對齊,然后把清洗干凈且剪裁大小合理的雙面覆銅板夾在兩不干膠紙之間,然后用電熨斗壓在上面加熱轉印,讓附著在不干膠紙上面的碳粉完全受熱融化后轉印到雙面覆銅板上面。如圖B。 C圖 3.7.3.然后把轉印好的覆銅板放入三氯化鐵溶液中腐蝕,三氯化鐵溶液會把沒有碳粉的所有銅箔都腐蝕掉,留下有碳粉的部分,就是PCB的信號線路圖了,腐蝕過程圖如圖C。3.7.
15、D圖4 等待的時候可以不停的搖晃容器,加速腐蝕過程,等到把所有沒有覆銅的部分全部腐蝕之后,不覆銅板拿出溶液清洗,然后剪裁掉多余的部分,打孔之后就可以焊接元件了。見D圖。4程序的設計4.1 程序設計的分析程序部分剛剛開始想了很久都沒有想到上面好的辦法,后來,還是決定去網(wǎng)絡上找找資料,看了很多程序后,總算有了一點自己的感悟,最讓人頭疼的是,用上面方法把電機轉一周的各個位置分成360分來送顯示,看到有的人說“先測得電機轉一周的時間,然后除以360就行了”,但是我覺得這樣做首先在程序上比較難實現(xiàn),而且這樣還有一個問題就是,如果這樣,那么我們顯示的標準總是以前面一周的轉速為基準的。不太科學,放棄了。后來
16、又看到一個方法,他們是把程序寫好之后不停的拆卸調試,知道用來控制顯示的總段服務程序的初值大概讓其顯示穩(wěn)定就把初值固定下來,這樣做,首先我想到,如果電機轉速時快時慢,那么顯示的字或者圖案就會被拉長或者壓段,而且這樣我也不能真正很準確的吧一周分成360個顯示單位,還是不科學,再次放棄了。后來反復思考,總算找到一個解決這個問題的好辦法。通過思考,我發(fā)現(xiàn)需要讓LED的閃亮頻率與旋轉的頻率同步,所以采用了自適應的算法,自適應調節(jié)的算法的思想就是在外部中斷處理程序里,先給定時器T0一個合適的初始值,通過定時器T0處理程序給T0的中斷的次數(shù)計數(shù),當旋轉一周完成后,根據(jù)實際中斷次數(shù)與預設的N比較,根據(jù)比較結果
17、,在外部中斷處理程序中對T0的初設值進行修正,直到定時器T0的中斷次數(shù)達到N為止。如此一來就如同有一個反饋信號一樣,在不停的反饋的調節(jié)定時器的初值,旋轉一周所產(chǎn)生的終端次數(shù)始終保持在我設定的一個值里面,這樣我就可以很方便的設定在某一個位置顯示上面類容了,而且整個調節(jié)過程是動態(tài)的,程序中并不需要知道旋轉一周的具體時間值。算法用了一個很簡單的數(shù)學公式:D=D+(S-N)其中N為預設的固定值。 當S>N時,修正值D增大,使定時器T0的時間值增大,隨之N值減小。 當S<N時,修正值D減小,使定時器T0的時間值減小,隨之N值增大。 當S=N時,修正值不產(chǎn)生變化。附上大概的自適應算法的框架:/
18、*外部中斷0處理函數(shù)*/ void intersvr0(void) interrupt 0 using 1 D= D+(S-N)*2; /修正值 Pt= Pt+D; /得到定時器T0的初設值 S= 0; /計數(shù)器清零,將重新計數(shù) /*定時中斷0處理函數(shù)*/ void timer0(void) interrupt 1 using 1 TH0=-Pt/256;TL0=-Pt%256; /設置定時器T0的初設值 S+; /計數(shù) 這樣一來,顯示穩(wěn)定的問題解決了,但是這個定時器T0因為初值時不確定的,所以不能再用它作為時間跳動的定時器計數(shù)了,因此時間的邏輯要用T1單獨來實現(xiàn)。4.2 各模塊程序的流程圖與
19、功能說明4.2.1.MAIN函數(shù)部分Main函數(shù)主要是用來初始化各個函數(shù),然后進入空指令的死循環(huán),這樣來等待其他中斷的來臨,顯示部分在中斷服務程序中實現(xiàn),參看右流程圖4.2.2.外部中斷0服務程序部分(void INT00(void)interrupt 0)外部中斷0主要用于顯示更新和定位用以與校正定時器T0的初值,所以我們在硬件部分加了一個光耦來給外部中斷0提供中斷信號,當旋轉一周就會產(chǎn)生一個中斷,當中斷出現(xiàn)的時候,中斷服務程序就會把這一周實際的T0中斷次數(shù)與設定的值對比,然后校正T0的初值,最后,把各個顯示數(shù)據(jù)清零,達到更新顯示和定位的目的,詳細參看右流程圖。4.2.3定時器T0中斷服務程
20、序(void kjp_test(void)interrupt 1)定時器T0的終端服務程序主要是為了把旋轉一周的各個位置分為180分,這樣方便顯示和確定顯示位置與顯示容。在T0的中斷服務程序中,首先重新給T0賦校正后的初值,然后判斷當前的T0中斷次數(shù),與確定當前顯示的位置,然后再判斷是否改送顯示,如果要送顯示,則調用相應的現(xiàn)實之程序,然后T0中斷次數(shù)自加一,最后跳出中斷,詳細參看右流程圖4.2.4定時器T1中斷服務程序(void Time_luoji()interrupt 3)因為上面的T0的初值不是固定的,所以我們不能再使用T0用做時間運行的標準,要不時間會時快是慢,所以這里我們使用了T1作
21、為時間的運行標準,我們給T1的定時為20毫秒,當產(chǎn)生50個中斷,就是一秒鐘,所以50個中斷,時間秒的值加1。詳細參看流程圖。4.3完整的C程序#include<reg52.h>unsigned char code shuzi_08=0x82,0x7C,0x7C,0x7C,0x7C,0x7C,0x82,0xfe;/*"0",0*/unsigned char code shuzi_18=0xfe,0x7e,0x7a,0x00,0x7e,0x7e,0xfe,0xfe;/*"1",1*/unsigned char code shuzi_28=0x3a
22、,0x3c,0x5c,0x5c,0x6c,0x6c,0x72,0xfe;/*"2",2*/unsigned char code shuzi_38=0xba,0x7c,0x7c,0x6c,0x6c,0x6c,0x92,0xfe;/*"3",3*/unsigned char code shuzi_48=0x9e,0xae,0xb6,0xba,0x00,0xbe,0xbe,0xfe;/*"4",4*/unsigned char code shuzi_58=0xa0,0x6c,0x6c,0x6c,0x6c,0x6c,0x9c,0xfe;/*&
23、quot;5",5*/unsigned char code shuzi_68=0x82,0x6c,0x6c,0x6c,0x6c,0x6c,0x9a,0xfe;/*"6",6*/unsigned char code shuzi_78=0xfc,0xfc,0xfc,0x0c,0xf4,0xf8,0xfc,0xfe;/*"7",7*/unsigned char code shuzi_88=0x92,0x6c,0x6c,0x6c,0x6c,0x6c,0x92,0xfe;/*"8",8*/unsigned char code shuz
24、i_98=0xb2,0x6c,0x6c,0x6c,0x6c,0x6c,0x82,0xfe;/*"9",9*/unsigned char codefuhao_A8=0xfe,0xfe,0xbb,0xbb,0xfe,0xfe,0xfe,0xfe;/*":",10*/*/unsigned char code hanzi_a216=0xf7,0x37,0x47,0x70,0x17,0x73,0xb7,0xbd,0xdd,0xdd,0xed,0xe5,0xc9,0xdd,0xbf,0xff,0xf7,0xe7,0xf7,0xf7,0x00,0xfb,0xbb,0x
25、bd,0xbd,0xbd,0x81,0xbd,0xbc,0x9d,0xbf,0xff;/*輕*/unsigned char code hanzi_b216=0xff,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0x03,0xfb,0xfb,0xfb,0xfb,0xfb,0xfb,0xff,0xff,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xc0,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xdf,0xff;/*工*/unsigned char code hanzi_c216=0xfb,0xcb,0x3d,0xfb,0x3b,0x
26、c3,0xdf,0xef,0xf0,0x17,0xf7,0xf7,0xd7,0xe7,0xff,0xff,0xef,0xf7,0xf9,0xfe,0x7d,0x73,0xbf,0xcf,0xf3,0xfc,0xf3,0xef,0x9f,0x3f,0xbf,0xff;/*歡*/unsigned char code hanzi_d216=0xbf,0xbd,0xbb,0x37,0xff,0x03,0xfb,0xfd,0x7d,0x03,0xfb,0xfb,0xfb,0x01,0xfb,0xff,0xff,0xbf,0xdf,0xe0,0xdf,0xb8,0xbd,0xbe,0xbf,0x80,0x
27、bf,0xbd,0xbb,0x9c,0xdf,0xff;/*迎*/unsigned char code hanzi_e216=0xbf,0xdf,0xef,0x03,0xdc,0xef,0x73,0x98,0xfb,0x0b,0xfb,0xbb,0x6b,0x73,0xff,0xff,0xbf,0xcf,0xff,0x88,0x7f,0x7e,0x77,0x6d,0x4b,0x7c,0x7f,0x1f,0xff,0xee,0x9f,0xff;/*您*/unsigned int Tcz,s=0,bt=0;/s表示中斷次數(shù) ,Tcz表示定時器TO的初值unsigned char iDex=0,hi
28、Dex=0;/控制字母和漢字的碼值具體位數(shù)unsigned char Hour=10,Minute=15,Second=45,Hour_Flag=0,buffer=0;void hanzi_Show(unsigned char m);void Time_Show(unsigned char m);/數(shù)字0-9加:顯示函數(shù)void Time_Amend();/時間邏輯控制函數(shù)void Hour_Display();/小時顯示函數(shù)void Minute_Display();/分鐘顯示函數(shù)void Second_Display();/秒鐘顯示函數(shù)void A_Display();/“:”顯示函數(shù)vo
29、id Init();/初始化函數(shù)int k=0;void INT00(void)interrupt 0 /外部中斷服務函數(shù),定位更新顯示和定時器0初值校正 k=k+(s-180); /k為校正值,當定時中斷過快,K 變大,Tcz同時變大;Tcz=Tcz+k; /Tcz是用來給定時器T0賦初值的,通過這個公式來校正T0的初值,iDex=0; /iDex值清零,防止調用顯示子函數(shù)中時的值不同步,出現(xiàn)亂碼hiDex=0; /hiDex值清零,防止調用顯示子函數(shù)中時的值不同步,出現(xiàn)亂碼s=0;/定時器中斷次數(shù)清零,更新顯示第二周 說明:因為用了校正初值的方法,所以當旋轉穩(wěn)定下來的時候,旋轉一周的中斷次
30、數(shù)就是我預設的180次,這樣一來,旋轉的位置就和我中斷的次數(shù)是同步的,他們是正比的關系,顯示的角度也就是中斷次數(shù)乘以2的值,與“顯示角度=S*2”;因此,這里可以用中斷的當前次數(shù)來判斷顯示的位置。void kjp_test(void)interrupt 1 /定時器中斷0中斷服務程序。用于判斷顯示位置,和/控制顯示TH0=(-Tcz)/256; /把校正后的值給定時器T0賦值TL0=(-Tcz)%256;if(buffer=0) /判斷buffer的值,確定顯示上面容 /顯示模式選擇,0為數(shù)字式時鐘if(iDex>=8)iDex=0;if(s<16) /判斷T0的終端次數(shù),是否小于
31、16 Hour_Display(); /小于16,調用顯示“小時值”的子函數(shù)if(s>=16&&s<24) /判斷T0的中斷次數(shù)是否大于16且小于24A_Display(); /是則調用顯示“:”的子函數(shù)if(s>=24&&s<40) /判斷位置, Minute_Display(); /調用顯示“分鐘值”的子函數(shù)if(s>=40&&s<48) /判斷位置, A_Display(); /調用顯示“:”的子函數(shù)if(s>=48&&s<64) /判斷位置 Second_Display();
32、 /調用顯示“秒鐘值”的子函數(shù)if(s>=64) /判斷位置P0=0xfe;P2=0xff; /關閉所有LEDif(buffer=1) /判斷buffer的值,確定顯示容,1為顯示“輕工歡迎您”if(hiDex>=16)hiDex=0;if(s<16) /判斷位置是否在0-32度之間hanzi_Show(0); /調用顯示“輕”的子函數(shù)if(s>=16&&s<32) /判斷位置是否在32-64度之間hanzi_Show(1); /調用顯示“工”的子函數(shù)if(s>=32&&s<48) /判斷位置是否在64-96度之間han
33、zi_Show(2); /調用顯示“歡”的子函數(shù)if(s>=48&&s<64) /判斷位置是否在96-128度之間hanzi_Show(3); /調用顯示“迎”的子函數(shù)if(s>=64&&s<80) /判斷位置是否在128-160度之間hanzi_Show(4); /調用顯示“您”的子函數(shù)if(s>=80) /判斷位置是否大于160度P0=0xff;P2=0xff; /關閉所有顯示s+; /定時器T0中斷次數(shù)加1void Time_luoji()interrupt 3 /定時器T1中斷服務程序,用于控制秒鐘的跳動。TH1=(6553
34、5-20000)/256; /給定時器T1賦初值,定時20毫秒TL1=(65535-20000)%256;bt+; /定時器中斷次數(shù)加1if(bt=50) /判斷T1中斷次數(shù)是否到了50,與判斷一秒定時到了沒有bt=0; /定時器T1中斷次數(shù)清零,為下一秒做準備Second+; /秒鐘值加1Time_Amend(); /調用時間控制的邏輯子函數(shù),讓秒鐘到60分鐘加1。類推顯示數(shù)字子函數(shù),用來顯示某個數(shù)字或“:”編碼表中的某一個編碼值,調用一次顯示一個編碼,然后iDex自加1,為下一次調用依次顯示下一個編碼做準備;void Time_Show(unsigned char m)switch (m)
35、case 0 :P0=0xff; P0=shuzi_0iDex;iDex+;P2=0xff;break;/顯示1case 1 :P0=0xff; P0=shuzi_1iDex;iDex+;P2=0xff;break; /顯示2case 2 :P0=0xff; P0=shuzi_2iDex;iDex+;P2=0xff;break;/顯示3case 3 :P0=0xff; P0=shuzi_3iDex;iDex+;P2=0xff;break; /顯示4case 4 :P0=0xff; P0=shuzi_4iDex;iDex+;P2=0xff;break;/顯示5case 5 :P0=0xff; P
36、0=shuzi_5iDex;iDex+;P2=0xff;break; /顯示6case 6 :P0=0xff; P0=shuzi_6iDex;iDex+;P2=0xff;break; /顯示7case 7 :P0=0xff; P0=shuzi_7iDex;iDex+;P2=0xff;break; /顯示8case 8 :P0=0xff; P0=shuzi_8iDex;iDex+;P2=0xff;break; /顯示9case 9 :P0=0xff; P0=shuzi_9iDex;iDex+;P2=0xff;break; /顯示0case 10 :P0=0xff; P0=fuhao_AiDex;
37、iDex+;P2=0xff;break; /顯示:顯示漢字子函數(shù),用來顯示某一漢字在漢字編碼表中的某個編碼值,調用一次顯示一個編碼,然后hiDex自加1,為下次調用依次顯示后一個編碼做準備void hanzi_Show(unsigned char m)switch (m)case 0 :P0=0xff; P0=hanzi_a0hiDex;P2=0xff;P2=hanzi_a1hiDex;hiDex+;break;/輕case 1 :P0=0xff; P0=hanzi_b0hiDex;P2=0xff;P2=hanzi_b1hiDex;hiDex+;break; /工case 2 :P0=0xff
38、; P0=hanzi_c0hiDex;P2=0xff;P2=hanzi_c1hiDex;hiDex+;break;/歡case 3 :P0=0xff; P0=hanzi_d0hiDex;P2=0xff;P2=hanzi_d1hiDex;hiDex+;break;/迎case 4 :P0=0xff; P0=hanzi_e0hiDex;P2=0xff;P2=hanzi_e1hiDex;hiDex+;break;/您void A_Display() /顯示“:”的子函數(shù)Time_Show(10); /調用顯示數(shù)字子函數(shù),void Hour_Display()/顯示“小時值”的子程序unsigned char m=0,n=0;m=Hour/10; /把hour值求模,得到十位值n=Hour%10; /把hour值求余,得到各位值if(s<8)Time_Show(m); /調用顯示數(shù)字子函數(shù),顯示十位。elseTime_Show(n); /調用顯示數(shù)字子函數(shù),顯示個位void Minute_Display
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 別墅整體裝修合同范本
- 2025屆高考生物備考教學設計:課時1 降低化學反應活化能的酶
- 高考動員大會講話稿
- 股權用工合同范本
- 水泥合同范本
- Module 10 Unit 2 第一課時教學設計 2024-2025學年外研版八年級英語上冊
- Module 5 Unit1 Can you run fast?(教學設計)-2024-2025學年外研版(三起)英語四年級上冊
- 百尺河小學學校教學工作計劃
- 租雞棚合同范本
- 產(chǎn)品拼裝合同范本
- 《教育強國建設規(guī)劃綱要(2024-2035年)》解讀與專題培訓
- 2025年春新人教版化學九年級下冊課件 第九單元 溶液 1-課題1 溶液及其應用 第1課時 溶液的形成
- 2024-2025學年高中物理第十二章機械波4波的衍射和干涉課時作業(yè)含解析新人教版選修3-4
- 2025年新華師大版數(shù)學七年級下冊全冊導學案
- 安全管理人員七大職責
- 音樂教育國際化進程-洞察分析
- 植入式靜脈給藥裝置護理技術課件
- GB/T 24091-2024適應氣候變化脆弱性、影響和風險評估指南
- 2024年山東工程職業(yè)技術大學單招職業(yè)傾向性測試題庫(500題)含答案解析
- 生活垃圾我知道(課件)二年級下冊勞動
- 每日系列-計算小紙條-3年級下冊
評論
0/150
提交評論