Arduino MAX7219 基础显示操作

// 寄存器介绍 参考连接 https://www.cnblogs.com/sunshine-jackie/p/16645522.html
//这位写的也很不错 后期用到51单片机 可参考http://t.csdnimg.cn/qIK0l


//管脚定义
 
const int LOAD=7;          //MAX7219  片选           7脚  CS
 
const int DIN=11;           //MAX7219 串行数据       11脚 DIN
 
const int CLK=13;           //MAX7219 串行时钟        13脚 CLK


  
 
//寄存器宏定义
 
#define DECODE_MODE  0x09   //译码控制寄存器
 
#define INTENSITY    0x0A   //亮度控制寄存器
 
#define SCAN_LIMIT   0x0B   //扫描界限寄存器
 
#define SHUT_DOWN    0x0C   //关断模式寄存器
 
#define DISPLAY_TEST 0x0F   //测试控制寄存器    




 
void Write7219(unsigned char address,unsigned char dat);
 
void Initial();


void setup() {
  // put your setup code here, to run once:
  pinMode(LOAD,OUTPUT);
  pinMode(DIN,OUTPUT);
  pinMode( CLK,OUTPUT); //让三个脚都是输出状态
 
    Initial();               //MAX7219初始化
 
  
  

}

void loop() {
  // put your main code here, to run repeatedly:

  unsigned char i;
  for(i=1;i<9;i++)
 
       {
 
           Write7219(i,i);      //数码管显示1~8
          
       }
       delay(2);

}


 
//地址、数据发送子程序
 
void Write7219(unsigned char address,unsigned char dat)
 
{  
 
    unsigned char i;
 
   
    //发送地址
 
    for (i=0;i<8;i++)        //移位循环8次             
 
    {  
 
       // CLK=0;        //清零时钟总线
       digitalWrite(CLK, LOW);
 
       if(address&0x80) //判断取高字节     
       digitalWrite(DIN, HIGH);
       else
       digitalWrite(DIN, LOW);//判断取高字节     
       address<<=1;             //左移一位

      //LOAD=0;    //拉低片选线,选中器件
       digitalWrite(LOAD, LOW);
      //CLK=1;        //时钟上升沿,发送地址
       digitalWrite(CLK, HIGH);
       delay(2);
 
    }
 
    //发送数据
 
    for (i=0;i<8;i++)              
 
    {  
 
       
       //DIN=(dat&0x80);    
        if(dat&0x80) //判断取高字节     
       digitalWrite(DIN, HIGH);
       else
       digitalWrite(DIN, LOW);//判断取低字节  
       dat<<=1; 
       //CLK=0;
       digitalWrite(CLK, LOW);
       // CLK=1;        //时钟上升沿,发送数据
       digitalWrite(CLK, HIGH);
 
    }
 
      //LOAD=1;    //发送结束,上升沿锁存数据  
      digitalWrite(LOAD, HIGH);    
      delay(2);                
 
}

//MAX7219初始化,设置MAX7219内部的控制寄存器
void Initial(void)                
 
{
 
    Write7219(SHUT_DOWN,0x01);         //开启正常工作模式(0xX1)
 
    Write7219(DISPLAY_TEST,0x00);      //选择工作模式(0xX0)
 
    Write7219(DECODE_MODE,0xff);       //选用全译码模式 Code B decode for digits 7-0
 
    Write7219(SCAN_LIMIT,0x07);        //8只LED全用 (0xX1)
 
    Write7219(INTENSITY,0x04);          //设置初始亮度     
 
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值