【AB32VG1开发板测评】串行点阵模块显示驱动
<p style="margin-bottom:16px">串行点阵模块是一种以MAX7219为控制芯片的点阵显示模块,在单级使用的情况下,一片MAX7219可控制一块8*8点阵的显示块,若采用级联的方式,则可驱动多个点阵块,以实现多个字符的同时显示,实现点阵信息屏的显示效果。</p><p>该模块的电路原理图如图1所示:</p>
<p>图1 模块电路图</p>
<p>点阵模块与开发板的连接关系为:</p>
<p>DIN-- PE2</p>
<p>CS --PA0</p>
<p>CLK-- PE3</p>
<p> </p>
<p>MAX7219的初始化函数为:</p>
<pre>
<code class="language-cpp">void Init_MAX7219(void)
{
Write_Max7219(0x0b, 0x07);
Write_Max7219(0x0c, 0x01);
Write_Max7219(0x0f, 0x00);
}</code></pre>
<p style="text-align:justify">其它2个辅助函数为:</p>
<pre>
<code class="language-cpp">void Write_Max7219_byte(unsigned char DATA)
{
unsigned char i;
rt_pin_write(pin_cs, PIN_LOW);
for(i=8;i>=1;i--) {
rt_pin_write(pin_scl, PIN_LOW);
if(DATA&0x80) rt_pin_write(pin_sda, PIN_HIGH);
else rt_pin_write(pin_sda, PIN_LOW);
DATA=DATA<<1;
rt_pin_write(pin_scl, PIN_HIGH);
}
}
void Write_Max7219(char address,char dat)
{
rt_pin_write(pin_cs, PIN_LOW);
Write_Max7219_byte(address);
Write_Max7219_byte(dat);
rt_pin_write(pin_cs, PIN_HIGH);
}</code></pre>
<p style="text-align:justify">相关显示的字模被存放在数组中,其结构为:</p>
<p>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>{0x7E,0x2,0x2,0x7E,0x40,0x40,0x40,0x7E}, //2</p>
<p>...</p>
<p>}</p>
<p>实现图2所示显示效果的主程序为:</p>
<pre>
<code class="language-cpp">int main(void)
{
uint32_t cnt = 0;
uint32_t i,j;
pin = rt_pin_get("PE.1");
rt_pin_mode(pin, PIN_MODE_OUTPUT);
pin_cs = rt_pin_get("PA.0");
pin_scl = rt_pin_get("PE.3");
pin_sda = rt_pin_get("PE.2");
rt_pin_mode(pin_cs, PIN_MODE_OUTPUT);
rt_pin_mode(pin_scl, PIN_MODE_OUTPUT);
rt_pin_mode(pin_sda, PIN_MODE_OUTPUT);
Init_MAX7219();
while(1)
{
for(j=0;j<38;j++)
{
for(i=1;i<9;i++)
Write_Max7219(i,disp);
rt_pin_write(pin, PIN_LOW);
rt_thread_mdelay(500);
rt_pin_write(pin, PIN_HIGH);
rt_thread_mdelay(500);
}
}
}</code></pre>
<p>其中,内层的循环是为了完成单个字符的显示,而外层的循环则是负责将字符库中的内容遍寻显示一轮。</p>
<p>在显示过程中,每显示完一个字符,板上的LED就切换一次显示状态。</p>
<p style="text-align:justify">图2 显示效果</p>
<p>看效果点阵信息屏的显示效果还行</p>
<p> </p>
Jacktang 发表于 2021-8-29 13:36
看效果点阵信息屏的显示效果还行
<p><img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/handshake.gif" width="48" /></p>
<p>不错不错!</p>
<p>这个是类似I2C写点阵数据吗</p>
<p>我之前看了一个用AiP650控制多个点阵模块的方案也是用I2C来控制的</p>
se7ens 发表于 2021-9-2 14:22
这个是类似I2C写点阵数据吗
我之前看了一个用AiP650控制多个点阵模块的方案也是用I2C来控制的
<p>可以视为带片选的I2C吧</p>
页:
[1]