1111|6

53

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【BL606P-DVK开发板】驱动MAX7219点阵模组 [复制链接]

  本帖最后由 乘简 于 2023-1-17 11:04 编辑

我买了一款MAX7219芯片的点阵模块,8个8x8连在一起的模块,只需要3个GPIO口即可驱动,可以显示两个16x16点阵的汉字

连线图:

GPIO2连入DIN,GPIO3连入CS,GPIO4连入CLK,VCC接5V,GND接GND

 

main.c的代码:

#include <aos/aos.h>
#include <stdio.h>
#include <sys_clk.h>
#include <drv/pin.h>
#include "app_main.h"
#include "max7219.h"

int main(int argc, char *argv[])
{
   board_yoc_init();
	max7219_Init();

	printf("\r\napp start core clock %d........\r\n", soc_get_cur_cpu_freq());
	
	Display();

    return 0;
}

 

max7219.h

#ifndef _MAX7219_H_
#define _MAX7219_H_

#include <aos/aos.h>
#include <drv/pin.h>
#include <aos/hal/gpio.h>

#define MODS_7219 8//点阵模块数量

void max7219_Init();
void Display();

#endif

 

max7219.c

#include "max7219.h"

gpio_dev_t gpio_din = { GPIO_PIN_2, OUTPUT_PUSH_PULL, (void*)0 };
gpio_dev_t gpio_cs= { GPIO_PIN_3, OUTPUT_PUSH_PULL, (void*)0 };
gpio_dev_t gpio_clk = { GPIO_PIN_4, OUTPUT_PUSH_PULL, (void*)0 };

#define din_l()		hal_gpio_output_low(&gpio_din)
#define din_h()		hal_gpio_output_high(&gpio_din)

#define clk_l()		hal_gpio_output_low(&gpio_clk)
#define clk_h()		hal_gpio_output_high(&gpio_clk)

#define cs_l()		hal_gpio_output_low(&gpio_cs)
#define cs_h()		hal_gpio_output_high(&gpio_cs)


uint8_t FONT8[][8]={
	{0x38,0x44,0x44,0x44,0x44,0x44,0x44,0x38},/*"0",0*/
	{0x10,0x30,0x10,0x10,0x10,0x10,0x10,0x38},/*"1",1*/
	{0x38,0x44,0x44,0x08,0x10,0x20,0x40,0x7C},/*"2",2*/
	{0x38,0x44,0x04,0x18,0x04,0x04,0x44,0x38},/*"3",3*/
	{0x08,0x18,0x18,0x28,0x48,0x7C,0x08,0x1C},/*"4",4*/
	{0x7C,0x40,0x40,0x78,0x44,0x04,0x44,0x38},/*"5",5*/
	{0x18,0x24,0x40,0x58,0x64,0x44,0x44,0x38},/*"6",6*/
	{0x3C,0x04,0x08,0x08,0x10,0x10,0x10,0x10},/*"7",7*/
	{0x38,0x44,0x44,0x38,0x44,0x44,0x44,0x38},/*"8",8*/
	{0x38,0x44,0x44,0x4C,0x34,0x04,0x48,0x30},/*"9",9*/
};
 

//写1个字节
void max7219_writebyte(uint8_t dat)
{
	uint8_t i;
	for(i=0;i<8;i++){
		clk_l();
		if(dat & 0x80)din_h();else din_l();
		dat<<=1;
		clk_h();
	}
}

//写入配置数据
void max7219_writeset(uint8_t address, uint8_t dat)
{
	uint8_t i;
	
	cs_l();
	for(i=0;i<MODS_7219;i++){//有多少个max7219模块需要初始化
		max7219_writebyte(address);
		max7219_writebyte(dat);
	}
	cs_h();
}

//写入显示数据
void max7219_writedata(uint8_t address, uint8_t dat)
{
	max7219_writebyte(address);
	max7219_writebyte(dat);
}

void max7219_Init()
{
	csi_pin_set_mux(GPIO_PIN_2, PIN_FUNC_GPIO);
	csi_pin_set_mux(GPIO_PIN_3, PIN_FUNC_GPIO);
	csi_pin_set_mux(GPIO_PIN_4, PIN_FUNC_GPIO);
	
	hal_gpio_init(&gpio_din);
	hal_gpio_init(&gpio_cs);
	hal_gpio_init(&gpio_clk);

	max7219_writeset(0x09,0x00);//解码模式,0:BCD码
	max7219_writeset(0x0a,0x00);//亮度,0~15(因为USB连电脑供电,亮度不敢调太高,怕带不起)
	max7219_writeset(0x0b,0x07);//扫描位数,7
	max7219_writeset(0x0c,0x01);//工作模式,关机0,运行1
	max7219_writeset(0x0f,0x00);//自检1,0正常
}

void Display()
{
	uint8_t i,j;
	for(i=0;i<8;i++)
	{
		cs_l();
		for(j=0;j<4;j++){
			max7219_writedata(i+1, FONT8[j][i]);
		}
		for(j=0;j<4;j++){
			max7219_writedata(i+1, FONT8[j+4][i]);
		}
		cs_h();
	}
}

 

效果如下:

 

最新回复

您好!谢谢您反馈的问题,我们已经这个问题解决了,麻烦您清缓存试试   详情 回复 发表于 2023-1-16 15:35
点赞 关注
 
 

回复
举报

53

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

为什么发了几次了,Display()函数中都是错误的,里面的FONT8[j][i],后面的[i]没有了。。。。

点评

nmg
稍等,我这边找技术查一下  详情 回复 发表于 2023-1-16 09:15
 
 
 

回复

5219

帖子

236

TA的资源

管理员

板凳
 
乘简 发表于 2023-1-15 20:35 为什么发了几次了,Display()函数中都是错误的,里面的FONT8[j],后面的没有了。。。。

稍等,我这边找技术查一下

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
 
 
 

回复

6788

帖子

2

TA的资源

版主

4
 

你重新编辑一下文章,然后改一下代码中Display()函数错误的地方试试呗。

点评

重新改了好几次,发的时候还检查了,没有问题,点了发送后,再打开就发现后面的没有了,,,  详情 回复 发表于 2023-1-16 10:45
 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(中级)

5
 
wangerxian 发表于 2023-1-16 10:32 你重新编辑一下文章,然后改一下代码中Display()函数错误的地方试试呗。

重新改了好几次,发的时候还检查了,没有问题,点了发送后,再打开就发现后面的没有了,,,

点评

您好!谢谢您反馈的问题,我们已经这个问题解决了,麻烦您清缓存试试  详情 回复 发表于 2023-1-16 15:35
 
 
 

回复

226

帖子

2522

TA的资源

管理员

6
 
乘简 发表于 2023-1-16 10:45 重新改了好几次,发的时候还检查了,没有问题,点了发送后,再打开就发现后面的没有了,,,

您好!谢谢您反馈的问题,我们已经这个问题解决了,麻烦您清缓存试试

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

确实是可以了  详情 回复 发表于 2023-1-17 11:05
个人签名

个人签名111

 
 
 

回复

53

帖子

0

TA的资源

一粒金砂(中级)

7
 
Timson 发表于 2023-1-16 15:35 您好!谢谢您反馈的问题,我们已经这个问题解决了,麻烦您清缓存试试

确实是可以了

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表