?? max7219.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 + -