haoDIY创好电子音响电脑科技DIY小制作发明移动版

主页 > 电子DIY > 单片机 >

自制8X8 LED点阵显示驱动技术

验使命

在8x8 led点阵上表现柱形,让其先从左到右滑腻移动三次,其次从右到左滑腻移动三次,再次从上到下滑腻移动三次,最后从下到上滑腻移动三次,云云轮回下去。

2. 电路道理图

 

自制8X8 LED点阵显示驱动技术

 

图4.24.1

3. 硬件电路连线

(1). 把“单片机体系”地区中的p1端口用8芯排芯毗连到“点阵模块”地区中的“dr1-dr8”端口上;

(2). 把“单片机体系”地区中的p3端口用8芯排芯毗连到“点阵模块”地区中的“dc1-dc8”端口上;

4. 措施计划内容

(1). 8x8 点阵led事变道理声名

8x8点阵led布局如下图所示

 

自制8X8 LED点阵显示驱动技术

 

图4.24.2

从图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();
}
}

}
}

(责任编辑:admin)
    haoDIY创好电子 版权所有,电话微信13977534587