[讨论] 【Nucleo心得】+ 8x8点阵驱动 (EX01)

slotg   2014-10-5 18:11 楼主
Nucleo板的开发方式有很多种,除了大家所熟悉的KEIL,IAR等工具之外,我选择使用MBED的开发方式,这是一个全新的体验,选择MBED的原因是在这种开发环境下的编程方式就如同Arduino系统一样省略了很多对MCU内部设定等繁杂的过程,这对于初接触STM32的人来说降低了学习的难度,不用花太多时间就可以上手STM32的设计,体验编程的乐趣。当然这种开发方式也是有它的缺点:由于是在网上作业所以一定要有网络,并且这种编程方式产生出来的程序码也会比较庞大。不过MBED是免费使用的,且容易上手,对于大部份的应用也都能快速实现,因此还是很值得花时间深入研究。 Nucleo板上规划了一组跟Arduino兼容的扩充接头,这表示我们可以使用众多的Arduino扩充模块来学习相关的编程技能。Nucleo板的开箱文跟MBED的介绍,论坛上已经有很多不错的帖子可供参考,这里就不再赘述。 我的第一个实验就是使用SPI功能驱动一个8x8点阵的显示,这片板子使用了MAX7219这颗芯片,原理图如下: BL-M12A881_e.png 芯片资料如下:
MAX7219-MAX7221.pdf (491.3 KB)
(下载次数: 20, 2014-10-5 18:08 上传)
板子除了电源接脚外还需要连接3只接脚,分别是 DIN(MOSI),CS(SS),CLK(SCK)。 DSC00835.JPG 开新的工程,选择SPI例程产生的程序如下: 01.JPG 02.JPG 例程里展示了SPI的使用,将鼠标点选SPI_MOSI文字可以看到相关的脚位定义: SPI_MOSI 定义在 PA_7。 SPI_MISO 定义在 PA_6。 SPI_CLK 定义在 PA_5。 由于点阵板还需要一只CS控制脚,我们将CS控制脚定义在 PB_6。 Nucleo板的接脚分配如下: 03.JPG 将相关接脚连接起来,修改例程如下: #include "mbed.h" const char sprite[8] = { 0xFF, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xFF }; SPI spimax(SPI_MOSI, SPI_MISO, SPI_SCK); DigitalOut CS(PB_6); void max7219(char reg,char dta) { CS = 0; spimax.write(reg); spimax.write(dta); CS = 1; } int main() { max7219(0x09,0); max7219(0x0a,8); max7219(0x0b,7); max7219(0x0c,1); max7219(0x0f,0); for(char j=0;j<8;j++) { max7219(j+1,sprite[j]); } while(1) { } } 执行结果: DSC00858.JPG 本帖最后由 slotg 于 2014-10-5 18:21 编辑

回复评论 (3)

连接的脚位
04.JPG
点赞  2014-10-6 08:33
板子好强啊,直接驱动这么多二极管
点赞  2014-10-6 10:13
引用: tianshuihu 发表于 2014-10-6 10:13
板子好强啊,直接驱动这么多二极管

仔细看了吗?怎么可能是直接驱动
心率传感器:https://shop108071095.taobao.com
点赞  2014-10-10 21:08
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复