51单片机笔记《三》

用8*8点阵显示爱心

LED点阵屏介绍:

LED点阵屏通过LED(发光二极管)组成,以灯珠量灭来显示文字、字母、动画、视频等。LED点阵显示屏制作简单,安装方便,被广泛应用于各种公共场合,如汽车报战器、广告牌、银行窗口屏、叫好屏以及停车场系统等等。

LED点阵屏展示:

在这里插入图片描述

74HC595芯片

74HC595芯片是一种串入并出的芯片,在电子显示屏制作当中有广泛的应用。它是8位串行输入/输出或者并行输出移位寄存器。如果没有该芯片那么对于8*8点阵则需要64个IO口。而加上两块74HC595芯片以后则需要3个IO口。
在这里插入图片描述
所以加上74HC595以后的点阵屏:
在这里插入图片描述
这样各个引脚的作用是:在这里插入图片描述

#include <reg52.h>
#include <intrins.h>
sbit DIO = P3^4;//串行数据接口
sbit S_CLK = P3^5;//移位寄存器时钟
sbit R_CLK = P3^6;//移除锁存器时钟
//0x3E,0x2A,0xFF,0xAA,0xBE,0xC0,0x00,0x00//
unsigned char a[10]={0x7F,0xBF,0xDF,0xE0,0xDF,0xBF,0x7F,0xFF};
void sent(unsigned char dat)
{
 unsigned char i;
 S_CLK=0;
 R_CLK=0;
 for(i=0;i<8;i++)
 {
  S_CLK = 0;
  R_CLK = 0;
  if(dat & 0x01)
   DIO=1;
  else
   DIO = 0;
  S_CLK = 1;//产生上升沿
  dat >>=1;//右移移位
 } 
 S_CLK=0;//产生下降沿
}
void main()
{
 //ROW 0X80,COL 0XFE
 unsigned char j,temp;
 while(1)
 {
  temp=0x80;
  for(j=0;j<8;j++)
  {
   sent(a[j]);
   sent(temp);
   R_CLK=1;
   R_CLK=0;
   temp=_cror_(temp,1);
  }
 }
}
发布了37 篇原创文章 · 获赞 92 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_44895651/article/details/89716944