找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

MAX7219多片级联驱动点阵单片机程序编写经历

查看数: 12908 | 评论数: 22 | 收藏 11
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-4-22 16:51

正文摘要:

      大家好,我给大家分享一个自己写的MAX7219级联驱动程序!       我在那个宝上买了一个四级联点阵模块,花了好多时间写出了它的驱动程序(作为菜鸟我很难受)。 &nb ...

回复

ID:476415 发表于 2024-1-7 11:40
等于多个级联,不是11111111,22222222,333333333,44444444一个一个的刷新,而是1234,1234,1234....这样一列一列刷新的?
ID:718536 发表于 2023-9-10 17:03
人人学会单片机 发表于 2021-1-15 11:47
TM公司的芯片 要比MAX7219 好用多了。

TM的芯片自带时钟,不受外部时钟中断而爆亮。这点很好,能保证光点亮度均匀。7219估计跟两片595寄存器组合起来差不多,数据的扫描输出估计应该受时钟信号波动而变动。
ID:718536 发表于 2023-9-10 14:26
zyw497947507 发表于 2021-11-7 16:12
如何实现滚动呢?有人会吗

加上定时器移位地址或数据,就可以做左右滚动或者上下滚动了。
ID:641483 发表于 2023-7-20 11:56
好东西,非常感谢,先收藏了,今天回去学习研究下,用这个做个动态显示的应该怎么写
ID:819175 发表于 2023-7-20 09:59
谢谢 by64214 ,成功点亮四块ABCD。
ID:964313 发表于 2022-2-27 20:52
楼主,有16X16显示汉字的驱动吗?
ID:907424 发表于 2021-11-7 16:12
如何实现滚动呢?有人会吗
ID:311310 发表于 2021-3-14 12:00
dlj123 发表于 2021-2-1 23:31
大神把程序发出来啊

你好!我的另一篇帖子已上传工程包
ID:718536 发表于 2021-2-23 09:18
老大,如果要滚动显示怎么处理呢?
ID:718536 发表于 2021-2-23 09:15
软件延时简直就是单片机的大敌啊。好,简洁,方便。那个送数函数while,改为for循环应该效果一样。
ID:605142 发表于 2021-2-2 09:46

ID:688367 发表于 2021-2-1 23:31
大神把程序发出来啊
ID:300212 发表于 2021-1-28 21:07
网上的代码很累赘,无论几块max7219,写一波数据,然后CS=1;  CS=0;,比单个写好
ID:390416 发表于 2021-1-15 11:47
TM公司的芯片 要比MAX7219 好用多了。
ID:844772 发表于 2021-1-15 10:29
本帖最后由 glinfei 于 2021-2-1 16:16 编辑
MANHAMCHAN 发表于 2020-4-27 10:55
按你的程序建了工程,点阵要么不亮要么闪烁几下就不亮了

程序没问题,我也试过了,不过我用的某多多的最小系统,跟你出现同样问题的原因竟然是它的EN管脚竟然没拉高。
ID:44037 发表于 2020-12-23 08:58
我上面的程序  就是楼主发的全部程序图片  仿真显示正常,实物未检验
ID:688367 发表于 2020-12-23 01:07
能发一下程序吗?
ID:476465 发表于 2020-4-27 10:55
按你的程序建了工程,点阵要么不亮要么闪烁几下就不亮了
ID:652804 发表于 2020-1-9 08:14
好东东 能分享下代码的工程包吗?
ID:44037 发表于 2019-11-29 23:06
谢谢分享  程序简洁  明了   学习的好模板


main.c
  1. #include <reg52.h>
  2. #include "intrins.h"
  3. #include "Max7219.h"

  4. uchar code laji[][8]={
  5. {0x18,0x24,0x42,0x42,0x7E,0x42,0x42,0x42},//A
  6. {0x7C,0x42,0x42,0x7C,0x42,0x42,0x42,0x7C},//B
  7. {0x3C,0x42,0x40,0x40,0x40,0x40,0x42,0x7C},//C
  8. {0x7C,0x42,0x42,0x42,0x42,0x42,0x42,0x7C},//D
  9. };
  10. /*n毫秒的延时程序*/
  11. /*void Delay_xms(uint x)
  12. {
  13.   uint i,j;
  14.   for(i=0;i<x;i++)
  15.   for(j=0;j<112;j++);
  16. }*/
  17. void main()
  18. {
  19.   uchar i,j;
  20.   //Delay_xms(50);
  21.   MAX7219Init();  
  22.   while(1)
  23.   {
  24.                 for(j=0;j<8;j++)
  25.     {
  26.       for(i=0;i<number;i++)
  27.       {
  28.         Max7219WR(j+1,laji[i][j]);
  29.             }
  30.       CS=1; _nop_(); CS=0;
  31.                         //Delay_xms(100);
  32.     }  
  33.   }
  34. }


  35. Max7219.h
  36. #ifndef _Max7219_H_
  37. #define _Max7219_H_

  38. #define uchar unsigned char
  39. #define uint  unsigned int
  40. #define number  4 //点阵级联个数
  41. #define lum     5 //亮度级别,0-F,共16级

  42. //定义Max7219端口
  43. sbit CLK = P2^2;  //时钟 Max7219_pin
  44. sbit CS  = P2^1;  //锁存
  45. sbit DIN = P2^0;  //数据

  46. //向MAX7219 写入地址和数据
  47. void Max7219WR(uchar addr,uchar dat)
  48. {
  49.   uchar n=8;
  50.         CLK=0;
  51.         CS=0;   //CS=0有效,CS=1锁存
  52.         /*发送数据 高位先发*/
  53.         while(n--)
  54.         {
  55.           DIN = addr & 0x80;
  56.                 CLK=1;
  57.                 addr <<= 1;
  58.                 CLK=0;
  59.         }
  60.         n=8;
  61.         /*发送数据 高位先发*/
  62.         while(n--)
  63.         {
  64.           DIN = dat & 0x80;
  65.                 CLK=1;
  66.                 dat <<= 1;
  67.                 CLK=0;
  68.         }
  69. }
  70. void MAX7219Init()
  71. {
  72.   uchar i,j;
  73.         for(i=0;i<5;i++)  //
  74.         {
  75.           for(j=number;j>0;j--)
  76.                 switch(i)
  77.                 {
  78.                   case 0:Max7219WR(0x09, 0x00); break; //译码方式:BCD码 不译码
  79.                         case 1:Max7219WR(0x0A, lum);  break; //亮度 0-15 共16级
  80.                         case 2:Max7219WR(0x0B, 0x07); break; //扫描界限;8位显示
  81.                         case 3:Max7219WR(0x0C, 0x01); break; //掉电模式:0,普通模式:1
  82.                         case 4:Max7219WR(0x0F, 0x00); break; //显示测试:1;测试结束,正常显示:0
  83.                 }
  84.                 CS=1; _nop_(); CS=0; //每写入四次给一个锁存脉冲
  85.         }
  86. }
  87. #endif
复制代码

ID:311310 发表于 2019-4-22 21:17
51hei团团 发表于 2019-4-22 18:03
好东东 能分享下 代码的工程包吗

都在这了!就只有这么点就可以!
ID:328014 发表于 2019-4-22 18:03
好东东 能分享下 代码的工程包吗

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表