資源描述:
《單片機(jī)點(diǎn)陣LED顯示原理及程序.doc》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、51單片機(jī)8*8點(diǎn)陣LED顯示原理及程序時(shí)間:2007-12-20?來源:?作者:?點(diǎn)擊:5475?字體大小:【大中小】???在8X8點(diǎn)陣LED上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左平滑移動三次,再次從上到下平滑移動三次,最后從下到上平滑移動三次,如此循環(huán)下去。1.程序設(shè)計(jì)內(nèi)容????8X8點(diǎn)陣LED工作原理說明:8X8點(diǎn)陣共需要64個(gè)發(fā)光二極管組成,且每個(gè)發(fā)光二極管是放置在行線和列線的交叉點(diǎn)上,當(dāng)對應(yīng)的某一列置1電平,某一行置0電平,則相應(yīng)的二極管就亮;因此要實(shí)現(xiàn)一根柱形的亮法,如圖49所示,對應(yīng)的一列為一根豎柱,或者對應(yīng)的一行為一根橫柱,因此實(shí)現(xiàn)柱的亮
2、的方法如下所述:·一根豎柱:對應(yīng)的列置1,而行則采用掃描的方法來實(shí)現(xiàn)。·一根橫柱:對應(yīng)的行置0,而列則采用掃描的方法來實(shí)現(xiàn)。2.硬件電路?3.匯編源程序ORG00HSTART:NOPMOVR3,#3LOP2:MOVR4,#8MOVR2,#0LOP1:MOVP1,#0FFHMOVDPTR,#TABAMOVA,R2MOVCA,@A+DPTRMOVP3,AINCR2LCALLDELAYDJNZR4,LOP1DJNZR3,LOP2MOVR3,#3LOP4:MOVR4,#8MOVR2,#7LOP3:MOVP1,#0FFHMOVDPTR,#TABAMOVA,R2MOVCA,@A+D
3、PTRMOVP3,ADECR2LCALLDELAYDJNZR4,LOP3DJNZR3,LOP4MOVR3,#3LOP6:MOVR4,#8MOVR2,#0LOP5:MOVP3,#00HMOVDPTR,#TABBMOVA,R2MOVCA,@A+DPTRMOVP1,AINCR2LCALLDELAYDJNZR4,LOP5DJNZR3,LOP6MOVR3,#3LOP8:MOVR4,#8MOVR2,#7LOP7:MOVP3,#00HMOVDPTR,#TABBMOVA,R2MOVCA,@A+DPTRMOVP1,ADECR2LCALLDELAYDJNZR4,LOP7DJNZR3,LOP
4、8LJMPSTARTDELAY:MOVR5,#10D2:MOVR6,#20D1:MOVR7,#248DJNZR7,$DJNZR6,D1DJNZR5,D2RETTABA:DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FHTABB:DB01H,02H,04H,08H,10H,20H,40H,80HEND4.C51語言源程序#includeunsignedcharcodetaba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsignedcharcodetabb[]={0x01
5、,0x02,0x04,0x08,0x10,0x20,0x40,0x80};voiddelay(void){?unsignedchari,j;?for(i=10;i>0;i--)?for(j=248;j>0;j--);}voiddelay1(void){?unsignedchari,j,k;?for(k=10;k>0;k--)?for(i=20;i>0;i--)?for(j=248;j>0;j--);}voidmain(void){?unsignedchari,j;?while(1)?{???for(j=0;j<3;j++) //fromlefttoright3time
6、???{?????for(i=0;i<8;i++)?????{???????P3=taba[i];???????P1=0xff;???????delay1();?????}???}???for(j=0;j<3;j++) //fromrighttoleft3time???{?????for(i=0;i<8;i++)?????{???????P3=taba[7-i];???????P1=0xff;????????delay1();?????}???}???for(j=0;j<3;j++) //fromtoptobottom3time???{?????for(i=0;i<
7、8;i++)?????{???????P3=0x00;???????P1=tabb[7-i];???????delay1();?????}???}????for(j=0;j<3;j++) //frombottomtotop3time???{?????for(i=0;i<8;i++)?????{???????P3=0x00;???????P1=tabb[i];???????delay1();?????}???}?}}