51单片机LED点阵控制原理、74HC595工作原理和字母和滚动显示实验代码

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

目录

1. 74HC595工作原理图解

 2.LED点阵控制原理

3.点阵LED实验

3.1 配置74HC595代码

3.2 D点阵LED显示H 

 3.3 滚动LED 

(1) 滚动扫描图示

 (2)程序代码

4.遇到奇怪的bug


1. 74HC595工作原理图解

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

 文章来源地址https://www.toymoban.com/news/detail-765182.html

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

  •  :        输出使能,输入低电平允许输出,因此需要用接线帽j24让oe和地短接。(但是我普中A2的板子,不管oe接vcc还是gnd都能输出,奇了怪了,不知道是不是个例)
  • :低点平时将移位寄存器的数据清零,因此常接高电平VCC
  • :上升沿时数据寄存器的数据移位。QA-->QB-->QC-->...-->QH(如果有扩                         展,还会移到QH'),下降沿移位寄存器数据不变
  • :     串行数据输入端 
  • :  上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。
  • QA--QH:   八位并行输出端。
  • QH':         级联输出端。将它接下一个 595 的 SER 端。 

         要输入的数据串行的从  输入移位寄存器,当 上升沿,比特数据在移位寄存器中移动(往高地址)。当  上升沿时移位寄存器的数据进入数据存储寄存器,最终并行的发送出Q1-QH口。

        如果你需要级联(可能为了扩展更多IO口),当移位寄存器继续移位,最高位会溢出通过下一个595芯片进入其移位寄存器。

 2.LED点阵控制原理

 

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

         LED点阵排列呈矩阵状排布,P35,P34,P36通过74HC595芯片控制每一行LED正极,P00~P07连接每一列阴极。这样连接一方面也因为该单片机芯片是弱上拉,强下拉。

        一行,一列可以确定一个LED,一个时刻只能操作一行或一列上的LED,有关显示图形的(涉及多行多列’同时‘显示),可以类似数码管显示多位,在LED点阵上逐行或逐列扫描,利用电子电路的快,骗过眼睛。

3.点阵LED实验

3.1 配置74HC595代码

        因为RCLK与头文件<REGX52.H>中RCLK重名,我们换一个位变量名RCK

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

 

sbit RCK = P3^5;
sbit SRCLK = P3^6;
sbit SER = P3^4;
//sbit只能在外部定义全局变量,是SFR(特殊功能寄存器)的bit

3.2 D点阵LED显示H 

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

#include <REGX52.H>
#include <Delay1ms.H>

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

/*74HC595输出byte*/
void _74Hc595_WriteByte(unsigned char byte) {
	unsigned int i;

//将形参byte从高位到低位输入移位寄存器
	for(i=0;i<8;i++)
	{
		SER = byte&(0x80>>i);
		SRCLK = 1;//上升沿接收SER并移位
		SRCLK = 0;//复位
	}
	RCK = 1;//将移位寄存器并行发送到数据寄存器最终输出
	RCK =0;//复位
}	

/*选择在led点阵上第0列到第7列(共8列)上第Column列,根据Data二进制0/1显示led*/
void MatrixLed_ShowColumn(unsigned char Column,Data) {
	_74Hc595_WriteByte(Data);
	P0 = ~(0x80>>Column);//P0控制着选择第几列被选中
	Delay1ms(1);//太快切换会暗
	P0 = 0xFF;//消影
}
int main()
{
	SRCLK = 0;
	RCK = 0;

	while(1)
	{
        //快速的依次在八列上显示
		MatrixLed_ShowColumn(0,0x00);
		MatrixLed_ShowColumn(1,0xFF);
		MatrixLed_ShowColumn(2,0x10);
		MatrixLed_ShowColumn(3,0x10);
		MatrixLed_ShowColumn(4,0x10);
		MatrixLed_ShowColumn(5,0x10);
		MatrixLed_ShowColumn(6,0xFF);
		MatrixLed_ShowColumn(7,0x00);

	}
	
}

 3.3 滚动LED 

(1) 滚动扫描图示

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

 ………………移动  

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

         接下来,重新回到,同时因为前后的空白,能够不至于滚动到E后突然跳到L,而是跳到L前面空白,让滚动更平滑。

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

 (2)程序代码

#include <REGX52.H>
#include <Delay1ms.H>

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

//存放要滚动字母形的每一列74HC595输出二进制状态,如上图0x行所写
unsigned char Scroll_letter[44] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xff,0x01,0x01,0x01,0x3c,0x42,0x81,0x81,0x42,0x3c,0x00,0x80,0x60,0x18,0x06,0x01,0x06,0x18,0x60,0x80,0x00,0xff,0x91,0x91,0x91,0x91,0x91,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
//可以unsigned char code Scroll_letter[44] 将该数组放到flash程序存储空间里,不占用RAM,但是这样无法更改数组
void _74Hc595_WriteByte(unsigned char byte) {
	unsigned int i;

	for(i=0;i<8;i++)
	{
		SER = byte&(0x80>>i);
		SRCLK = 1;
		SRCLK = 0;
	}
	RCK = 1;
	RCK =0;
}	

void MatrixLed_ShowColumn(unsigned char Column,Data) {
	_74Hc595_WriteByte(Data);
	P0 = ~(0x80>>Column);
	Delay1ms(1);
	P0 = 0xFF;
}
int main()
{
    //偏移量,led最多显示8列,而偏移量决定显示从Scroll_letter数组那一列开始的八列
	unsigned char start_col = 0;
    //i决定显示led中八列中任何一列
    //count也是为了保证滚动平滑型
	unsigned char i,count=0;
	SRCLK = 0;
	RCK = 0;

	
	
	while(1)
	{

		for(i=0;i<8;i++)
		{
			MatrixLed_ShowColumn(i,Scroll_letter[start_col+i]);
		}
		count++;
        //让每八列停留10个count自加时间(也可以用定时器)
		if(count>10)
		{
			count = 0;
			start_col++;
		}
        //当偏移量走到能和i能把最后一个字母E都显示完,则重新滚动
		if(start_col==36)
			start_col=0;

			

	}
	
}

4.遇到奇怪的bug

 /* 将第一行第一列灯点亮 */

#include <REGX52.H>
sbit RCK = P3^5;
sbit SRCLK = P3^6;
sbit SER = P3^4;

void Column1_74Hc595_WriteByte(unsigned char byte) {
	unsigned char i;
	
	P0_7 = 0;//第一列被选中,阴极赋低电平
	for(i=0;i<8;i++)
	{
		SER = byte&(0x80>>i);// 当byte=0x80 即 1000 0000 ,则第一行赋高电平
		SRCLK = 1;
		SRCLK = 0;
	}
	RCK = 1;
	RCK =0;
}	
int main()
{
	SRCLK = 0;
	RCK = 0;
    
    //将第一行第一列灯点亮
	Column1_74Hc595_WriteByte(0x80);
	while(1)
	{
	}
	
}

 点亮了:

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

复位后,灭了:

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

 

 /* 将第一列灯点亮 */

#include <REGX52.H>
sbit RCK = P3^5;
sbit SRCLK = P3^6;
sbit SER = P3^4;

void Column1_74Hc595_WriteByte(unsigned char byte) {
	unsigned char i;
	
	P0_7 = 0;//第一列被选中,阴极赋低电平
	for(i=0;i<8;i++)
	{
		SER = byte&(0x80>>i);// 当byte=0xff 即 1111 1111 ,则八行都赋高电平
		SRCLK = 1;
		SRCLK = 0;
	}
	RCK = 1;
	RCK =0;
}	
int main()
{
	SRCLK = 0;
	RCK = 0;
    
    //将第一列灯点亮
	Column1_74Hc595_WriteByte(0xff);
	while(1)
	{
	}
	
}

点亮了:

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

复位后,还是点亮了:

51点阵原理,51单片机,单片机,嵌入式硬件,51单片机

 

 

到了这里,关于51单片机LED点阵控制原理、74HC595工作原理和字母和滚动显示实验代码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 51单片机8*8 LED点阵实现原理讲解

    本篇文章将为大家讲解LED8*8点阵的使用方法。 LED 8 8点阵是由64个LED灯珠组成的,它们排列在一个8 8的矩阵中。每个LED灯珠都可以独立控制,因此可以通过控制不同的LED灯珠来显示不同的图形、数字、字母等。 LED 8 8点阵的原理是利用LED灯珠的发光特性,通过控制LED灯珠的亮灭

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

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

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

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

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

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

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

    LED点阵屏是一种由许多小型LED灯组成的矩阵式显示屏。这些LED灯可以是单色、双色或全彩的,它们排列成行和列的网格,可以根据需要点亮来显示图像、文字或动画等内容。LED点阵屏广泛应用于户外广告牌、室内显示、交通信号灯、电子价格标签和其他需要显示信息的场合。

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

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

    2024年02月02日
    浏览(34)
  • 【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日
    浏览(39)
  • 51单片机——74HC595的应用(SPI实践)

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

    2024年02月02日
    浏览(37)
  • 51单片机——LED点阵屏(显示滚动画面)

    目录   一、关于数码管、LED点阵屏显示的注意点 二、功能介绍 三、主要模块的介绍 3.1 74HC595模块和点阵屏显示函数 3.1.1 74HC595介绍 3.1.2 点阵屏显示函数MatrixLED() 3.2定时器中断模块 四、程序实现 五、效果展示   一定要消影,不然显示的画面有重影。不管是数码管还是LED点阵

    2023年04月17日
    浏览(32)
  • 51单片机 8*8LED点阵(入门教学)

    LED 点阵介绍 LED 点阵是由发光二极管排列组成的显示器件,在我们日常生活的电器中随 处可见,被广泛应用于汽车报站器,广告屏等。 通常应用较多的是 8*8 点阵,然后使用多个 8*8 点阵可组成不同分辨率的 LED 点阵显示屏,比如16*16 点阵可以使用 4 个 8*8 点阵构成。因此理解

    2024年02月02日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包