原理部分
1.了解点阵屏原理图
阳极给1,阴极给0点亮
2.了解74HC595(串转并)模块
3.74HC595(串转并)模块工作原理:
①.给SER数据
②.SERCLK上升沿时间到将数据移动到左边的第一个栈中
③.一直循环等到第一个全满之后,RCLK将数据全部转移到第二个栈中
④.如果还级联其他的片,那么第一个压入的数据会通过 QH‘ 移动到另一个栈中,之后的数据会压入左边第一个栈,这样持续下去。
5.开发板引脚对应关系
测试之后得到D0-D7是阳极,P07-P00是阴极
6.sfr、sbit介绍
编写代码
1引入Delay.c和Delay.h
2.编写main.c代码
#include <REGX52.H>
#include "Delay.h"
//因为库函数没有定义好这几个寄存器,所以需要我们自己定义
sbit SER=P3^4; //实际等于P3_4
sbit RCK=P3^5; //实际等于P3_5
sbit SCK=P3^6; //实际等于P3_6
//74HC595的初始化
void _74HC595_Init()
{
SCK=0; //初始化
RCK=0; //初始化
}
//LED点阵屏的列直接接在IO口上,通过P0口直接输入,行通过74HC595来进行数据输入
//收到数据,并写入栈,实现以寄存器控制LED点阵屏显示,这里控制的是D7-D0,也就是行数据
void _74HC595_WriteByte(unsigned char Bate)
{
unsigned char i;
//8位数按位读到
for(i = 0;i < 8;i++)
{
//SER非0即1
SER = Bate&(0x80>>i);
SCK = 1;//一开始SERCLK为0,这里置为1,就产生了上升沿
SCK = 0;//为下一次移位做准备
}
RCK=1; //8位已写入栈,发送并行数据
RCK=0; //归位等待下一次输入
}
//LED点阵屏的显示
void Matrix_screen(unsigned char coloum,Data)
{
_74HC595_WriteByte(Data);
P0=~(0x80>>coloum); //选中那列是0
Delay(1);
P0=0xff;
}
void main()
{
_74HC595_Init();
while(1)
{
Matrix_screen(0,0x3C);
Matrix_screen(1,0x42);
Matrix_screen(2,0xA9);
Matrix_screen(3,0x85);
Matrix_screen(4,0x85);
Matrix_screen(5,0xA9);
Matrix_screen(6,0x42);
Matrix_screen(7,0x3C);
}
}
3.注意事项,一定要把点阵屏旁边的这个盖帽插成这个样子,否则无显示效果
4.最终效果