📄 max7219.h
字号:
#ifndef __MAX7219_H__
#define __MAX7219_H__
//移植时要修改的地方
/****************************************************************/
//级联的7219总个数
#define MAX7219NUM 1
//引脚连接
sbit DIN = P1^0 ;
sbit CLK = P1^2 ;
sbit LOAD= P1^1 ;
/***************************************************************/
typedef unsigned char uchar;
typedef unsigned int uint;
//延时约1m秒,晶振是11.592
void delay_ms(uint n)
{
uchar j;
while(n--)
for(j=0;j<120;j++);
}
//向7219发送一char型数据
void SendChar(uchar CharData)
{
uchar ii; for (ii = 0;ii<8;ii++){//8个时钟
CLK = 0;
if(((CharData<<ii)&0x80)==0x80)
DIN = 1;
else
DIN = 0;
CLK = 1;
}
}
//向7219中发送多个串数据
void SendAddrDataMulti(uchar Addr,uchar Data,uchar Num)
{
LOAD = 0;
do
{
SendChar(Addr);
SendChar(Data);
}while(--Num);
LOAD = 1;
}
//向7219发送一十六位的数据
void SendAddrDataSingle(uchar Addr,uchar Data)
{
SendChar(Addr);
SendChar(Data);
}
//初始化所有的器件
void InitAllComponents(void)
{ SendAddrDataMulti(0xf9,0xff,MAX7219NUM); //set decode mode ,Code B Decode for digits 0~7
SendAddrDataMulti(0xfa,0x0f,MAX7219NUM); //set intensity to the max
SendAddrDataMulti(0xfb,0xf7,MAX7219NUM); //set scan limit register format for display 0~7
SendAddrDataMulti(0xfc,0x01,MAX7219NUM); //set the 7219 to Normal Operation .1--normal operation,0-hutdown
SendAddrDataMulti(0xff,0x00,MAX7219NUM); //set to display; 1-test mode,0-normal mode
}
disp7219(unsigned long dat)
{
unsigned char i;
unsigned char led[8];
led[7]=dat%10;
led[6]=dat/10%10;
led[5]=dat/100%10;
led[4]=dat/1000%10;
led[3]=dat/10000%10;
led[2]=dat/100000%10;
led[1]=dat/1000000%10;
led[0]=dat/10000000%10;
for(i=0;i<8;i++)
{
LOAD = 0;
SendAddrDataSingle(i+1, led[i]);
LOAD = 1;
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -