这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 有奖活动 » 基于地奇星开发板的数码管模块显示技术

共1条 1/1 1 跳转至

基于地奇星开发板的数码管模块显示技术 23

菜鸟
2026-01-02 21:52:15   被打赏 30 分(兑奖)     打赏

地奇星开发板是一款以RA6E2为核心的开发板,且提供UARTSPII2C等多种通信接口,入门及项目实践的理想平台。它体型小巧,其外观见图1所示。

image.png

1 外观及功能配置

为了使其具有显示功能,这里为其配置了一个以串行方式工作的数码管模块。

该模块是以MAX7219芯片进行控制,它是一种集成化的串行输入/输出共阴极显示驱动器,它承担着连接微处理器与8位七段数码管的作用,当然它也可以点阵式显示器件。

MAX7219芯片配有BBCD编码器、多路扫描回路,段字驱动器,而且还有一个8*8的静态RAM用来存

储数据。且有一个外部寄存器用来设置各个LED的段电流。

此外,MAX7219还允许用户对每一个数据选择编码或者不编码工作方式。

image.png

2 工作原理图

为驱动数码管模块,需使用RASC进行引脚配置,见图3所示。

image.png

3 引脚配置

为便于高低高低电平的输出,相应的引脚定义如下:

#define CLK_SetLow()   R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_LOW)

#define CLK_SetHigh()   R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_03_PIN_01, BSP_IO_LEVEL_HIGH)

#define DIN_SetLow()   R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_03_PIN_02, BSP_IO_LEVEL_LOW)

#define DIN_SetHigh()  R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_03_PIN_02, BSP_IO_LEVEL_HIGH)

#define CS_SetLow()    R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_04_PIN_07, BSP_IO_LEVEL_LOW)

#define CS_SetHigh()   R_IOPORT_PinWrite(&IOPORT_CFG_CTRL, BSP_IO_PORT_04_PIN_07, BSP_IO_LEVEL_HIGH) 

实现数据串行传送的函数为:

void Write_Max7219_byte(char DATA)
{   
   char i;
   CS_SetLow();
   R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS);
   for(i=8;i>=1;i--)
   {
     CLK_SetLow();
     if(DATA&0x80)
         DIN_SetHigh();     
     else
         DIN_SetLow();
     R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS);     
     DATA=DATA<<1;
     CLK_SetHigh();
     R_BSP_SoftwareDelay(10, BSP_DELAY_UNITS_MILLISECONDS);
   }
}

向指定地址发送数据的函数为:

void Write_Max7219(char address,char dat)
{     
    CS_SetLow();
    Write_Max7219_byte(address);
    Write_Max7219_byte(dat);
    CS_SetHigh();
}

在解码工作模式下,各数据位与显示笔段的对应关系如图4所示。

image.png

4 编码关系

在解码工作模式下,对MAX7219初始化的程序为:

void Init_MAX7219P(void)
{
   Write_Max7219(0x09,0xff);
   Write_Max7219(0x0a,0x02);
   Write_Max7219(0x0b,0x07);
   Write_Max7219(0x0c,0x01);
   Write_Max7219(0x0f,0x00);
}

其实现数据显示的测试主程序为:

void hal_entry(void)
{
  Init_MAX7219P();
  Write_Max7219(1,0x8);
  Write_Max7219(2,0x7);
  Write_Max7219(3,0x6);
  Write_Max7219(4,0x5);
  Write_Max7219(5,0x4);
  Write_Max7219(6,0x3;
  Write_Max7219(7,0x2);
  Write_Max7219(8,0x1); 
  while(1);
}

经程序的编译和下载,其执行效果如图5所示。

image.png

5显示效果

由此可见,其显示的内容还仅限于数字0~9之间。

那么如何才能使其显示出小数点呢?

这就要借助非编码方式的帮助,此时MAX7219的初始化程序应改为:

void Init_MAX7219P(void)
{
    Write_Max7219(0x0b,0x07);
    Write_Max7219(0x0c,0x01);
    Write_Max7219(0x0f,0x00);
}

为此,对要显示的数符需自行编码来显示。此时笔段与各数位间的对应关系如图6所示。

image.png

6 编码关系  

有鉴于此,实现带小数位数据显示的测试主程序为:

void hal_entry(void)
{
  Init_MAX7219P();
  Write_Max7219(1,0x70);
  Write_Max7219(2,0x5f);
  Write_Max7219(3,0x5b);
  Write_Max7219(4,0x33);
  Write_Max7219(5,0x79);
  Write_Max7219(6,0x6d);
  Write_Max7219(7,0x30);
  Write_Max7219(8,0xfe); 
  while(1);
}

image.png

7 显示效果

除此之外,在非译码方式下还能显示些啥内容呢?

其实它所能显示的内容与笔段式液晶屏所显示的内容使十分相近的,对于26个英文字符它可以显示绝大部分的内容,其显示内容见图8所示。

 经程序的编译和下载,其执行效果如图7所示。

image.png

8 可显示内容 

至此,就较为全面地介绍了该MAX7219数码管显示模块的使用方法。















关键词: 数码管模块    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]