最近公司忙,没时间玩,搞了两个小玩意:
1,ULN2003驱动继电器(上位机VC,下位机51)
上位机:
图片 003.jpg (121.82 KB, 下载次数: 0)
下载附件
2012-12-9 12:55 上传
LED点阵最忌讳亮度不均匀,本例以驱动扫描单个LED实现亮度一致。
LED点阵最常用的驱动方式是按列扫描,代码如下:
unsigned char code scanx[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
unsigned char code scany2[]={0xff,0x81,0x42,0x42,0x81,0x42,0x42,0x81};
void main()
{
xFlag=0;
yFlag=0;
TMOD=0x01;
TH0=(65536-200)/256;
TL0=(65536-200)%256;
EA=1;
ET0=1;
TR0=1;
P0=0x00;
wei=1;
wei=0;
while(1)
{
P0=scanx[xFlag];
P1=scany[yFlag];
}
}
辅以定时器控制xFLAG、yFlag两个参数以控制扫描。
由于没列要点亮的LED个数不同,所以不同列的LED亮度不一致。
为了实现亮度一致,使每次只扫描一个LED,亮度一致性好,代码:
unsigned char xFlag,yFlag;
unsigned char code scanx[]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
sbit wei=P2^7;
unsigned char code scany[]={0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff,
0xff,0xbf,0xff,0xff,0xff,0xff,0xfd,0xff,
0xff,0xbf,0xff,0xff,0xff,0xff,0xfd,0xff,
0xff,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff,
0xff,0xbf,0xff,0xff,0xff,0xff,0xfd,0xff,
0xff,0xbf,0xff,0xff,0xff,0xff,0xfd,0xff,
0xff,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xff};
void main()
{
xFlag=0;
yFlag=0;
TMOD=0x01;
TH0=(65536-200)/256;
TL0=(65536-200)%256;
EA=1;
ET0=1;
TR0=1;
P0=0x00;
wei=1;
wei=0;
while(1)
{
P0=scanx[xFlag];
P1=scany[yFlag];
}
}
辅以定时器控制xFLAG、yFlag两个参数以控制扫描。
http://www.amobbs.com/thread-5510149-1-1.html
已经执行,楼主的ID已经被封锁。
一周热门 更多>