【STM32单片机】LED点阵花样显示设计


一、功能简介

本项目使用STM32F103C8T6单片机控制器,使用8*8LED点阵模块、按键模块等。

主要功能:
系统运行后,默认以静态模式显示,此时点阵左右循环切换图像。
当按下K1键,点阵从下往上滚动显示图像;
当再次按下K1键,点阵从上往下滚动显示图像;
当再次按下K1键,点阵从左往右滚动显示图像;
当再次按下K1键,点阵从右往左滚动显示图像;
如此循环。


二、软件设计

/*
作者:嗨小易(QQ:3443792007)

*/


//系统数据显示
void sys_data_show(void)
{
	u8 i=0;
	u16 time=0;
	
	while(1)
	{
		//静态显示
		if(sys_ctrl.mode==MODE_STATIC_SHOW)
		{
			for(time=0;time<SPEED_ROLL;time++)
			{
				for(i=0;i<8;i++)//循环8次扫描8行、列
				{
					LEDDZ_COL_Write_Data(gled_col_lr[i]);//传送列选数据
					LEDDZ_Row_Write_data(gled_row_lr[i+8]);//传送行选数据
					delay_ms(1);//延时一段时间,等待显示稳定
					LEDDZ_Row_Write_data(0x00);//消影	
				}		
			}
			for(time=0;time<SPEED_ROLL;time++)
			{
				for(i=0;i<8;i++)//循环8次扫描8行、列
				{
					LEDDZ_COL_Write_Data(gled_col_lr[i]);//传送列选数据
					LEDDZ_Row_Write_data(gled_row_lr[i+7]);//传送行选数据
					delay_ms(1);//延时一段时间,等待显示稳定
					LEDDZ_Row_Write_data(0x00);//消影	
				}		
			}	
		}
		//从下往上滚动显示
		else if(sys_ctrl.mode==MODE_DOWN_UP_SHOW)
		{	
			for(time=0;time<SPEED_ROLL;time++)
			{
				for(i=0;i<8;i++)//点阵扫描
				{
					LEDDZ_COL_Write_Data(~gled_col_ud[i+sys_ctrl.data_cnt]);//传送列选数据
					LEDDZ_Row_Write_data(~gled_row_ud[i]);//传送行选数据
					delay_ms(1);//延时一段时间,等待显示稳定
					LEDDZ_Row_Write_data(0x00);//消影	
				}
			}
			sys_ctrl.data_cnt++;
			if(sys_ctrl.data_cnt==16)sys_ctrl.data_cnt=0;	
		}
		//从上往下滚动显示
		else if(sys_ctrl.mode==MODE_UP_DOWN_SHOW)
		{
			for(time=0;time<SPEED_ROLL;time++)
			{
				for(i=0;i<8;i++)//点阵扫描
				{
					LEDDZ_COL_Write_Data(~gled_col_ud[i+sys_ctrl.data_cnt]);//传送列选数据
					LEDDZ_Row_Write_data(~gled_row_ud[i]);//传送行选数据
					delay_ms(1);//延时一段时间,等待显示稳定
					LEDDZ_Row_Write_data(0x00);//消影	
				}
			}
			sys_ctrl.data_cnt--;
			if(sys_ctrl.data_cnt==0)sys_ctrl.data_cnt=16;		
		}
		//从左往右滚动显示
		else if(sys_ctrl.mode==MODE_LEFT_RIGHT_SHOW)
		{	
			for(time=0;time<SPEED_ROLL;time++)
			{
				for(i=0;i<8;i++)//点阵扫描
				{
					LEDDZ_COL_Write_Data(gled_col_lr[i]);//传送列选数据
					LEDDZ_Row_Write_data(gled_row_lr[i+sys_ctrl.data_cnt]);//传送行选数据
					delay_ms(1);//延时一段时间,等待显示稳定
					LEDDZ_Row_Write_data(0x00);//消影	
				}
			}
			sys_ctrl.data_cnt--;
			if(sys_ctrl.data_cnt==0)sys_ctrl.data_cnt=16;				
		}
		//从右往左滚动显示
		else if(sys_ctrl.mode==MODE_RIGHT_LEFT_SHOW)
		{	
			for(time=0;time<SPEED_ROLL;time++)
			{
				for(i=0;i<8;i++)//点阵扫描
				{
					LEDDZ_COL_Write_Data(gled_col_lr[i]);//传送列选数据
					LEDDZ_Row_Write_data(gled_row_lr[i+sys_ctrl.data_cnt]);//传送行选数据
					delay_ms(1);//延时一段时间,等待显示稳定
					LEDDZ_Row_Write_data(0x00);//消影	
				}
			}
			sys_ctrl.data_cnt++;
			if(sys_ctrl.data_cnt==16)sys_ctrl.data_cnt=0;				
		}
	}	
}




三、实验现象

B站演示视频:https://space.bilibili.com/444388619
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


联系作者

专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。

  • 9
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值