8*8LED点阵屏
电路图
16个引脚进行控制
74HC595
串行;并行 概念
74HC595是串入并出
14:串行数据输入端,级联连接上一级的9;
9:级联输出端,连接下一级的14;
11:cp信号,上升沿时数据从14串行输入,移位寄存器的数据移位,首先送进去的是第一位,放在寄存器的最高位,再送下一位时,第一位数据往下沉,每次都需要一个脉冲信号;
12:上升沿时数据从QA~QH并行输出,一次脉冲就好;
10:低电平清零,通常接Vcc;
13:高电平时为高阻态,使与点阵屏的16个连接线断路通常接地。
点阵屏显示一个点代码
#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;//i循环次数 dat需要发送的数据
dat = 0xfe;//发送列值
for(i=0; i<8; i++)//循环8次
{
S_CLK = 0;//拉低移位寄存器时钟
R_CLK = 0;//拉低输出锁存器时钟
if(dat & 0x01)//发送1
DIO = 1;
else //发送0
DIO = 0;
S_CLK = 1;//拉高移位寄存器时钟,数据移位
dat >>= 1;//数据右移
}
dat = 0x80;//发送行值
for(i=0; i<8; i++)//循环8次
{
S_CLK = 0;//拉低移位寄存器时钟
R_CLK = 0;//拉低输出锁存器时钟
if(dat & 0x01)//发送1
DIO = 1;
else //发送0
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 tabel[8]={0xE0,0xEE,0x01,0x6D,0x01,0x6D,0x01,0xEF};
//0xEF,0x01,0x6D,0x01,0x6D,0x01,0xEE,0xE0//电
void Send_Byte(unsigned char dat)
{
unsigned char i;
S_CLK = 0;
R_CLK = 0;
for(i=0;i<8;i++)
{
if(dat & 0x01)
DIO = 1;
else
DIO = 0;
S_CLK = 1;
dat >>= 1;
S_CLK = 0;
}
}
void main()
{
unsigned char j,row;
while(1)
{
row = 0x80;//选中第一行
for(j = 0;j<8;j++)
{
Send_Byte(tabel[j]);
Send_Byte(row);
R_CLK = 1;
R_CLK = 0;
row = _cror_(row,1);
}
}
}
俩汉字
#include <reg52.h>
#include <intrins.h>
sbit DIO = P3^4;//串行数据口
sbit S_CLK = P3^5;//移位寄存器时钟
sbit R_CLK = P3^6;//输出锁存器时钟
unsigned char code tabel[2][8]={0xF9,0xF5,0x81,0xFD,0xC1,0xD7,0xD7,0x87,0x99,0xE7,0x00,0xA5,0x81,0xDB,0x81,0xDB};
//0xEF,0x01,0x6D,0x01,0x6D,0x01,0xEE,0xE0//电
void Send_Byte(unsigned char dat)
{
unsigned char i;
S_CLK = 0;
R_CLK = 0;
for(i=0;i<8;i++)
{
if(dat & 0x01)
DIO = 1;
else
DIO = 0;
S_CLK = 1;
dat >>= 1;
S_CLK = 0;
}
}
void main()
{
unsigned char j,row,k;
unsigned int z;
while(1)
{
for(k = 0;k<2;k++)
{
for(z=0;z<1000;z++)
{
row = 0x80;//选中第一行
for(j = 0;j<8;j++)
{
Send_Byte(tabel[k][j]);
Send_Byte(row);
R_CLK = 1;
R_CLK = 0;
row = _cror_(row,1);
}
}
}
}
}