jinglixixi 发表于 2023-5-1 13:40

[N32WB031_STB开发板测评]+点阵模块显示驱动

<div class='showpostmsg'> 本帖最后由 jinglixixi 于 2023-5-6 09:31 编辑

<p>有了GPIO口的支持,就可以拿点阵模块来试一试手了。</p>

<p>所用的点阵模块是一块8*8点阵的显示模块,共有5个引脚,除电源引脚外,另外3个引脚与开发板的连接关系为:</p>

<p>SCL ---PB8</p>

<p>SDA ---PB4</p>

<p>CS ---PB5</p>

<p>对所用引脚的工作模式配置函数为:</p>

<pre>
<code class="language-cpp">void MAX7219_Init(void)
{
    GPIO_InitType GPIO_InitStructure;
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPH_GPIOB, ENABLE);
    GPIO_InitStruct(&amp;GPIO_InitStructure);
    GPIO_InitStructure.Pin =GPIO_PIN_4|GPIO_PIN_5|GPIO_PIN_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitPeripheral(GPIOB, &amp;GPIO_InitStructure);
}
</code></pre>

<p>Max7219发送字节数据的函数为:</p>

<pre>
<code class="language-cpp">void Write_Max7219_byte(char DATA)
{
   char i;
   GPIO_ResetBits(GPIOB, GPIO_PIN_5);    //CS
   for(i=8;i&gt;=1;i--)
   {
   GPIO_ResetBits(GPIOB, GPIO_PIN_8);//SCL
   if(DATA&amp;0x80)
       {
      GPIO_SetBits(GPIOB, GPIO_PIN_4); // SDA;
       }
   else
       {
      GPIO_ResetBits(GPIOB, GPIO_PIN_4);
       }
   DATA=DATA&lt;&lt;1;
   GPIO_SetBits(GPIOB, GPIO_PIN_8);
   }
}
</code></pre>

<p>Max7219向指定地址发送数据的函数为:</p>

<pre>
<code class="language-cpp">void Write_Max7219(char address,char dat)
{
   GPIO_ResetBits(GPIOB, GPIO_PIN_5);
   Write_Max7219_byte(address);
   Write_Max7219_byte(dat);
   GPIO_SetBits(GPIOB, GPIO_PIN_5);
}
</code></pre>

<p>对Max7219进行初始化的函数为:</p>

<pre>
<code class="language-cpp">void Init_MAX7219_D(void)
{
   Write_Max7219(0x0b, 0x07);
   Write_Max7219(0x0c, 0x01);
   Write_Max7219(0x0f, 0x00);
}
</code></pre>

<p>以此为基础,实现点阵模块显示的主程序为:</p>

<pre>
<code class="language-cpp">int main(void)
{
    unsigned char i,j;
    MAX7219_Init();
    Init_MAX7219_D();
    while(1)
    {
       for(j=0;j&lt;38;j++)
       {
          for(i=1;i&lt;9;i++)
          {
             Write_Max7219(i,disp);
          }
                  Delay(0x28FFFF);
       }
    }
}
</code></pre>

<p>经程序的编译与下载,其运行的效果如图1至图3所示。</p>

<p> 图1 显示数字</p>

<p> 图2 显示字符</p>

<p></p>

<p>图3 显示汉字</p>

<p>显示这些内容的字库结构为:</p>

<p>const unsigned char disp={</p>

<p>{0x3C,0x42,0x42,0x42,0x42,0x42,0x42,0x3C},//0</p>

<p>{0x10,0x30,0x50,0x10,0x10,0x10,0x10,0x10},//1</p>

<p>...</p>

<p>{0x8,0x14,0x22,0x3E,0x22,0x22,0x22,0x22},//A</p>

<p>{0x3C,0x22,0x22,0x3E,0x22,0x22,0x3C,0x0},//B</p>

<p>...</p>

<p>{0x8,0x7F,0x49,0x49,0x7F,0x8,0x8,0x8},//?</p>

<p>{0xFE,0xBA,0x92,0xBA,0x92,0x9A,0xBA,0xFE},//?</p>

<p>};</p>

<p>&nbsp;</p>

<p>由于该点阵模块是可以级联来使用,故为了同时可以显示出更多的内容,可将几个同样的点阵模块串联起来来使用。&nbsp;&nbsp;&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

lugl4313820 发表于 2023-5-1 14:44

哇,李老师又玩出新花样了,感谢分享!

秦天qintian0303 发表于 2023-5-1 16:55

<p>模拟SPI走起&nbsp; &nbsp;</p>

led2015 发表于 2023-5-1 22:03

<p>看起来真是不错,这板子值得玩啊</p>

jinglixixi 发表于 2023-5-2 00:27

lugl4313820 发表于 2023-5-1 14:44
哇,李老师又玩出新花样了,感谢分享!

<p>先试试水,打算驱动一个16*64点阵的屏。</p>

lugl4313820 发表于 2023-5-2 07:16

jinglixixi 发表于 2023-5-2 00:27
先试试水,打算驱动一个16*64点阵的屏。

<p>强了哦,期待精彩继续!</p>
页: [1]
查看完整版本: [N32WB031_STB开发板测评]+点阵模块显示驱动