目录
前言
一、74hc595
二、使用步骤
1.点阵心形
2.流动心形?
总结
前言
LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片、动画、视频等,是各部分组件都模块化的显示期间,通常由显示模块、控制和电源组成。led点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。
一、74hc595
说到点阵就必须说起74hc595,一个8位串行输入并行输出的移位寄存器
二、使用步骤
1.点阵心形
#include <REG51.h> //51专属头文件
#include <public.h> //延时函数头文件
#include "intrins.h"
#define led P0 //数码管io
sbit STCP =P3^5;
sbit SHCP =P3^6;
sbit DS = P3^4;
unsigned int arr1[8]={0x30,0x78,0x7C,0x3E,0x3E,0x7C,0x78,0x30,}; //74hc595列控制
unsigned int arr2[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,}; //P0行控制
int hc595(unsigned char dat) //1字节8bit输入
{
unsigned int i;
for(i=0;i<8;i++)
{
DS=dat>>7;
dat=dat<<1; //74hc595输出传输与存储
SHCP=0x00;
delay_10us(1);
SHCP=0x01;
}
STCP=0x00;
delay_10us(1); //存贮
STCP=0x01;
}
int main()
{
unsigned int i=0;
while(1)
{
for(i=0;i<8;i++)
{
led=arr2[i];
hc595(arr1[i]); //行列扫描
delay_ms(1);
hc595(0x00); //消影
}
}
return 0;
}
流动心形
#include <REG51.h> //51专属头文件
#include <public.h> //延时函数头文件
#include "intrins.h"
#define led P0 //数码管io
sbit STCP =P3^5;
sbit SHCP =P3^6;
sbit DS = P3^4;
unsigned int arr1[8]={0x30,0x78,0x7C,0x3E,0x3E,0x7C,0x78,0x30,}; //74hc595列控制
//unsigned int arr2[8]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe,}; //P0行控制
int hc595(unsigned char dat) //1字节8bit输入
{
unsigned int i;
for(i=0;i<8;i++)
{
DS=dat>>7;
dat=dat<<1; //74hc595输出传输与存储
SHCP=0x00;
delay_10us(1);
SHCP=0x01;
}
STCP=0x00;
delay_10us(1); //存贮
STCP=0x01;
}
int main()
{
unsigned int i=0;
unsigned int z=0;
while(1)
for(z=0;z<8;z++)
{
for(i=0;i<8;i++)
{
led=_cror_(0x7f,i+z);
hc595(arr1[i]); //行列扫描
delay_ms(1);
hc595(0x00); //消影
}
delay_ms(100);
}
return 0;
}
总结
?在驱动74h595时开始用了int 来定义数据,在移位过程中,传递到第二个字节导致显示异常0
|