美文网首页Arduino 专题学习
【项目9-任务12-小组9】利用max7219点阵模块实现形状符

【项目9-任务12-小组9】利用max7219点阵模块实现形状符

作者: 0103_董安硕 | 来源:发表于2019-07-06 11:45 被阅读2次

    max7219相关介绍

    max7219采用串行接口方式,只需要LOAD,DIN,CLK三个管脚便可实现数据传送。DIN管脚上的16位串行数据包不受LOAD状态的影响,在每个aCLK的上升沿被移入到内部16位移位寄存器,在LOAD的上升沿数据被锁存到数字或控制寄存器中

    �一个8*8的静态RAM用来存储每一个数据。只有一个外部寄存器用来设置各个LED的段电流。

    max7219的相关功能特性

    1.10MHz连续串行口

    2.独立的LED段控制

    3.数字的译码与非译码选择

    4.150μA的低功耗关闭模式

    5.亮度的数字和模拟控制

    6.高电压中断显示

    7.共阴极LED显示驱动

    8.24脚的 DIP和 SO 封装

    数位数量:8

    片段数量:7

    封装 / 箱体: PDIP-24

    工作电源电压:4 V to 5.5 V

    最大电源电流:330 mA

    最大功率耗散:1066 mW

    高电平输出电流: 65 mA

    最大工作温度:+

    85 ℃

    最小工作温度:-

    40 ℃

    封装: Tube

    安装风格:Through Hole

    max7219

    max7219的管脚名称及功能

         1 DIN串行数据输入端口。在时钟上升沿时数据被载入内部的16位寄存器。

         2,3,5-8,10,11 DIG 0–DIG7八个数据驱动线路置显示器共阴极为低电平。关闭时7219此管脚输出高电平,7221呈现高阻抗。

        4,9 GND地线

    (4脚和9脚必须同时接地)

        12 LOAD (MAX7219)载入数据。连续数据的后16位在LOAD端的上升沿时被锁定。

        13 CLK时钟序列输入端。最大速率为 10MHz.在时钟的上升沿, 数据移入内部移位寄存器。下降沿时, 数据从DOUT端输出。对MAX7221来说,只有当cs端为低电平时时钟输入才有效。

        14-17,20-23 SEG 7段和小数点驱动,为显示器提供电流。当一个段驱A–SEG

    G, 动关闭时,7219的此端呈低电平.

        18 SET通过一个电阻连接到VDD来提高段电流。

        19 V+正极电压输入,+5V

        24 DOUT串行数据输出端口,从DIN输入的数据在16.5个时钟周期后在此端有效。当使用多个MAX7219/MAX7221时用此端方便扩展。

    8*8点阵屏


    8X8点阵共需要64个发光二极管组成,且每个发光二极管是放置在行线和列线的交叉点上,当对应的某一列置1电平,某一行置0电平,则相应的二极管就亮;要实现显示图形或字体,只需考虑其显示方式。通过编程控制各显示点对应LED阳极和阴极端的电平,就可以有效的控制各显示点的亮灭。

    利用max7219点阵模块实现符号显示

    电路连接

     

    [if !vml]

    [endif]

    单个连接电路图示意

    Arduino Uno    ---     MAX7219

    5V               <--->              VCC

    GND           <--->              GND

    12               <--->              DIN

    11               <--->              CS

    10               <--->             CLK

     

    多个连接的方式

    程序及库文件

    LedControl库使用说明

    该库用于使用 MAX7219驱动的SPI总线8*8

    LED显示屏及7段LED数码管。定义一个对象最多可以驱动8块8*8LED显示屏(每块64个LED总共512个)或8个7段数码管,需占用三个Arduino的IO口。如需驱动超过8个设备只能定义多个对象,但需要占用更多的IO口

    把下载的库文件夹存放在Arduino 安装目录的libraries库文件夹

    库函数:

    LedControl(intdataPin,intclkPin,intcsPin,intnumDevices)

    用途:初始化设备,设置DIN(dataPin)、CLK、CS的IO口及连接设备数量(既有多少块屏)并定义一个对象。参数:

          dataPin

                 设置DIN口对应的Arduino上的IO口

          clockPin

                设置CLK口对应的Arduino上的IO口

          csPin

                     设置CS口对应的Arduino上的IO口

          numDevices

          设置最大设备连接数(也就是8*8LED屏的个数),只能设置1-8,如果需要连接超过8个设备,则需要定义另一个对象并使用另外的IO口

    代码部分

    #include

    int DIN

    = 12;

    intCS=  11;

    int CLK

    = 10;//定义8*8点阵屏的三个针脚

    LedControl lc=LedControl(DIN,CLK,CS,4);//LEDControl库函数

    void setup()

    {

     lc.shutdown(0,false);       //启动时,MAX72XX处于省电模式

     lc.setIntensity(0,8);       //将亮度设置为最大值

     lc.clearDisplay(0);         //清除显示

    }

    void loop(){

        byte smile[8]=   {0x3C,0x42,0xA5,0x81,0xA5,0x99,0x42,0x3C};//笑脸

        byte

    neutral[8]= {0x3C,0x42,0xA5,0x81,0xBD,0x81,0x42,0x3C};//标准脸  

        printByte(eight);//显示8

        delay(1000);//延时1秒

        printByte(neutral);//显示标准脸

        delay(1000);

    }

    //点阵显示函数,定义内容

    void printByte(byte character [])

    {

     inti= 0;

     for(i=0;i<8;i++)

     {

        lc.setRow(0,i,character[i]);

     }//点阵输出函数

    }

    取字模软件的相关使用

    取字模软件的主界面

     

    打开编辑菜单按钮,可以调节显示字符的点阵的规模

    选择手动输入待取模软件,然后输入想显示的字符

    点击工具,输出代码,就可以在窗口输出代码,代表的就是要显示的字符

    心得体会

    经历了本学期的学习,我们基本掌握了如何使用arduino进行简单的逻辑程序运行。在实现8*8点阵显示字符实验时,细心摸索,从网上查找资料,结合自身掌握的知识实现从零开始的探索。

    在探索的过程中,我们自然也经历了来自硬件,软件两方面的考验,操作手法的不规范,代码知识的欠缺,都给我们带来了莫大的困扰,但是我们想起老师那循循善诱的温和形象,就下定决心一定要完成任务。终于,在全组同学的合作下,我们守得云开见月明,顺利完成了实验。

    我们总结了两条注意事项

    ① 接线的时候,注意方向,在IN的方向接线(输入)

    ② LED的方向也要注意,如果显示不正常,请转变下安插的方向。

    最后,一切重在坚持,当你感觉走投无路,快要放弃时,要相信,成功就在前方。

    相关文章

      网友评论

        本文标题:【项目9-任务12-小组9】利用max7219点阵模块实现形状符

        本文链接:https://www.haomeiwen.com/subject/lucphctx.html