找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12493|回復(fù): 22
收起左側(cè)

MAX7219多片級聯(lián)驅(qū)動點陣單片機程序編寫經(jīng)歷

  [復(fù)制鏈接]
ID:311310 發(fā)表于 2019-4-22 16:51 來自手機 | 顯示全部樓層 |閱讀模式
      大家好,我給大家分享一個自己寫的MAX7219級聯(lián)驅(qū)動程序!
      我在那個寶上買了一個四級聯(lián)點陣模塊,花了好多時間寫出了它的驅(qū)動程序(作為菜鳥我很難受)。
       我剛開始一下沒弄明白,在網(wǎng)上找了一個程序,(就是那幾張手機截圖),照著搞了一遍,能顯示,但問題很多,比如會閃爍,有一片會有重影,而且代碼我覺得啰嗦而且還要延時,細看發(fā)現(xiàn)分四片寫入,而且還要寫入大量的NO-OP數(shù)據(jù)OX00。所以我只好自己寫了一個驅(qū)動程序,看了會數(shù)據(jù)手冊,發(fā)現(xiàn)這不就是類似74HC595的東西嘛!于是我自己寫了一個程序,非常簡潔明了,非常穩(wěn)定,如彩圖所示,我測試過STC15在1T的情況下4~35MHZ頻率,都沒有任何問題,其實那兩個nop都不需要了,只是想求個穩(wěn),希望對有需要的人有用,大神的話就不了說了,我只不過是一個剛?cè)肟訂纹瑱C不久的菜鳥!都是大神們玩剩下的了,唉!
IMG_20190422_155558.png
IMG_20190422_155903.png
IMG_20190422_155958.png
IMG_20190422_160108.png
IMG_20190422_134338.jpg
Screenshot_20190422-161024.jpg
Screenshot_20190422-160929.jpg
Screenshot_20190422-160949.jpg
Screenshot_20190422-161013.jpg
Screenshot_20190422-161005.jpg

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:328014 發(fā)表于 2019-4-22 18:03 | 顯示全部樓層
好東東 能分享下 代碼的工程包嗎
回復(fù)

使用道具 舉報

ID:311310 發(fā)表于 2019-4-22 21:17 來自手機 | 顯示全部樓層
51hei團團 發(fā)表于 2019-4-22 18:03
好東東 能分享下 代碼的工程包嗎

都在這了!就只有這么點就可以!
回復(fù)

使用道具 舉報

ID:44037 發(fā)表于 2019-11-29 23:06 | 顯示全部樓層
謝謝分享  程序簡潔  明了   學(xué)習(xí)的好模板
20191129.jpg

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 //點陣級聯(lián)個數(shù)
  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;  //數(shù)據(jù)

  46. //向MAX7219 寫入地址和數(shù)據(jù)
  47. void Max7219WR(uchar addr,uchar dat)
  48. {
  49.   uchar n=8;
  50.         CLK=0;
  51.         CS=0;   //CS=0有效,CS=1鎖存
  52.         /*發(fā)送數(shù)據(jù) 高位先發(fā)*/
  53.         while(n--)
  54.         {
  55.           DIN = addr & 0x80;
  56.                 CLK=1;
  57.                 addr <<= 1;
  58.                 CLK=0;
  59.         }
  60.         n=8;
  61.         /*發(fā)送數(shù)據(jù) 高位先發(fā)*/
  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;測試結(jié)束,正常顯示:0
  83.                 }
  84.                 CS=1; _nop_(); CS=0; //每寫入四次給一個鎖存脈沖
  85.         }
  86. }
  87. #endif
復(fù)制代碼

回復(fù)

使用道具 舉報

ID:652804 發(fā)表于 2020-1-9 08:14 | 顯示全部樓層
好東東 能分享下代碼的工程包嗎?
回復(fù)

使用道具 舉報

ID:476465 發(fā)表于 2020-4-27 10:55 | 顯示全部樓層
按你的程序建了工程,點陣要么不亮要么閃爍幾下就不亮了
回復(fù)

使用道具 舉報

ID:688367 發(fā)表于 2020-12-23 01:07 來自手機 | 顯示全部樓層
能發(fā)一下程序嗎?
回復(fù)

使用道具 舉報

ID:44037 發(fā)表于 2020-12-23 08:58 | 顯示全部樓層
我上面的程序  就是樓主發(fā)的全部程序圖片  仿真顯示正常,實物未檢驗
回復(fù)

使用道具 舉報

ID:844772 發(fā)表于 2021-1-15 10:29 | 顯示全部樓層
本帖最后由 glinfei 于 2021-2-1 16:16 編輯
MANHAMCHAN 發(fā)表于 2020-4-27 10:55
按你的程序建了工程,點陣要么不亮要么閃爍幾下就不亮了

程序沒問題,我也試過了,不過我用的某多多的最小系統(tǒng),跟你出現(xiàn)同樣問題的原因竟然是它的EN管腳竟然沒拉高。
回復(fù)

使用道具 舉報

ID:390416 發(fā)表于 2021-1-15 11:47 | 顯示全部樓層
TM公司的芯片 要比MAX7219 好用多了。
回復(fù)

使用道具 舉報

ID:300212 發(fā)表于 2021-1-28 21:07 來自手機 | 顯示全部樓層
網(wǎng)上的代碼很累贅,無論幾塊max7219,寫一波數(shù)據(jù),然后CS=1;  CS=0;,比單個寫好
回復(fù)

使用道具 舉報

ID:688367 發(fā)表于 2021-2-1 23:31 來自手機 | 顯示全部樓層
大神把程序發(fā)出來啊
回復(fù)

使用道具 舉報

ID:605142 發(fā)表于 2021-2-2 09:46 | 顯示全部樓層
GGG.gif
回復(fù)

使用道具 舉報

ID:718536 發(fā)表于 2021-2-23 09:15 | 顯示全部樓層
軟件延時簡直就是單片機的大敵啊。好,簡潔,方便。那個送數(shù)函數(shù)while,改為for循環(huán)應(yīng)該效果一樣。
回復(fù)

使用道具 舉報

ID:718536 發(fā)表于 2021-2-23 09:18 | 顯示全部樓層
老大,如果要滾動顯示怎么處理呢?
回復(fù)

使用道具 舉報

ID:311310 發(fā)表于 2021-3-14 12:00 來自手機 | 顯示全部樓層
dlj123 發(fā)表于 2021-2-1 23:31
大神把程序發(fā)出來啊

你好!我的另一篇帖子已上傳工程包
回復(fù)

使用道具 舉報

ID:907424 發(fā)表于 2021-11-7 16:12 | 顯示全部樓層
如何實現(xiàn)滾動呢?有人會嗎
回復(fù)

使用道具 舉報

ID:964313 發(fā)表于 2022-2-27 20:52 | 顯示全部樓層
樓主,有16X16顯示漢字的驅(qū)動嗎?
回復(fù)

使用道具 舉報

ID:819175 發(fā)表于 2023-7-20 09:59 | 顯示全部樓層
謝謝 by64214 ,成功點亮四塊ABCD。
回復(fù)

使用道具 舉報

ID:641483 發(fā)表于 2023-7-20 11:56 | 顯示全部樓層
好東西,非常感謝,先收藏了,今天回去學(xué)習(xí)研究下,用這個做個動態(tài)顯示的應(yīng)該怎么寫
回復(fù)

使用道具 舉報

ID:718536 發(fā)表于 2023-9-10 14:26 | 顯示全部樓層
zyw497947507 發(fā)表于 2021-11-7 16:12
如何實現(xiàn)滾動呢?有人會嗎

加上定時器移位地址或數(shù)據(jù),就可以做左右滾動或者上下滾動了。
回復(fù)

使用道具 舉報

ID:718536 發(fā)表于 2023-9-10 17:03 | 顯示全部樓層
人人學(xué)會單片機 發(fā)表于 2021-1-15 11:47
TM公司的芯片 要比MAX7219 好用多了。

TM的芯片自帶時鐘,不受外部時鐘中斷而爆亮。這點很好,能保證光點亮度均勻。7219估計跟兩片595寄存器組合起來差不多,數(shù)據(jù)的掃描輸出估計應(yīng)該受時鐘信號波動而變動。
回復(fù)

使用道具 舉報

ID:476415 發(fā)表于 2024-1-7 11:40 | 顯示全部樓層
等于多個級聯(lián),不是11111111,22222222,333333333,44444444一個一個的刷新,而是1234,1234,1234....這樣一列一列刷新的?
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表