📄 max7221.h
字号:
//max7219 C语言驱动程序
//#include<REG51.h> //主程序里已经包括
extern unsigned char read_char[7];//在主程序中定义的数据数组
extern unsigned char setda[7]; //在主程序中定义的数据数组
/***********************************************************************/
//common part
#define HIGH 1
#define LOW 0
#define TRUE 1
#define FALSE 0
#define ZERO 0
#define MSB 0x80
#define LSB 0x01
//max7219 寄存器地址
#define DECODE_MODE 0x09
#define INTENSITY 0x0A
#define SCAN_LIMIT 0x0B
#define SHUT_DOWN 0x0C
#define DISPLAY_TEST 0x0F
/***********************************************************************/
//7219有管脚定义
sbit DIN=P0^2; //rising edge pin 1
sbit SCLK=P0^1; //maximum 10MHz pin 13
sbit LOAD=P0^0; //rising edge pin 12
/***********************************************************************/
//所用到函数说明
void Write_Max7219_byte(unsigned char temp);
void Write_Max7219(unsigned char address,unsigned char dat);
void Init_Max7219(void);
void display(uchar *p);
/***********************************************************************/
//显示总函数
void display(uchar *p)
{
Init_Max7219();
Write_Max7219(1,p[0]);
Write_Max7219(2,p[1]); //这两位显示秒
Write_Max7219(3,p[2]|0x80); //在这个位显示其它小数点
Write_Max7219(4,p[3]); //这两位显示分
//Write_Max7219(5,0);
//Write_Max7219(6,6);
//Write_Max7219(7,5);
//Write_Max7219(8,0x85); //这样可以显示出小数点
//编码模式DECODE_MODE可以设置哪个位用编码模式,为1的位进行编码,
//为0的位可以进行自行段选,如上一行则是显示为'A',对应的段码如下
//---------------------------------------
//dot a b c d e f g
//D7 D6 D5 D4 D3 D2 D1 D0
//---------------------------------------
}
/***********************************************************************/
//写一个字节的命令
void Write_Max7219_byte(unsigned char temp)
{
unsigned char i;
for (i=0;i<8;i++)
{
SCLK=LOW;
DIN=(bit)(temp&MSB);
temp<<=1;
SCLK=HIGH;
}
}
/***********************************************************************/
//写一个字节地址命令,一个字节的数据命令
void Write_Max7219(unsigned char address,unsigned char dat)
{
LOAD=LOW;
Write_Max7219_byte(address);
Write_Max7219_byte(dat);
LOAD=HIGH;
}
/***********************************************************************/
//总初始化程序
void Init_Max7219(void)
{
Write_Max7219(SHUT_DOWN, 1); //Normal Operation XXXXXXX1 Shutdown Mode XXXXXXXX0
Write_Max7219(DISPLAY_TEST, 0x00); //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1
Write_Max7219(DECODE_MODE, 0xff); //Decode Mode Select D7~D0 1 B decode 0 No decode
Write_Max7219(SCAN_LIMIT, 0x03); //SCAN LIMIT 0~7 0xX0~0xX7 显示的位数
Write_Max7219(INTENSITY, 0x01); //Set Intensity 0xX0~0xXf
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -