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

📄 max7219.h

📁 24l01无线模块的C51的发送程序
💻 H
字号:
/*福州天虹电脑科技有限公司 苏秋锦2011年4月*/
/*本程序为7219的显示驱动程序*/
/*显示子令:Disp_Max7219/

/*数据字显示说明*/
//显示子令:Write_Max7219(位,内容):0至9数字;10-;11E;12H;13L;14P;15空格   

/*宏定义声明*/
#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 
/*max7219管脚定义*/
sbit DIN  = P3^3; 	//MAX7219    Serial-Data Input:   	rising edge  	pin 1
sbit LOAD = P3^2;   //MAX7219    Load-Data Input:    	rising edge  	pin 12 
sbit CLK  = P3^4; 	//MAX7219   Serial-Clock Input:  	maximum 12MHz  	pin 13

/*函数声明*/
char read_eeprom(char add_H,char add_L);//读eeprom数据
void write_eeprom(char add_H,char add_L,char data_tmp);//写eeprom数据
void Write_Max7219(char address,char dat);//7219显示控制子程序
void Disp_Max7219(char Data1,char Data2,char Data3,char Data4,char Data5,char Data6,char Data7,char Data8);//7219内容显示控制子程序
void Init_Max7219(void);//初始化子程序
void delay(unsigned i);
void Chg_Num(void);

void Beep_Right();
void Beep_Error();
//  0  1   2   3  4   5  6  7    8    9 
// 126 48 109 121 51 91 95	114 127  123
//10-A|11-b|12-c|13-d|14-e|15-F|16-H|17-J|18-L|19-n|20-P|21-q|22-U|23-[|24-]|25--|26-=|27-三横|28-┤|29-├|30-E|31-h|31-空
// 119    31  13   61  111   71	  55   56   14	 21	 103  115   62	 78	 120    1	9 	   73	  49	7	 79	  23
char Chg_num(char chg_num)
{char chg_num_ok;
 switch(chg_num){
 case 0:chg_num_ok=126;break;
 case 1:chg_num_ok=48;break;
 case 2:chg_num_ok=109;break;
 case 3:chg_num_ok=121;break;
 case 4:chg_num_ok=51;break;
 case 5:chg_num_ok=91;break;
 case 6:chg_num_ok=95;break;
 case 7:chg_num_ok=114;break;
 case 8:chg_num_ok=127;break;
 case 9:chg_num_ok=123;break;
 case 10:chg_num_ok=119;break;
 case 11:chg_num_ok=31;break;
 case 12:chg_num_ok=13;break;
 case 13:chg_num_ok=61;break;
 case 14:chg_num_ok=111;break;
 case 15:chg_num_ok=71;break;
 case 16:chg_num_ok=55;break;
 case 17:chg_num_ok=56;break;
 case 18:chg_num_ok=14;break;
 case 19:chg_num_ok=21;break;
 case 20:chg_num_ok=103;break;
 case 21:chg_num_ok=115;break;
 case 22:chg_num_ok=62;break;
 case 23:chg_num_ok=78;break;
 case 24:chg_num_ok=120;break;
 case 25:chg_num_ok=1;break;
 case 26:chg_num_ok=9;break;
 case 27:chg_num_ok=73;break;
 case 28:chg_num_ok=49;break;
 case 29:chg_num_ok=7;break;
 case 30:chg_num_ok=79;break;
 case 31:chg_num_ok=23;break;
 case 32:chg_num_ok=0;break;
 case 33:chg_num_ok=118;break;
 }
 return(chg_num_ok);
}

/*7219内容显示控制子程序*/
void Disp_Max7219(char Data1,char Data2,char Data3,char Data4,char Data5,char Data6,char Data7,char Data8)
//D_Ver显示底检的代数 D_Type显示类型 D_Num显示数字
{
//   Init_Max7219();
   Write_Max7219(1,Chg_num(Data1)); 
   Write_Max7219(2,Chg_num(Data2));
   Write_Max7219(3,Chg_num(Data3));
   Write_Max7219(4,Chg_num(Data4));
   Write_Max7219(5,Chg_num(Data5));
   Write_Max7219(6,Chg_num(Data6));
   Write_Max7219(7,Chg_num(Data7));
   Write_Max7219(8,Chg_num(Data8));
}
/*max7219显示驱动程序*/
//发送一个字节的子程序:上升沿发送数据,下降时存储数据
void Write_Max7219(char address,char dat)
{	char i;
	LOAD=LOW;	//拉低片选线,选中器件
	//发送地址
 	for (i=0;i<8;i++)			//移位循环8次				
 	{	
 		CLK=0;			//清零时钟总线
   		DIN=(bit)(address&MSB);	//每次取高字节      
   		address<<=1;  			//左移一位
		CLK=0;
   		CLK=HIGH;			//时钟上升沿,发送地址
  	}
  	//发送数据
 	for (i=0;i<8;i++)					
 	{	
 		CLK=LOW;
   		DIN=(bit)(dat&MSB);     
   		dat<<=1;
		CLK=0;  
   		CLK=HIGH;			//时钟上升沿,发送数据
		DIN=HIGH;
  	}
	LOAD=LOW;
 	LOAD=HIGH;    //发送结束,上升沿锁存数据
	CLK=0;
}

/*max7219初始化子函数,设置工作寄存器*/
void Init_Max7219(void)      
{	Write_Max7219(SHUT_DOWN, 	0x01);   //Normal Operation XXXXXXX1 Shutdown Mode   XXXXXXXX0
	Write_Max7219(DISPLAY_TEST, 0x00);   //Normal Operation XXXXXXX0 Display Test Mode XXXXXXXX1
	Write_Max7219(DECODE_MODE, 	0x00);   //Decode Mode Select D7~D0 1 B decode 0 No decode显示位数
	Write_Max7219(SCAN_LIMIT, 	0x07);   //SCAN LIMIT 0~7 0xX0~0xX7扫描位数
	Write_Max7219(INTENSITY,0x04);
}
/*延时程序*/
void delay(unsigned i)
{while(--i);}

void delay_l()
{delay(50000);delay(50000);delay(50000);}

/**********************蜂鸣器**************************/
void Beep_Right()//正确提示
{
unsigned int n;
for(n=0;n<30000;n++){P42=0;}
P42=1;
}
/*void Beep_Error()//错误提示
{
unsigned int n;
for(n=0;n<30000;n++){P42=0;}
P42=1;
for(n=0;n<30000;n++);
for(n=0;n<30000;n++){P42=0;}
P42=1;
for(n=0;n<30000;n++);
for(n=0;n<30000;n++){P42=0;}
P42=1;
for(n=0;n<10000;n++);
for(n=0;n<30000;n++){P42=0;}
P42=1;
} */

⌨️ 快捷键说明

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