三、51单片机用74HC595控制LED点阵

这篇具有很好参考价值的文章主要介绍了三、51单片机用74HC595控制LED点阵。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、LED点阵简介

1.1、什么是LED点阵

(1)外观

三、51单片机用74HC595控制LED点阵

(2)作用

LED点阵通过LED(发光二极管)组成,以灯珠亮灭来显示文字、图片等,LED点阵显示被广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等。

1.2、如何驱动LED点阵

以8*8LED点阵为例。

(1)单片机端口直接驱动。驱动8*8的点阵需要2个IO端口(16个IO口)。

(2)使用串转并移位锁存器驱动。如74HC595驱动,这种方式可以节约大量IO端口。

2、原理图

三、51单片机用74HC595控制LED点阵三、51单片机用74HC595控制LED点阵

 P595A接点阵COL(列) PIN(LED阴极),P595B接点阵ROW(行) PIN(LED阳极)。

3、74HC595芯片介绍

只是简略介绍,具体详细部分可结合数据手册和示例代码了解。

3.1、74HC595核心引脚

RCLK引脚:锁存时钟

SRCLK引脚:移位时钟

SER引脚:串行输入引脚

QA~QH引脚:并行输出引脚

QH`:串行输出口引脚,74HC595A的QH`输出引脚接74HC585B的SER串行输入引脚。

3.2、单片机与74HC595通信时序简介

(1)芯片与芯片之间进行通信,都是按照一定的时序进行的。

(2)时序就是芯片与芯片之间的通信引脚上电平变化,变化以时间轴为参考的变化顺序。

(3)时序是通信双方事先定义好的,通信的发送方必须按照时序来发送有意义的信息,通信的接收放按照时序去接收解析发送方发来的电平变化信息,然后就知道发送方要给接收方发送什么东西了。

(4)我们编程时:发送方是单片机,接收方是74HC595。因为595芯片本身不能编程,它的时序出厂时已经设定好了。因此单片机需要迁就595芯片,按照595线片的时序来给他发信息。

(5)74HC595芯片手册上有她的时序描述,参考描述便可明白595芯片的时序规则,然后将其用编程语言表述出来就是程序了。

(6)74HC595的时序关键是:SRCLK和RCLK。SRCLK是移位时钟,595芯片内部在每个SCLK的上升沿会对SER引脚进行一次采样输入,就向595内部输入了1位,如此循环8次就输入了8位二进制。RCLK是锁存时钟。

4、编程

4.1、编程点亮最上面一排

#include "reg52.h"

/*引脚位定义*/
sbit SER = P3^4;    		/*74HC595串行数据输入引脚*/
sbit RCLK_595 = P3^5;       /*74HC595的锁存时钟引脚*/
sbit SRCLK = P3^6;   		/*74HC595的移位时钟*/

 
void main(void)
{
	unsigned char i = 0;
	unsigned char P595A_OUT = 0x01;   // 接LED点阵行,阳级。
	unsigned char P595B_OUT = 0x00;   // 接LED点阵列,阴极。
	
	SER =0;
	RCLK_595 = 0;
	SRCLK = 0;
	
	for(i=0; i<8; i++)
	{
		SER = (P595A_OUT>>(7-i)) & 0x01;
		SRCLK = 0;
		SRCLK = 1;     // 上升沿进行一次数据移入
	}
	
	for(i=0; i<8; i++)
	{
		SER = (P595B_OUT>>(7-i)) & 0x01;
		SRCLK = 0;
		SRCLK = 1;     // 上升沿进行一次数据移入
	}
	RCLK_595 = 0;
	RCLK_595 = 1;    // 锁存时钟
	
	while(1)
	{
	
	
	}

}

注:keil中就算while循环中没有内容也需要嘉while,因为不加会导致程序跑飞,不断重启循环,导致结果与预期不符。

4.2、封装LED点阵显示函数

#include "reg52.h"


/*宏定义*/
#define uchar unsigned char


/*引脚位定义*/
sbit SER = P3^4;    		/*74HC595串行数据输入引脚*/
sbit RCLK_595 = P3^5;       /*74HC595的锁存时钟引脚*/
sbit SRCLK = P3^6;   		/*74HC595的移位时钟*/


/*函数声明*/
void LedLattice_Display(uchar P595A_OUT, uchar P595B_OUT);   /*LEE点阵显示*/
 

void main(void)
{
	//LedLattice_Display(0x0f,0x00);   /*显示上面四行*/
	//LedLattice_Display(0xf0,0x00);   /*显示下面四行*/
	
	//LedLattice_Display(0xff,0xfe);   /*显示左边一列*/
	//LedLattice_Display(0xff,0x7f);   /*显示右边一列*/
	LedLattice_Display(0x01,0xfe);     /*点亮左上角一颗,0x01选择第一行,0x7f选择第一列*/
		 
	while(1)
	{
	
	}

}


/*
 *功能:LED点阵显示
 *参数:
 *	P595A_OUT:LED点阵行,阳极,最低为表示最上面一行  从上到下
 *	P595B_OUT:LED点阵列,阴极,最低位表示最左边一列  从左到右
 *返回值:无
 */
void LedLattice_Display(uchar P595A_OUT, uchar P595B_OUT)
{
	unsigned char i = 0;
	//unsigned char P595A_OUT = 0x80;   // 接LED点阵行,阳级。
	//unsigned char P595B_OUT = 0x00;   // 接LED点阵列,阴极。
	
	SER =0;
	RCLK_595 = 0;
	SRCLK = 0;
	
	for(i=0; i<8; i++)
	{
		SER = (P595A_OUT>>(7-i)) & 0x01;
		SRCLK = 0;
		SRCLK = 1;     // 上升沿进行一次数据移入
	}
	
	for(i=0; i<8; i++)
	{
		SER = (P595B_OUT>>(7-i)) & 0x01;
		SRCLK = 0;
		SRCLK = 1;     // 上升沿进行一次数据移入
	}
	RCLK_595 = 0;
	RCLK_595 = 1;    // 锁存时钟

}

4.3、显示 “中” 字

(1)什么是字模

为了记录组成字的LED点阵亮灭信息,就是用取模软件生成这些信息。8*8的点阵一共64个点,一次需要64位二进制,即8个字节来记录这些信息。

(2)取模软件介绍。

三、51单片机用74HC595控制LED点阵

(3)取模方式

分为横向取模和纵向取模。

(4)代码。

在不熟练是可以先显示一行,在显示两行,找到规律后再用循环来进行显示。文章来源地址https://www.toymoban.com/news/detail-435080.html

#include "reg52.h"


/*宏定义*/
#define uchar unsigned char


/*引脚位定义*/
sbit SER = P3^4;    		/*74HC595串行数据输入引脚*/
sbit RCLK_595 = P3^5;       /*74HC595的锁存时钟引脚*/
sbit SRCLK = P3^6;   		/*74HC595的移位时钟*/


/*全局变量*/
uchar zhong[8] = {0x08,0x08,0x3E,0x2A,0x2A,0x3E,0x08,0x08};  /*横向取模*/


/*函数声明*/
void LedLattice_Display(uchar P595A_OUT, uchar P595B_OUT);   /*LEE点阵显示*/
 

void main(void)
{
	uchar i = 0;
		
	while(1)
	{
		for(i=0; i<8; i++)
		{
			LedLattice_Display(0x01<<i,~zhong[i]);
		}
	}

}


/*
 *功能:LED点阵显示
 *参数:
 *	P595A_OUT:LED点阵行,阳极,最低为表示最上面一行  从上到下
 *	P595B_OUT:LED点阵列,阴极,最低位表示最左边一列  从左到右
 *返回值:无
 */
void LedLattice_Display(uchar P595A_OUT, uchar P595B_OUT)
{
	unsigned char i = 0;
	//unsigned char P595A_OUT = 0x80;   // 接LED点阵行,阳级。
	//unsigned char P595B_OUT = 0x00;   // 接LED点阵列,阴极。
	
	SER =0;
	RCLK_595 = 0;
	SRCLK = 0;
	
	for(i=0; i<8; i++)
	{
		SER = (P595A_OUT>>(7-i)) & 0x01;
		SRCLK = 0;
		SRCLK = 1;     // 上升沿进行一次数据移入
	}
	
	for(i=0; i<8; i++)
	{
		SER = (P595B_OUT>>(7-i)) & 0x01;
		SRCLK = 0;
		SRCLK = 1;     // 上升沿进行一次数据移入
	}
	RCLK_595 = 0;
	RCLK_595 = 1;    // 锁存时钟

}

到了这里,关于三、51单片机用74HC595控制LED点阵的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机通过两片74HC595级联,用8位LED数码管,分别显示当前日期,如:“2”、“0”、“-”、“0”、“5”、“-”、“2”、“6”,用Proteus仿真实现。

    1.先上仿真图,但这么连仿真图是不太正确的,要注意。展示的话能用就行。 2.从上到下依次放上数据手册上的引脚解释和逻辑功能和时序图    3.贴上代码:写了发送一字节数据函数,发送全部字节函数,加上一些写了很久的解释(求赞)。

    2024年02月08日
    浏览(61)
  • 51单片机——74HC595的应用(SPI实践)

    目录 SPI总线 SPI总线概述  SPI总线分类 SPI 优点及缺点 SPI接口硬件原理 SPI四种工作模式  74HC595应用 74HC595芯片概述 74HC595封装及管脚功能 74HC595工作原理 ​编辑  74HC595串行转并行点亮LED灯  程序实现   Proteus运行结构示意图 SPI总线概述   SPI(Serial Peripheral interface): 串行外

    2024年02月02日
    浏览(46)
  • 【51单片机】IO 扩展(串转并)--74HC595

    参考: 普中 51 单片机开发攻略 第12章 【51单片机入门教程-2020版 程序全程纯手打 从零开始入门】 https://www.bilibili.com/video/BV1Mb411e7re/?p=21share_source=copy_webvd_source=77e36f24add8dc77c362748ffb980148 nop ()是什么语句? and 位运算操作符 【51单片机入门教程-2020版 程序全程纯手打 从零开始入

    2024年01月22日
    浏览(51)
  • 51单片机——IO拓展(串转并)-74HC595 小白详解

    74HC595 芯片介绍 74HC595 是一个 8 位串行输入、并行输出的位移缓存器,其中并行输出为三 态输出(即高电平、低电平和高阻抗)。芯片管脚及功能说明如下:图1 上面两张都是 74HC595 芯片管脚图,细心的朋友就会发现左侧的 1 脚是 QB, 而右侧芯片的 1 脚是 Q1,左侧芯片的 11

    2024年02月04日
    浏览(52)
  • 51单片机驱动8位数码管(74HC595驱动)滚动显示

    原文链接:https://www.yourcee.com/newsinfo/2929591.html 点击图片购买 主要关注下供电电压是3.0-5.0v(建议5V),请在规定范围内供电。 模块上芯片引出5个引脚,芯片引脚与模块引脚对应关系是:VCC-VCC SCK-SCLK, RCK-RCLK,SER-DIO,GND-GND 可以对比程序学习时序图,便于理解。 1.显示异常可排除

    2024年02月15日
    浏览(58)
  • 毕业设计 基于51单片机控制LED点阵显示器的设计

    序 🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的

    2024年02月02日
    浏览(72)
  • 单片机(二):3个IO扩展n*8个IO,基于74hc595与74hc165的8x8矩阵键盘

    3个IO通过一片74hc595扩展8个输出IO,3个IO通过一片74hc1655扩展8个输入IO,最终成为8X8的矩阵键盘。对于普通的矩阵键盘,再加入防止鬼键、消抖和按下与松开识别。 74HC595是一个8位串行输入、并行输出的移位缓存器。通俗的来讲就是在输入时钟的上升沿数据输入端的数据可以位

    2024年02月10日
    浏览(59)
  • 74HC595驱动7x11点阵屏(LED-7X11-JHM)DEMO

    由于我之前做了一个点阵时钟 ,但是无奈LED点阵屏价格比较贵,所以想找一个价格较为便宜的点阵来做便宜一点的点阵方案,再淘宝上看到有那种五毛钱一个的7x11的LED点阵,所以就想着试试搞一下这种点阵屏,这个由于是7x11的点阵,没有比较好的驱动芯片,只能自己想办法

    2024年02月13日
    浏览(52)
  • 【51单片机】LED 点阵

    参考:普中 51 单片机开发攻略 第13章 mian.c

    2024年01月22日
    浏览(45)
  • 【51单片机】LED点阵屏

    🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【Waiting For Love】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔74HC595图片 🍔74HC595原理 🍔”上升沿“是什么意思 🎆LED点阵屏显示图形  🎈现象  🎈代码(三部分) main.c  Del

    2024年02月02日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包