?? max7219.h
字號(hào):
#ifndef __MAX7219_H__
#define __MAX7219_H__
//移植時(shí)要修改的地方
/****************************************************************/
//級(jí)聯(lián)的7219總個(gè)數(shù)
#define MAX7219NUM 8
//引腳連接
sbit DIN = P1^0 ;
sbit CLK = P1^2 ;
sbit LOAD= P1^1 ;
/***************************************************************/
typedef unsigned char uchar;
typedef unsigned int uint;
//BCD decode for 0~9,blank
code uchar Seg[]={ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0xff};
//延時(shí)約1m秒,晶振是11.592
void delay_ms(uint n)
{
uchar j;
while(n--)
for(j=0;j<120;j++);
}
//向7219發(fā)送一char型數(shù)據(jù)
void SendChar(uchar CharData)
{
uchar ii;
for (ii = 0;ii<8;ii++){//8個(gè)時(shí)鐘
CLK = 0;
if(((CharData<<ii)&0x80)==0x80)
DIN = 1;
else
DIN = 0;
CLK = 1;
}
}
//向7219中發(fā)送多個(gè)串?dāng)?shù)據(jù)
void SendAddrDataMulti(uchar Addr,uchar Data,uchar Num)
{
LOAD = 0;
do
{
SendChar(Addr);
SendChar(Data);
}while(--Num);
LOAD = 1;
}
//向7219發(fā)送一十六位的數(shù)據(jù)
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
}
//向7219中寫入數(shù)據(jù),第一個(gè)編號(hào)是1,第二個(gè)是2.....
void WriteData2Comp(uchar Num)
{
uchar i,j;
for (i=1;i<9;i++)//
{
LOAD = 0;
SendAddrDataSingle(i, Seg[i+1]);
for(j=1;j<Num;j++)
{
SendAddrDataSingle(0x00,0x00);
}
LOAD = 1;
}
}
#endif
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -