




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
單片機8X16點陣滾動顯示的時鐘一、8X16點陣滾動顯示的時鐘這作品的運行方式是:接上電源,8*16的點陣屏就會以滾動左移顯示時間。有2個按鍵。按鍵1:是用來調整時間的,長按下按鍵1,就可以進入時間調整。調整的順序為小時十位,小時個位,分鐘十位,然后再按下按鍵1時返回顯示狀態(tài),操作很簡單。按鍵2:調整顯示模式的,按下就是停止?jié)L動,當前位置靜態(tài)顯示時間。再按多次就恢復滾動顯示。顯示部分:顯示部分是本次設計最核心的部分,對于LED8*16點陣顯示有以下兩種方案:方案一:靜態(tài)顯示,將一幀圖像中的每一個二極管的狀態(tài)分別用0和1表示,若為0,則表示LED無電流,即暗狀態(tài);若為1則表示二極管被點亮。若給每一個發(fā)光二極管一個驅動電路,一幅畫面輸入以后,所有LED的狀態(tài)保持到下一幅畫。對于靜態(tài)顯示方式方式所需的譯碼驅動裝置很多,引線多而復雜,成本高,且可靠性也較低。方案二:動態(tài)顯示,對一幅畫面進行分割,對組成畫面的各部分分別顯示,是動態(tài)顯示方式。動態(tài)顯示方式方式,可以避免靜態(tài)顯示的問題。但設計上如果處理不當,易造成亮度低,閃爍問題。因此合理的設計既應保證驅動電路易實現(xiàn),又要保證圖像穩(wěn)定,無閃爍。動態(tài)顯示采用多路復用技術的動態(tài)掃描顯示方式,復用的程度不是無限增加的,因為利用動態(tài)掃描顯示使我們看到一幅穩(wěn)定畫面的實質是利用了人眼的暫留效應和發(fā)光二極管發(fā)光時間的長短,發(fā)光的亮度等因素.我們通過實驗發(fā)現(xiàn),當掃描刷新頻率(發(fā)光二極管的停閃頻率)為50Hz,發(fā)光二極管導通時間31ms時,顯示亮度較好,無閃爍感.。鑒于上述原因,我們采用方案二數(shù)字時鐘數(shù)字時鐘是本設計的重要的部分。根據(jù)需要,可利用兩種方案實現(xiàn)。方案一:本方案完全用軟件實現(xiàn)數(shù)字時鐘。原理為:在單片機內部存儲器設三個字節(jié)分別存放時鐘的時、分、秒信息。利用定時器與軟件結合實現(xiàn)1秒定時中斷,每產生一次中斷,存儲器內相應的秒值加1;若秒值達到60,則將其清零,并將相應的分字節(jié)值加1;若分值達到60,則清零分字節(jié),并將時字節(jié)值加1;若時值達到24,則將時字節(jié)清零。該方案具有硬件電路簡單的特點,但當單片機不上電,程序將不執(zhí)行。且由于每次執(zhí)行程序時,定時器都要重新賦初值,所以該時鐘精度不高。方案二:本方案采用Dallas公司的專用時鐘芯片DS1302。該芯片內部采用石英晶體振蕩器,其芯片精度不大于10ms/年,且具有完備的時鐘鬧鐘功能,因此,可直接對其以用于顯示或設置,使得軟件編程相對簡單。為保證時鐘在電網電壓不足或突然掉電等突發(fā)情況下仍能正常工作,芯片內部包含鋰電池。當電網電壓不足或突然掉電時,系統(tǒng)自動轉換到內部鋰電池供電系統(tǒng)。而且即使系統(tǒng)不上電,程序不執(zhí)行時,鋰電池也能保證芯片的正常運行,
以備隨時提供正確的時間。基于時鐘芯片的上述優(yōu)點,本設計采用方案二完成數(shù)字時鐘的功能。二、電路工作原理仿真圖U1>XTAL1PO.O/ADOPO.1/AD1P0.2/AD2XTAL^P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0/T2P3.0/RXDP1.WEXU1>XTAL1PO.O/ADOPO.1/AD1P0.2/AD2XTAL^P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6RSTP0.7/AD7P2.0/A8P2.1/A9P2.2/A10PSENP2.3/A11ALEP2.4/A12EAP2.5/A13P2.6/A14P2.7/A15P1.0/T2P3.0/RXDP1.WEXP3.1/TXDP1.2P3.2/INT0P1.3P3.3/INT1P1.4P3.4/T0P1.5P3.5/T1PI.6P3.6/WRPI.7P3.7/RDAT89C52■■■■mCMlDCMZCMCM口LJll—.■12■13■15工作原理:利用單片機U1AT89S52單片機作為本系統(tǒng)的中控模塊。單片機可把由U274154讀來的數(shù)據(jù)利用軟件來進行處理,從而把數(shù)據(jù)傳輸?shù)斤@示模塊。點陣LED電子顯示屏顯示器為主要的顯示模塊,把單片機傳來的數(shù)據(jù)顯示出來,并且可以實現(xiàn)滾動顯示。主要靠按鍵來實現(xiàn)各種顯示要求的選擇與切換。AT89S52單片機最小系統(tǒng):最小系統(tǒng)包括晶體振蕩電路、復位開關和電源部分。圖2為AT89S52單片機的最小系統(tǒng)。
SSI>■.r.-u.i£a■pi]Oi.-lMt"—7huiadiirnintit.i.jpu.2i.m2i■*"ahi..h.girniraoT.H1Hl-li.lJXltJXTRIFl』KlSITE■~—&ig|TJCDT.1.1.7i.AD7lJtXDT.l.a0F2.7iAI5|F2.rii.AI>41F2.5iAI3lF2.Ji.AI21FJ.JiAll|F】.】i_AISAF2.l(A0|7P2.0i.A3|2==三一三===二圖三、程序編寫2==三一三===二圖圖3時間子程序流程圖源程序:#include<REGX51.H>#include<intrins.h>unsignedcharsec=0,min=0,hou=12,timecount=0,oldP1=0xff,setting=0;bitpoint=1,K1_old,K2_old;unsignedcharcodedis_code[56]={0x07c,0x082,0x082,0x07c,0x000,0x084,0x0fe,0x080,//0與10x0c4,0x0a2,0x092,0x08c,0x044,0x082,0x092,0x06c,//2與30x078,0x044,0x0fe,0x040,0x04e,0x08a,0x08a,0x072,//4與50x07c,0x092,0x092,0x064,0x006,0x002,0x0f2,0x00e,//6與70x06c,0x092,0x092,0x06c,0x04c,0x092,0x092,0x07c,//8與90x008,0x084,0x052,0x030,0x092,0x0F4,0x004,0x000,//分0x07C,0x054,0x07C,0x002,0x092,0x07F,0x002,0x000,〃時};sbitK1=P2A7;sbitK2=P2A6;voidtime50ms(void);voiddelay2ms(void);voidtimedeal(void);voidmain(void){unsignedcharnum,disnum,x,y,offset=0,dis_p,scantimes=0;IE=0x82;//允許定時器0工作TMOD=0x01;//timer0為模式1TR0=1;〃定時器0可以工作TH0=0x3c;TL0=0x0b0;do{if(setting==0){〃正常顯示狀態(tài)for(x=0;x<16;x++){dis_p=x+offset;if(dis_p>26)dis_p-=27;if(dis_p==0IIdis_p==5IIdis_p==10IIdis_p==12IIdis_p==17IIdis_p>21){〃空列y=0;}elseif(dis_p<=4){//1?4為時的十位num=hou/10;if(num>0)y=dis_code[num*4+dis_p-1];elsey=0;}elseif(dis_p<=9){//6?9為時的個位num=hou%10;y=dis_code[num*4+dis_p-6];}elseif(dis_p==11){//11為冒號的顯示位if(point)y=0x24;elsey=0;}elseif(dis_p<=16){//13?16為分的十位num=min/10;y=dis_code[num*4+dis_p-13];}else{num=min%10;y=dis_code[num*4+dis_p-18];}P1=0;P3=x*4;P1=y;delay2ms();}scantimes++;if(scantimes>=8){scantimes=0;offset++;if(offset>26)offset=0;}}else{〃當進入調整時間的狀態(tài),運行下面的程序段for(x=0;x<16;x++){if(setting==1)disnum=min;elsedisnum=hou;if(x<8)〃前8列顯示漢字y=dis_code[32+setting*8+x];elseif(x<12){//8~11為十位num=disnum/10;y=dis_code[num*4+x-8];}else{num=disnum%10;y=dis_code[num*4+x-12];}P1=0;P3=x*4;P1=y;delay2ms();}}}while(1);}voiddelay2ms(void){unsignedchari,j;for(i=0;i<4;i++)for(j=0;j<120;j++);}voidtime50ms(void)interrupt1{TH0=0x3c;TL0=0x0b0;timecount++;if(timecount==10){timecount=0;point=!point;if(point){sec++;timedeal();}}if(!K1&&K1!=K1_old)〃按下模式鍵{setting++;if(setting==3)setting=0;}if(!K2&&K2!=K2_old)〃按下置位鍵{if(setting==1){min++;sec=0;timedeal();}elseif(setting==2){hou++;timedeal();}}K1_old=K1;K2_old=K2;}voidtimedeal(void)if(sec>=60)sec=0;min++;}if(min>=60){min=0;hou++;}if(hou>=24)hou=0;}四、調試:接上電源,查看LED燈是否亮燈.可以實現(xiàn)文字左右移動按下“設置時間”鍵,觀察到“鐘表”二極管點亮,此時可對時間進行設置。按下“時間設置“進入時調試,按"+”鍵時間加。在按下“切換”鍵時,進入分調整模式,按下“+”鍵,分增加。按下“選擇”鍵時,分調整模式改為秒調整模式,按下“”鍵秒增加。經測試該步可以很好的實現(xiàn)。調整時間完畢后,再按一下“鬧鐘設置”進入鬧鈴設置狀態(tài),按下“+”鍵設定“時”增加,在按下“選擇”鍵進入分的設置,按下“+”鍵設定“分”增加。在按下“選擇”鍵進入秒設置模式,按“+”鍵秒增加。有沒部分數(shù)字顯示不到.調整好時間后,開始運行時鐘計時,觀查是否與一般時鐘準時對應時間.運行一段時間,測試有沒有計時誤差.五、使用說明本作品采用5V電源啟動,在電池盒里裝上電池或連接USB程序下載在線(USB帶5V電源)均可啟動.顯示時間的的方式:如12時45分,以滾動左移顯示時間,它會先顯示1然后左
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論