第八章、stc89c52中LED点阵屏的控制

文章介绍了LED点阵屏的基本构成和显示原理,包括单色、双色和全彩分类以及不同像素规格。重点讲解了74HC595芯片在控制LED点阵屏中的作用,以及C51编程中str和sbit的用法。通过示例代码展示了如何使用单片机控制LED点阵屏显示静态和动态图形,如笑脸和小日本动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、LED点阵屏简介

  •  LED点阵屏由若干个独立的LED组成,LED以矩阵的形式排列,以灯珠亮灭来显示文字、图片、视频等。LED点阵屏广泛应用于各种公共场合,如汽车报站器、广告屏以及公告牌等
  • LED点阵屏分类     按颜色:单色、双色、全彩     按像素:8*8、16*16等(大规模的LED点阵通常由很多个小点阵拼接而成)

 2、LED点点阵屏显示原理

  • LED点阵屏的结构类似于数码管,只不过是数码管把每一列的像素以“8”字型排列而已
  • LED点阵屏与数码管一样,有共阴和共阳两种接法,不同的接法对应的电路结构不同
  • LED点阵屏需要进行逐行或逐列扫描,才能使所有LED同时显示

 stc89c52开发板上的引脚对应关系如下:

  • P0_0~P0_7  为阴极,由单片机控制。置0为有效
  • D0~D7 为阳极,由74HC595 芯片获取

 3、74HC595芯片介绍

 

  • OE :为芯片使能位  置0时芯片开始工作
  • RCLK:(register clock)寄存器时钟 ——置1时,将数据搬移到右端
  • SRCLR: (serial clear)串行清零端 (置0时清空)
  • SRCLK:(serial clock)串行时钟——置1时,向下移动数据
  • SER:串行数据   ——负责输入数据
  • QH' :多片级联

4、C51中的str、sbit

  • sfr(special function register):特殊功能寄存器声明     例:sfr P0 = 0x80;     声明P0口寄存器,物理地址为0x80
  • sbit(special bit):特殊位声明     例:sbit P0_1 = 0x81;    或    sbit P0_1 = P0^1;     声明P0寄存器的第1位
  • 可位寻址/不可位寻址:在单片机系统中,操作任意寄存器或者某一位的数据时,必须给出其物理地址,又因为一个寄存器里有8位,所以位的数量是寄存器数量的8倍,单片机无法对所有位进行编码,故每8个寄存器中,只有一个是可以位寻址的。对不可位寻址的寄存器,若要只操作其中一位而不影响其它位时,可用“&=”、“|=”、“^=”的方法进行位操作

5、使用LED点阵屏显示静态图形

#include <REGX52.H>
#include "Delay.h"
  
sbit RCK=P3^5;		//RCLK
sbit SCK=P3^6;		//SRCLK
sbit SER=P3^4;		//SER

/**
  * @brief   往74HC595芯片中写入 一个字节数据 来控制 D0~D7  
  * @param   Byte  一个字节数据
  * @retval   无
  */
void _74HC595_WriteByte(unsigned char Byte)
{
	unsigned char i;
	for(i=0;i<8;i++)
	{
		SER = (0x80>>i)&Byte;   //写入数据
		SCK = 1;      //向下移位
		SCK = 0;
	}
	RCK = 1;
	RCK = 0;
}

/**
  * @brief  LED点阵屏显示一列数据
  * @param  Column 要选择的列,范围:0~7,0在最左边
  * @param  Byte 选择列显示的一字节数据,高位在上,1为亮,0为灭
  * @retval 无
  */
void MatrixLED_ShowColumn(unsigned char Column,Byte)
{
	_74HC595_WriteByte(Byte);
	P0=~(0x80>>Column);
	//  LED 消影
	Delay(1);
	P0=0xFF;
}

void main()
{
	SCK = 0;
	RCK = 0;
	while(1)
	{
		MatrixLED_ShowColumn(0,0x3C);
		MatrixLED_ShowColumn(1,0x42);
		MatrixLED_ShowColumn(2,0xA9);
		MatrixLED_ShowColumn(3,0x85);
		MatrixLED_ShowColumn(4,0x85);
		MatrixLED_ShowColumn(5,0xA9);
		MatrixLED_ShowColumn(6,0x42);
		MatrixLED_ShowColumn(7,0x3C);
	}
}

利用LED点阵屏显示笑脸图形:

6、使用LED点阵屏显示动态图形——小日本

#include <REGX52.H>
#include "Delay.h"
#include "MatrixLED.h"

//动画数据  小日本
unsigned char code Animation[]={
	0x00,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x08,0x12,0x01,0xFF,0x00,0x10,
	0x08,0x00,0x00,0x7F,0x49,0x49,0x49,0x7F,
	0x00,0x00,0x02,0x24,0x2A,0x32,0xFF,0x32,
	0x2A,0x24,0x02,0x00,0x00,0x00,0x00,0x00,
	0x00,0x00,0x00,

};

void main()
{
	unsigned char i,Offset=0,Count=0;
	MatrixLED_Init();  // 前面实验的函数,进行了写到了MatrixLED.c 文件中了
	while(1)
	{
		for(i=0;i<8;i++)	//循环8次,显示8列数据
		{
			MatrixLED_ShowColumn(i,Animation[i+Offset]);   // 前面实验的函数,进行了写到了MatrixLED.c 文件中了
		}
		Count++;			//计次延时
		if(Count>15)
		{
			Count=0;
			Offset++;		//偏移+8,切换下一帧画面
			if(Offset>33)
			{
				Offset=0;
			}
		}
	}
}

演示效果:

LED点阵屏 显示动画

LED点阵显示(完整源程序版) 目 录 引言 ……………………………………………………………………1 1 系统的设计与分析 ………………………………………………2 1.1 LED点阵控制原理………………………………………………………………3 1.1.1 LED简介 ……………………………………………………………………3 1.1.2 LED点阵 ……………………………………………………………………4 1.1.3 显示原理 ……………………………………………………………………5 1.1.4显示的原理图及结构 ……………………………………………………6 1.2 单片机小系统 …………………………………………………………………8 1.2.1 51系列单片机的概述 ………………………………………………………8 1.2.2单片机的组成 ………………………………………………………………8 2 程序设计 ………………………………………………………10 2.1 系统程序的框架………………………………………………………………10 2.1.1 串口通讯协议………………………………………………………………10 2.1.2 显示处理效果函数…………………………………………………………10 2.1.3 显示函数……………………………………………………………………10 2.2 程序流程图……………………………………………………………………9 3 总结 ………………………………………………………………11 谢辞 …………………………………………………………………13 参考文献 ……………………………………………………………14 附录(所有的源程序)………………………………………………15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值