目录
LED点阵的原理图
要控制LED点阵就需要控制P0口来以此控制LED的负极,控制 74HC595芯片来控制LED的正极。只要给正极高电平负极低电平,LED就会点亮。
74HC595芯片原理图
通过74HC595芯片进行IO口的扩展通过控制P3^4,P3^5,P3^6三个IO口来同时控制QA~QH这八个引脚。
实现方法
定义需要使用的IO口
sbit SRCLK=P3^6; //移位寄存器时钟输入
sbit RCLK=P3^5; //存储寄存器时钟输入
sbit SER=P3^4; //串行数据输入
宏定义端口
宏定义P0口来控制的LED的负极
#define LEDDZ_COL_PORT P0 //点阵列控制端口
构造数组
数组中的元素为后期编码图案是所用。
u8 ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 a[8]= {0xef,0xc7,0x83,0x01,0x00,0x00,0x11,0xbb};
编写延时函数
void delay_10us(u16 ten_us) //延时函数
{
while(ten_us--);
}
74HC595芯片数据的读写
void hc595_write_data(u8 dat) //595读取数据
{
u8 i=0;
for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中
{
SER=dat>>7;//优先传输一个字节中的高位
dat<<=1;//将低位移动到高位
SRCLK=0;
delay_10us(1);
SRCLK=1;
delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中
}
RCLK=0;
delay_10us(1);
RCLK=1;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出
}
通过输入数据给74HC595芯片既可以控制LED灯的正极
显示图案
u8 i=0; u16 j=0 ; //定义初值
while(1)
{
//爱心
while(1)
{ j++ ;
for(i=0;i<8;i++)
{
hc595_write_data(0x00);//消除前面寄存器缓存数据
LEDDZ_COL_PORT=a[i];
hc595_write_data(ghc595_buf[i]);//写入新的数据
delay_10us(1);
}
if (j==100)
{
j=0 ;
break;
}
}
}
通过给LED的正负极高电平和低电平来点亮LED灯,再通过数组里面的元素循环出现来让LED灯显示出一个固定的图案,注意显示的速度一定要非常的快,不然将会一行一行的显示。
完整代码
#include "reg51.h"
typedef unsigned int u16; //对系统默认数据类型进行重定义
typedef unsigned char u8;
//定义74HC595控制管脚
sbit SRCLK=P3^6; //移位寄存器时钟输入
sbit RCLK=P3^5; //存储寄存器时钟输入
sbit SER=P3^4; //串行数据输入
#define LEDDZ_COL_PORT P0 //点阵列控制端口
// 编码点阵图案
u8 ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 a[8]= {0xef,0xc7,0x83,0x01,0x00,0x00,0x11,0xbb};
void delay_10us(u16 ten_us) //延时函数
{
while(ten_us--);
}
void hc595_write_data(u8 dat) //595读取数据
{
u8 i=0;
for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中
{
SER=dat>>7;//优先传输一个字节中的高位
dat<<=1;//将低位移动到高位
SRCLK=0;
delay_10us(1);
SRCLK=1;
delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中
}
RCLK=0;
delay_10us(1);
RCLK=1;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出
}
void main()
{
u8 i=0; u16 j=0 ; //定义初值
while(1)
{
//爱心
while(1)
{ j++ ;
for(i=0;i<8;i++)
{
hc595_write_data(0x00);//消除前面寄存器缓存数据
LEDDZ_COL_PORT=a[i];
hc595_write_data(ghc595_buf[i]);//写入新的数据
delay_10us(1);
}
if (j==100)
{
j=0 ;
break;
}
}
}
}
标签:P3,74HC595,LED,u8,芯片,8X8,51,单片机,sbit
From: https://blog.csdn.net/hxbwppeqppi/article/details/140741681