⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch8-4.c

📁 单片机接口技术(C51版)例程源代码
💻 C
字号:
//max7219 led drive program
#include<reg51.h> 

/***********************************************************************/
//通用符号宏定义
#define  HIGH      1
#define  LOW       0
#define  TRUE      1
#define  FALSE     0
#define  ZERO      0 
#define  MSB       0x80
#define  LSB       0x01
//max7219 part
#define  DECODE_MODE   0x09 
#define  INTENSITY     0x0A 
#define  SCAN_LIMIT    0x0B 
#define  SHUT_DOWN     0x0C 
#define  DISPLAY_TEST  0x0F 

//引脚定义,可由读者根据具体的设计电路图修改
sbit LOAD=P1^2;  
sbit DIN=P1^1; 
sbit CLK=P1^0;

//功能函数定义
void Write_Max7219_byte(unsigned char temp);//对MAX7219写一个字节
void Write_Max7219(unsigned char address,unsigned char dat);//对MAX7219 写命令或数据
void Init_Max7219(void);//初始化MAX7219

//测试程序显示1-8
/***********************************************************************/
void main(void)
{
 unsigned char i; 
 Init_Max7219();  
 while(TRUE)
 {  
  for(i=1;i<9;i++) 
  {
   Write_Max7219(i,i);
  }
 } 
}
/*对MAX7219写一个字节数据的函数*/
void Write_Max7219_byte(unsigned char temp)
{
 unsigned char i;
 for (i=0;i<8;i++)     
  { 
     CLK=LOW;
     DIN=(bit)(temp&MSB);      
     temp<<=1;  
     CLK=HIGH;
   }
}
/*对MAX7219写命令的函数*/
void Write_Max7219(unsigned char address,unsigned char dat)
{ 
   LOAD=LOW;
   Write_Max7219_byte(address); 
   Write_Max7219_byte(dat);
  LOAD=HIGH;                 
}
/*对MAX7219初始化的函数*/
void Init_Max7219(void)      
{ 
 Write_Max7219(SHUT_DOWN, 0x01);    //往停机寄存器写0x01,正常工作状态
 Write_Max7219(DISPLAY_TEST, 0x00); //写显示测试寄存器,正常操作状态
 Write_Max7219(DECODE_MODE, 0xff);   //写译码寄存器, 译码方式 
 Write_Max7219(SCAN_LIMIT, 0x07);   //写扫描限制寄存器,显示的LED个数8个
 Write_Max7219(INTENSITY, 0x04);   //写亮度调节寄存器,亮度为4级
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -