取模软件网盘提取
链接:https://pan.baidu.com/s/1YYQo_tZNCXlo9uWVbtsNdg
提取码:jfbr
74HC595芯片原理图:
两片595芯片级联驱动点阵屏只需要三个IO口,串行入(一次只能传一个数据,S_CLK)并行出(一次可以传多个,R_CLK)
点阵屏内部的接线图:
显示一个点的程序
#include<reg52.h>
sbit DIO =P3^4;//串行数据口
sbit S_CLK =P3^5;//移位寄存器时钟
sbit R_CLK =P3^6;//输出寄存器时钟
void main()
{
//ROW 0x80 ,COL 0xfe
unsigned char i,dat;
dat=0xfe;
for(i=0;i<8;i++)
{
S_CLK =0;
R_CLK =0;//将电平拉低,准备产生一个上升沿
if(dat & 0x01)//任何一个数&0x01 不是0就是1
DIO = 1;
else
DIO = 0;
S_CLK = 1;
dat =dat>>1;
}
dat = 0x80;
for(i=0;i<8;i++)
{
S_CLK =0;
R_CLK =0;//将电平拉低,准备产生一个上升沿
if(dat & 0x01)
DIO = 1;
else
DIO = 0;
S_CLK = 1;
dat>>=1;
}
R_CLK =1;
while(1);
}
显示两个字(这里是上和下)的代码
#include<reg52.h>
#include<intrins.h>
sbit DIO =P3^4;//串行数据口
sbit S_CLK =P3^5;//移位寄存器时钟
sbit R_CLK =P3^6;//输出寄存器时钟
//取模软件生成的是列选值
unsigned char code table[2][8]=
{0xFF,0x00,0xEF,0xEF,0xEF,0xE1,0xEF,0xEF,
0xEF,0xEF,0xE1,0xEF,0xEF,0xEF,0x00,0xFF};
void Send_Byte(unsigned char dat)
{
unsigned char i;
S_CLK =0;
R_CLK =0;//将电平拉低,准备产生一个上升沿
for(i=0;i<8;i++)
{
if(dat & 0x01)//任何一个数&0x01 不是0就是1
DIO = 1;
else
DIO = 0;
S_CLK = 1;
dat =dat>>1;
S_CLK = 0;
}
}
void main()
{
unsigned char j,k,ROW;
unsigned int z;
ROW=0x80;//行选的值,先选中第一行
while(1)
{
for(k=0;k<2;k++)
{
for(z=0;z<1000;z++)
{
ROW=0x80;//行选的值,先选中第一行
for(j=0;j<8;j++)
{
Send_Byte(table[k][j]);
Send_Byte(ROW);
R_CLK =1;
R_CLK =0;
ROW=_cror_(ROW,1);
}
}
}
}
}
取模软件的使用
1、先打开设置按照下图进行设置(这里是51单片机)
2、新建图像
3、设置点阵的大小(我这里是8*8的)
4、用鼠标进行画图,左键点下点,右键取消点。然后可将下面生成的代码复制到程序中。