51单片机——LED点阵屏(显示滚动画面)

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

目录

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

一、关于数码管、LED点阵屏显示的注意点

二、功能介绍

三、主要模块的介绍

3.1 74HC595模块和点阵屏显示函数

3.1.1 74HC595介绍

3.1.2 点阵屏显示函数MatrixLED()

3.2定时器中断模块

四、程序实现

五、效果展示


 

一、关于数码管、LED点阵屏显示的注意点

  • 一定要消影,不然显示的画面有重影。不管是数码管还是LED点阵屏,都是"段选--位选--段选--位选"或者"位选--段选--位选--段选"循环来显示的,在每一个"段选--位选"或者"位选--段选"单元后面都要加一个延时函数,延时1ms等待显示稳定后,再进行"位选"或者"段选"的清零,即"段选—位选—延时1ms—清零位选—段选—位选"或者"位选—段选—延时1us—清零段选—位选—段选"。注意是清零段选还是清零位选。
  • 判断按键按下操作。有时按下按键,数码管就显示一下,又灭了,这可能就是没有对按键按下进行判断。在使用按键时,只有当我们按下按键时才会把键值返回,在没按的期间,返回的值是初始化的值。也就是说,返回的键值没有保存下来,只会在你按下的时候显示一次键值,没按的时候显示的是初始的值。

二、功能介绍

        用LED点阵屏显示滚动的画面。

三、主要模块的介绍

3.1 74HC595模块和点阵屏显示函数

3.1.1 74HC595介绍

        74HC595是串行输入,并行输出的移位寄存器,可用3根线输入串行数据,8根线输出并行数据。这里主要用来拓展I/O口。

51单片机——LED点阵屏(显示滚动画面)

       74HC595的8个输出端DPh~DPa分别接点阵屏列的输入端D7~D0。从而控制列的显示。

51单片机——LED点阵屏(显示滚动画面)

      通过SER口输入串行的数据,当SRCLK有上升沿信号时,数据就往下移一位,当数据满了8位时,给RCLK上升沿信号时,8位数据就锁存到QA~QH,QH'连接到下一片74HC595,继续拓展16位、32位....,这里只是3线拓展到8线,QH'就不用接了。这样单片机通过3个I/O口连接74HC595,输出8位数据。

51单片机——LED点阵屏(显示滚动画面)

3.1.2 74HC595初始化函数和输入函数

sbit SER=P3^4;
sbit SCL=P3^6;
sbit RCL=P3^5;
/*
	*函数名:  _74HC595Write(unsigned char byte)
	*函数功能:向74HC595串行输入一个字节的数据
	*输入:    byte	:一个字节数据
	*输出:    无
*/
void _74HC595Write(unsigned char byte)
{
	int i=0;
	for(i=0;i<8;i++)
	{
		SER=byte&(0x80>>i);
		SCL=1;
		SCL=0;
	}
	RCL=1;
	RCL=0;	 
}
/*
	*函数名:  _74HC595_Init()
	*函数功能:初始化74HC595的SCL、RCL
	*输入:	   无
	*输出:	   无
*/
void _74HC595_Init()
{
	SCL=0;
	RCL=0;	
}

3.1.3 点阵屏显示函数MatrixLED()

        这里需要注意的就是要消影。

/*
	*函数名:   MatrixLED(unsigned char COL,unsigned char byte)
	*函数功能: 控制点阵屏某一列的显示
	*输入:		COL:列  范围0~7; byte:要显示数据的二进制形式(8位)
	*输出:     无
*/
void MatrixLED(unsigned char COL,unsigned char byte)
{
   _74HC595Write(byte);
   P0=~(0x80>>COL);
   Delay(1);
   P0=0xff;//消影
}

3.2定时器中断模块

        这里用定时器控制画面的移动速度,每100ms移动一下。

void Timer0_Init()//定时器0,工作方式1
{
	TMOD=0x01;
	TH0=0xfc;//1ms
	TL0=0x18;
	EA=1;
	ET0=1;
	TR0=1;
}
//定时100ms中断
void Timer0_ISR() interrupt 1
{	
	static int count=0;
	count++;
	TH0=0xfc;
	TL0=0x18;
	if(count==100)//每100ms,offset加一,画面移动左一下
	{
		count=0;
		offset++;
		if(offset>34)
		{
			offset=0;
		}	
	} 
}

四、程序实现

#include <REGX52.H>
#include<INTRINS.H>
int offset=0;
sbit SER=P3^4;
sbit SCL=P3^6;
sbit RCL=P3^5;
unsigned char Animation[]={
						   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,	
						   0x7E,0x81,0x81,0x81,0x81,0x82,0x00,0x03,
						   0x03,0x03,0x03,0x03,0x00,0xFE,0x01,0x01,
						   0x01,0x01,0x01,0xFE,0x00,0xFF,0x90,0x90,
						   0x90,0xE0,
						   0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
						  };//C_UP
void Delay(unsigned int Xms)	   //11.0592Mhz 1ms	
{
	unsigned char i, j;
	while(Xms--)
	{
	_nop_();
	i = 2;
	j = 199;
	do
	{
		while (--j);
	} while (--i);
	}
}
void Timer0_Init()//定时器0,工作方式1
{
	TMOD=0x01;
	TH0=0xfc;//1ms
	TL0=0x18;
	EA=1;
	ET0=1;
	TR0=1;
}
void _74HC595Write(unsigned char byte)
{
	int i=0;
	for(i=0;i<8;i++)
	{
		SER=byte&(0x80>>i);
		SCL=1;
		SCL=0;
	}
	RCL=1;
	RCL=0;	 
}

void _74HC595_Init()
{
	SCL=0;
	RCL=0;	
}

void MatrixLED(unsigned char COL,unsigned char byte)
{
   _74HC595Write(byte);
   P0=~(0x80>>COL);
   Delay(1);
   P0=0xff;//消影
}
//定时100ms中断
void Timer0_ISR() interrupt 1
{	
	static int count=0;
	count++;
	TH0=0xfc;
	TL0=0x18;
	if(count==100)//每100ms,offset加一,画面移动左一下
	{
		count=0;
		offset++;
		if(offset>34)//42-8
		{
			offset=0;
		}	
	} 
}
int main()
{
	int i=0;
	_74HC595_Init();
	Timer0_Init();//T0初始化
	while(1)
	{
		for(i=0;i<8;i++)
		{
			 MatrixLED(i,Animation[i+offset]);
		}	 
	}
}

五、效果演示

LED点阵屏滚动显示

 

 

 

 

 

 

 

到了这里,关于51单片机——LED点阵屏(显示滚动画面)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 毕业设计 基于51单片机控制LED点阵显示器的设计

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

    2024年02月02日
    浏览(36)
  • 基于AT89C51单片机的LED点阵显示屏设计

    点击链接获取Keil源码与Project Backups仿真图: [[https://download.csdn.net/download/qq_64505944/88637464?spm=1001.2014.3001.5503]] **[源码获取] B 源码+仿真图+课程设计+50 工程实训(三)课题设计 LED点阵显示屏设计 LED点阵显示屏通过编程控制可以显示中英文字符、图形及视频动态图形,广泛用于指

    2024年02月02日
    浏览(28)
  • 126、仿真-基于51单片机16×16点阵滚动显示仿真设计(Proteus仿真+程序+配套资料等)

    方案选择 单片机的选择 方案一:STM32系列单片机控制,该型号单片机为LQFP44封装,内部资源足够用于本次设计。STM32F103系列芯片最高工作频率可达72MHZ,在存储器的01等等待周期仿真时可达到1.25Mip/MHZ(Dhrystone2.1)。内部128k字节的闪存程序存储器,也就是说代码量可以写到128k字

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

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

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

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

    2024年02月02日
    浏览(15)
  • 51单片机LED点阵屏

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

    2024年01月23日
    浏览(27)
  • 51单片机 8*8LED点阵(入门教学)

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

    2024年02月02日
    浏览(20)
  • 51单片机8*8 LED点阵实现原理讲解

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

    2024年02月09日
    浏览(15)
  • 51单片机——LED 点阵点亮一个点,小白详解

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

    2024年02月09日
    浏览(17)
  • 【51单片机】LED点阵屏的纵向动画流动字幕

    学习完点阵屏,小伙伴们可能都想要展示一下自己的名字,而有的同学的名字太过复杂,宽为8的点阵屏无法写出,于是我便想到了纵向显示笔画过于复杂的名字。 就比如“嘉”字,横向无法写出,我们就把字体给拉长,丑是丑了点,但可以完整显示了🐶: 采用这种表示,将一

    2023年04月13日
    浏览(12)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包