首页 > 其他分享 >关于用51单片机8X8点阵显示一个爱心

关于用51单片机8X8点阵显示一个爱心

时间:2024-07-28 13:54:54浏览次数:9  
标签:P3 74HC595 LED u8 芯片 8X8 51 单片机 sbit

目录

 LED点阵的原理图

 74HC595芯片原理图

实现方法

定义需要使用的IO口

 宏定义端口

 构造数组

 编写延时函数

 74HC595芯片数据的读写

显示图案

完整代码


 LED点阵的原理图

要控制LED点阵就需要控制P0口来以此控制LED的负极,控制 74HC595芯片来控制LED的正极。只要给正极高电平负极低电平,LED就会点亮。

 74HC595芯片原理图

 通过74HC595芯片进行IO口的扩展通过控制P3^4,P3^5,P3^6三个IO口来同时控制QA~QH这八个引脚。 

实现方法

定义需要使用的IO口

sbit SRCLK=P3^6;	//移位寄存器时钟输入
sbit RCLK=P3^5;		//存储寄存器时钟输入
sbit SER=P3^4; 		//串行数据输入

 宏定义端口

宏定义P0口来控制的LED的负极

#define LEDDZ_COL_PORT	P0	//点阵列控制端口

 构造数组

数组中的元素为后期编码图案是所用。

u8 ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 a[8]= {0xef,0xc7,0x83,0x01,0x00,0x00,0x11,0xbb};

 编写延时函数

void delay_10us(u16 ten_us)	 //延时函数
{
	while(ten_us--);	
}

 74HC595芯片数据的读写

void hc595_write_data(u8 dat)	   //595读取数据
{
	u8 i=0;
	
	for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中
	{
		SER=dat>>7;//优先传输一个字节中的高位
		dat<<=1;//将低位移动到高位
		SRCLK=0;
		delay_10us(1);
		SRCLK=1;
		delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中	
	}
	RCLK=0;
	delay_10us(1);
	RCLK=1;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出	
}

通过输入数据给74HC595芯片既可以控制LED灯的正极

显示图案

	u8 i=0; u16 j=0 ;	  //定义初值
	while(1)
	{	
		//爱心
		while(1)	
		{	j++	;
			for(i=0;i<8;i++)
			{	
				hc595_write_data(0x00);//消除前面寄存器缓存数据
				LEDDZ_COL_PORT=a[i];
				hc595_write_data(ghc595_buf[i]);//写入新的数据
				delay_10us(1);	
			}
			if (j==100)
			{	
				j=0	;
				break;
			}
			
		}
    }

 通过给LED的正负极高电平和低电平来点亮LED灯,再通过数组里面的元素循环出现来让LED灯显示出一个固定的图案,注意显示的速度一定要非常的快,不然将会一行一行的显示。

完整代码

#include "reg51.h"

typedef unsigned int u16;	//对系统默认数据类型进行重定义
typedef unsigned char u8;

//定义74HC595控制管脚
sbit SRCLK=P3^6;	//移位寄存器时钟输入
sbit RCLK=P3^5;		//存储寄存器时钟输入
sbit SER=P3^4; 		//串行数据输入

#define LEDDZ_COL_PORT	P0	//点阵列控制端口

//	  编码点阵图案
u8 ghc595_buf[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
u8 a[8]= {0xef,0xc7,0x83,0x01,0x00,0x00,0x11,0xbb};

void delay_10us(u16 ten_us)	 //延时函数
{
	while(ten_us--);	
}


void hc595_write_data(u8 dat)	   //595读取数据
{
	u8 i=0;
	
	for(i=0;i<8;i++)//循环8次即可将一个字节写入寄存器中
	{
		SER=dat>>7;//优先传输一个字节中的高位
		dat<<=1;//将低位移动到高位
		SRCLK=0;
		delay_10us(1);
		SRCLK=1;
		delay_10us(1);//移位寄存器时钟上升沿将端口数据送入寄存器中	
	}
	RCLK=0;
	delay_10us(1);
	RCLK=1;//存储寄存器时钟上升沿将前面写入到寄存器的数据输出	
}

void main()
{	
	u8 i=0; u16 j=0 ;	  //定义初值
	while(1)
	{	
		//爱心
		while(1)	
		{	j++	;
			for(i=0;i<8;i++)
			{	
				hc595_write_data(0x00);//消除前面寄存器缓存数据
				LEDDZ_COL_PORT=a[i];
				hc595_write_data(ghc595_buf[i]);//写入新的数据
				delay_10us(1);	
			}
			if (j==100)
			{	
				j=0	;
				break;
			}
			
		}
    }
}

标签:P3,74HC595,LED,u8,芯片,8X8,51,单片机,sbit
From: https://blog.csdn.net/hxbwppeqppi/article/details/140741681

相关文章

  • GYM105139C Lili Likes Polygons
    记矩形的并为\(P\),定义多边形的大小为它的顶点个数\(|P|\),其\(90\)°的顶角为凸角,\(270\)°的顶角为凹角并记凹点构成的集合为\(C\),称竖直或水平在多边形内部分割开矩形的线为割线,连接了两个凹点的割线为好割线贪心可以发现对于\(P\)的任意极小矩阵划分,所有的割线至少有一......
  • 51nod-3928方伯伯的玉米田
    https://class.51nod.com/Html/Textbook/ChapterIndex.html#textbookId=126&chapterId=338https://class.51nod.com/Html/Textbook/Problem.html#problemId=3928&textbookChapterId=725保证右端点为\(n\)是因为如果不是这样操作,可能导致后面的数大小关系发生变化,而如果保证了......
  • 51nod-3986-免费的馅饼
    https://class.51nod.com/Html/Textbook/Problem.html#problemId=3986&textbookChapterId=725https://class.51nod.com/Html/Textbook/ChapterIndex.html#textbookId=126&chapterId=338我们将馅饼表示为\((p_i,t_i)\),即一个平面直角坐标系上的点。我们把馅饼看成静止,人每次往......
  • 代码随想录算法训练营第九天 | 151.翻转字符串里的单词,卡码网:55.右旋转字符串,28. 实现
    151.翻转字符串里的单词题目链接:力扣题目链接文章讲解:代码随想录 视频讲解:字符串复杂操作拿捏了!|LeetCode:151.翻转字符串里的单词思路这道题目可以说是综合考察了字符串的多种操作。其实这道题和反转字符串这道题目很像,而且用法也是通用的方法一:切片,reverse,以及......
  • 【51单片机仿真】基于51单片机设计的广告机系统仿真&源码&原理图&设计文档
     效果:摘要该系统基于51单片机,通过LED点阵显示字符和简单图案,并实现按键控制。系统可以用于广告机,通过两个按键实现暂停/继续显示和显示方向切换功能。系统包含硬件电路设计和软件编程两部分。目录 第1章绪论 第2章系统分析与总体设计第3章系统的硬件结构实现......
  • 【51单片机仿真】基于51单片机设计的多功能电子时钟(实时时钟闹钟秒表温度检测)系统仿真
    效果:1.项目概述该项目是基于单片机的多功能电子时钟系统,集成了时间显示、闹钟设置、秒表功能以及温度显示等功能。主要硬件包括1602液晶显示屏、DS1302时钟芯片、DS18B20温度传感器和蜂鸣器。系统通过按键进行时间和闹钟的设置,并实时显示当前时间和温度。目录效果:1.......
  • [lnsyoj517/luoguP4777]扩展中国剩余定理
    题意原题链接求线性同余方程组\[\begin{cases}x\equivb_1\pmod{a_1}\\x\equivb_2\pmod{a_2}\\\dots\\x\equivb_n\pmod{a_n}\end{cases}\]的最小非负整数解。sol与[lnsyoj163/luoguP1495]曹冲养猪不同的是,本题无法保证互质,这就导致中国剩余定理无法使用,需要一种新的方式来......
  • 【STC 相关】【转载】51单片机学习教程(简单入门)
    转载自:知乎https://zhuanlan.zhihu.com/p/628407258作者:rakey(作者主页https://www.zhihu.com/people/rakey-49) 学习51单片机之前你一定要具备的基础知识。1、C语言基础。2、数字电路基础。3、模拟电路基础。如果你已经具备这些知识那么我们就可以来学习单片机。学习......
  • 1251 - Client does not support authentication protocol requested by server; cons
    错误记录:1251-Clientdoesnotsupportauthenticationprotocolrequestedbyserver;considerupgradingMySQLclient错误原因:mysql8之前的版本中加密规则是mysql_native_password,而在mysql8之后,加密规则是caching_sha2_password。解决方案:解决:①升级navicat驱动;②......
  • 51nod-3976-最长序列
    https://class.51nod.com/Html/Textbook/ChapterIndex.html#textbookId=126&chapterId=338https://class.51nod.com/Html/Textbook/Problem.html#problemId=3976&textbookChapterId=725LIS是符号只有大于或小于,所以这道题就是LIS问题。状态设计同LIS,由于答案就是长度,所以就能知......