完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一、前言
小白一枚,刚开始学习单片机,玩过15和现在正在玩32,这一路写了不少bug,也debug了不少程序。这几天突发奇想,想通过博客来记录自己学习32的历程和编程思路,也希望借此能跟其他一起学习的伙伴们交流互助,一起进步。希望各位dalao可以给本小白一些建议。 二、设备 我用的是实验室提供的STM32F103ZET6,板子很普通,条件有限能用就行,毕竟学校的设备,不要钱嘻嘻。 前两天在实验室顺了一块88点阵模块,因为玩51的时候条件有限,没能接触这个模块,出于好奇今天花了点时间研究。 点阵模块 二话不说,我们来看一下点阵模块。从下到上一共有两组8位接口和GND、VCC接口。所以不难想到每个点由两个接口控制,理论有了,直接接线看效果。 在是跳线的时候我的想法是两组要么都是低电平有效,要么都是高电平有效,结果试了都没亮,当时就疑惑了。可能是惯性思维的原因,一直没想到一个是低电平有效,一个是高电平有效,为此我还纠结了好久。 紫色和橙色接3.3v,蓝色和黄色接GND。 分析: 自左往右数第五列,自上往下数第倒数二行; P23和P17。 得: P2控制垂直与接口方向(低电平有效),P1控制平行接口方向(高电平有效)。 以右上角为坐标原点建立坐标轴: x轴由P1控制(高电平有效),y轴由P2控制(低电平有效)。 设计问题 知道了工作原理,那就玩点花样,先设计一个静态图案实现一下。 心形图案 三、设计解决方案 思路: 通过定时扫描实现图案显示。 按x轴进行扫描,从x=1开始,打开P1口,将y轴的显示数据输入,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);//输入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根线接的我手抖,太难插了!!! |
|
|
|
只有小组成员才能发言,加入小组>>
3120 浏览 9 评论
2819 浏览 16 评论
3332 浏览 1 评论
8693 浏览 16 评论
3921 浏览 18 评论
9540浏览 3评论
874浏览 3评论
441浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
445浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2169浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-15 12:19 , Processed in 0.919065 second(s), Total 79, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191