久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2729|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

關(guān)于arduino+max7219級(jí)聯(lián)的求助

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:292903 發(fā)表于 2020-7-14 11:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
20黑幣
本人有一個(gè)arduino控制max7219的程序
啟動(dòng)→行掃→豎掃→滾動(dòng)播放文字→全亮→循環(huán)
程序是單個(gè)7219的,想改成級(jí)聯(lián),目前已經(jīng)知道怎么更改顯示的文字,求助大佬幫忙改一下或者指導(dǎo)一下應(yīng)該改動(dòng)哪里的參數(shù),多謝,

單片機(jī)源程序如下:
  1. #include  <avr/io.h>
  2. #include  <util/delay.h>
  3. //-------------------宏定義-----------------------------------------
  4. #define SET_BIT(PORT,BIT) PORT|=(1<<BIT)
  5. #define CLR_BIT(PORT,BIT) PORT&=~(1<<BIT)
  6. #define BIT_IN(DDR,BIT)   DDR&=~(1<<BIT)
  7. #define BIT_OUT(DDR,BIT)  DDR|=(1<<BIT)
  8. #define READ_BIT(PIN,BIT) (PIN&(1<<BIT))
  9. /*********************** 定義MAX7219 端口信號(hào) ************************/
  10. #define DATA  4
  11. #define LOAD  3
  12. #define CLK   2

  13. #define DATA_high digitalWrite(DATA,HIGH)
  14. #define DATA_low  digitalWrite(DATA,LOW)
  15. #define LOAD_high digitalWrite(LOAD,HIGH)
  16. #define LOAD_low  digitalWrite(LOAD,LOW)
  17. #define CLK_high  digitalWrite(CLK,HIGH)
  18. #define CLK_low   digitalWrite(CLK,LOW)
  19. /*********************** 定義MAX7219 內(nèi)部寄存器 **********************/
  20. #define REG_DECODE        0x09            // 譯碼方式寄存器
  21. #define REG_INTENSITY     0x0a            // 亮度寄存器
  22. #define REG_SCAN_LIMIT    0x0b            // 掃描界限寄存器
  23. #define REG_SHUTDOWN      0x0c            // 停機(jī)寄存器
  24. #define REG_DISPLAY_TEST  0x0f            // 顯示測(cè)試寄存器
  25. #define INTENSITY_MIN     0x00            // 最小顯示亮度
  26. #define INTENSITY_MAX     0x0f            // 最大顯示亮度
  27. unsigned char logo[]={
  28. //陰碼,逐列式,逆向
  29. 0x7F,0x08,0x08,0x08,0x7F,0x00,//"h",0//
  30. 0x01,0x01,0x7F,0x01,0x01,0x00,//"t",0//
  31. 0x01,0x01,0x7F,0x01,0x01,0x00,//"t",0//
  32. 0x7F,0x09,0x09,0x09,0x06,0x00,//"P",0//
  33. 0x6C,0x6C,0x00,//":",0//
  34. 0x30,0x0C,0x63,0x18,0x06,0x00,//"//",0//
  35. 0x20,0x40,0x41,0x3F,0x01,0x00,//"j",0//
  36. 0x01,0x02,0x7C,0x02,0x01,0x00,//"y",0//
  37. 0x08,0x08,0x08,0x08,0x08,0x00,//"-",0//
  38. 0x7F,0x02,0x0C,0x02,0x7F,0x00,//"m",0//
  39. 0x3E,0x41,0x41,0x41,0x22,0x00,//"c",0//
  40. 0x3F,0x40,0x40,0x40,0x3F,0x00,//"u",0//
  41. 0x60,0x60,0x00,//".",0//
  42. 0x01,0x01,0x7F,0x01,0x01,0x00,//"t",0//
  43. 0x7E,0x09,0x09,0x09,0x7E,0x00,//"a",0//
  44. 0x3E,0x41,0x41,0x41,0x3E,0x00,//"o",0//
  45. 0x7F,0x49,0x49,0x49,0x36,0x00,//"b",0//
  46. 0x7E,0x09,0x09,0x09,0x7E,0x00,//"a",0//
  47. 0x3E,0x41,0x41,0x41,0x3E,0x00,//"o",0//
  48. 0x60,0x60,0x00,//".",0//
  49. 0x3E,0x41,0x41,0x41,0x22,0x00,//"c",0//
  50. 0x3E,0x41,0x41,0x41,0x3E,0x00,//"o",0//
  51. 0x7F,0x02,0x0C,0x02,0x7F,0x00,//"m",0//
  52. 0,0,0,0,0,0,0,0,
  53. };
  54. /************************** 函數(shù)原型說(shuō)明 *****************************/
  55. void Write (unsigned char, unsigned char);
  56. void SendByte (unsigned char);
  57. void Clear (void);
  58. /************************************************************************
  59. *  函數(shù)原型:void Init()
  60. *  功    能: 對(duì)MAX7219進(jìn)行初始化,調(diào)用任何其他函數(shù)之前必需先調(diào)用此函數(shù)
  61. *************************************************************************/
  62. void InitMAX7219(void)
  63. {
  64.   DATA_high;
  65.   LOAD_high;
  66.   CLK_high;
  67.     Write(REG_SCAN_LIMIT, 7);          // 掃描8位數(shù)字
  68.     Write(REG_DECODE, 0);           // 設(shè)置不譯碼方式
  69.     Write(REG_SHUTDOWN,1);                    // 結(jié)束停機(jī)方式,正常工作
  70.     Write(REG_DISPLAY_TEST, 0);                // 結(jié)束顯示測(cè)試,正常工作
  71.   Write(REG_INTENSITY, 3);        // 設(shè)置亮度
  72.     Clear();                           // 清零全部顯示器
  73. }
  74. /*************************************************************************
  75. *  函數(shù)原型:void Clear()
  76. *  功    能:關(guān)閉全部顯示器
  77. **************************************************************************/
  78. void Clear (void)
  79. {
  80.     unsigned char i;
  81.     for (i=1;i<=8;i++)
  82.     Write(i, 0);                          // 關(guān)閉全部顯示器
  83. }
  84. /*************************************************************************
  85. *  函數(shù)原型:void Write (unsigned char reg_number, unsigned char dat)
  86. *  功    能:向指定的MAX7219內(nèi)部寄存器寫(xiě)入數(shù)據(jù)
  87. *  參    數(shù): reg_add = MAX7219內(nèi)部寄存器地址
  88.            dat = 待寫(xiě)入的數(shù)據(jù)
  89. **************************************************************************/
  90. void Write (unsigned char reg_add, unsigned char dat)
  91. {
  92.     LOAD_low;                               // 使LOAD變低,啟動(dòng)串行數(shù)據(jù)發(fā)送
  93.     SendByte(reg_add);                    // 發(fā)送MAX7219內(nèi)部寄存器地址
  94.   if(reg_add>8)
  95.     SendByte(dat);                        // 發(fā)送待寫(xiě)入的數(shù)據(jù)
  96.   else
  97.     SendByte((dat<<7)|(dat>>1));    //如發(fā)送的是顯示數(shù)據(jù),則根據(jù)硬件轉(zhuǎn)換一下數(shù)據(jù)位
  98.     LOAD_high;                              // 使LOAD變高,串行數(shù)據(jù)結(jié)束
  99. }
  100. /*************************************************************************
  101. *  函數(shù)原型:static void SendByte (unsigned char dat)
  102. *  功    能:向MAX7219發(fā)送一個(gè)字節(jié)串行數(shù)據(jù)
  103. *  參    數(shù):dat = 待發(fā)送的數(shù)據(jù)
  104. **************************************************************************/
  105. void SendByte (unsigned char dat)
  106. {
  107.     unsigned char i;
  108.     for (i=0; i<8; i++)
  109.     {   
  110.       CLK_low;                                   // 使CLK變低
  111.       if(dat&0x80)                      // 發(fā)送一位數(shù)據(jù)"1"或"0"
  112.           DATA_high;                                       
  113.       else                                             
  114.           DATA_low;   
  115.     dat<<=1;
  116.         CLK_high;                                    // 使CLK變高
  117.     }
  118. }
  119. void io_init(void)
  120. {
  121.   DDRB|=(1<<DATA)|(1<<CLK)|(1<<LOAD);
  122.   PORTB|=(1<<DATA)|(1<<CLK)|(1<<LOAD);
  123.   pinMode(DATA,OUTPUT);
  124.   pinMode(CLK,OUTPUT);
  125.   pinMode(LOAD,OUTPUT);
  126. }
  127. void setup(void)
  128. {
  129.   io_init();
  130.   InitMAX7219();
  131. }
  132. void loop(void)
  133. {
  134.   unsigned char i,j;
  135.   while(1)
  136.     {
  137.       for(i=0;i<8;i++) //逐行點(diǎn)亮
  138.         {
  139.           for(j=1;j<9;j++)
  140.             {
  141.               Write(j,1<<i);
  142.             }
  143.           _delay_ms(200);
  144.         }
  145.       for(i=1;i<9;i++) //逐列點(diǎn)亮
  146.         {
  147.           for(j=1;j<9;j++)
  148.           if(j==i)Write(j,0xff);
  149.             else Write(j,0);
  150.           _delay_ms(200);
  151.         }
  152.       for(i=0;i<sizeof(logo)-8;i++)
  153.         {
  154.           for(j=1;j<9;j++)
  155.             {
  156.             Write(j,logo[j+i]);  
  157.             }
  158.           _delay_ms(200);
  159.         }
  160.       for(i=1;i<9;i++)Write(i,0xff);
  161.       _delay_ms(10000);
  162.     }
  163. }
復(fù)制代碼



程序截圖.pdf

138.59 KB, 下載次數(shù): 4

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人福利在线视频 | 久久久久99| 国产精品一区二区三区四区 | 亚州综合一区 | 亚洲欧美一区二区三区在线 | 日韩电影免费观看中文字幕 | 91视频在线| 91亚洲国产成人久久精品网站 | 欧美色人 | 青春草国产 | 九色在线观看 | 亚洲精品一区二区三区中文字幕 | 成人午夜精品 | 欧美福利在线 | 国产精品久久久久一区二区 | 精品一区二区久久久久久久网站 | 别c我啊嗯国产av一毛片 | 在线观看av网站 | 国产精品影视在线观看 | 欧美日韩精品在线一区 | 欧美一区2区三区4区公司 | 精品一区二区在线观看 | 欧美一区二区三区视频 | 一区二区三区视频在线观看 | 99av成人精品国语自产拍 | 午夜激情免费 | 日韩精品二区 | 国产成人综合网 | 国产成人福利 | 国产特黄一级 | 国产精品一区二区久久 | 国产一区二区三区亚洲 | 国产精品毛片av | 日日天天| 日韩在线不卡 | 日韩电影一区二区三区 | 国产一区二区在线免费观看 | 日韩精品在线看 | 亚洲网一区| 人操人免费视频 | 影音av|