#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#include<intrins.h>
sbit C1=P1^0;
sbit B1=P1^1;
sbit A1=P1^2;
sbit E=P1^3;
sbit D=P1^4;
sbit R_CLK=P1^5; //
输出存储器锁存时钟线
sbit C_LK=P1^6; //
数据输入时钟
sbit DATA=P1^7;
uchar code table1[8]={0,1,0,1,0,1,0,1};
uchar code table2[8]={0,0,1,1,0,0,1,1};
uchar code table3[8]={0,0,0,0,1,1,1,1};
void wr138(uchar k)
{
D=0;
if(k<9)
{
E=0;
A1=table1[k-1];
B1=table2[k-1];
C1=table3[k-1];
}
else
{
E=1;
A1=table1[k-9];
B1=table2[k-9];
C1=table3[k-9];
}
} //控制行
void wr595(uchar temp)
{
uchar m;
for(m=0;m<8;m++)
{
C_LK=0;
DATA=temp&0x80;
C_LK=1;
temp=temp<<1;
}
}
void delay(uint z)
{ uint x;
for(x=z;z>0;z--)
for(x=110;x>0;x--);
}
void hsm()
{
uint k;
for(k=0;k<16;k++)
{ wr138(k+1);delay(100);}
} //行扫描
void out595()
{
R_CLK=0;hsm();
R_CLK=1;
}
void main()
{
while(1)
{
uint k;
uchar temp=0xfe;
wr595(temp);
out595();
}
}
-
-
点阵模块原理图.pdf
下载积分: 积分 -1 分
53.7 KB, 下载次数: 31, 下载积分: 积分 -1 分
我做过595与164的点阵,显示原理就是先将字模的第一行取出来送595移位,然后再164选这一行输出,即可点亮这一行,然后第二行同样原理,直到16行结束。不停动态扫瞄显示就出来了。不过楼主意思是动态显示,我是做了一个显示缓冲区,软件算法不断往里写入不同字模实现。不知大神还有没有新方法,不吝赐教啊
一周热门 更多>