打印
[PIC®/AVR®/dsPIC®产品]

【CuriosityNano测评报告】+串行数码管的显示驱动

[复制链接]
15670|38
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2021-5-28 17:00 编辑

#申请原创#

在构建了开发环境及具备了下载功能的前提下,可以由GPIO口的学习来控制开发板的实用功能。

本次所介绍的内容是用GPIO口来模拟SPI接口,以驱动一个串行输入的8位数码管模块,该模块如图1所示。

1  8位串行数码管模



该数码管的基本内容是:它采用MAX7219是串行输入/并行输出的显示驱动芯片,可连接一个8位的7段数码管,也可连接64个独立的LED。在该芯片内部集成了一个B型的BCD码编码多路扫描回路、段字驱动器。而且还含有一个8*8的静态RAM来存储显示数据,且有一个外部寄存器用来设置各LED的段电流。该芯片的串行接口可连接各种通用的微处理器,每个数据可以寻址在更新时无需改写其显示,它也同样允许用户对每个数据选择编码或是不编码。该芯片包含一个150uA的低功耗关闭模式,模拟和数字亮度控制,扫描限制寄存器允许用户显示1-8位数据,且有一个让所有LED发光的检测模式。在显示过程中,无抖动和闪烁现象,支持级联方式进行显示位数的扩展。2个电源引脚外,另3个引脚为:串行数据输入端DIN、串行时钟输入端CLK及片选引脚CS在使用过程中,串行数码管引脚与开发板的连接关系为:VCC---5VGND---GNDDIN---RC4CLK--- RC6CS --- RC7相应的引脚在MCC中的配置情况如图2
所示,此外为便于编程还调用了系统的延时函数。

2 引脚配置

PIC18F16Q40下,实现串行数据发送的函数为:
void Write_Max7219_byte(char DATA) 
{
char i;
CS_SetLow();
for(i=8;i>=1;i--)
{
CLK_SetLow();
if(DATA&0x80)
DIN_SetHigh();
else
DIN_SetLow();
DATA=DATA<<1;
CLK_SetHigh();
}
}

向寄存器写入数据的函数为:
void Write_Max7219(char address,char dat)
{
     CS_SetLow();
         Write_Max7219_byte(address);
         Write_Max7219_byte(dat);
         CS_SetHigh();
}

实现芯片X7219初始化的函数为:
void Init_MAX7219(void)
{
Write_Max7219(0x09, 0xff);
Write_Max7219_2(0x09, 0xff);
Write_Max7219(0x0a, 0x02);
Write_Max7219_2(0x0a, 0x02);
Write_Max7219(0x0b, 0x07);
Write_Max7219_2(0x0b, 0x07);
Write_Max7219(0x0c, 0x01);
Write_Max7219_2(0x0c, 0x01);
Write_Max7219(0x0f, 0x00);
Write_Max7219_2(0x0f, 0x00);
}

实现图3所示显示效果的主程序为:
void main(void)
{
    SYSTEM_Initialize();
   
    Init_MAX7219();
    Write_Max7219(1,1);
    Write_Max7219(2,2);
    Write_Max7219(3,3);
    Write_Max7219(4,4);
    Write_Max7219(5,5);
    Write_Max7219(6,6);
    Write_Max7219(7,7);
    Write_Max7219(8,8);
   
    Write_Max7219_2(1,8);
    Write_Max7219_2(2,7);
    Write_Max7219_2(3,6);
    Write_Max7219_2(4,5);
    Write_Max7219_2(5,4);
    Write_Max7219_2(6,3);
    Write_Max7219_2(7,2);
    Write_Max7219_2(8,1);
   
    while (1)
    {
        IO_RC1_SetHigh();
        DELAY_milliseconds(1000);
        IO_RC1_SetLow();
        DELAY_milliseconds(1000);
    }
}


有了数码管的显示功能,再有数值显示的问题就可以交给它了,相较于常规的数码管显示,它具有占用引脚资源少的优势,且显示的亮度高,适于用在工业控制中。







使用特权

评论回复
沙发
jinglixixi|  楼主 | 2021-5-29 09:13 | 只看该作者

图2


图3

使用特权

评论回复
板凳
usysm| | 2021-6-4 13:43 | 只看该作者
MAX7219 和 MAX7221 有什么不同?

使用特权

评论回复
地板
i1mcu| | 2021-6-4 13:43 | 只看该作者
怎么样把串行输出在4位数码管上显示

使用特权

评论回复
5
lzmm| | 2021-6-4 13:44 | 只看该作者
MAX7219驱动数码管的时钟代码

使用特权

评论回复
6
pmp| | 2021-6-4 13:44 | 只看该作者
能不能控制MAX7219

使用特权

评论回复
7
mmbs| | 2021-6-4 13:44 | 只看该作者
用得比较稳定。  

使用特权

评论回复
8
1988020566| | 2021-6-4 13:44 | 只看该作者
            

使用特权

评论回复
9
lzbf| | 2021-6-4 13:45 | 只看该作者
有MAX7219的中文资料?

使用特权

评论回复
10
youtome| | 2021-6-4 13:45 | 只看该作者
两位两片的数码管如何用max7219控制

使用特权

评论回复
11
jimmhu| | 2021-6-4 13:46 | 只看该作者
串行口驱动数码管  

使用特权

评论回复
12
xiaoyaozt| | 2021-6-4 13:47 | 只看该作者
并行LED数码管?

使用特权

评论回复
13
pmp| | 2021-6-4 13:47 | 只看该作者
用过4个max7219级联   

使用特权

评论回复
14
lzmm| | 2021-6-4 13:47 | 只看该作者
MAX7219驱动数码管为共阴还是共阳  

使用特权

评论回复
15
mmbs| | 2021-6-4 13:47 | 只看该作者
时序图讲解?   

使用特权

评论回复
16
i1mcu| | 2021-6-4 13:47 | 只看该作者
用74hc595d实现数码管的动态显示

使用特权

评论回复
17
youtome| | 2021-6-4 13:47 | 只看该作者
max7219能驱动多大数码管  

使用特权

评论回复
18
lzbf| | 2021-6-4 13:47 | 只看该作者
一片MAX7219最多可接多少个数码管  

使用特权

评论回复
19
1988020566| | 2021-6-4 13:47 | 只看该作者
谢谢楼主分享的。         

使用特权

评论回复
20
usysm| | 2021-6-4 13:47 | 只看该作者
控制串行八位数码管模块?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

446

主题

2675

帖子

37

粉丝