(基于江协科技)51单片机入门:7.LED点阵屏

LED点阵屏

LED点阵屏就是不同的排列方式的数码管

由于我们不能随意控制电子屏出现图片,所以我们要和动态数码管一般利用人眼是视觉暂留, 一行一行的亮灯 或者 一列一列的亮灯,就能看到完整的图像

74HC595

OE要给低电频,才能输出所以 跳线帽要接GND

SRCLR 串型清零端,会将内部数据清空

我们只需8个银脚,所以 QH' 脚不用管它,它是用来叠加另一个输出缓存时用的

SER 用来数据输入(一格就一个bit位)

将值赋给 SER 后 SERCLK(高电频) 来一个上升延,SER赋值给第一格,一直循环

直到移步寄存器存满一个字节数据,RCLK(高低电频),将移步寄存器的数据,转入输出缓存中

和74H138译码器完全不同,74H138译码器只能在8个位中选择一位,而74H595可以直接进行输出,想选那个选那个

sfr 和 sbit 关键词

sfr:特殊功能寄存器声明

例:sfr P0 = 0x80;

声明 P0 口寄存器,物理地址为 0x80

sbit:特殊位声明

例:sbit P0_1 = 0x81; sbit P0_1 = P0^1;

声明P0寄存器的第一位

74HC595 移位寄存器操作函数:

cpp 复制代码
void _74HC595(unsigned char num)
{
	int i = 0;
	for(i = 0; i < 8; i++)
	{
	 SER = num&(0x80>>i);
	 SRCLK = 1;
	 SRCLK = 0;
  }
	_RCLK = 1;
	_RCLK = 0;
}

指定列亮什么的函数:

cpp 复制代码
void LED_8x8(unsigned char col , num)
{
	_74HC595(num);
	P0 &= ~(0x80>>col);
	
}

这里说明下,当 P0 = 0x00 ,_74HC595函数 输入0xAA ,点阵屏亮1 3 5 7行亮

P0 = 0xFF ,_74HC595函数 输入0xAA ,一行不亮

所以只有P0^N = 0时,_74HC595 输入0x80(1000 0000),那列第1个才亮

1.显示笑脸代码

cpp 复制代码
#include <REGX52.H>
#include "Delay.h"

sbit _RCLK = P3^5;
sbit SRCLK = P3^6;
sbit SER = P3^4;

void _74HC595(unsigned char num)                 
{                
	int i = 0;
	for(i = 0; i < 8; i++)
	{
	 SER = num&(0x80>>i);
	 SRCLK = 1;
	 SRCLK = 0;
  }
	_RCLK = 1;
	_RCLK = 0;
}

void LED_8x8(unsigned char col , num)
{
	_74HC595(num);
	P0 &= ~(0x80>>col);
	Delay(1);
	P0 = 0xFF;
}

int main()	
{
    _RCLK=0;            // 初始化
    SRCLK=0;    
	P0=0xFF;                                
	while(1)
	{
		 LED_8x8(0,0x3C);
		 LED_8x8(1,0x42);
		 LED_8x8(2,0xA9);
		 LED_8x8(3,0x85);
		 LED_8x8(4,0x85);
		 LED_8x8(5,0xA9);
	     LED_8x8(6,0x42);
     	 LED_8x8(7,0x3C);
	}
	return 0;
}

利用工具得到动画显示数组

我们是左右移动,所以高度为8,宽度根据动画内容输入

主要注意 取模方式,和字节倒序,其余不用理会

为了动画的连贯性可以在画面前后加上一组空画面

2. hello 流动动画代码:

cpp 复制代码
#include <REGX52.H>
#include "Delay.h"

unsigned char ch[] = {
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
	0xFF,0x08,0x08,0x08,0xFF,0x00,0x0E,0x15,
	0x15,0x15,0x08,0x00,0x3F,0x01,0x03,0x00,
	0x3F,0x01,0x03,0x00,0x0E,0x11,0x11,0x0E,
	0x00,0x00,0x7D,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

sbit _RCLK = P3^5;
sbit SRCLK = P3^6;
sbit SER = P3^4;

void _74HC595(unsigned char num)
{
	int i = 0;
	for(i = 0; i < 8; i++)
	{
	 SER = num&(0x80>>i);
	 SRCLK = 1;
	 SRCLK = 0;
  }
	_RCLK = 1;
	_RCLK = 0;
}

void LED_8x8(unsigned char col , num)
{
	_74HC595(num);
	P0 &= ~(0x80>>col);
	Delay(1);
	P0 = 0xFF;
}

int main()	
{
	int i = 0;
	int set = 0;
	int count = 0;
	P0=0xFF;
	while(1)
	{
		 for(i = 0; i < 8 ; i++)
		{
			LED_8x8(i,ch[i+set]);
		}
		count++;
		if(count>10)
		{
			count = 0;
			set++;
			if(set>32+8)
			{
				set = 0;
			}
		}
	}
	return 0;
}

3.笑脸动画代码:

cpp 复制代码
#include <REGX52.H>
#include "Delay.h"

unsigned char code ch[] = {     // Flash 空间存储关键词 code    
	0xFF,0xA1,0xA9,0x85,0x85,0xA9,0xA1,0xFF,
	0xFF,0xA1,0xA5,0x85,0x85,0xA5,0xA1,0xFF,
	0xFF,0xA1,0xA5,0x89,0x89,0xA5,0xA1,0xFF,
};

sbit _RCLK = P3^5;
sbit SRCLK = P3^6;
sbit SER = P3^4;

void _74HC595(unsigned char num)
{
	int i = 0;
	for(i = 0; i < 8; i++)
	{
	 SER = num&(0x80>>i);
	 SRCLK = 1;
	 SRCLK = 0;
  }
	_RCLK = 1;
	_RCLK = 0;
}

void LED_8x8(unsigned char col , num)
{
	_74HC595(num);
	P0 &= ~(0x80>>col);
	Delay(1);
	P0 = 0xFF;
}

int main()	
{
	int i = 0;
	int set = 0;
	int count = 0;
	P0=0xFF;
	while(1)
	{
		 for(i = 0; i < 8 ; i++)
		{
			LED_8x8(i,ch[i+set]);
		}
		count++;
		if(count>100)
		{
			count = 0;
			set+=8;
			if(set>16)
			{
				set = 0;
			}
		}
	}
	return 0;
}
相关推荐
oshan201212 分钟前
小华HC32L136K8TA 单片机新建 MDK5 工程模板(二)
单片机·嵌入式硬件
三品吉他手会点灯1 小时前
STM32F103学习笔记-16-RCC(第4节)-使用 HSI 配置系统时钟并用 MCO 监控系统时钟
笔记·stm32·单片机·嵌入式硬件·学习
bai5459362 小时前
LED闪烁功能代码详解
单片机·嵌入式硬件
吃货界的硬件攻城狮5 小时前
【STM32】低功耗模式下的IO配置详解(标准库实现)
stm32·单片机·嵌入式硬件
DIY机器人工房5 小时前
嵌入式面试题:物联网协议怎么选?Zigbee/蓝牙/LoRa/4G/WiFi优缺点一文读懂
stm32·嵌入式硬件·嵌入式·diy机器人工房·嵌入式面试题
ivy159868377156 小时前
JM20329是一款高性能、低功耗的USB桥接芯片,实现串行接口(如SATA、IDE)与USB接口之间的数据转换。
c语言·开发语言·ide·嵌入式硬件·eureka·音视频·视频编解码
星辰pid6 小时前
stm32基于两个SI24R1(NRF24L01)的遥控控制原理(可移植diy遥控小车)
stm32·单片机·嵌入式硬件
beawan016 小时前
天际股份、天赐材料、多氟多、永太科技、联化科技、深圳新星,6家龙头公司研发实力深度数据
科技·金融
太阳人7987 小时前
MIPI D-PHY/C-PHY接收器压力眼图测试介绍
功能测试·嵌入式硬件·音视频·硬件工程
MicroTech20257 小时前
微算法科技(NASDAQ MLGO)在委托权益证明DPoS主链上引入PoW轻节点验证,提升抗量子攻击能力
科技