STM32驱动8*8点阵模块

一、前言

小白一枚,刚开始学习单片机,玩过15和现在正在玩32,这一路写了不少bug,也debug了不少程序。这几天突发奇想,想通过博客来记录自己学习32的历程和编程思路,也希望借此能跟其他一起学习的伙伴们交流互助,一起进步。希望各位dalao可以给本小白一些建议。

二、设备

我用的是实验室提供的STM32F103ZET6,板子很普通,条件有限能用就行,毕竟学校的设备,不要钱嘻嘻
没错真的很香
前两天在实验室顺了一块88点阵模块,因为玩51的时候条件有限,没能接触这个模块,出于好奇今天花了点时间研究。
我的32核心板

点阵模块

点阵模块
二话不说,我们来看一下点阵模块。从下到上一共有两组8位接口和GND、VCC接口。所以不难想到每个点由两个接口控制,理论有了,直接接线看效果。
在是跳线的时候我的想法是两组要么都是低电平有效,要么都是高电平有效,结果试了都没亮,当时就疑惑了。可能是惯性思维的原因,一直没想到一个是低电平有效,一个是高电平有效,为此我还纠结了好久。
直接看图
在这里插入图片描述
紫色和橙色3.3v蓝色和黄色GND
分析:
自左往右数第五列,自上往下数第倒数二行;
P23和P17。
得:
P2控制垂直与接口方向(低电平有效),P1控制平行接口方向(高电平有效)。
文字不好理解直接上图:
找了半天没找到怎么旋转图片
以右上角为坐标原点建立坐标轴:
x轴由P1控制(高电平有效),y轴由P2控制(低电平有效)。

设计问题

知道了工作原理,那就玩点花样,先设计一个静态图案实现一下。
心形图案
如图:图案设计

三、设计解决方案

思路:
通过定时扫描实现图案显示。
按x轴进行扫描,从x=1开始,打开P1口,将y轴的显示数据输入,x++,重复y轴输入,从而达到显示效果。
流程图:

Created with Raphaël 2.2.0 初始化GPIO 输入y轴数据 打开对应x轴 关闭x轴 清空y轴数据

理论存在,开始编程

四、程序代码

#include "lled.h"

uchar L_heart[]={0x1e,0x21,0x41,0x82,0x82,0x41,0x21,0x1e};
//用数组储存y轴输出的数据

void led_init(void)	//初始化端口
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD,ENABLE);
	GPIO_InitTypeDef gpio_ad;
	gpio_ad.GPIO_Pin	=	0xff;
	gpio_ad.GPIO_Mode	=	GPIO_Mode_Out_PP;
	gpio_ad.GPIO_Speed	=	GPIO_Speed_50MHz;
	GPIO_Init(GPIOA,&gpio_ad);//A[7:0]->x,low PA01~PA07控制x轴,低电平有效
	
	gpio_ad.GPIO_Pin	=	0xff;
	gpio_ad.GPIO_Mode	=	GPIO_Mode_Out_PP;
	gpio_ad.GPIO_Speed	=	GPIO_Speed_50MHz;
	GPIO_Init(GPIOD,&gpio_ad);//D[7:0]->y,high PD01~PD07控制y轴,高电平有效
	
	GPIO_ResetBits(GPIOD,0xff);
	GPIO_SetBits(GPIOA,0xff);//关闭x轴,y轴输出
}


void led_display(void)
{
	static int i=0;
	static uint n=0x01;
	
	GPIO_SetBits(GPIOD,L_heart[i]);//输入y轴数据
	GPIO_ResetBits(GPIOA,n);//打开x轴
	delay_ms(10);
	GPIO_SetBits(GPIOA,0xff);//关闭x轴
	GPIO_ResetBits(GPIOD,0xff);//清空y轴数据
	
	n=n<<1;
	i++;
	
	if(i==8)
		i=0;
	
	if(n==0x100)
		n=0x01;
	
}

void led_off(void)
{
	GPIO_ResetBits(GPIOD,0xff);
	GPIO_SetBits(GPIOA,0xff);
	
}

上效果图:
非常奈斯

五、小结

实验通过16个GPIO口控制点阵模块显示静态图形,感想:16根线接的我手抖,太难插了!!!
本次小实验就这么多了,下次设计个动态显示,随缘更新走了

  • 15
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 19
    评论
鉴于引用内容的长度,我将分为两部分回答你的问题。 第一部分回答: 引用\[1\]中提到了一个学习STM32的初学者,他想通过博客记录自己的学习历程并与其他学习者交流互助。作为dalao,我可以给他一些建议。首先,我建议他在博客中详细记录自己的学习过程,包括遇到的问题和解决方案。这样不仅可以帮助他自己回顾和总结,也可以帮助其他学习者。其次,我建议他积极参与STM32的相关社区和论坛,与其他学习者交流经验和解决问题。这样可以扩展他的知识和技能,并且可以从其他人的经验中学习。最后,我建议他保持耐心和坚持,学习STM32是一个长期的过程,需要不断的实践和探索。只有坚持下去,才能取得进步。 第二部分回答: 引用\[2\]中提到了一个关于STM32点阵屏的项目实现。这个项目实现了点阵屏的操作,包括自动更改显示内容和通过串口控制显示内容。在这个项目中,使用了STM32 F103C8T6单片机和共阳1588BS型号的LED点阵管数码管。通过Keil uVision5编程工具进行开发。在接线方面,点阵屏的1-8接口连接到A0-A7引脚,9-16接口连接到B0-B15引脚。项目测试时,可以通过串口助手进行控制和观察显示效果。具体的代码和操作步骤可以参考提供的链接。 引用\[3\]中提到了另一个关于8*8点阵STM32项目。作者使用的是STM32F103ZET6单片机和88点阵模块。他在实验室顺到了这个模块,并花时间研究了它。虽然条件有限,但他仍然能够进行学习和实验。 综上所述,对于学习STM32和使用8*8点阵的项目,建议你积极记录学习过程,参与社区交流,保持耐心和坚持。这样可以不断提升自己的技能和知识。 #### 引用[.reference_title] - *1* *3* [STM32驱动8*8点阵模块](https://blog.csdn.net/qq_45698227/article/details/116209395)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [STM32的8*8点阵屏开发(小项目)](https://blog.csdn.net/dong_xiao_dong/article/details/106655191)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不知足额

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值