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

news2024/11/16 11:36:44

文章目录

  • 一、功能简介
  • 二、软件设计
  • 三、实验现象
  • 联系作者


一、功能简介

本项目使用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设计,视频分享,技术交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1247683.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

GEE:kNN(k-最近邻)分类教程(样本制作、特征添加、训练、精度、最优参数、统计面积)

作者:CSDN @ _养乐多_ 本文将介绍在Google Earth Engine (GEE)平台上进行kNN(k-最近邻)分类的方法和代码,其中包括制作样本点教程(本地、在线和本地在线混合制作样本点,合并样本点等),加入特征变量(各种指数、纹理特征、时间序列特征、物候特征等),运行kNN(k-最近…

mysql 更改密码

由于两台设备的mysql数据库的密码不一样&#xff0c;开发时每次连接数据库都需要更改配置文件&#xff0c;所以想修改一下mysql数据库的密码。 mysql 修改密码千万不要直接修改&#xff0c;直接修改的话会出现两种情况&#xff1a; 1&#xff0c;修改成功&#xff0c;无法登录。…

UEditor编辑器实现上传图片自动加水印功能PHP源码

UEditor编辑器是百度旗下的免费开源富文本编辑器,使用很方便,但是也有缺点,比如,上传图片不能自动添加水印,下边我们就来说说如何在UEditor编辑器中自动实现上传图片添加水印功能,操作很简单。 首先找到UEditor/PHP目录下的Uploader.class.php的文件,打开该文件,找到以…

ThreeJs绘制仓库场景

之前有做过关于threejs开发的一些小功能项&#xff0c;最近正好在做一个仓库相关的3D场景&#xff0c;这里贴出核心代码和大家分享下。 首先要做3D场景&#xff0c;除了基础的组件要引入生成外&#xff0c;要先加入地板&#xff0c;在地板上添加一些3D模型达到各种各样的效果&a…

wiondow系统-python中缺少JDK安装(超详解)!!!

因为学习python中&#xff0c;用到Pysaprk,但因缺少JDK而报错&#xff0c;解决方法如下 下载新款且稳定的17版本&#xff08;21不推荐&#xff09;官网下载有限速设置&#xff0c;压缩包我已经放在下面了&#xff0c;注意提取 百度网盘链接&#xff1a;https://pan.baidu.com/…

Mobaxterm 使用lrzsz传输文件(rz/sz)

Mobaxterm 使用lrzsz传输文件报错 1. 现象 最近从xshell切换到Mobaxterm其他一切正常,就是使用rz传输文件时会出现错误,比较苦恼. 会出现以下错误 [rootcentos7 rpmbuild]# rz ▒CCCCCCCCCCC23be50ive.**B0100000023be502. 解决方法 去官网(https://mobaxterm.mobatek.net…

【技术分享】RK3399 Ubuntu通过Python实现录音和播放功能

​本文基于IDO-SBC3968 Ubuntu 系统通过Python脚本实现录音和播放功能。 IDO-SBC3968采用RK3399国产六核64位CPU高性能处理器&#xff0c;支持4K HDMI2.0显示&#xff0c;接口丰富&#xff0c;拥有千兆以太网&#xff0c;全协议TypeC接口&#xff0c;USB3.0 &#xff0c;eDP 和…

Android : ListView + SimpleAdapter(简单适配器)-简单应用

示例图&#xff1a; MainActivity.java package com.example.mylistviewsimpleadapter;import androidx.appcompat.app.AppCompatActivity;import android.content.Context; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import …

LangChain(0.0.339)官方文档一:快速入门

LangChain官网、LangChain官方文档 、langchain Github、langchain API文档、llm-universe 文章目录 一、LangChain简介&#xff08;v0.0.338&#xff09;1.1 整体框架1.2 主要组件1.2.1 Model I/O1.2.2 Retrieval1.2.2.1 RAG1.2.2.2 Retrieval 1.2.3 Chain 1.3 其它组件1.3.1 …

windbg双机调试

1&#xff1a;虚拟机增加串行端口 2&#xff1a;操作步骤&#xff1a;编辑虚拟机设置 -> 添加 -> 串行端口 -> 完成 参数配置&#xff1a;使用命名管道 -> \\.\pipe\com_1 -> 该端是服务器&#xff0c;另一端是应用程序 -> 轮询时主动放弃CPU->确定 3 -b…

App Inventor 2 什么情况下需要使用字典?

介绍 字典在其他语言中称为映射、关联数组或列表&#xff0c;是一种将一个值&#xff08;通常称为键&#xff09;与另一个值关联的数据结构。 Q&#xff1a;App Inventor 2 什么情况下需要使用字典&#xff1f; A&#xff1a;列表能完成字典的绝大部分功能&#xff0c;不过字…

C++之unordered_map/set的使用

前面我们已经学习了STL中底层为红黑树结构的一系列关联式容器——set/multiset 和 map/multimap(C98). unordered系列关联式容器 在C98中, STL提供了底层为红黑树结构的一系列关联式容器, 在查询时效率可达到log2N,即最差情况下需要比较红黑树的高度次, 当树中的节点非常多时,…

前端入门(三)Vue生命周期、组件技术、事件总线、

文章目录 Vue生命周期Vue 组件化编程 - .vue文件非单文件组件组件的注意点组件嵌套Vue实例对象和VueComponent实例对象Js对象原型与原型链Vue与VueComponent的重要内置关系 应用单文件组件构建 Vue脚手架 - vue.cli项目文件结构refpropsmixin插件scoped样式 Vue生命周期 1、bef…

企业远程访问业务系统:对比MPLS专线,贝锐蒲公英为何更优优势?

如今&#xff0c;企业大多都会采用OA、ERP、CRM等各种数字化业务系统。 私有云、公有云混合架构也变得越来越常见。 比如&#xff1a;研发系统部署在公司本地私有云、确保数据安全&#xff0c;OA采用公有云方案、满足随时随地访问需求。 如此一来&#xff0c;也产生了远程访问…

OSS+CDN的资费和安全

文章目录 花费OSSCDNOSS CDN 安全OSS防盗链跨域设置CORS数据加密 CDN防盗链URL鉴权Cookie鉴权远程鉴权IP黑白名单UA黑白名单 回源服务自定义私有参数IP黑白名单数据加密 花费 OSS 存储费用 &#xff1a;0.12元/GB/月下行流量费用 &#xff1a;0.5元/GB请求费用 &#xff1a;…

PyQt6简介

锋哥原创的PyQt6视频教程&#xff1a; 2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili2024版 PyQt6 Python桌面开发 视频教程(无废话版) 玩命更新中~共计12条视频&#xff0c;包括&#xff1a;2024版 PyQt6 Python桌面开发 视频教程(无废话版…

threejs创建一个旋转的正方体【完整代码】

效果&#xff1a; 中文网three.js docs 1.搭建环境 安装three 首先我们需要新建一个项目 vue/react都可 这里以vue为演示 npm i three 找到一个新的页面 在页面script的地方导入three import * as THREE from "three" 或者自己逐个导入 import {PerspectiveC…

Tiktok小店如何入驻?注册流程与资料全解

作为国内成功的出海App之一&#xff0c;Tiktok的特色就是社交平台兴趣电商&#xff0c;已然成为当前跨境电商的一大趋势。数据显示&#xff0c;目前Tiktok全球月活跃用户已接近16亿&#xff0c;正是红海一片。非常值得跨境电商玩家入局&#xff01;今天就来给大家整理一份tk小店…

行情分析 - - 加密货币市场大盘走势(11.24)

大饼昨日震荡幅度很小&#xff0c;而今天延续昨日的空头思路。当然如果从MACD日线来看&#xff0c;处于上涨趋势&#xff0c;稳健的可以选择观望等待。空头思路是因为目前EMA21均线和EMA55均线依然保持很远&#xff0c;最近两个月BTC上涨40%&#xff0c;而最近持续保持高位很快…

Motion Plan之基于采样的路径规划算法笔记

Motion Plan之搜索算法笔记 背景&#xff1a; 基于采样算法是一种在路径规划中广泛应用的有效方法。它通过在图中随机选择点来生成一个简化的搜索图&#xff0c;从而加速搜索过程。这种方法的主要优点包括减少内存使用&#xff0c;避免计算错误&#xff0c;具有动态障碍物对抗…