📄 ch8-4.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 + -