選擇分類:當前分類——當前分類
本站推薦:
24. 8X8 LED點陣顯示技術
文章長度[] 加入時間[2008/5/30] 更新時間[2025/3/24 2:08:43] 級別[0] [評論] [收藏]
 
1.     實驗任務
在8X8 LED點陣上顯示柱形,讓其先從左到右平滑移動三次,其次從右到左平滑移動三次,再次從上到下平滑移動三次,最后從下到上平滑移動三次,如此循環下去。
2.     電路原理圖
圖4.24.1
3.     硬件電路連線
(1).  把“單片機系統”區域中的P1端口用8芯排芯連接到“點陣模塊”區域中的“DR1-DR8”端口上;
(2).  把“單片機系統”區域中的P3端口用8芯排芯連接到“點陣模塊”區域中的“DC1-DC8”端口上;
4.     程序設計內容
(1).  8X8 點陣LED工作原理說明
8X8點陣LED結構如下圖所示
 
從圖4.24.2中可以看出,8X8點陣共需要64個發光二極管組成,且每個發光二極管是放置在行線和列線的交叉點上,當對應的某一列置1電平,某一行置0電平,則相應的二極管就亮;因此要實現一根柱形的亮法,如圖49所示,對應的一列為一根豎柱,或者對應的一行為一根橫柱,因此實現柱的亮的方法如下所述:
一根豎柱:對應的列置1,而行則采用掃描的方法來實現。
一根橫柱:對應的行置0,而列則采用掃描的方法來實現。
5.     匯編源程序
                  ORG 00H
START:      NOP
                  MOV R3,#3
LOP2:        MOV R4,#8
                  MOV R2,#0
LOP1:        MOV P1,#0FFH
                  MOV DPTR,#TABA
                  MOV A,R2
                  MOVC A,@A+DPTR
                  MOV P3,A
                  INC R2
                  LCALL DELAY
                  DJNZ R4,LOP1
                  DJNZ R3,LOP2
                  MOV R3,#3
LOP4:        MOV R4,#8
                  MOV R2,#7
LOP3:        MOV P1,#0FFH
                  MOV DPTR,#TABA
                  MOV A,R2
                  MOVC A,@A+DPTR
                  MOV P3,A
                  DEC R2
                  LCALL DELAY
                  DJNZ R4,LOP3
                  DJNZ R3,LOP4
                  MOV R3,#3
LOP6:        MOV R4,#8
                  MOV R2,#0
LOP5:        MOV P3,#00H
                  MOV DPTR,#TABB
                  MOV A,R2
                  MOVC A,@A+DPTR
                   MOV P1,A
                  INC R2
                  LCALL DELAY
                  DJNZ R4,LOP5
                  DJNZ R3,LOP6
                  MOV R3,#3
LOP8:        MOV R4,#8
                  MOV R2,#7
LOP7:        MOV P3,#00H
                  MOV DPTR,#TABB
                  MOV A,R2
                  MOVC A,@A+DPTR
                  MOV P1,A
                  DEC R2
                  LCALL DELAY
                  DJNZ R4,LOP7
                  DJNZ R3,LOP8
                  LJMP START
DELAY:     MOV R5,#10
D2:            MOV R6,#20
D1:            MOV R7,#248
                  DJNZ R7,$
                  DJNZ R6,D1
                  DJNZ R5,D2
                  RET
TABA:       DB 0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH
TABB:       DB 01H,02H,04H,08H,10H,20H,40H,80H
                  END
6.     C語言源程序
#include <AT89X52.H> 
unsigned char code taba[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
unsigned char code tabb[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
void delay(void)
{
  unsigned char i,j;
  for(i=10;i>0;i--)
  for(j=248;j>0;j--);
}
void delay1(void)
{
  unsigned char i,j,k;
  for(k=10;k>0;k--)
  for(i=20;i>0;i--)
  for(j=248;j>0;j--);
}
void main(void)
{
  unsigned char i,j;
  while(1)
    {
      for(j=0;j<3;j++)  //from left to right 3 time
        {
          for(i=0;i<8;i++)
            {
              P3=taba[i];
              P1=0xff;
              delay1();
            }
        }
      for(j=0;j<3;j++)  //from right to left 3 time
        {
          for(i=0;i<8;i++)
            {
              P3=taba[7-i];
              P1=0xff;
              delay1();
            }
        }
      for(j=0;j<3;j++)  //from top to bottom 3 time
        {
          for(i=0;i<8;i++)
            {
              P3=0x00;
              P1=tabb[7-i];
              delay1();
            }
        }
      for(j=0;j<3;j++)  //from bottom to top 3 time
        {
          for(i=0;i<8;i++)
            {
              P3=0x00;
              P1=tabb[i];
              delay1();
            }
        }
    }
}
1、 本站不保證以上觀點正確,就算是本站原創作品,本站也不保證內容正確。
2、如果您擁有本文版權,并且不想在本站轉載,請書面通知本站立即刪除并且向您公開道歉! 以上可能是本站收集或者轉載的文章,本站可能沒有文章中的元件或產品,如果您需要類似的商品請 點這里查看商品列表!
91嫩草黄片动漫版