51单片机快速入门之 LED点阵 结合74hc595 的应用
74HC595是一种常用的数字电路芯片,具有串行输入并行输出的功能。它主要由两个部分组成:一个8位的移位寄存器和一个8位的存储寄存器。数据通过串行输入管脚(DS)逐位输入,然后通过并行输出管脚(Q0-Q7)并行输出。74HC595还具有一个使能控制管脚(OE),用于控制输出的使能和禁用状态。
以下是74HC595的一些主要特点和功能:
串行输入并行输出:74HC595可以将串行数据转换为并行数据输出,适用于需要扩展输出端口的应用场合。
级联功能:通过级联多个74HC595,可以扩展输出端口的数量,从而实现更多的输出功能。
节省单片机引脚资源:使用74HC595可以减少单片机的引脚使用数量,提高系统的可靠性和稳定性。
简化电路设计:使用74HC595可以简化电路设计,减少电路中的逻辑门数量和电路复杂度。
提高数据传输效率:通过串行方式输入数据,然后通过并行方式输出,可以提高数据传输的效率。
取模软件为STC官网下载工具内的
程序代码:
#include <STC89C5xRC.H>
sbit dspH =P1^6 ;
sbit mcpH= P1^7 ;
sbit scpH =P1^5 ;
sbit dspL= P1^1 ;
sbit mcpL= P1^0 ;
sbit scpL= P1^2 ;
void delay(unsigned int t);
void pH(unsigned char date);//控制行
void pL(unsigned char dateL);//控制列
void pHPL(unsigned char datH,unsigned char datL);//同时控制行和列
void main()
{
unsigned char y[]= {0xC3,0xBD,0x7E,0x7E,0x7E,0x7E,0xBD,0xC3, //0
0xE7,0xC7,0xE7,0xE7,0xE7,0xE7,0x81,0x81, //1
0xC1,0xDD,0xF9,0xE3,0xCF,0x9F,0xBF,0x81, //2
0x83,0xFB,0xFB,0x83,0xFB,0xFB,0x83,0xFF, //3
0xFF,0xB7,0xB7,0xB7,0xB7,0x81,0xF7,0xF7, //4
0xFF,0xC3,0xDF,0xC3,0xFB,0xFB,0xC3,0xFF, //5
0xF7,0xEF,0xDF,0xBF,0x83,0xBB,0xBB,0x83, //6
0x83,0xFB,0xFB,0xFB,0xFB,0xFB,0xFB,0xFF, //7
0xC1,0xDD,0xDD,0xC1,0xC1,0xDD,0xDD,0xC1, //8
0xC1,0xDD,0xDD,0xC1,0xFD,0xFD,0xFD,0xC1 //9
};
unsigned char x=0,j=0;
unsigned char datt=0x80;
while(1) {
for(; j<8; j++) {
pHPL(datt,y[x]) ; //第一行
delay(1000);
pHPL(0x00,0XFF);//复位
datt>>=1;
x+=1;
}
if(j==8) {
datt=0x80;
j=0;
}
if(x==80) {
x=0;
}
}
}
void pH(unsigned char date)
{
unsigned char i;
for(i=0; i<8; i++) {
mcpH=0;
dspH=date&0x80;
mcpH=1;
date<<=1;
}
scpH=0;
delay(100);
scpH=1;
}
void pL(unsigned char dateL)
{
unsigned char i;
for(i=0; i<8; i++) {
mcpL=0;
dspL=dateL&0x80;
mcpL=1;
dateL<<=1;
}
scpL=0;
delay(100);
scpL=1;
}
void pHPL(unsigned char datH,unsigned char datL)
{
pH(datH);//行
pL(datL);//列
}
void delay(unsigned int t)
{
while(t--);
}